最近开始做一个操作系统的神课MIT-OS6.S081,我做的是老版本的2020版本的,环境使用的是VirtualBox的Ubuntu系统,在这里记录一下学习的过程。首先需要搭建一下环境,参考官网Tools Used in 6.S081,这个知乎文章也写得很好:MIT 6.S081 Operating System Lab1:Utilities
$ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
# 这里安装的qemu-system-misc可能和当前的内核有兼容性问题,这里移除安装的新版本
$ sudo apt-get remove qemu-system-misc
# 安装qemu
$ wget https://download.qemu.org/qemu-5.1.0.tar.xz
$ tar xf qemu-5.1.0.tar.xz
$ cd qemu-5.1.0
$ ./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
$ make
$ sudo make install
下面介绍了qemu的用处:
QEMU(Quick Emulator)是一个广泛使用的开源虚拟化软件。它主要有以下用途:
- 一、模拟不同架构的计算机系统
跨平台开发和测试
开发人员可以在一种操作系统上模拟另一种操作系统和硬件架构,进行软件的开发和测试。例如,在 x86 架构的计算机上模拟 ARM 架构的设备,以便开发和测试适用于移动设备的软件。
这对于需要支持多种硬件平台的软件开发非常有用,可以在不具备实际硬件的情况下进行早期的开发和调试。
学习和研究
学生和研究人员可以使用 QEMU 来学习不同的计算机体系结构和操作系统原理。通过模拟各种硬件和软件环境,可以深入了解计算机系统的工作方式。
可以模拟古老或罕见的计算机系统,帮助研究计算机历史和技术发展。- 二、虚拟化
虚拟机运行
QEMU 可以创建虚拟机,在其中运行不同的操作系统。用户可以在同一台物理计算机上同时运行多个虚拟机,每个虚拟机都可以独立运行不同的操作系统和应用程序。
这对于服务器虚拟化、桌面虚拟化等场景非常有用,可以提高硬件资源的利用率,降低成本。
容器化环境模拟
虽然容器技术(如 Docker)通常使用不同的虚拟化技术,但 QEMU 也可以在某些情况下用于模拟容器化环境,特别是在需要更高级别的隔离或模拟特定硬件环境时。- 三、设备模拟
嵌入式系统开发
在嵌入式系统开发中,QEMU 可以模拟目标硬件平台,使开发人员能够在开发主机上进行软件开发和调试,而无需实际的嵌入式设备。这可以大大提高开发效率,减少开发周期。
可以模拟各种嵌入式设备的外设,如传感器、通信接口等,以便进行全面的系统测试。
硬件测试和验证
硬件制造商可以使用 QEMU 来模拟他们的硬件产品,进行软件兼容性测试和验证。这可以帮助他们在硬件生产之前发现和解决潜在的问题,提高产品质量。
可以模拟各种故障情况,测试硬件和软件的容错能力。- 四、安全研究
恶意软件分析
安全研究人员可以使用 QEMU 来隔离和分析恶意软件。在模拟的环境中运行恶意软件,可以观察其行为而不会对实际系统造成危害。
可以设置不同的安全限制和监控工具,以便更好地了解恶意软件的工作原理和攻击方法。
漏洞研究和利用
QEMU 可以用于模拟存在漏洞的系统,帮助研究人员发现和利用安全漏洞。通过在可控的环境中进行漏洞研究,可以更好地理解漏洞的本质和影响,从而提出更有效的安全解决方案。
查看一下qemu是否安装成功:
qemu-system-riscv64 --version
继续操作:
# 克隆xv6实验仓库
$ git clone git://g.csail.mit.edu/xv6-labs-2020
$ cd xv6-labs-2020
$ git checkout util
# 进行编译
$ make qemu
这里我出现了报错:
riscv64-linux-gnu-gcc: error: unrecognized command line option
‘-mno-relax’; did you mean ‘-Wno-vla’?
查看这个博主的文章xv6环境搭建说riscv64-linux-gnu-gcc编译工具链版本太低,进行下列操作:
$ sudo apt install gcc-8-riscv64-linux-gnu$ sudo update-alternatives --install /usr/bin/riscv64-linux-gnu-gcc riscv64-linux-gnu-gcc /usr/bin/riscv64-linux-gnu-gcc-8 8
重新make qemu
,OK进入环境了:
现在我们可以简单测试一下,输入
ls
OK了,实验环境设立完成, 我们成功boot了xv6这个简易操作系统.
退出环境:先按Ctrl+A
,然后按x
,下一篇再见了,enjoy it!