内核编译

编译指令

make clean make mrproper # 可选 make menuconfig #直接save然后exit就行,反正也不会别的配置 make -j$(nproc) make modules -j$(nproc) sudo make modules_install sudo make install

遇到的问题及解决

make前的建议,把磁盘空间搞大一点。不然调整磁盘空间重启后make的进度就没了,又要重新make花很多时间。

  • 编译内核报错 No rule to make target ‘debian/canonical-certs.pem‘ 或 ‘canonical-revoked-certs.pem‘ 的解决方法 参考博客

  • vmware虚拟机磁盘空间不足No space left on device 参考博客

  • 你在编译内核时遇到了以下错误:pahole: .tmp_vmlinux.btf: No such file or directory和.btf.vmlinux.bin.o: file not recognized: file format not recognized,可以这样解决

sed -i 's/CONFIG_DEBUG_INFO_BTF=y/CONFIG_DEBUG_INFO_BTF=n/' .config

qemu启动kernel

  1. 需要编译内核后的arch/x86/boot/bzImage
  2. 需要busybox制作一个.img文件,busybox只是可以提供非常轻量化的所必备的bin文件,最终目的是通过busybox来制作一个.img文件 参考文章
  • 遇到end Kernel panic - not syncing: Requested init /linuxrc failed (error -2). 说明编译busybox时要静态链接 参考博客