编译目标内核

为了构建测试环境,我们需要编译目标内核。编译方法与实验二类似。

获取源代码

从kernel.org获取目标版本的内核代码:

git clone -b v4.4.25 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

也可以从科大镜像站获取:

git://mirrors.ustc.edu.cn/linux.git

注:对于git clone命令,可以使用--depth参数限制获取提交的深度,以减少clone时间。即:git clone --depth=1 ...

编译

获取内核配置文件:

cd linux-stable
curl -o .config https://gaoyifan.github.io/os-experiment/ex4/config

以上内核配置文件来源于ubuntu官方内核。开启了较多的选项,编译可能花费较长时间。

编译并打包:

make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-exploit

如果使用QEMU测试内核,直接生成bzImage即可,无需打包成debian package:

make -j `getconf _NPROCESSORS_ONLN`

注1:-j参数表示并行执行的任务数。建议配置为CPU线程数。

注2:getconf _NPROCESSORS_ONLN命令可以获得CPU核心数量。

注3:编译过程将产生较多的临时文件。建议预留20G磁盘空间。

安装(可选)

如果希望将内核安装在本机中,可以运行:

dpkg -i linux-image-4.4.25-exploit_4.4.25-exploit-1_amd64.deb

另,linux-image-4.4.25-exploit-dbg_4.4.25-exploit-1_amd64.deb包含了内核的调试符号,用于调试跟踪。

如果希望在QEMU中运行,则不需要将内核安装在本地。