1.建立镜像启动相应的内核模块
查看驱动加载地址
#cat /porc/modules | grep driv
cat /sys/modules/driv1/settings/.text
cat g > /proc/sysrg-trigger //这个是双机调试终端被调试机的命令
2.调试器链接被调试机
(gdb)target remote localhost:1234
3.调试机gdb加载符号
(gdb)add-symbol-file /home/driv.ko 0xfffffffffa008f00
(gdb) break device_open
(gdb) c
备注:打包启动文件
$find . -printo | cpio --null -ov --format=newc | gzip -9 > …/initramfs.cpio.gz
启动qemu的命令
qemu-system-x86_64 -s -kernel /path/to/vmlinux -initrd initramfs.cpio.gz -nographic -append “console=ttys0”
查看内核相应的地址
cat /proc/kallsyms | grep native_write_cr4
静态编译文件:
gcc test.c --static -o init
gdb 打印带符号的全局变量和局部变量
p file::参数
p function::参数
gdb step/s next/n
#!/bin/bash 找不到文件或执行错误
关于windows下编辑工具导致文件格式是dos ,改Unix
sed -i “s/\r//” start.sh
关于qemu与宿主机联网问题
#宿主机设置
sudo tunctl -t tap0 -u lier
sudo chmod 0666 /dev/net/tun
sudo ifconfig tap0 192.168.2.1 up
sudo echo 1 > /proc/sys/net/ipv4/ip_forward #宿主机和主机之间的网段数据转发宿主机这里和主机必须不在同一网段
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
#主机设置
#sudo ifconfig ens3 192.168.2.2 up
#sudo route add default gw 192.168.2.1
#sudo vim /etc/resolv.conf nameserver 8.8.8.8
#echo "nameserver 8.8.8.8" >> /etc/resolv.conf