diff --git a/02_基础操作/assets/常用的组合命令/.keep b/02_基础操作/assets/常用的组合命令/.keep new file mode 100644 index 00000000..e69de29b diff --git a/02_基础操作/assets/常用的组合命令/ncdu命令示例.png b/02_基础操作/assets/常用的组合命令/ncdu命令示例.png new file mode 100644 index 00000000..cd5e8ea3 Binary files /dev/null and b/02_基础操作/assets/常用的组合命令/ncdu命令示例.png differ diff --git a/02_基础操作/常用的组合命令.md b/02_基础操作/常用的组合命令.md index 249524cc..a27c4253 100644 --- a/02_基础操作/常用的组合命令.md +++ b/02_基础操作/常用的组合命令.md @@ -44,4 +44,19 @@ cp /etc/source.cpp /home/ ```bash cat file1.txt file2.txt > file.txt -``` \ No newline at end of file +``` + +7. 快速查找家目录下占用大量空间的文件和目录 + +```bash +sudo apt install ncdu +``` + 完成安装后,执行命令 +```bash +ncdu /home/你的用户名 +``` +例如,我的用户名是 test ,运行 ncdu /home/test后,结果如下 + +![输入图片说明](assets/%E5%B8%B8%E7%94%A8%E7%9A%84%E7%BB%84%E5%90%88%E5%91%BD%E4%BB%A4/ncdu%E5%91%BD%E4%BB%A4%E7%A4%BA%E4%BE%8B.png) + +用方向键进行导航,回车进入下一级目录,按 d 可删除文件 ,q 退出 (更多用法请执行 man ncdu 进行查看 ) \ No newline at end of file diff --git a/02_基础操作/虚拟机/01_虚拟化技术简介.md b/02_基础操作/虚拟机/01_虚拟化技术简介.md new file mode 100644 index 00000000..cd30d22c --- /dev/null +++ b/02_基础操作/虚拟机/01_虚拟化技术简介.md @@ -0,0 +1,141 @@ +--- +title: 虚拟化技术简介 +description: 对虚拟化技术进行了简要介绍 +published: true +date: 2024-10-14T08:22:46.338Z +tags: +editor: markdown +dateCreated: 2024-10-14T06:04:02.696Z +--- + +# 什么是虚拟化? + +在《系统虚拟化——原理与实现》一书中,对虚拟化有如下阐释: + +> 抽象来说,虚拟化是资源的逻辑表示,它不受物理限制的约束。具体来说,虚拟化技术 +> 的实现形式是在系统中加入一个虚拟化层,虚拟化层将下层的资源抽象成另一形式的资 +> 源,提供给上层使用。通过空间上的分割、时间上的分时以及模拟,虚拟化可以将一份 +> 资源抽象成多份。反过来,虚拟化也可以将多份资源抽象成一份。 + +从上可知,虚拟化是资源的逻辑表示。这里的资源,既可以是磁盘、网络、文件系统等系 +统组件,也可以是完整的计算机系统。对于后者,我们常常称之为系统虚拟化,也是最常 +见的一种虚拟化形式。 + +# 系统虚拟化 + +系统虚拟化是指将一台物理计算机系统虚拟化为一台或多台虚拟计算机系统。系统虚拟化 +是虚拟化技术中的一种,其抽象的粒度是整个计算机。 + +位于物理计算机与虚拟计算机之间的虚拟化层,可称之为虚拟机监控器,英文为Virtual +Machine Monitor(VMM)或Hypervisor。 + +由于虚拟计算机寄生于物理计算机上,通常又将虚拟计算机称为客户机,将物理计算机称 +为宿主机。 + +## 系统虚拟化的优势 + +- **封装性**:以虚拟机为粒度进行封装,可方便的实现虚拟机的快照、克隆、挂起、恢 + 复等功能。 +- **多实例**:在一个计算机上运行多个虚拟机,资源调度更优化,利用更充分。 +- **隔离性**:虚拟机独立运行,互不影响。 +- **硬件无关性**:与物理硬件解耦,方便迁移。 +- **特权功能**:VMM具有比虚拟机更高的特权,可监控虚拟机动态,实现事件记录和回 + 放、入侵检测、病毒检测等。 + + +## 系统虚拟化与容器的区别 + +容器也属于广义上的操作系统层的虚拟化,但与系统虚拟化隔离的组件不一样(内核、设 +备)。 + +![系统虚拟化与容器虚拟化](assets/container-vs-virtualization.png) + +## Type1与Type2虚拟化 + +Type 1和Type 2管理程序之间的主要区别是:Type 1在裸机上运行,而Type 2在操作系统 +上运行。 + +![Type1与Type2虚拟化](assets/type1-vs-type2.png) + +## 全虚拟化与半虚拟化 + +这里的“全”和“半”是指是否完全模拟了硬件环境。 + +对于全虚拟化,其完全模拟了整个硬件环境,虚拟机操作系统感知不到其位于虚拟环境 +中,因而具有兼容性好,移植性强等特点。 + +对于半虚拟化,其某些虚拟设备并不是安全按着对应的物理设备进行模拟的,因而需要 +修改操作系统内的设备驱动,才能正确识别或访问设备。半虚拟化由于不用死板的模拟 +物理硬件的行为(比如寄存器访问、硬件交互协议等),因而在实现逻辑上便存在很大 +的优化空间,所以一般性能较好。 + +## 纯软件虚拟化与硬件辅助虚拟化 + +纯软件虚拟化, 顾名思义, 就是用纯软件的方法在现有的物理平台上(往往并不支持 +硬件虚拟化) 实现对物理平台访问的截获和模拟。常见的软件虚拟机例如QEMU,它是 +通过纯软件来仿真X86平台处理器的取指、解码和执行,客户机的指令并不在物理平台 +上直接执行。由于所有的指令都是软件模拟的,因此性能往往比较差,但是可以在同一 +平台上模拟不同架构平台的虚拟机。 + +硬件辅助虚拟化,简而言之,就是物理平台本身提供了对特殊指令的截获和重定向的硬 +件支持,甚至,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化, +从而提升性能。 + +综合来说,硬件辅助虚拟化的性能大大优于纯软件虚拟化,是未来虚拟化的主要方向。 + +# 虚拟化的实现 + +## KVM简介 + +基于内核的虚拟机(KVM)是一种内建于Linux的开源虚拟化技术。具体而言,KVM +可将Linux转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即 +虚拟客户机或虚拟机(VM)。 + +KVM是Linux的一部分。Linux 2.6.20或更新版本包括KVM。KVM于2006年首次公 +布,并在一年后合并到主流Linux内核版本中。由于KVM属于现有的Linux代码,因 +此它能立即享受每一项新的Linux功能、修复和发展,无需进行额外工程。 + +KVM将Linux转变为1类(裸机)虚拟机监控程序。所有虚拟机监控程序都需要一些 +操作系统层面的组件才能运行虚拟机,如内存管理器、进程调度程序、输入/输出(I/O) +堆栈、设备驱动程序、安全管理器以及网络堆栈等。由于KVM是Linux内核的一部分, +因此它包含了所有这些组件。每个虚拟机都像常规Linux进程一样实施,由标准的Linux +调度程序进行调度,并且使用专门的虚拟硬件,如网卡、图形适配器、CPU、内存和磁 +盘等。 + +## QEMU简介 + +> QEMU is a generic and open source machine emulator and virtualizer. +> —— https://www.qemu.org/ + +QEMU是一款开源的虚拟机软件,它可以模拟多种不同的硬件平台,包括x86、ARM、MIPS、 +SPARC等,支持多种操作系统的运行,如Linux、Windows、Mac OS X、FreeBSD等。QEMU +可用于虚拟化、仿真、调试和测试等多种应用场景。QEMU能够将一台物理主机模拟成多 +台虚拟机,为用户提供了一个隔离的环境来运行不同的应用程序和操作系统。QEMU是一 +个轻量级的虚拟机软件,易于安装和配置,并且具有良好的可移植性和跨平台性。 + +QEMU有多种使用方式: + +- 系统模拟(System Emulation) + 提供完整的、模拟的计算机系统来运行客户机OS。CPU可以是纯模拟的,也可以直接使用 + 宿主机CPU,可搭配KVM、Xen等使用。 +- 用户模式模拟(User Mode Emulation) + 可直接在系统中运行另一架构的二进制程序,这种模式下CPU是纯模拟的。 + +## KVM/QEMU虚拟化方案 + +KVM/QEMU虚拟化方案很好的结合了KVM和QEMU各自的优点,在该方案中: + +- KVM主要负责CPU、内存的虚拟化 +- QEMU主要负责设备的虚拟化 + +它们的组合,很好的解决了之前存在的一些问题,比如: + +- KVM只提供了虚拟机管理接口,需要用户空间程序的配合才能完成虚拟机的管理,无法 + 独立使用 +- KVM不能模拟外设,但QEMU已支持了大量的外设 +- QEMU的模拟CPU模式效率低下 + +# 参考资料 + +- https://www.redhat.com/zh/topics/virtualization/ +- https://tecadmin.net/type-1-vs-type-2-virtualization/ diff --git a/02_基础操作/虚拟机/assets/container-vs-virtualization.png b/02_基础操作/虚拟机/assets/container-vs-virtualization.png new file mode 100644 index 00000000..b9d418ad Binary files /dev/null and b/02_基础操作/虚拟机/assets/container-vs-virtualization.png differ diff --git a/02_基础操作/虚拟机/assets/type1-vs-type2.png b/02_基础操作/虚拟机/assets/type1-vs-type2.png new file mode 100644 index 00000000..4422053b Binary files /dev/null and b/02_基础操作/虚拟机/assets/type1-vs-type2.png differ diff --git a/03_常见问题/FAQ.md b/03_常见问题/FAQ.md index 767c9ecb..52a1dbbe 100644 --- a/03_常见问题/FAQ.md +++ b/03_常见问题/FAQ.md @@ -190,4 +190,4 @@ Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub ```bash sudo passwd root ``` - 注意事项:请牢记root密码并不要轻易向他人透露root密码,在root用户下操作需谨慎! \ No newline at end of file + 注意事项:请牢记root密码并不要轻易向他人透露root密码,在root用户下操作需谨慎! diff --git a/04_社区贡献/开发指南/openKylin开发环境配置手册.md b/04_社区贡献/开发指南/openKylin开发环境配置手册.md index d9299ab0..5521f7ca 100644 --- a/04_社区贡献/开发指南/openKylin开发环境配置手册.md +++ b/04_社区贡献/开发指南/openKylin开发环境配置手册.md @@ -12,6 +12,7 @@ https://www.openkylin.top/downloads/download-smp.php?id=80 部分开发者可能希望在arm、riscv开发板中安装openKylin,也建议首先在x86机器中安装,以此来熟悉openKylin开发环境的配置方法。arm、riscv开发板中openKylin安装指南链接如下: [arm上安装openKylin.md](/01_安装升级指南/arm上安装openKylin.md) + [riscv上安装openKylin](/01_安装升级指南/riscv上安装openKylin.md) @@ -26,9 +27,9 @@ sudo apt install build-essential # 包含gcc、g++、make等 ``` 2、编写helloworld.c -在终端中使用文本编辑器创建.c文件 -`vim helloworld.c` -按i进入输入模式,并输入以下内容: + +在桌面右键新建.c文件,例如名称是helloworld.c +双击打开文件helloworld.c,并输入以下内容: ``` #include @@ -38,10 +39,10 @@ int main() { } ``` -保存并退出 esc->:wq->Enter +ctrl+s保存,然后关闭文本编辑器 3、编译程序 -使用gcc编译源代码: +在helloworld.c所在目录的空白处右键,选择**打开终端**,使用gcc编译源代码: `gcc helloworld.c -o helloworld` 4、运行程序 @@ -70,11 +71,15 @@ sudo apt install qtcreator qt5-qmake qtbase5-dev g++ # 四、deb构建环境配置 deb是openKylin系统中使用的软件包格式,当开发者创建了一个工程后,可以在工程中添加debian目录并将工程编译成deb包。之后可以使用apt或dpkg命令将该deb包安装到openKylin系统中。具体操作流程如下: -1、安装deb构建所需环境: -`sudo apt install devscripts` +1、安装deb构建所需环境: +`sudo apt install devscripts dh-make` + +2、生成debian目录前需要将项目文件夹改名为项目-1.0.0类似格式(生成debian目录后可以修改回原名),之后在项目所在目录执行以下命令生成debian目录: +`dh_make --createorig -e 邮箱地址` + +回车后会提示选择包的类型,有***single***、***indep***、***library***、***python***,共四种,分别对应***s***,***i***,***l***,***p***,此处我们选择***s***, +输入完成后会提示是否确认,输入***y***即可 -2、生成debian目录前需要将项目文件夹改名为项目-1.0.0类似格式(生成debian目录后可以修改回原名),之后在项目所在目录执行以下命令生成debian目录: -`dh_make --createorig -e $邮箱地址。 选择s` 3、接下来需要修改debian目录,其中必须保留以下文件,具体功能如下: @@ -125,7 +130,7 @@ sudo apt install openssh-client openssh-server 4、远程登录其他计算机 `ssh user@192.168.1.1` 其中user为目标电脑的用户名。192.168.1.1为目标电脑的ip地址,可在目标电脑中通过ifconfig查看ip。执行以上命令后需要的操作: -(1)首次连接时需要输入yes。 +(1)首次连接时需要输入yes。注:这里需要输入完整的yes, (2)输入user在目标电脑上的登录密码。成功连接后终端提示符会变为user@目标主机名,代表连接成功。 # 六、kylin-aisdk环境配置