ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动

busybox 1.35.0 https://busybox.net/downloads/busybox-1.35.0.tar.bz2

sudo apt install make gcc libncurses-dev

编译配置:在busybox解压之后的目录下运行make menuconfig

1、Settings->Build static libary

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第1张图片

2、两个工具包可以不用编译:

  Coreutils->sync

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第2张图片

Linux System Utilities -> nsenter

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第3张图片

    3、修改一个源码(可选),主要是支持显示中文的。libbb/printable_string.c

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第4张图片

    31、32两行注释、45行,注释 || c >= 0x7f 

    4、之后运行make进行编译:出现如下所示信息,表示编译成功。

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第5张图片

    这里一些提示Library m is needed,can't exclude it等等,可以不用担心。

    接着执行make install会将编译结果安装到_install目录下,:

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第6张图片

    5、根据编译好的busybox制作根文件系统。 

cd _install
mkdir etc proc sys mnt dev tmp
mkdir -p etc/init.d
cat >> etc/fstab<>etc/init.d/rcS<>etc/inittab< rootfs.img.gz

   linux 5.18 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.18.tar.xz

    准备依赖环境 

sudo apt install flex bison libelf-dev libssl-dev

make x86_64_defconfig

   运行截图:
ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第7张图片     

make menuconfig

    修改Device Drivers->Block devices->Ram block device supportubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第8张图片      选中RAM block device support,注意要让前面的选项变为*,而不是M。 Default RAM disk size设置为65535。

     make 就可以了,(第一次编译过程比较漫长),不需要make install

     下面这一步不是必须的,如果执行make提示有报错xt_mark.h文件找不到,可以把系统上xt_mark.h头文件复制到对应的目录下。

     /usr/include/linux/netfilter/xt_mark.h文件要复制到 include/uapi/linux/netfilter/下

qemu

sudo apt install qemu-system-x86

    安装完qemu-system-x86之后,系统中自带了qemu-system-x86_64命令,接着,我们使用qemu-system-x86_64模拟linux系统。 

qemu-system-x86_64 -nographic \ 
-kernel linux-5.18/arch/x86_64/boot/bzImage \
-initrd busy-box-1.35.0/rootfs.img.gz \
-append "root=/dev/ram rw rootfstype=ext4 console=ttyS0 init=/linuxrc"

    linux启动之后,加载根文件系统,最后成功进入命令行。 

ubuntu源码编译busybox与linux内核并使用qemu-system-x86_64模拟启动_第9张图片

    需要注意的几个地方:

    1、linux编译需要设置支持ram启动。

    2、busybox编译之后,生成镜像,需要指定文件系统类型为ext4,虽然可以让系统支持ext3,但是这个需要设置,系统默认的是ext4。

    3、运行最后一步,qemu模拟启动,如果出现io-apic + timer doesn't work,可以考虑在qemu启动命令的append参数中增加noapic或者no-timer-check。

你可能感兴趣的:(linux,busybox,linux,kernel,qemu,rootfs,ext4)