调试Linux内核的方法(Linux-4.8)(废弃,仅供参考用)

》》》》》》仅供参考使用《《《《《《《《
Host系统:基于centos 7.6
Guest系统:基于QEMU的Linux虚拟机(要调试的对象)

在host上编译Linux4.8内核。

内核源代码下载地址:https://mirrors.aliyun.com/linux-kernel/v4.x/linux-4.8.tar.gz
需要用到的工具下载:
1)GDB
centos 7.6默认的GDB版本有点老,在调试的时候会遇到问题,所以这里需要下载GDB较新的版本,重新编译一个新的GDB,操作如下:
从这里下载GDB:https://mirrors.ustc.edu.cn/gnu/gdb/gdb-8.1.tar.gz
2)QEMU
centos7.6 YUM仓库中的QEMU版本比较老了,需要重新下载QEMU编译,操作如下:
从这里下载QEMU:https://download.qemu.org/qemu-4.1.0.tar.xz

编译安装好之后,以下涉及到gdb或者qemu的命令根据实际路径调整。

编译内核前的准备工作

在编译

编译内核源代码

创建虚拟机镜像

制作一个磁盘用于安装

qemu-img create centos76.img 50G

安装Guest系统

从这里下载CentOS-7-x86_64-Minimal-1810.iso:https://mirrors.ustc.edu.cn/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso
这里假设已经将CentOS-7-x86_64-Minimal-1810.iso镜像从互联网上下载好了。接着开始安装Guest系统。
在服务器上(或者PC上)安装,需要使用到一个VNC客户端软件,以便能够连接QEMU VNC Server。

qemu-system-x86_64 -cdrom CentOS-7-x86_64-Minimal-1810.iso -hda ./centos76.img -boot d -netdev tap,id=tap0,ifname=virbr0-nic,vhost=on,script=no -m 2048 -localtime -vnc 0.0.0.0:20

也可以采用以下使用virtio磁盘:

qemu-system-x86_64 -cdrom /home/caishan/CentOS-7-x86_64-Minimal-1810.iso \
-drive file=./centos76.img,if=virtio \
-boot d \
-netdev tap,id=tap0,ifname=virbr0-nic,vhost=on,script=no \
-device virtio-net-pci,netdev=tap0 \
-m 2048 \
-localtime \
-vnc 0.0.0.0:20 \
--enable-kvm

上述命令运行之后通过VNC客户端远程连接 HostIP:5920(默认)可以开始安装步骤。
待安装成功之后,安装好的系统,使用以下命令:

qemu-system-x86_64 -drive file=./centos76.img,if=virtio -boot c -netdev tap,id=tap0,ifname=virbr0-nic,vhost=on,script=no -m 2048 \
-device virtio-net-pci,netdev=tap0 \
-localtime -vnc 0.0.0.0:20 --enable-kvm

同样,使用VNC客户端远程连接到启动的虚拟机。登陆后,执行dhclient eth0获取IP地址。

./scripts/config -e CONFIG_DEBUG_INFO -d CONFIG_RANDOMIZE_BASE -e CONFIG_MODULES -e GDB_SCRIPTS

grub2-mkconfig -o /boot/grub2/grub.cfg

启动编译后的内核,并boot到硬盘

qemu-system-x86_64 -m 2048 -kernel ./arch/x86/boot/bzImage -initrd ./initrd.img-4.18.4 -drive file=./ubuntu1604.qcow2,if=virtio -boot c -nographic -serial mon:stdio -append 'root=/dev/sda1 console=ttyS0 nokaslr' --enable-kvm
posted @ 2019-09-24 10:09  Linux-inside  阅读(409)  评论(0编辑  收藏  举报