調試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
相關文章
相關標籤/搜索