调试Linux内核的方法(Linux-4.8)(待补充)

Host系统:基于centos 7.6
Guest系统:基于QEMU的Linux虚拟机(要调试的对象)
-----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.xzubuntu

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

编译内核前的准备工做

在编译服务器

编译内核源代码

建立虚拟机镜像

制做一个磁盘用于安装app

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磁盘:centos7

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地址。code

./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
相关文章
相关标签/搜索