写在前面的前面
在这里去做这个公开课的开学说明。我在学习过程中,所使用的都是md文档记录。
所有的文档也都上传到了github的本地仓库,有需要可以自行下载
https://github.com/cwb100/6.828
写在前面
整个环境搭建主要是根据[官方网站](6.828 / Fall 2018 (mit.edu))作为主要参考完成的,总体过程也非常麻烦,中间报错不断,最后也是终于在查了好多博客才完成。
我使用的环境是VM+Ubuntu(20.04.6LTS)作为参考。
我由于之前课程的原因,所以原本的虚拟环境中有预先装有qemu,害怕版本的问题,所以提前进行了卸载(卸载的博客可以轻松查到)
同时,在网站中有这样一句话Unfortunately, QEMU's debugging facilities, while powerful, are somewhat immature, so we highly recommend you use our patched version of QEMU instead of the stock version that may come with your distribution.
,,所以也是毫不犹豫删除了。
前面的后面(遇到的主要问题汇总)
所有的问题全部都出现在qemu的环境搭建中,中间不断出现问题。
-
./configure --disable-kvm --disable-werror [--prefix=PFX] [--target-list="i386-softmmu x86_64-softmmu"]
中的两个disable都不要少,否则后面会出问题 注:上面的两个方框表示选项的意思,不要忘了删
-
On Linux, you may need to install several libraries. We have successfully built 6.828 QEMU on Debian/Ubuntu 16.04 after installing the following packages: libsdl1.2-dev, libtool-bin, libglib2.0-dev, libz-dev, and libpixman-1-dev.
这里工具链的安装,问chatgpt后得知
libz-dev
包在 Ubuntu 中通常是zlib1g-dev
。可直接复制下面的话
sudo apt install libsdl1.2-dev libtool-bin libglib2.0-dev zlib1g-dev libpixman-1-dev
-
最后对qemu编译出现问题
解决方案可以看这篇博客和我遇到了很多相近的问题。
也即通过在qga/commands-posix.c中添加一个头文件,具体就是<sys/types.h>后加入<sys/sysmacros.h>
重新编译,解决问题。
-
最后的最后,运行qemu出现问题。报错代码如下
*** Error: Couldn't find a working QEMU executable. *** Is the directory containing the qemu binary in your PATH *** or have you tried setting the QEMU variable in conf/env.mk?
这里检查自己是否开始cpu虚拟化
grep -Eoc '(vmx|svm)' /proc/cpuinfo
如果没有开启会输出0,其余为大于0的数,即cpu核心数目。
下面安装KVM和其他虚拟化管理包
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
这里安装之后,libvirt守护进程自动启动,可以使用systemctl查看
sudo systemctl is-active libvirtd
最后,为了能够创建和管理虚拟机,需要将用户添加到libvirt和kvm组中,运行下面的代码
sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER
具体可以参考下面这个[博客](path - ERROR: Couldn’t find a working QEMU executable - Stack Overflow)
中间的最后
至此,JOS就可以运行起来了
可以用make qemu 或者make qemu-nox来启动系统。
两种都是一样的,不同的是前者有图形用户界面(即下图一),后者无
注:使用ctrl+a 再按x退出qemu