【LinuxOS】qemu调试linux内核环境搭建

本文档记录了在Linux环境中编译内核源码、解决依赖问题、配置并编译Busybox以创建静态根文件系统的过程,包括创建rootfs镜像、挂载和卸载以及在QEMU中启动虚拟机的步骤。在启动QEMU时遇到一些错误,但最终成功进入QEMU环境并展示了/及/bin目录的内容。

编译源码

root@as-virtual-machine:/usr/src/linux# export ARCH=x86
root@as-virtual-machine:/usr/src/linux# make x86_64_defconfig
root@as-virtual-machine:/usr/src/linux# make menuconfig
root@as-virtual-machine:/usr/src/linux# make -j8

 出现问题如下

/usr/src/linux/tools/objtool/include/objtool/elf.h:10:10: fatal error: gelf.h: No such file or directory

提示缺少gelf.h文件,解决如下 

root@as-virtual-machine:/usr/src/linux-5.13.1# apt-get install libelf-dev

出现问题如下

scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory

解决如下

root@as-virtual-machine:/usr/src/linux-5.13.1# apt-get install libssl-dev
root@as-virtual-machine:/usr/src/linux-5.13.1# apt-get install libelf-dev

配置busybox

root@as-virtual-machine:/usr/src# cd busybox-1.35.0
root@as-virtual-machine:/usr/src/busybox-1.35.0# make menuconfig

把busybox配置成静态编译

 制作rootfs

使用dd命令创建文件,并格式化为ext4文件系统。

root@as-virtual-machine:/usr/src/busybox-1.35.0# dd if=/dev/zero of=rootfs.img bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0240434 s, 436 MB/s
root@as-virtual-machine:/usr/src/busybox-1.35.0# mkfs.ext4 rootfs.img
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done                            
Creating filesystem with 2560 4k blocks and 2560 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

创建用于挂载该镜像文件的目录fs

root@as-virtual-machine:/usr/src/busybox-1.35.0# mkdir fs

使用mount命令将rootfs.img挂载到fs目录

root@as-virtual-machine:/usr/src/busybox-1.35.0# mount -t ext4 -o loop rootfs.img ./fs

编译busybox并写入fs目录中

root@as-virtual-machine:/usr/src/busybox-1.35.0# make install CONFIG_PREFIX=./fs

对写入的busybox进行补充配置

root@as-virtual-machine:/usr/src/busybox-1.35.0# cd fs
root@as-virtual-machine:/usr/src/busybox-1.35.0/fs# mkdir proc dev etc home mnt
root@as-virtual-machine:/usr/src/busybox-1.35.0/fs# cp -r ../examples/bootfloppy/etc/* etc/
root@as-virtual-machine:/usr/src/busybox-1.35.0/fs# cd ..
root@as-virtual-machine:/usr/src/busybox-1.35.0# chmod -R 777 fs/

制作完成的rootfs目录如下

 最后卸载rootfs.img

root@as-virtual-machine:/usr/src/busybox-1.35.0# umount fs

至此一个带有rootfs的磁盘镜像制作完成。

启动qemu

root@as-virtual-machine:/usr/src# qemu-system-x86_64 -kernel ./linux-5.13.1/arch/x86_64/boot/bzImage -hda ./busybox-1.35.0/rootfs.img -append "root=/dev/hda console=ttyS0" -nographic

出现如下错误

root@as-virtual-machine:/usr/src# qemu-system-x86_64 -kernel ./linux-5.13.1/arch/x86_64/boot/bzImage -hda ./busybox-1.35.0/rootfs.img -append "root=/dev/hda console=ttyS0" -nographic

Command 'qemu-system-x86_64' not found, but can be installed with:

apt install qemu-system-x86      # version 1:4.2-3ubuntu6.21, or
apt install qemu-system-x86-xen  # version 1:4.2-3ubuntu6.21

经查

安装完kvm后生成一个qemu-system-x86_64文件目录,使用的KVM命令为qemu-system-x86_64

解决如下

root@as-virtual-machine:/usr/src# apt-get install qemu-kvm

再次启动后,的确进入了qemu环境

 但是启动程序运行至5.778s时出现错误如下

其中,第一个出现的错误为:

[    3.086156] VFS: Cannot open root device "hda" or unknown-block(0,0): error -6

//20220319

但是今天又试了一次,居然成功进入了qemu虚拟机。

采用的是如下命令

root@as-virtual-machine:/usr/src# sudo qemu-system-x86_64 -kernel ./linux-5.13.1/arch/x86_64/boot/bzImage -hda ./busybox-1.35.0/rootfs.img -append "root=/dev/sda console=ttyS0" -nographic

进入后如下所示

 查看/目录如下

 查看/bin目录如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值