vault backup: 2026-04-18 02:10:45
7
.obsidian/app.json
vendored
@@ -4,10 +4,11 @@
|
|||||||
"showLineNumber": false,
|
"showLineNumber": false,
|
||||||
"promptDelete": false,
|
"promptDelete": false,
|
||||||
"newFileLocation": "folder",
|
"newFileLocation": "folder",
|
||||||
"attachmentFolderPath": "YueQian/assets/相关网站",
|
"attachmentFolderPath": "./ass",
|
||||||
"strictLineBreaks": true,
|
"strictLineBreaks": true,
|
||||||
"useMarkdownLinks": true,
|
"useMarkdownLinks": false,
|
||||||
"newLinkFormat": "relative",
|
"newLinkFormat": "relative",
|
||||||
"openBehavior": "",
|
"openBehavior": "",
|
||||||
"newFileFolderPath": "Collection"
|
"newFileFolderPath": "OnGoing",
|
||||||
|
"alwaysUpdateLinks": true
|
||||||
}
|
}
|
||||||
32
.obsidian/plugins/i18n/metadata.json
vendored
@@ -1,22 +1,6 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": 2,
|
"schemaVersion": 2,
|
||||||
"sources": {
|
"sources": {
|
||||||
"c0fT0euCDXLgw04AMGOXjVEbVWWo4AS7": {
|
|
||||||
"id": "c0fT0euCDXLgw04AMGOXjVEbVWWo4AS7",
|
|
||||||
"plugin": "obsidian-custom-attachment-location",
|
|
||||||
"title": "obsidian-custom-attachment-location",
|
|
||||||
"type": "plugin",
|
|
||||||
"origin": "cloud",
|
|
||||||
"isActive": true,
|
|
||||||
"checksum": "436a4050e3b4bf235a59490baf356d199a2ed483a8eabee5fe681ae3301a9508",
|
|
||||||
"cloud": {
|
|
||||||
"owner": "yunrr",
|
|
||||||
"repo": "obsidian-i18n-resources",
|
|
||||||
"hash": "6682f9726682f9726682f9726682f972"
|
|
||||||
},
|
|
||||||
"updatedAt": 1776342489533,
|
|
||||||
"createdAt": 1776342489533
|
|
||||||
},
|
|
||||||
"B3S674C-whT0MjQDpACrrWE79mH1TNyU": {
|
"B3S674C-whT0MjQDpACrrWE79mH1TNyU": {
|
||||||
"id": "B3S674C-whT0MjQDpACrrWE79mH1TNyU",
|
"id": "B3S674C-whT0MjQDpACrrWE79mH1TNyU",
|
||||||
"plugin": "obsidian-custom-frames",
|
"plugin": "obsidian-custom-frames",
|
||||||
@@ -246,6 +230,22 @@
|
|||||||
},
|
},
|
||||||
"updatedAt": 1776444516042,
|
"updatedAt": 1776444516042,
|
||||||
"createdAt": 1776444516042
|
"createdAt": 1776444516042
|
||||||
|
},
|
||||||
|
"c0fT0euCDXLgw04AMGOXjVEbVWWo4AS7": {
|
||||||
|
"id": "c0fT0euCDXLgw04AMGOXjVEbVWWo4AS7",
|
||||||
|
"plugin": "obsidian-custom-attachment-location",
|
||||||
|
"title": "obsidian-custom-attachment-location",
|
||||||
|
"type": "plugin",
|
||||||
|
"origin": "cloud",
|
||||||
|
"isActive": true,
|
||||||
|
"checksum": "436a4050e3b4bf235a59490baf356d199a2ed483a8eabee5fe681ae3301a9508",
|
||||||
|
"cloud": {
|
||||||
|
"owner": "yunrr",
|
||||||
|
"repo": "obsidian-i18n-resources",
|
||||||
|
"hash": "6682f9726682f9726682f9726682f972"
|
||||||
|
},
|
||||||
|
"updatedAt": 1776449311951,
|
||||||
|
"createdAt": 1776449311951
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
12
.obsidian/plugins/i18n/states.json
vendored
@@ -1,11 +1,5 @@
|
|||||||
{
|
{
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"obsidian-custom-attachment-location": {
|
|
||||||
"id": "obsidian-custom-attachment-location",
|
|
||||||
"isApplied": true,
|
|
||||||
"pluginVersion": "10.3.4",
|
|
||||||
"translationVersion": "2.0.0"
|
|
||||||
},
|
|
||||||
"obsidian-custom-frames": {
|
"obsidian-custom-frames": {
|
||||||
"id": "obsidian-custom-frames",
|
"id": "obsidian-custom-frames",
|
||||||
"isApplied": true,
|
"isApplied": true,
|
||||||
@@ -95,6 +89,12 @@
|
|||||||
"isApplied": true,
|
"isApplied": true,
|
||||||
"pluginVersion": "1.4.0",
|
"pluginVersion": "1.4.0",
|
||||||
"translationVersion": "1.0.0"
|
"translationVersion": "1.0.0"
|
||||||
|
},
|
||||||
|
"obsidian-custom-attachment-location": {
|
||||||
|
"id": "obsidian-custom-attachment-location",
|
||||||
|
"isApplied": true,
|
||||||
|
"pluginVersion": "10.3.4",
|
||||||
|
"translationVersion": "2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"themes": {}
|
"themes": {}
|
||||||
|
|||||||
68
.obsidian/workspace.json
vendored
@@ -13,16 +13,27 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Meta/🏡HOME.md",
|
"file": "Archive/Collection/连~都忘记了的小知识.md",
|
||||||
"mode": "preview",
|
"mode": "preview",
|
||||||
"source": false,
|
"source": false,
|
||||||
"backlinks": false
|
"backlinks": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "🏡HOME"
|
"title": "连~都忘记了的小知识"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d19b72f3716b97c5",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "i18n-manager-view",
|
||||||
|
"state": {},
|
||||||
|
"icon": "layout-grid",
|
||||||
|
"title": "i18n 管理中心"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"currentTab": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
@@ -124,13 +135,13 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Meta/🏡HOME.md",
|
"file": "Archive/Collection/连~都忘记了的小知识.md",
|
||||||
"followCursor": true,
|
"followCursor": true,
|
||||||
"showSearch": false,
|
"showSearch": false,
|
||||||
"searchQuery": ""
|
"searchQuery": ""
|
||||||
},
|
},
|
||||||
"icon": "lucide-list",
|
"icon": "lucide-list",
|
||||||
"title": "🏡HOME 的大纲"
|
"title": "连~都忘记了的小知识 的大纲"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -251,34 +262,36 @@
|
|||||||
"obsidian-livesync:显示自定义同步": false
|
"obsidian-livesync:显示自定义同步": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "5e96455aab22a229",
|
"active": "b1cf03bb19fff71c",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"Bases/元数据列表.base",
|
"Archive/配置备忘/Typecho插件Aplayer使用教程.md",
|
||||||
|
"Archive/Collection/连~都忘记了的小知识.md",
|
||||||
|
"Archive/Collection/KMP算法.md",
|
||||||
|
"Archive/Collection/linux命令.md",
|
||||||
|
"Archive/Collection/Markdown语法.md",
|
||||||
|
"Archive/Collection/PID控制算法.md",
|
||||||
|
"Archive/Collection/YAML用法.md",
|
||||||
|
"OnGoing/openclash配置.md",
|
||||||
|
"OnGoing/navidrome.md",
|
||||||
|
"Archive/test.md",
|
||||||
"Collection/未命名 1.md",
|
"Collection/未命名 1.md",
|
||||||
"Collection/未命名.md",
|
"Collection/未命名.md",
|
||||||
|
"Meta/🏡HOME.md",
|
||||||
|
"OnGoing",
|
||||||
|
"Bases/元数据列表.base",
|
||||||
"Template/AutoAdd.md",
|
"Template/AutoAdd.md",
|
||||||
"Template/Diary.md",
|
"Template/Diary.md",
|
||||||
"Diary/2026/01/2026-01-20 周二.md",
|
"Diary/2026/01/2026-01-20 周二.md",
|
||||||
"README.md",
|
"README.md",
|
||||||
"Meta/🏡HOME.md",
|
|
||||||
"Meta/笔记元数据管理规范.md",
|
"Meta/笔记元数据管理规范.md",
|
||||||
"Diary/2026/01/2026-01-23 周五.md",
|
"Diary/2026/01/2026-01-23 周五.md",
|
||||||
"Diary/2026/01/2026-01-22 周四.md",
|
"Diary/2026/01/2026-01-22 周四.md",
|
||||||
"Diary/2026/01/2026-01-21 周三.md",
|
"Diary/2026/01/2026-01-21 周三.md",
|
||||||
"Diary/2026/01/2026-01-19 周一.md",
|
"Diary/2026/01/2026-01-19 周一.md",
|
||||||
"Collection/YAML用法.md",
|
|
||||||
"Collection/PID控制算法.md",
|
|
||||||
"Collection/Markdown语法.md",
|
|
||||||
"Collection/linux命令.md",
|
|
||||||
"Collection/KMP算法.md",
|
|
||||||
"Collection/连~都忘记了的小知识.md",
|
|
||||||
"BlogWebsite/Article/通过SSH密钥连接LINUX服务器.md",
|
"BlogWebsite/Article/通过SSH密钥连接LINUX服务器.md",
|
||||||
"BlogWebsite/Article/飞牛搭配mtphotos使用passnet内网穿透服务优雅快速的分享照片访问.md",
|
"BlogWebsite/Article/飞牛搭配mtphotos使用passnet内网穿透服务优雅快速的分享照片访问.md",
|
||||||
"Bases/为什么会消失.md",
|
"Bases/为什么会消失.md",
|
||||||
"YueQian/assets/相关网站/相关网站_Excalidraw20260121.md",
|
"YueQian/assets/相关网站/相关网站_Excalidraw20260121.md",
|
||||||
"YueQian/相关网站.md",
|
|
||||||
"Collection/配置备忘/openclash配置.md",
|
|
||||||
"Collection/配置备忘/navidrome.md",
|
|
||||||
"Meta",
|
"Meta",
|
||||||
"未命名.canvas",
|
"未命名.canvas",
|
||||||
"Bases/Diary.base",
|
"Bases/Diary.base",
|
||||||
@@ -288,16 +301,15 @@
|
|||||||
"Bases/Diay.base",
|
"Bases/Diay.base",
|
||||||
"Diary/2026/04",
|
"Diary/2026/04",
|
||||||
"Diary/2026/01",
|
"Diary/2026/01",
|
||||||
"Diary/2026/02",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE0486404994804c5fb05039cff405656astickPicture.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE0486404994804c5fb05039cff405656astickPicture.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE059f0c15158165303fc0fc990a90a445image.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE059f0c15158165303fc0fc990a90a445image.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE048d46d9bb04ceb46b8fe1f3cc419d92image.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE048d46d9bb04ceb46b8fe1f3cc419d92image.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE024f291ce6ddbfc8e43e98913881be10image.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE024f291ce6ddbfc8e43e98913881be10image.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE167c2f360443ad063a8c62e5be84ad85image.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE167c2f360443ad063a8c62e5be84ad85image.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE1ec0d881c347298235a88359695ad942image.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE1ec0d881c347298235a88359695ad942image.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE4684b7496c77366547f869ae2b65b6d7image.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE4684b7496c77366547f869ae2b65b6d7image.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE4bb07092451ff2e2b923c57cb023415dimage.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE4bb07092451ff2e2b923c57cb023415dimage.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE57ae4c50fdbe52495c1fec865fb6c5fbimage.png",
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE57ae4c50fdbe52495c1fec865fb6c5fbimage.png",
|
"Archive/Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE598297eb23f470b37d35d6d3f1451fe9image.png"
|
||||||
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCE598297eb23f470b37d35d6d3f1451fe9image.png"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
tags:
|
tags:
|
||||||
|
- kmp
|
||||||
aliases:
|
aliases:
|
||||||
type:
|
type:
|
||||||
- Source
|
- Source
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
tags:
|
tags:
|
||||||
|
- markdown
|
||||||
aliases:
|
aliases:
|
||||||
type:
|
type:
|
||||||
- Source
|
- Source
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
tags:
|
tags:
|
||||||
|
- pid
|
||||||
aliases:
|
aliases:
|
||||||
type:
|
type:
|
||||||
- Source
|
- Source
|
||||||
@@ -5,7 +5,7 @@ aliases:
|
|||||||
type:
|
type:
|
||||||
- Source
|
- Source
|
||||||
status:
|
status:
|
||||||
- 🌳 Evergreen
|
- 💤 Archived
|
||||||
star: false
|
star: false
|
||||||
date:
|
date:
|
||||||
---
|
---
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
---
|
---
|
||||||
tags:
|
tags:
|
||||||
|
- 小知识
|
||||||
aliases:
|
aliases:
|
||||||
|
- 知识备忘录
|
||||||
type:
|
type:
|
||||||
- Concept
|
- Concept
|
||||||
status:
|
status:
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
star: false
|
|
||||||
---
|
|
||||||
这是一个测试这是一个测试
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
tags:
|
|
||||||
- empty
|
|
||||||
aliases: empty
|
|
||||||
type:
|
|
||||||
- Daily
|
|
||||||
- Concept
|
|
||||||
- Task
|
|
||||||
- Source
|
|
||||||
- Meta
|
|
||||||
- Archive
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date: 2026/4/18
|
|
||||||
---
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
tags:
|
|
||||||
- empty
|
|
||||||
aliases: empty
|
|
||||||
type:
|
|
||||||
- Daily
|
|
||||||
- Concept
|
|
||||||
- Task
|
|
||||||
- Source
|
|
||||||
- Meta
|
|
||||||
- Archive
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date: 2026/4/18
|
|
||||||
---
|
|
||||||
@@ -3,10 +3,11 @@ aliases:
|
|||||||
tags:
|
tags:
|
||||||
- typecho插件
|
- typecho插件
|
||||||
- typecho
|
- typecho
|
||||||
|
- aplayer
|
||||||
type:
|
type:
|
||||||
- Concept
|
- Source
|
||||||
status:
|
status:
|
||||||
- 🌳 Evergreen
|
- 💤 Archived
|
||||||
star: false
|
star: false
|
||||||
date:
|
date:
|
||||||
---
|
---
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
tags:
|
|
||||||
- 粤嵌
|
|
||||||
type:
|
|
||||||
- Source
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date:
|
|
||||||
---
|
|
||||||
李林峰
|
|
||||||
|
|
||||||
课程学习内容概览:
|
|
||||||
|
|
||||||
第一阶段:Linux基础、C语言编程、数据结构与算法、阶段项目一(峰哥写)
|
|
||||||
|
|
||||||
第二阶段:Linux文件IO、嵌入式平台应用、LVGL应用开发、工程管理工具(maka、cmake、git)、阶段项目二(自己写)
|
|
||||||
|
|
||||||
第三阶段:Linux应用开发(Linux系统编程、Linux网络编程)、阶段项目三(自己写)
|
|
||||||
|
|
||||||
第四阶段:C++编程、QT应用编程、阶段项目四(自己写)
|
|
||||||
|
|
||||||
第五阶段:单片机开发、阶段项目五(自己做)、智能硬件开发、阶段项目六(选做)
|
|
||||||
|
|
||||||
入学测试:
|
|
||||||
|
|
||||||
考试酷:[https://www.examcoo.com/](https://www.examcoo.com/)
|
|
||||||
|
|
||||||
第一次使用要注册账号,记住自己考试酷账号(昵称为自己的真名),密码设置为常用密码。
|
|
||||||
|
|
||||||
加入班级:班级编号 1090543 进行考试
|
|
||||||
|
|
||||||
上课屏幕共享软件:腾讯会议,会议号:503-055-9377
|
|
||||||
|
|
||||||
获取工具资料方法:
|
|
||||||
|
|
||||||
在浏览器输入:[http://192.168.2.2:8080](http://192.168.2.2:8080)
|
|
||||||
|
|
||||||
创建用户
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
作业的提交需要各位通信在作业文件夹下创建自己姓名的文件夹
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
后续的作业提交时作业文件以world文档或者markdown文档形式进行提交命名格式:作业日期+完成情况(如“1.19-已完成.md”或“1.19-作业2未完成.md”)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
@@ -1,306 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
tags:
|
|
||||||
- 粤嵌
|
|
||||||
type:
|
|
||||||
- Source
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date:
|
|
||||||
---
|
|
||||||
1. **VMware虚拟机**
|
|
||||||
|
|
||||||
VMware 是一款虚拟化软件,可在物理计算机(宿主系统)上创建多个独立的虚拟计算机(虚拟机)。每个虚拟机可运行独立的操作系统(如 Windows、Linux、macOS 等),并共享宿主硬件资源(CPU、内存、存储等),但彼此隔离、互不干扰。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
右键安装包 --> 以管理员身份运行 --> 也许会提示需要重启电脑(点击重启即可)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. **Ubuntu系统制作**
|
|
||||||
|
|
||||||
Ubuntu 是基于Debian Linux的开源操作系统,由南非企业家马克・沙特尔沃思(Mark Shuttleworth)的公司 Canonical 于 2004 年推出。其名称源于非洲语 “Ubuntu”,意为 “人类互助共生”,象征系统的社区协作精神。
|
|
||||||
|
|
||||||
核心特点:免费开源、易用性强、安全性高,适合从新手到开发者的全场景用户。
|
|
||||||
|
|
||||||
应用领域:个人桌面、服务器、云计算(如 OpenStack)、物联网设备(如树莓派)等。
|
|
||||||
|
|
||||||
Ubuntu 通过 “开源 + 易用” 的组合,降低了 Linux 系统的使用门槛,成为连接普通用户与开源技术的桥梁。无论是个人办公、企业服务器还是技术开发,其 “稳定、安全、易维护” 的特性都能满足核心需求,堪称 Linux 生态中最具实用性和普及度的发行版之一。
|
|
||||||
|
|
||||||
**制作一个自己的Ubuntu**
|
|
||||||
|
|
||||||
1. **下载**
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. **制作自己的Ubuntu(或者下载峰哥制作好的Ubuntu)**
|
|
||||||
|
|
||||||
使用已经制作好的系统时直接解压-->选择打开虚拟机-->找到虚拟机文件-->开启虚拟机-->选择“我已复制该虚拟机”
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
选择创建新的虚拟机
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
密码一个点 .
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. **配置Ubuntu**
|
|
||||||
|
|
||||||
1. **汉化Ubuntu(安装时已经选择汉语可以跳过)**
|
|
||||||
|
|
||||||
打开Ubuntu的设置 --> 选择区域与语言
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**安装完成后汉化系统注意**
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. **配置软件源(需要进行配置)**
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
右键桌面-->在终端打开
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
在终端输入命令:sudo apt update
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. **安装中文输入法(安装时选择的键盘是汉语键盘则默认安装中文拼音输入法)**
|
|
||||||
|
|
||||||
安装fcitx: 打开terminal,输入指令:sudo apt install fcitx
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
安装完成后重启Ubuntu --> 选择fcitx
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
下载搜狗输入法 for Linux版本进行安装:通过Ubuntu的浏览器下载
|
|
||||||
|
|
||||||
[https://shurufa.sogou.com/linux](https://shurufa.sogou.com/linux)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
命令行安装:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
打开终端
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
依次输入下列命令
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd ~/Download
|
|
||||||
sudo dpkg -i sogoupinyin_4.0.1.2800_x86_64.deb
|
|
||||||
```
|
|
||||||
|
|
||||||
若安装失败则需要安装依赖
|
|
||||||
|
|
||||||
sudo apt install -f
|
|
||||||
|
|
||||||
重新安装
|
|
||||||
|
|
||||||
sudo dpkg -i sogoupinyin_4.0.1.2800_x86_64.deb
|
|
||||||
|
|
||||||
安装依赖
|
|
||||||
|
|
||||||
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2
|
|
||||||
|
|
||||||
sudo apt install libgsettings-qt1
|
|
||||||
|
|
||||||
将fcitx设置为开机自启动
|
|
||||||
|
|
||||||
sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/
|
|
||||||
|
|
||||||
卸载ibus
|
|
||||||
|
|
||||||
|
|
||||||
sudo apt remove --purge ibus
|
|
||||||
|
|
||||||
|
|
||||||
重启即可
|
|
||||||
|
|
||||||
若出现输入法启动失败一一直闪烁的问题则按下列步骤解决
|
|
||||||
|
|
||||||
打开终端,编辑/etc/gdm3/custom.conf文件:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
sudo gedit /etc/gdm3/custom.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
找到WaylandEnable=false这一行,并取消注释(删除前面的#号):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
#WaylandEnable=false
|
|
||||||
```
|
|
||||||
|
|
||||||
### 安装32位兼容库(需要安装)
|
|
||||||
|
|
||||||
```shell
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install lib32ncurses6
|
|
||||||
sudo apt install lib32stdc++6
|
|
||||||
sudo apt install gcc-multilib
|
|
||||||
|
|
||||||
//将C语言源程序编译为32位可执行程序
|
|
||||||
gcc ***.c -o *** -m32
|
|
||||||
```
|
|
||||||
|
|
||||||
1. **Visual Studio Code开发工具**
|
|
||||||
|
|
||||||
开发环境主要围绕C语言的开发环境进行,每一门编程语言都会有对应的IDE(Integrated Development Environment)即集成开发环境,是用于开发软件的工具集合,它将软件开发所需的各种功能集成在一个统一的界面中,大幅提升开发效率
|
|
||||||
|
|
||||||
推荐使用IDE:Visual Studio Code(采用扩展组件的方式提供丰富的功能,可以根据自己的实际情况对其进行不同的配置)+ GDB(Linux调试工具)
|
|
||||||
|
|
||||||
Windows安装方法如下
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Ubuntu下安装(可选)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
自己手动下载安装包:[Download Visual Studio Code - Mac, Linux, Windows](https://code.visualstudio.com/Download)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. **配置windows下的vscode**
|
|
||||||
|
|
||||||
Ubuntu下的vscode只安装一下
|
|
||||||
|
|
||||||
windows下则需要进行以下配置
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Windows下除了安装与Ubuntu一致的扩展外还需额外安装或配置编程编译环境(mingw**)
|
|
||||||
|
|
||||||
获取mingw相关库文件
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
解压到一个固定存放的位置
|
|
||||||
|
|
||||||
进入到bin目录拷贝复制路径添加到系统环境变量路径中
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
配置自己系统的环境变量添加这个库文件的路径,重启vscode会自动检索系统环境变量路径,可解决在Windows下的vscode中运行C语言和C语言语法检查功能。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Ubuntu命令行安装:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cd ~/Download
|
|
||||||
sudo dpkg -i code_1.101.2-1750797935_amd64.deb
|
|
||||||
```
|
|
||||||
|
|
||||||
QtCreator(采用C++进行编写,用Qt做界面,可以调试运行C/C++语言)
|
|
||||||
|
|
||||||
1. **在苹果电脑中安装虚拟机**
|
|
||||||
|
|
||||||
如果使用的是苹果的Mac系统,则需要安装 VMware 对应的 MacOS 版本:
|
|
||||||
|
|
||||||
[VMware Fusion-12.2](https://download3.vmware.com/software/fusion/file/VMware-Fusion-12.2.1-18811640_x86.dmg)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
安装完毕之后的操作基本跟
|
|
||||||
|
|
||||||
[Ubuntu-20.04-for-VMwareFusion.zip](https://share.weiyun.com/thRIL0Jp)
|
|
||||||
|
|
||||||
解压上述压缩包,即可在苹果
|
|
||||||
|
|
||||||
1. **在windows中部署Linux子系统(不推荐)**
|
|
||||||
|
|
||||||
【有道云笔记】WSL的使用
|
|
||||||
|
|
||||||
[https://share.note.youdao.com/s/G4YyaN9Y](https://share.note.youdao.com/s/G4YyaN9Y)
|
|
||||||
@@ -1,318 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
tags:
|
|
||||||
- 粤嵌
|
|
||||||
type:
|
|
||||||
- Source
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date:
|
|
||||||
---
|
|
||||||
# **1. Linux简介**
|
|
||||||
|
|
||||||
Linux最初是1991年由芬兰的Linus Torvalds发起,目的是为了避开当时的类Unix的版权问题,Linux从一开始就是开源的,由网上组织松散的开发者协作完成,并在1994年开始遵循GPL许可协议。
|
|
||||||
|
|
||||||
Linux、git创始人、技术狂人 —— 林纳斯·托瓦兹
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[内核官网](https://www.kernel.org/)
|
|
||||||
|
|
||||||
通常谈到Linux,有两个层面的含义:
|
|
||||||
|
|
||||||
- 一指Linux内核,它运行于整个系统内部,用户看不见摸不着,其主要功能是:
|
|
||||||
|
|
||||||
1. 内存管理
|
|
||||||
|
|
||||||
1. 文件管理
|
|
||||||
|
|
||||||
1. 任务管理
|
|
||||||
|
|
||||||
1. 网络管理
|
|
||||||
|
|
||||||
1. 设备管理
|
|
||||||
|
|
||||||
- 二指Linux发行版操作系统,例如Ubuntu、RedHat、Fedora、CentOS等。所谓的发行版指的是可直接发行给用户直接使用的操作系统,它不仅包括了上述所说的内核,且包括了诸如桌面系统、编辑编译环境、Shell、浏览器等用户日常使用必备的软件。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
各种Linux发行版操作系统
|
|
||||||
|
|
||||||
作为操作系统(Operating System),目前世界范围内有影响力的有:
|
|
||||||
|
|
||||||
1. Linux(开源系统,可定制可裁剪)
|
|
||||||
|
|
||||||
1. HarmonyOS(华为公司,先进的分布式操作系统)
|
|
||||||
|
|
||||||
1. Windows(微软公司,针对普通家庭用户)
|
|
||||||
|
|
||||||
1. MacOS(苹果公司,针对普通家庭用户)
|
|
||||||
|
|
||||||
Linux与其他OS最大的区别是
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# **2. Ubuntu**
|
|
||||||
|
|
||||||
在众多Linux发行版中,Ubuntu是用的比较多的一款。点击进入 [Ubuntu 官方主页](https://cn.ubuntu.com/download/desktop) 可以下载最新版本,Ubuntu系统每隔半年发布一个新版本,分别在每年的4月和10月,比如:
|
|
||||||
|
|
||||||
- 2019年10月份发布的被称为:Ubuntu-19.10
|
|
||||||
|
|
||||||
- 2020年04月份发布的被称为:Ubuntu-20.04-LTS
|
|
||||||
|
|
||||||
注意到
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
从网上下载了Ubuntu的 ISO 镜像文件之后,需要在虚拟机中安装了之后才能使用,以下是已经安装好并配好环境的 Ubuntu 系统,开箱即食,童叟无欺:
|
|
||||||
|
|
||||||
- 适用于 VirtualBox:
|
|
||||||
|
|
||||||
- Ubuntu-20.04-LTS(
|
|
||||||
|
|
||||||
- 适用于 VMware:
|
|
||||||
|
|
||||||
- Ubuntu-18.04-LTS(
|
|
||||||
|
|
||||||
- Ubuntu-20.04-LTS(
|
|
||||||
|
|
||||||
## **2.1 APT软件管理器**
|
|
||||||
|
|
||||||
Ubuntu最大的特点是继承了Debian系统的APT软件管理体系,使得Linux下的软件管理变得非常简便。如下图所示,各种厂商在世界各地部署了Ubuntu软件服务器,统一管理Ubuntu中的deb软件包,用户只要能联网,即可从最近的服务器上直接下载安装所需的服务或软件。APT带给用户最便捷的地方在于,它能自动为用户分析和安装软件的依赖模块,从而避开了Linux软件安装中饱受诟病的依赖问题。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
使用APT软件管理器,一般遵循如下步骤:
|
|
||||||
|
|
||||||
1. 选择恰当的服务器(物理距离近的、速度快的)
|
|
||||||
|
|
||||||
1. 执行 update 指令,更新服务器软件清单
|
|
||||||
|
|
||||||
选择完毕恰当的服务器之后,还需执行APT的
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ sudo apt update
|
|
||||||
```
|
|
||||||
|
|
||||||
**安装与卸载**
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# 安装
|
|
||||||
gec@ubuntu:~$ sudo apt install xxx
|
|
||||||
|
|
||||||
# 卸载
|
|
||||||
gec@ubuntu:~$ sudo apt remove xxx
|
|
||||||
gec@ubuntu:~$ sudo apt remove --purge xxx #将配置文件也一并删除
|
|
||||||
|
|
||||||
# 修复APT管理器
|
|
||||||
gec@ubuntu:~$ sudo apt install -f
|
|
||||||
|
|
||||||
# 自动卸载一些已经无用的软件或服务
|
|
||||||
gec@ubuntu:~$ sudo apt autoremove
|
|
||||||
```
|
|
||||||
|
|
||||||
## **2.2 Linux目录结构**
|
|
||||||
|
|
||||||
Linux系统的目录结构中,不同的文件夹分属不同的功能,列表如下:
|
|
||||||
|
|
||||||
Linux下一切皆文件,除网络设备
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
文件1的路径:/usr/local/文件1 (根目录下的usr目录下的local的文件1)
|
|
||||||
|
|
||||||
| 目录名 | 功能 |
|
|
||||||
| -- | -- |
|
|
||||||
| / | 根目录,所有的分区和文件的起点(类似与C盘) |
|
|
||||||
| /bin | 普通用户可用的命令所在路径 |
|
|
||||||
| /sbin | 超级用户可用的命令所在路径 |
|
|
||||||
| /etc | 各种配置文件所在路径 |
|
|
||||||
| /home | 所有普通用户的家目录所在路径 |
|
|
||||||
| /lib | 系统库文件所在路径 |
|
|
||||||
| /boot | 系统内核镜像文件所在路径 |
|
|
||||||
| /dev | 设备节点所在路径 |
|
|
||||||
| /usr | 第三方库和服务默认安装路径 |
|
|
||||||
| /proc | 系统进程数据在文件系统中的挂载路径 |
|
|
||||||
| /sys | 系统内核数据在文件系统中的挂载路径 |
|
|
||||||
| /var | 存放一些“易变”的文件,例如安装包、系统日志等 |
|
|
||||||
| /mnt | 默认的分区挂载路径 |
|
|
||||||
|
|
||||||
|
|
||||||
目录与目录间的关系不是分属,Linux下目录与目录或目录与文件是索引关系
|
|
||||||
|
|
||||||
## **2.3 命令终端**
|
|
||||||
|
|
||||||
使用Linux的乐趣,在于其直达核心的命令终端,几乎所有的操作都可以在终端中进行,配合Linux中大量精巧的命令,真正做到让开发者敲代码时心无旁骛,摒弃任何多余的分散注意力的东西,后续课程,重点就是介绍终端中的各种命令。
|
|
||||||
|
|
||||||
Shell 是用户与操作系统内核之间的接口,负责
|
|
||||||
|
|
||||||
Shell 是一种命令行解释器(Command Line Interpreter),它接收用户输入的文本命令,将其翻译为操作系统内核能够理解的指令,并执行相应操作。
|
|
||||||
|
|
||||||
在Ubuntu中Shell 命令行解释器使用的是bash解释器(Bash(Bourne Again SHell)是一种命令行解释器,也是 Linux 和 macOS 系统的默认 Shell)
|
|
||||||
|
|
||||||
命令终端(bash解释器)
|
|
||||||
|
|
||||||
```
|
|
||||||
1、ctrl + alt + t //打开一个终端
|
|
||||||
2、鼠标右键打开终端
|
|
||||||
3、点击终端图标
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
终端前缀说明:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@Ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
> gec :当前登录的用户名称
|
|
||||||
> Ubuntu:当前系统名称
|
|
||||||
> ~:当前所处的路径名称(~的完整路径是"/home/gec",当用户处于自己的家目录是路径用~表示,代表这个目录是用户的主目录,不同用户的家目录是不同的)
|
|
||||||
> @ : $:这些符号的作用是用于分隔内容($表示当前用户的身份是普通用户 `#`表示当前用户身份是超级管理员用户)
|
|
||||||
|
|
||||||
|
|
||||||
**能用普通用户尽量不要用root**
|
|
||||||
|
|
||||||
有许多人在使用 Linux 系统时存在一些坏习惯,比如使用
|
|
||||||
|
|
||||||
```
|
|
||||||
Important: you can and should build everything as a normal user.
|
|
||||||
There is no need to be root to configure and use Buildroot.
|
|
||||||
By running all commands as a regular user,
|
|
||||||
you protect your system against packages behaving badly during compilation and installation.
|
|
||||||
```
|
|
||||||
|
|
||||||
翻译:
|
|
||||||
|
|
||||||
```
|
|
||||||
重要: 你可以且应该使用普通用户去构建所有的程序。
|
|
||||||
没有任何必要非得要root去配置和使用系统,使用普通用户去执行命令,可以避免在程序编译和安装时出现的莫名其妙的系统错误。
|
|
||||||
```
|
|
||||||
|
|
||||||
**总之**
|
|
||||||
|
|
||||||
**终端使用小技巧**
|
|
||||||
|
|
||||||
1. 打开相同路径下的新窗口:
|
|
||||||
|
|
||||||
```
|
|
||||||
ctrl + shift + n
|
|
||||||
```
|
|
||||||
|
|
||||||
打开相同路径下的新终端窗口
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. 快速定位命令行光标位置:
|
|
||||||
|
|
||||||
```
|
|
||||||
快速定位到命令末尾: ctrl + e
|
|
||||||
快速定位到命令开头: ctrl + a
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 快速复制、粘贴:
|
|
||||||
|
|
||||||
```
|
|
||||||
复制终端的文本:选中即已复制
|
|
||||||
文本粘贴到终端:按下鼠标滚轮
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 自动补全单词
|
|
||||||
|
|
||||||
```
|
|
||||||
在目录下唯一单词自动补全:tab
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 历史命令浏览
|
|
||||||
|
|
||||||
```
|
|
||||||
浏览上一条或下一条历史命令:方向上/下
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 快速切换路径
|
|
||||||
|
|
||||||
```
|
|
||||||
快速切换路径到家目录:cd
|
|
||||||
快速切换路径到上一个路径位置:cd -
|
|
||||||
```
|
|
||||||
|
|
||||||
## **2.4 环境变量**
|
|
||||||
|
|
||||||
环境变量是能作用于整个系统的特定变量,比如
|
|
||||||
|
|
||||||
下面介绍跟环境变量相关的常见操作。
|
|
||||||
|
|
||||||
**1) 查看系统所有的环境变量**
|
|
||||||
|
|
||||||
命令
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ env
|
|
||||||
CLUTTER_IM_MODULE=xim
|
|
||||||
LESSCLOSE=/usr/bin/lesspipe %s %s
|
|
||||||
LANG=en_US.UTF-8
|
|
||||||
DISPLAY=:0
|
|
||||||
GNOME_SHELL_SESSION_MODE=ubuntu
|
|
||||||
COLORTERM=truecolor
|
|
||||||
XDG_SESSION_ID=2
|
|
||||||
USER=gec
|
|
||||||
DESKTOP_SESSION=ubuntu
|
|
||||||
WINDOWPATH=2
|
|
||||||
TERM=xterm-256color
|
|
||||||
SHELL=/bin/bash
|
|
||||||
VTE_VERSION=5201
|
|
||||||
QT_IM_MODULE=fcitx
|
|
||||||
XMODIFIERS=@im=fcitx
|
|
||||||
IM_CONFIG_PHASE=2
|
|
||||||
XDG_CURRENT_DESKTOP=ubuntu:GNOME
|
|
||||||
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
|
|
||||||
GNOME_TERMINAL_SERVICE=:1.82
|
|
||||||
XDG_SEAT=seat0
|
|
||||||
SHLVL=1
|
|
||||||
GDMSESSION=ubuntu
|
|
||||||
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
|
|
||||||
XAUTHORITY=/run/user/1000/gdm/Xauthority
|
|
||||||
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
|
|
||||||
HOME=/home/gec
|
|
||||||
PATH=/usr/local/arm/5.4.0/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
|
|
||||||
XDG_RUNTIME_DIR=/run/user/1000
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
**2) 查看某个环境变量**
|
|
||||||
|
|
||||||
如果需要查看某个特定的环境变量的值,可以使用命令
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ echo $PATH
|
|
||||||
PATH=/usr/local/arm/5.4.0/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
**3) 设置某个环境变量**
|
|
||||||
|
|
||||||
1. 临时设置(以PATH为例):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ export PATH=$PATH:/home/gec
|
|
||||||
```
|
|
||||||
|
|
||||||
注意,以上设置只对当前的终端有效。
|
|
||||||
|
|
||||||
1. 永久设置(以PATH为例):
|
|
||||||
|
|
||||||
1. 打开终端的配置文件 ~/.bashrc
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ export PATH=$PATH:/home/gec
|
|
||||||
```
|
|
||||||
|
|
||||||
注意:需要执行如下命令来加载修改过的配置文件:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ source ~/.bashrc
|
|
||||||
```
|
|
||||||
@@ -1,279 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
tags:
|
|
||||||
- 粤嵌
|
|
||||||
type:
|
|
||||||
- Source
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date:
|
|
||||||
---
|
|
||||||
# **文件互通**
|
|
||||||
|
|
||||||
做编程开发,经常需要将文件在不同的机器之间来回倒腾,比如安装了vmware之后,经常需要在宿主机(Widndows)和Ubuntu之间转移文件。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## **1. 共享文件夹**
|
|
||||||
|
|
||||||
使用共享文件来互通win和ubuntu的文件是最简单的,方法如下:
|
|
||||||
|
|
||||||
- 点击虚拟机设置按钮,找到想要共享给虚拟机的文件夹。下图以Downloads文件夹为例,将其设置为Windows与Ubuntu的共享文件夹:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 打开命令终端,输入 cd /mnt/hgfs 进入共享文件夹,通过命令ls,便可看到Downloads
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gec@ubuntu:~$ cd /mnt/hgfs/
|
|
||||||
gec@ubuntu:/mnt/hgfs$ ls
|
|
||||||
Downloads
|
|
||||||
gec@ubuntu:/mnt/hgfs$
|
|
||||||
```
|
|
||||||
|
|
||||||
- 通过在终端输入不同的命令,就可以在Ubuntu内部操作宿主机的共享文件了。
|
|
||||||
|
|
||||||
若重启虚拟机共享文件夹消失可[参考博客](https://blog.csdn.net/gcc110/article/details/134050511?spm=1001.2014.3001.5501)
|
|
||||||
|
|
||||||
```
|
|
||||||
在Ubuntu创建一个脚本文件:gnome-text-editor mount_hgfs
|
|
||||||
将 sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other 写入mount_hgfs文件中
|
|
||||||
ctrl+s保存后关闭软件在终端给文件添加权限:chmod +x mount_hgfs
|
|
||||||
将文件移动到/bin:mv mount_hgfs /bin
|
|
||||||
重启系统后在终端输入命令:mount_hgfs 即可将消失的共享文件重新加载
|
|
||||||
```
|
|
||||||
|
|
||||||
## **2. samba文件共享**
|
|
||||||
|
|
||||||
samba是Linux下的一款网络磁盘服务,在ubuntu安装samba,并做好恰当的配置,即可在其他系统中方便地访问ubuntu系统的文件。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**安装 samba**
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
gec@ubuntu:~$ sudo apt install samba
|
|
||||||
```
|
|
||||||
|
|
||||||
**配置 samba**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo vi /etc/samba/smb.conf
|
|
||||||
|
|
||||||
# 在上述samba的配置文件的末尾追加如下信息:
|
|
||||||
# [share] 是 Windows 主机看到的samba文件夹的名称,可以任意修改
|
|
||||||
# path 是 Ubuntu 主机通过 samba 共享出去的路径
|
|
||||||
[share]
|
|
||||||
path=/home/gec/shareDir
|
|
||||||
browseable=yes
|
|
||||||
writable=yes
|
|
||||||
public=yes
|
|
||||||
available=yes
|
|
||||||
```
|
|
||||||
|
|
||||||
上述配置文件追加的信息中[share]是对共享文件的重命名,可以随意修改,path就是通过 samba 服务共享出去的目录路径。
|
|
||||||
|
|
||||||
**重启 samba**
|
|
||||||
|
|
||||||
配置好smb.conf之后,重新加载配置文件并重启samba服务:
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo service smbd reload
|
|
||||||
gec@ubuntu:~$ sudo service smbd restart
|
|
||||||
```
|
|
||||||
|
|
||||||
**连接 samba**
|
|
||||||
|
|
||||||
以上述配置为例,在网络配置通畅的情况下,在windows系统中可以在运行窗口直接输入ubuntu系统的网络IP来直接访问ubuntu系统中的 /home/gec/shareDir 目录:
|
|
||||||
|
|
||||||
访问ubuntu中的samba共享目录(假设ubuntu的IP地址是160)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**注意**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo chmod 777 /home/gec/shareDir
|
|
||||||
```
|
|
||||||
|
|
||||||
另外注意到,Windows 的共享文件夹本质上也是 samba 服务,因此在 Ubuntu 中也可以通过 samba 访问。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**在windows中设置共享文件夹**
|
|
||||||
|
|
||||||
要想把某个文件夹共享给 ubuntu,只需要右键设置指定文件夹的共享属性即可,选择“特定用户”,在弹出的窗口中选择“Everyone”即可,如下图所示:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**在ubuntu中访问共享文件夹**
|
|
||||||
|
|
||||||
安装 smbclient 工具:
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo apt install smbclient
|
|
||||||
```
|
|
||||||
|
|
||||||
查看windows中共享的文件夹:
|
|
||||||
|
|
||||||
```
|
|
||||||
# 命令格式
|
|
||||||
gec@ubuntu:~$ smbclient -L windows主机IP -U 用户名%密码
|
|
||||||
|
|
||||||
# 例如:
|
|
||||||
gec@ubuntu:~$ smbclient -L 192.168.90.2 -U Administrator%12345678
|
|
||||||
|
|
||||||
Sharename Type Comment
|
|
||||||
--------- ---- -------
|
|
||||||
ADMIN$ Disk 远程管理
|
|
||||||
C$ Disk 默认共享
|
|
||||||
IPC$ IPC 远程 IPC
|
|
||||||
Users Disk
|
|
||||||
xyz Disk
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
可以看到,上述共享出来的文件夹
|
|
||||||
|
|
||||||
**挂载windows的共享文件夹分区**
|
|
||||||
|
|
||||||
```
|
|
||||||
# 命令格式:
|
|
||||||
gec@ubuntu:~$ sudo mount -t cifs -o rw -o username=xxx,password=xxx //windows主机IP/共享文件夹名称 挂载点
|
|
||||||
|
|
||||||
# 例如:
|
|
||||||
gec@ubuntu:~$ sudo mount -t cifs -o rw -o username=Administrator,password=12345678 //192.168.90.2/xyz /opt/
|
|
||||||
```
|
|
||||||
|
|
||||||
这样,就可以在ubuntu中访问windows的共享文件夹了。CQ2402 (file://Gec-li/cq2402)
|
|
||||||
|
|
||||||
## **3. FTP文件传输**
|
|
||||||
|
|
||||||
FTP是一种网络协议,在文件传输领域被广泛使用,采用该协议的各种FTP服务端和客户端不胜枚举,例如Linux下的vsftpd服务器,Windows下的FlashXP客户端。
|
|
||||||
|
|
||||||
Ubuntu中的 vsftpd 的含义是 very security FTP daemon(即非常安全的FTP服务器),我们可以在ubuntu中配置vsftpd服务端,然后在windows中使用FTP客户端来达到文件互联互通的目的。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
通过 FTP 上传下载文件
|
|
||||||
|
|
||||||
**安装 vsftpd**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo apt install vsftpd
|
|
||||||
```
|
|
||||||
|
|
||||||
**配置 vsftpd**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo vi /etc/vsftpd.conf
|
|
||||||
|
|
||||||
# 在上述配置文件中,找到 write_enable=YES ,将其前面的井号去掉就可以了
|
|
||||||
```
|
|
||||||
|
|
||||||
**重启 vsftpd**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo service vsftpd reload
|
|
||||||
gec@ubuntu:~$ sudo service vsftpd restart
|
|
||||||
```
|
|
||||||
|
|
||||||
**查看运行状态**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo service vsftpd status
|
|
||||||
vsftpd.service - vsftpd FTP server
|
|
||||||
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
|
|
||||||
Active: active (running) since Mon 2021-06-07 15:31:08 CST; 9s ago
|
|
||||||
Process: 25797 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
|
|
||||||
Process: 25805 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
|
|
||||||
Main PID: 25806 (vsftpd)
|
|
||||||
Tasks: 1 (limit: 4631)
|
|
||||||
CGroup: /system.slice/vsftpd.service
|
|
||||||
└─25806 /usr/sbin/vsftpd /etc/vsftpd.conf
|
|
||||||
|
|
||||||
6月 07 15:31:08 aidevelop-vm systemd[1]: Starting vsftpd FTP server...
|
|
||||||
6月 07 15:31:08 aidevelop-vm systemd[1]: Started vsftpd FTP server.
|
|
||||||
gec@ubuntu:~$
|
|
||||||
// 卸载软件
|
|
||||||
gec@ubuntu:~$ sudo apt remove --purge vsftpd
|
|
||||||
```
|
|
||||||
|
|
||||||
注意到,上述输出信息中有active(running)字样,表示ubuntu中的vsftpd已经在正常运行,这时就可以启动windows中的ftp客户端去连接FTP服务了。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
下载 FlashFXP54_3970_Setup.exe(7MB):
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
# 「课堂练习1」
|
|
||||||
|
|
||||||
在ubuntu中安装并配置好vsftpd,使用一款windows的FTP客户端工具(比如winScp)跟ubuntu互联互通。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 使用WinSCP文件传输(推荐)
|
|
||||||
|
|
||||||
在Ubuntu安装ssh服务
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gec@ubuntu:~$ sudo apt install ssh
|
|
||||||
```
|
|
||||||
|
|
||||||
SCP是文件传输中非常常用的命令,他可以在Linux和Windows之间传输文件,但该命令需要输入复杂的命令行参数,因此我们推荐使用图形界面的WinSCP工具。
|
|
||||||
|
|
||||||
下载 WinSCP-5.17.10-Setup.exe(10MB):
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
使用 WinSCP 连接 Ubuntu
|
|
||||||
|
|
||||||
打开 WinSCP,输入ubuntu的IP地址、用户名、密码,点击登录按钮,即可连接到ubuntu:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
成功连接到远程 Ubuntu 系统:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
使用 WinSCP 传输文件
|
|
||||||
|
|
||||||
连接成功后,就可以在ubuntu和windows之间传输文件了,如下图所示:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## **4. TFTP文件传输**
|
|
||||||
|
|
||||||
在开发板与电脑网络互通的情况下,采用tftp的方式来传输文件是最高效的一种方式,tftp的全称是 tiny FTP,可见此工具专用于文件传输,其所为tiny意指匿名传输,是一种轻量级的FTP工具。
|
|
||||||
|
|
||||||
1. 在windows中安装tftp服务器,可根据系统实际情况下载对应版本:
|
|
||||||
|
|
||||||
- tftpd32.zip
|
|
||||||
|
|
||||||
- tftpd64.zip
|
|
||||||
|
|
||||||
1. 启动tftpd,选择准备传送到开发板的文件的所在目录和与开发板联通的网卡:
|
|
||||||
|
|
||||||
tftpd配置界面
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. 假设在上述 C:\EFI 文件夹下有文件example.txt,在开发板中可执行如下命令下载该文件:
|
|
||||||
|
|
||||||
```
|
|
||||||
[root@root:~]# tftp 192.168.9.65 -gr example.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 如果想要将开发板的文件发送到tftpd服务端,命令如下:
|
|
||||||
|
|
||||||
```
|
|
||||||
[root@root:~]# tftp 192.168.9.65 -pr example.txt
|
|
||||||
```
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
tags:
|
|
||||||
- 粤嵌
|
|
||||||
type:
|
|
||||||
- Source
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date:
|
|
||||||
---
|
|
||||||
# **1. 编辑器**
|
|
||||||
|
|
||||||
## **1.1 图形编辑器**
|
|
||||||
|
|
||||||
平时常见的编辑器都是图形编辑器,比如记事本、notepad、office、wps等,图形编辑器的意思就是这些编辑器带有图形界面,有菜单选项。比如最简单的Windows的记事本:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
记事本
|
|
||||||
|
|
||||||
当然,编程时不可能使用记事本来写代码,常用的专业编程IDE有vsCode、qtCreator等,常用的专业编辑器有sumlime、notepad++、vim等,它们各有所长。其中,在嵌入式开发领域,vim是不可或缺的一款字符界面型的高效编辑器,下面着重来介绍vim的安装和使用。
|
|
||||||
|
|
||||||
## **1.2 字符编辑器vi**
|
|
||||||
|
|
||||||
字符编辑器的意思是这种编辑器没有提供图形界面,因此也不需要用鼠标去点击菜单栏,字符编辑器的所有操作都是只需键盘就能达到的,这种设定可以让人在编程时注意力专注于代码,将程序思维直接流向键盘,行云流水,无需任何多余的菜单、鼠标的干扰,极大提高效率。在字符编辑器中,vi就是其中的典型代表。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### **vim的安装**
|
|
||||||
|
|
||||||
编辑器vi是Ubuntu系统默认已经安装好了的,但vi的初始版本功能各方面都较弱,一般都需要升级到vim版本,下载安装vim版本的命令是:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
gec@ubuntu:~$ sudo apt install vim
|
|
||||||
```
|
|
||||||
|
|
||||||
安装完毕之后,还可以在vim的配置文件中设置一些常用的选项:
|
|
||||||
|
|
||||||
```c
|
|
||||||
gec@ubuntu:~$ sudo gedit /etc/vim/vimrc
|
|
||||||
...
|
|
||||||
49 "set showmatch " Show matching brackets.
|
|
||||||
50 "set ignorecase " Do case insensitive matching
|
|
||||||
51 "set smartcase " Do smart case matching
|
|
||||||
52 "set incsearch " Incremental search
|
|
||||||
53 "set autowrite " Automatically save
|
|
||||||
54 "set hidden " Hide buffers
|
|
||||||
55 set mouse=a " Enable mouse usage (all modes)
|
|
||||||
56 set cindent
|
|
||||||
57 set number
|
|
||||||
58
|
|
||||||
59 " Source a global configuration file if available
|
|
||||||
60 if filereadable("/etc/vim/vimrc.local")
|
|
||||||
61 source /etc/vim/vimrc.local
|
|
||||||
62 endif
|
|
||||||
```
|
|
||||||
|
|
||||||
- 注意:
|
|
||||||
|
|
||||||
> set mouse=a 代表开启鼠标追踪
|
|
||||||
> set cindent 代表开启自动缩进
|
|
||||||
> set number 代表显示行号
|
|
||||||
|
|
||||||
|
|
||||||
这个没有菜单的编辑器,当我们需要执行诸如保存、查找、替换、剪切等等动作的时候怎么办呢?答案是将键盘的输入分成两种模式:一种模式下键盘敲入的就是编辑的内容,另一种模式下键盘敲入的是要编辑器完成的动作。简而言之,vim需要两个操作模式:
|
|
||||||
|
|
||||||
- 一个模式下键入的信息,作为文本本身的内容,称之为编辑模式.
|
|
||||||
|
|
||||||
- 一个模式下键入的信息,作为执行的动作,称之为命令模式。
|
|
||||||
|
|
||||||
这两种模式的转换:
|
|
||||||
|
|
||||||
- 默认打开 vi 的时候,进入了命令模式
|
|
||||||
|
|
||||||
- 从命令模式,进入编辑模式:按i、a、o、I、O……
|
|
||||||
|
|
||||||
- 从编辑模式,进入命令模式:按Esc
|
|
||||||
|
|
||||||
编辑模式没什么好研究的,主要是命令模式,熟练使用vi/vim实际上指的是熟练掌握命令模式中,vi所能支持的命令都有哪些?答案如下。
|
|
||||||
|
|
||||||
### **vim常用指令**
|
|
||||||
|
|
||||||
| vim命令 | 含义 |
|
|
||||||
| -- | -- |
|
|
||||||
| :w | 保存当前文件 |
|
|
||||||
| :w filename | 另存为 filename |
|
|
||||||
| :q | 退出当前正在编辑的文件 |
|
|
||||||
| :q! | 强制退出当前正在编辑的文件并放弃最近一次保存到现在的所有操作 |
|
|
||||||
| :wq | 保存文件并退出 |
|
|
||||||
| u | 撤销最近一次操作。 |
|
|
||||||
| ctrl+r | 前进一步,恢复撤销掉的操作 |
|
|
||||||
| i | 在光标所在的位置前面插入字符 |
|
|
||||||
| a | 在光标所在的位置后面插入字符 |
|
|
||||||
| o | 在光标所在行的下一行插入新的一行 |
|
|
||||||
| O | 在光标所在行的上一行插入新的一行 |
|
|
||||||
| x | 剪切光标处所在的字符。(x前可先按一个数字,则剪切若干个字符) |
|
|
||||||
| dd | 剪切光标处所在的一行。(dd前可先按一个数字,则剪切若干行) |
|
|
||||||
| yy | 复制光标处所在的一行。(yy前可先按一个数字,则复制若干行) |
|
|
||||||
| d$ | 剪切从光标处(含)开始到该行行末的所有字符 |
|
|
||||||
| d^ | 剪切从光标处(不含)开始到该行行首的所有字符 |
|
|
||||||
| y$ | 复制从光标处(含)开始到该行行末的所有字符 |
|
|
||||||
| y^ | 复制从光标处(不含)开始到该行行首的所有字符 |
|
|
||||||
| p | 将剪切板中的资料粘贴到光标所在下一行 |
|
|
||||||
| r | 修改光标所在的字符,r之后接跟你要修正的字符(比如你要把fox中的o改成i,只需将光标停在o上,接着连续按下r和i) |
|
|
||||||
| h | 将光标向前移动一个字符 |
|
|
||||||
| j | 将光标向下移动一个字符 |
|
|
||||||
| k | 将光标向上移动一个字符 |
|
|
||||||
| l(小写L) | 将光标向后移动一个字符 |
|
|
||||||
| gg | 跳到文本的最初一行 |
|
|
||||||
| G | 跳到文本的最末一行 |
|
|
||||||
| Ctrl + u | 向上(up)翻页 |
|
|
||||||
| Ctrl + d | 向下(down)翻页 |
|
|
||||||
| :%s/old/new | 将文件中所有的old字符串替换成new |
|
|
||||||
| /string | 从光标处往下查找字符串string,注意在输完你要查找的字符串string之后要按回车键。如果你要找的字符串string有多个,你可以按n将光标跳到下一个位置,按N将光标跳到上一个位置 |
|
|
||||||
| ?string | 跟上面的</string>是一样的,区别是它从光标处往上查找 |
|
|
||||||
|
|
||||||
|
|
||||||
# 「课堂练习2」
|
|
||||||
|
|
||||||
使用 vi 创建一个最简单C语言程序。练习诸如剪切、粘贴、复制、保存、撤销、恢复撤销、替换等技巧,熟练切换 vi 模式和普通模式。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# **2. 编译器gcc**
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
名称:GNU Compiler Collection(gcc),即GNU编译器套件。
|
|
||||||
|
|
||||||
简介:gcc是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix 及苹果 MacOS 操作系统的标准编译器,主要用与完成C语言的编译功能。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
用法:
|
|
||||||
|
|
||||||
```
|
|
||||||
// 安装最新的版本:
|
|
||||||
gec@ubuntu:~$ sudo apt install gcc -y
|
|
||||||
|
|
||||||
// 查看编译器的版本:
|
|
||||||
gec@ubuntu:~$ gcc -v
|
|
||||||
|
|
||||||
// 将源码 a.c 编译生成程序 a
|
|
||||||
gec@ubuntu:~$ gcc a.c -o a
|
|
||||||
gec@ubuntu:~$ gcc -o a a.c
|
|
||||||
|
|
||||||
// 编译源码的时候打开所有的警告
|
|
||||||
gec@ubuntu:~$ gcc a.c -o a -Wall
|
|
||||||
|
|
||||||
// 将源码 a.c 编译生成默认名称的程序 a.out
|
|
||||||
gec@ubuntu:~$ gcc a.c //默认生成a.out文件,所有的源文件默认生成文件名称都是a.out
|
|
||||||
```
|
|
||||||
|
|
||||||
释义:
|
|
||||||
|
|
||||||
-v:查看编译器版本
|
|
||||||
|
|
||||||
-o:指定编译后生成的程序名
|
|
||||||
|
|
||||||
-Wall:打开所有警告,注意W是大写的,意为 all Warning
|
|
||||||
|
|
||||||
## C语言程序由源代码到可执行程序的过程:
|
|
||||||
|
|
||||||
预处理-->编译-->汇编-->链接
|
|
||||||
|
|
||||||
选项:-E -S -c -o
|
|
||||||
|
|
||||||
文件后缀:.i .s .o .elf
|
|
||||||
|
|
||||||
预处理阶段主要完成预处理工作:处理以#开头的代码,如将头文件(#include)展开,将宏定义(#define)进行替换,将预处理指令(#if)按条件进行增删代码。
|
|
||||||
|
|
||||||
编译阶段主要完成代码的编译工作:检查代码中的语法问题
|
|
||||||
|
|
||||||
汇编阶段主完成汇编编译代码工作:将代码编译为汇编编译程序(二进制文件)
|
|
||||||
|
|
||||||
链接阶段主要完成程序文件的链接工作:将程序中所使用的库文件进行连接,此时所产生的文件即是最终的可执行程序
|
|
||||||
|
|
||||||

|
|
||||||
@@ -1,505 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
tags:
|
|
||||||
- 粤嵌
|
|
||||||
type:
|
|
||||||
- Source
|
|
||||||
status:
|
|
||||||
- 💤 Archived
|
|
||||||
star: false
|
|
||||||
date:
|
|
||||||
---
|
|
||||||
# **1. 虚拟机VMware的网络配置**
|
|
||||||
|
|
||||||
虚拟机的网络适配器的模式有两种:
|
|
||||||
|
|
||||||
- 桥接模式:使得虚拟机跟物理机一样,各自拥有独立的IP地址
|
|
||||||
|
|
||||||
- NAT模式:使得虚拟机直接共享物理机的IP,自己本身没有独立的IP地址
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
虚拟机VMware的网卡配置
|
|
||||||
|
|
||||||
以上两种模式都可以联网,区别就是虚拟机要不要一个独立的IP。对于桥接模式需要注意,必须要仔细选择桥接的物理网卡,否则会出现无法联网的情形。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
虚拟网卡的桥接配置
|
|
||||||
|
|
||||||
## **1.1 桥接模式(推荐使用)**
|
|
||||||
|
|
||||||
所谓桥接,是指虚拟网卡通过物理机的某一个网络接口,直接连接到路由器去获取
|
|
||||||
|
|
||||||
例如:
|
|
||||||
|
|
||||||
- 通过桥接到 WiFi 来联网。
|
|
||||||
|
|
||||||
- 通过桥接到 以太网 来连接开发板
|
|
||||||
|
|
||||||
如下图所示,在
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
选择具体所需的桥接网卡
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**重置**
|
|
||||||
|
|
||||||
有时,如果网络参数经过多次配置导致无法再正确联网,可以通过点击下图中下方图表
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## **1.2 NAT模式**
|
|
||||||
|
|
||||||
如果虚拟机不需要单独的IP地址,那么可以通过
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
选择具体所需的桥接网卡
|
|
||||||
|
|
||||||
此时的虚拟网卡
|
|
||||||
|
|
||||||
## **1.3 仅主机模式**
|
|
||||||
|
|
||||||
有时限于外部网络的局限性,在Ubuntu无需联外网而需与宿主机Windows通信时,将 VMware 虚拟网卡配置为
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
仅主机模式
|
|
||||||
|
|
||||||
在此模式中,虚拟网卡
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
VMnet1虚拟路由
|
|
||||||
|
|
||||||
从上图可以看到,
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
VMnet1虚拟路由
|
|
||||||
|
|
||||||
有了各自的
|
|
||||||
|
|
||||||
[](http://vm.yueqian.com.cn:8886/previewCourses.html?courseId=1331899420259463169&courseName=Linux%E5%9F%BA%E7%A1%80#0)
|
|
||||||
|
|
||||||
# **2. Ubuntu网络配置**
|
|
||||||
|
|
||||||
## 终端命令配置
|
|
||||||
|
|
||||||
给虚拟机 VMware 选择了某一种联网模式后,一般还需要给客户机(即Ubuntu主机)配置好如下网络参数才能正常联网:
|
|
||||||
|
|
||||||
- 网卡名称
|
|
||||||
|
|
||||||
> eth0
|
|
||||||
> ens33
|
|
||||||
> ens32
|
|
||||||
|
|
||||||
|
|
||||||
- IP地址
|
|
||||||
|
|
||||||
> 在当前路由下所获得的主机IP(IPv4 IPv6)//192.168.2.x
|
|
||||||
|
|
||||||
|
|
||||||
- 子网掩码
|
|
||||||
|
|
||||||
> A类IP:255.0.0.0
|
|
||||||
> B类IP:255.255.0.0
|
|
||||||
> C类IP:255.255.255.0 //现使用
|
|
||||||
|
|
||||||
|
|
||||||
- 网关地址
|
|
||||||
|
|
||||||
> 当前路由的地址:192.168.2.1
|
|
||||||
|
|
||||||
|
|
||||||
- DNS(域名解析服务)
|
|
||||||
|
|
||||||
[国内/国外公共DNS服务器地址(Ipv4/Ipv6)大全 (config.net.cn)](https://config.net.cn/tools/Dns.html)
|
|
||||||
|
|
||||||
## **2.1 经典Linux网络配置**
|
|
||||||
|
|
||||||
**Ubuntu24.04配置流程详见本教程第4节**
|
|
||||||
|
|
||||||
在
|
|
||||||
|
|
||||||
1. 设置固定IP:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gec@ubuntu:~$ cat /etc/network/interfaces
|
|
||||||
# interfaces(5) file used by ifup(8) and ifdown(8)
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
auto ens33
|
|
||||||
iface ens33 inet static
|
|
||||||
address 169.254.54.200 # IP地址,根据具体的网络环境来写
|
|
||||||
netmask 255.255.0.0 # 子网掩码
|
|
||||||
gateway 169.254.54.1 # 网关地址
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 设置动态IP(自动获取IP)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gec@ubuntu:~$ cat /etc/network/interfaces
|
|
||||||
# interfaces(5) file used by ifup(8) and ifdown(8)
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
auto ens33
|
|
||||||
iface ens33 inet dhcp
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
**注意1**
|
|
||||||
|
|
||||||
一般而言,只有在虚拟机设定为桥接模式下,才需要配置Ubuntu的网络参数信息,如果虚拟机设定的是NAT模式,那么一般直接重启网络服务,让其自动获取网络参数即可。
|
|
||||||
|
|
||||||
**注意2**
|
|
||||||
|
|
||||||
以上示例以虚拟网卡
|
|
||||||
|
|
||||||
```bash
|
|
||||||
安装ifconfig
|
|
||||||
sudo apt install net-tools
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
ifconfig命令查看当前活跃的网卡名称
|
|
||||||
|
|
||||||
**重启网络服务**
|
|
||||||
|
|
||||||
```
|
|
||||||
# Ubuntu-14.04以前的版本:
|
|
||||||
gec@ubuntu:~$ sudo /etc/init.d/networking force-reload
|
|
||||||
gec@ubuntu:~$ sudo /etc/init.d/networking restart
|
|
||||||
|
|
||||||
# Ubuntu-14.04以后的版本:
|
|
||||||
gec@ubuntu:~$ sudo service networking force-reload
|
|
||||||
gec@ubuntu:~$ sudo service networking restart
|
|
||||||
```
|
|
||||||
|
|
||||||
**注意**
|
|
||||||
|
|
||||||
在更新的Ubuntu-17.10以后的版本中,网络配置用的是 netplan 命令,而不是上述命令。
|
|
||||||
|
|
||||||
**测试网络**
|
|
||||||
|
|
||||||
有两个命令可以测试网络是否连通:
|
|
||||||
|
|
||||||
一、执行
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ ping www.qq.com
|
|
||||||
```
|
|
||||||
|
|
||||||
ping外网测试网络是否通畅
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
二、执行
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ host www.qq.com
|
|
||||||
www.qq.com is an alias for public-v6.sparta.mig.tencent-cloud.net.
|
|
||||||
public-v6.sparta.mig.tencent-cloud.net has address 14.18.175.154
|
|
||||||
public-v6.sparta.mig.tencent-cloud.net has address 113.96.232.215
|
|
||||||
public-v6.sparta.mig.tencent-cloud.net has IPv6 address 240e:ff:f101:10::15f
|
|
||||||
gec@ubuntu:~$
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
- 注意:
|
|
||||||
|
|
||||||
- host成功返回域名的IP地址,代表当前网络是通的。
|
|
||||||
|
|
||||||
- host成功返回域名的IP地址,代表当前系统的DNS解析是正常的。
|
|
||||||
|
|
||||||
**DNS配置**
|
|
||||||
|
|
||||||
DNS(Domain Name Server),即域名服务器,访问网址时必须通过 DNS 解析为对应的IP地址,才能正常访问网站。在以上测试命令中,如果ping成功,但host不成功,代表当前电脑的DNS配置有问题。
|
|
||||||
|
|
||||||
**配置 **
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo cat /etc/resolv.conf
|
|
||||||
# This file is managed by man:systemd-resolved(8). Do not edit.
|
|
||||||
#
|
|
||||||
# This is a dynamic resolv.conf file for connecting local clients to the
|
|
||||||
# internal DNS stub resolver of systemd-resolved. This file lists all
|
|
||||||
# configured search domains.
|
|
||||||
#
|
|
||||||
# Run "resolvectl status" to see details about the uplink DNS servers
|
|
||||||
# currently in use.
|
|
||||||
#
|
|
||||||
# Third party programs must not access this file directly, but only through the
|
|
||||||
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
|
|
||||||
# replace this symlink by a static file or a different symlink.
|
|
||||||
#
|
|
||||||
# See man:systemd-resolved.service(8) for details about the supported modes of
|
|
||||||
# operation for /etc/resolv.conf.
|
|
||||||
|
|
||||||
nameserver x.x.x.x
|
|
||||||
options edns0 trust-ad
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
具体域名服务器的IP地址
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
宿主机windows的DNS配置
|
|
||||||
|
|
||||||
**重启 **
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo service systemd-resolved restart
|
|
||||||
```
|
|
||||||
|
|
||||||
**查看、启停网络接口**
|
|
||||||
|
|
||||||
使用命令
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ ifconfig
|
|
||||||
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
|
|
||||||
inet 192.168.1.103 netmask 255.255.255.0 broadcast 192.168.1.255
|
|
||||||
inet6 fe80::20c:29ff:fe80:949c prefixlen 64 scopeid 0x20<link>
|
|
||||||
ether 00:0c:29:80:94:9c txqueuelen 1000 (Ethernet)
|
|
||||||
RX packets 2020 bytes 266623 (266.6 KB)
|
|
||||||
RX errors 0 dropped 0 overruns 0 frame 0
|
|
||||||
TX packets 8299 bytes 548748 (548.7 KB)
|
|
||||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
|
||||||
|
|
||||||
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
|
|
||||||
inet 127.0.0.1 netmask 255.0.0.0
|
|
||||||
inet6 ::1 prefixlen 128 scopeid 0x10<host>
|
|
||||||
loop txqueuelen 1000 (Local Loopback)
|
|
||||||
RX packets 37191 bytes 2722682 (2.7 MB)
|
|
||||||
RX errors 0 dropped 0 overruns 0 frame 0
|
|
||||||
TX packets 37191 bytes 2722682 (2.7 MB)
|
|
||||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
|
||||||
```
|
|
||||||
|
|
||||||
**注意**
|
|
||||||
|
|
||||||
- lo是Linux系统的本地回环设备,此设备需如上所示已启动方可连网。
|
|
||||||
|
|
||||||
- 若某些网卡由于某些原因未启动,则可使用如下命令来解决:
|
|
||||||
|
|
||||||
- 使用 ifconfig -a 来查看所有的网络接口
|
|
||||||
|
|
||||||
- 使用 ifconfig 网卡名称 up 来启动指定的网卡。
|
|
||||||
|
|
||||||
**启停指定的网络接口(网卡)**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo ifconfig ens33 up ==> 启用ens33
|
|
||||||
gec@ubuntu:~$ sudo ifconfig ens33 down ==> 停用ens33
|
|
||||||
```
|
|
||||||
|
|
||||||
在某些系统中,以上命令也可以用如下命令替代:
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo ifup ens33 ==> 启用ens33
|
|
||||||
gec@ubuntu:~$ sudo ifdown ens33 ==> 停用ens33
|
|
||||||
```
|
|
||||||
|
|
||||||
**临时指定的网口IP地址**
|
|
||||||
|
|
||||||
与编辑
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo ifconfig ens33 192.168.1.103
|
|
||||||
```
|
|
||||||
|
|
||||||
**指定默认网关**
|
|
||||||
|
|
||||||
在某些情况下,Ubuntu无法正确找到网关,从而导致无法连网,可以手动配置网关地址:
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ sudo route add default gw 192.168.1.1
|
|
||||||
```
|
|
||||||
|
|
||||||
网关地址根据各个局域网的配置不同而有所改变,不能照抄上述地址,网关地址一般而言就是当前局域网的路由器的地址,可以从宿主机windows的网络配置化中查看:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[](http://vm.yueqian.com.cn:8886/previewCourses.html?courseId=1331899420259463169&courseName=Linux%E5%9F%BA%E7%A1%80#0)宿主机windows的DNS配置[](http://vm.yueqian.com.cn:8886/previewCourses.html?courseId=1331899420259463169&courseName=Linux%E5%9F%BA%E7%A1%80#0)
|
|
||||||
|
|
||||||
## **2.2 Netplan网络配置**
|
|
||||||
|
|
||||||
在17.10之前的老版本Ubuntu中,配置网络可能有多种手段,可以直接使用systemd,或者配置
|
|
||||||
|
|
||||||
通过统一对
|
|
||||||
|
|
||||||
**自动获取IP**
|
|
||||||
|
|
||||||
以下的配置信息展现了如何使用
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ cat /etc/netplan/01-network-manager-all.yaml
|
|
||||||
# Let NetworkManager manage all devices on this system
|
|
||||||
network:
|
|
||||||
version: 2
|
|
||||||
renderer: NetworkManager
|
|
||||||
ethernets:
|
|
||||||
ens33:
|
|
||||||
dhcp4: yes
|
|
||||||
dhcp6: yes
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
说明:
|
|
||||||
|
|
||||||
- renderer:指定yaml文件针对配置的网络工具
|
|
||||||
|
|
||||||
- ethernets:配置以太网
|
|
||||||
|
|
||||||
- ens33:以太网口名称
|
|
||||||
|
|
||||||
- dhcp4:自动获取IPv4的网络地址
|
|
||||||
|
|
||||||
- dhcp6:自动获取IPv6的网络地址
|
|
||||||
|
|
||||||
注意:
|
|
||||||
|
|
||||||
- 冒号后面必须有空格
|
|
||||||
|
|
||||||
- 缩进的空格数必须一致
|
|
||||||
|
|
||||||
**设定静态IP**
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:~$ cat /etc/netplan/01-network-manager-all.yaml
|
|
||||||
# Let NetworkManager manage all devices on this system
|
|
||||||
network:
|
|
||||||
version: 2
|
|
||||||
renderer: NetworkManager
|
|
||||||
ethernets:
|
|
||||||
ens33:
|
|
||||||
dhcp4: no
|
|
||||||
addresses: [192.168.100.100/24]
|
|
||||||
gateway4: 192.168.100.1
|
|
||||||
nameservers:
|
|
||||||
addresses: [202.96.134.133, 8.8.8.8]
|
|
||||||
gec@ubuntu:~$
|
|
||||||
gec@ubuntu:~$
|
|
||||||
```
|
|
||||||
|
|
||||||
说明:
|
|
||||||
|
|
||||||
- [192.168.100.100/24] 中的24代表设定的IP地址的前24比特位为子网掩码,也就是255.255.255.0
|
|
||||||
|
|
||||||
- nameservers 代表 DNS 服务器
|
|
||||||
|
|
||||||
**使能netplan**
|
|
||||||
|
|
||||||
配置完
|
|
||||||
|
|
||||||
```
|
|
||||||
gec@ubuntu:$ sudo netplan apply
|
|
||||||
```
|
|
||||||
|
|
||||||
# 3.ssh网络协议使用
|
|
||||||
|
|
||||||
SSH(Secure Shell,安全外壳协议)是一种用于加密远程登录和网络服务的网络协议,主要作用是在不安全的网络环境中,为计算机之间的通信提供安全的加密通道,避免数据传输被窃听或篡改。
|
|
||||||
|
|
||||||
## 在Ubuntu安装SSH服务
|
|
||||||
|
|
||||||
1. 远程登录Ubuntu系统终端
|
|
||||||
|
|
||||||
ssh协议进行登录:
|
|
||||||
|
|
||||||
(1) 配置Ubuntu支持ssh服务
|
|
||||||
|
|
||||||
① 检查系统是否启动ssh服务:ps -e | grep ssh
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
② 若系统没有启动SSH服务则需要安装ssh服务
|
|
||||||
|
|
||||||
sudo apt install ssh -y
|
|
||||||
|
|
||||||
(2) 查看自己Ubuntu的IP
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
(3) 打开一个终端
|
|
||||||
|
|
||||||
使用vscode中终端的ssh指令来登录Ubuntu
|
|
||||||
|
|
||||||
ssh [user@ip](http://user@ip)
|
|
||||||
|
|
||||||
user :用户名
|
|
||||||
|
|
||||||
ip:ubuntu的IP
|
|
||||||
|
|
||||||
输入指令:ssh 自己的用户名称@自己Ubuntu系统的IP地址
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
1. 文件传输
|
|
||||||
|
|
||||||
下载文件:
|
|
||||||
|
|
||||||
scp <用户名>@<ssh服务器地址>:<文件> <本地文件路径>
|
|
||||||
|
|
||||||
```shell
|
|
||||||
scp root@192.168.13.233:text /opt #从远程主机192.168.13.233的root用户下载text文件到本地的/opt目录中
|
|
||||||
```
|
|
||||||
|
|
||||||
文件夹:
|
|
||||||
|
|
||||||
scp -r <用户名>@<ssh服务器地址>:<文件> <本地文件路径>
|
|
||||||
|
|
||||||
```shell
|
|
||||||
scp -r root@192.168.13.233:text /opt #从远程主机192.168.13.233的root用户下载text文件夹到本地的/opt目录中
|
|
||||||
```
|
|
||||||
|
|
||||||
上传:
|
|
||||||
|
|
||||||
scp <本地文件名> <用户名>@<ssh服务器地址>:<上传保存路径>
|
|
||||||
|
|
||||||
```shell
|
|
||||||
scp text root@192.168.13.233:/opt #将本地的text文件上传到远程主机192.168.13.233的root用户的/opt目录中
|
|
||||||
```
|
|
||||||
|
|
||||||
例子:
|
|
||||||
|
|
||||||
scp ts root@192.168.13.233:/ //将本地文件ts传输到目标(192.168.13.233)的/ 目录下
|
|
||||||
|
|
||||||
# 4.图形化界面IP地址修改(推荐)
|
|
||||||
|
|
||||||
主机WindowsIP固定
|
|
||||||
|
|
||||||
打开控制面板-->网络和Internet-->网络共享中心
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**注意:离开教室后使用有线网络是要将IPv4设置为自动获取方可上网**
|
|
||||||
|
|
||||||
UbuntuIP地址固定。虚拟机的网络设置要修改为桥接
|
|
||||||
|
|
||||||
设置-->网络-->设置-->IPv4-->手动
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
DNS推荐使用:192.168.2.1
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
重启网络链接不上外网则将DNS改为192.168.2.1
|
|
||||||
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 302 KiB |
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 119 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 311 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 482 KiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 197 KiB |
|
Before Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 549 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 24 KiB |