MIT6.828 实验环境配置
1.0 Ubuntu:使用linux操作系统
2.0 安装git
3.0 使用命令行创建了一个目录 /6.828,在该目录下初始化一个git仓库
~/6.828$ git init
4.0 JOS系统源码clone到本地
~/6.828$ git clone https://pdos.csail.mit.edu/6.828/2017/jos.git lab
5.0 打开lab文件,编译代码
~/6.828/lab$ make
发现报错,因此要安装QEMU这个仿真器
Error: Couldn't find a working QEMU executable.
安装QEMU的步骤是这样:
1.安装包。
sudo apt-get install libsdl1.2-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libz-dev
sudo apt-get install libpixman-1-dev
sudo apt-get install libtool*
2.进行配置。
打开qemu所在目录
sudo ./configure --disable-kvm --disable-werror --prefix=$HMOE --target-list="i386-softmmu x86_64-softmmu"
3.进行安装。
sudo make && make install
在以上三个步骤中,踩了非常多的坑。总结一下。
一、安装包
报错包之间的依赖有问题(网上一查一大把的bug)我试了很多方法。把apt-get换成了aptitude无用;最后是换了源解决的。
二、进行配置。
2.1 配置完后出现了这个错误:
安装libtool包后解决的。
sudo apt-get install libtool*
三、安装
3.1 安装过程中,代码报错。
照着提示解决。打开报错文件。`
~/6.828/lab/qemu$ vim qga/commands-posix.c
在<sys/types.h>后加入<sys/sysmacros.h>
继续安装。又报了Werror。百度找到了两种解决方法,一是直接在代码中删除werror,另一种是在配置的时候处理werror,我选择的是第二种。
sudo ./configure --disable-werror --prefix==/usr/local --target-list="i386-softmmu x86_64-softmmu"
继续安装,又报了错而且想不通,这目录就是绝对路径啊。
libtool: error: '=/usr/local/bin' must be an absolute directory name
Makefile:400: recipe for target 'install' failed
make: *** [install] Error 1
研究了老半天,抱着死马当活马医的心态,在配置里又改了路径。居然行了。
~/6.828/lab/qemu$ sudo ./configure --disable-kvm --disable-werror --prefix=$HMOE --target-list="i386-softmmu x86_64-softmmu"
但是又碰到了新的问题。
install: cannot create directory ‘/share’: Permission denied Makefile:382: recipe for target 'install-datadir' failed
进入root用户试试。
~/6.828/lab/qemu$ su root
然后再安装,成功了!
输入qemu-system-i386
跳出了qemu界面。
QUMU安装好之后,make lab下的代码。
报错:
lib/printfmt.c:41: undefined reference to `__udivdi3'
lib/printfmt.c:49: undefined reference to `__umoddi3'
原因是开发环境是64而我gcc,但需要的是32位,所以安装32位gcc。
sudo apt-get install gcc-multilib
再次进行make,成功!
emiko@emiko-virtual-machine:~/6.828/lab$ sudo make
+ ld obj/kern/kernel
+ as boot/boot.S
+ cc -Os boot/main.c
+ ld boot/boot
boot block is 390 bytes (max 510)
+ mk obj/kern/kernel.img
====================================================
make成功了,但没有想到make qemu失败了。
搞了两天,怀疑过qem版本问题,但问了别人也是同样的版本没问题。反正试了好多方法最终参考了这位大神的解决办法 修改了一下源代码解决了 感谢他! 终于解决了!