【MIT 6.828】2. 实验环境准备
做实验之前,对需要的 toolchain 进行安装
0x00 简述
我的实验环境:
- CentOS 7
0x01 工具安装
整个实验环境需要两类工具:ToolChain、QEMU 模拟器
ToolChain 工具链
ToolChain 包含汇编器、连接器、C 编译器和 debug 工具。
一般的现代 Linux 系统都自带了 6.828 需要的 ToolChain,命令 objdump -i
和 gcc -m32 -print-libgcc-file-name
如果都能执行成功,说明 ToolChain 工具链已经就绪。
我的 CentOS 自带了 ToolChain 工具链,所以没有安装,如果有问题或者需要自己安装 ToolChain 工具链,可以参考官方文档和B 站 UP 主的视频指导,推荐B 站 UP 主的视频指导,该视频讲解的很详细。
更新补充: 使用 linux 自带的工具链还是有些问题,需要到
JOS
中将conf/env.mk
中的GCCPREFIX=
注释掉,比较麻烦,估计坑也不少,建议按照官方文档安装。
本人打包好的工具链安装包:点击下载
安装命令如下:
tar xjf gmp-5.0.2.tar.bz2;cd gmp-5.0.2;./configure --prefix=/usr/local;make;make install;cd ..
tar xjf mpfr-3.1.2.tar.bz2;cd mpfr-3.1.2;./configure --prefix=/usr/local;make;make install;cd ..
tar xzf mpc-0.9.tar.gz;cd mpc-0.9;./configure --prefix=/usr/local;make;make install;cd ..
tar xjf binutils-2.21.1.tar.bz2;cd binutils-2.21.1;./configure --prefix=/usr/local --target=i386-jos-elf --disable-werror;make;make install;cd ..
i386-jos-elf-objdump -i
tar xjf gcc-core-4.6.4.tar.bz2;cd gcc-4.6.4;mkdir build;cd build
../configure --prefix=/usr/local --target=i386-jos-elf --disable-werror --disable-libssp --disable-libmudflap --with-newlib --without-headers --enable-languages=c MAKEINFO=missing
make all-gcc
make install-gcc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib # 可以加到 ~/.bashrc 文件中,避免每次手动导入
make all-target-libgcc
make install-target-libgcc
cd ../..
i386-jos-elf-gcc -v
tar xjf gdb-7.3.1.tar.bz2;cd gdb-7.3.1;./configure --prefix=/usr/local --target=i386-jos-elf --program-prefix=i386-jos-elf- --disable-werror;make all;make install;cd ..
git clone https://github.com/mit-pdos/6.828-qemu.git qemu
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="i386-softmmu x86_64-softmmu"
make && make install
# 下载课程 jos 代码:
git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab
QEMU 模拟器
QEMU 建议安装 6.828 专用的 path 版本,仓库为 https://github.com/mit-pdos/6.828-qemu.git,可参考官方文档安装,安装时的简单报错可以根据提示很容易修复。
0x02 Troubleshooting
-
安装 QEMU 时 pixman 报错
- 首选:
yum install pixman-devel
git submodule update --init pixman
把 pixman 代码下载下来即可
- 首选:
-
编译 QEMU 时出现
glib-2.22 gthread-2.0 is required to compile QEMU
yum install glib2
、yum install glib2-devel