qemu 调试 Linux kernel 基于 x86_64

发布于:2024-06-29 ⋅ 阅读:(14) ⋅ 点赞:(0)

1,配置编译qemu

配置qemu:

cd qemu/

mkdir build

cd build/

$ ../configure --enable-slirp \
--enable-slirp-smbd --smbd=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 \
--target-list="riscv32-softmmu riscv64-softmmu x86_64-softmmu"

注意,不要enable_kvm 和 enable_debug

编译 qemu:

make -j

2,安装虚拟系统

2.1创建磁盘文件:

$ ./qemu/build/qemu-img create ubuntu-220404-kernel-00.qcow2 -f qcow2 150G

2.2 安装系统:

sudo ./qemu/build/qemu-system-x86_64 -m 196608M -smp 12 -boot c  \
-hda  ubuntu-220404-kernel-00.qcow2 \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 \
--nographic -append console=ttyS0  \
-cdrom  ubuntu-22.04.4-live-server-amd64.iso  \
-kernel ./ubuntu-220404/iso_ubuntu-22.04.4-live-server-amd64/casper/vmlinuz  \
-initrd  ./ubuntu-220404/iso_ubuntu-22.04.4-live-server-amd64/casper/initrd

不带 -c host  --enable-kvm

2.3 重启验证:

sudo ./qemu/build/qemu-system-x86_64 -m 32768M -smp 6 -boot c  \
-hda  ubuntu-220404-kernel-00.qcow2   --nographic \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00,hostfwd=tcp::2222-:22

3,调试kernel:

3.1 指定 -kernel vmlinux 启动

sudo ./qemu/build/qemu-system-x86_64 -m 32768M -smp 6 -boot c  \
-kernel ./debug_kernel/linux-source-5.15.0/vmlinux \
-hda  ubuntu-220404-kernel-00.qcow2    --nographic \
-net nic -net user,smb=/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00,hostfwd=tcp::2222-:22 \
-s -S

3.2 调试 kernel

host :

$ gdb

#载入 debug 版本的 vmlinux

(gdb) file ./debug_kernel/linux_5.15.0/vmlinux

(gdb) target remote:1234

(gdb) b start_kernel

(gdb) start #忘记这个要不要了

(gdb) c

效果:

断点处stop,

未完待续。。。