这一步时间挺长的,但是如果你 make 了五六个小时都没 make 完就是电脑的问题,可能是内存不太够了
最后:
1
make modules
编译 busybox 构建文件系统
在启动内核前,先构建一个文件系统,否则内核会报错
可以新建一个文件夹装 busybox
在文件夹里执行以下命令下载安装
1 2 3 4 5
wget https://busybox.net/downloads/busybox-1.31.0.tar.bz2 tar -jxvf busybox-1.31.0.tar.bz2 cd busybox-1.31.0 make menuconfig make install
在 make menuconfig 结束之后还会出现和上面一样的图形化界面,也要进行一些选择
Busybox Settings -> Build Options -> Build Busybox as a static binary 编译成静态文件
关闭下面两个选项: Linux System Utilities -> [] Support mounting NFS file system 网络文件系统 Networking Utilities -> [] inetd (Internet超级服务器)
编译完 make install 后,在 busybox 源代码的根目录下会有一个 _install 目录:
接下来
1 2 3 4
cd _install mkdir proc sys dev etc etc/init.d vim etc/init.d/rcS chmod +x etc/init.d/rcS
其中 etc/init.d/rcS 的内容如下,就是作为启动脚本了:
1 2 3 4 5 6 7 8 9 10
#!/bin/sh echo "INIT SCRIPT" mkdir /tmp mount -t proc none /proc mount -t sysfs none /sys mount -t devtmpfs none /dev mount -t debugfs none /sys/kernel/debug mount -t tmpfs none /tmp echo -e "Boot took $(cut -d' ' -f1 /proc/uptime) seconds" setsid /bin/cttyhack setuidgid 1000 /bin/sh
最后利用命令创建文件系统:
1
find . | cpio -o --format=newc > ../rootfs.img
之后就可以使用 qemu 来运行内核了 : )
踩坑
编译内核时 make menuconfig 时报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14
q@ubuntu:~/linux-5.9.8$ make menuconfig HOSTCC scripts/basic/fixdep * * Unable to find the ncurses package. * Install ncurses (ncurses-devel or libncurses-dev * depending on your distribution). * * You may also need to install pkg-config to find the * ncurses installed in a non-default location. * scripts/kconfig/Makefile:214: recipe for target 'scripts/kconfig/mconf-cfg' failed make[1]: *** [scripts/kconfig/mconf-cfg] Error 1 Makefile:606: recipe for target 'menuconfig' failed make: *** [menuconfig] Error 2