版本linux4.17 ubuntu18.04 先给系统至少80G内存 1。编译内核 先配置文件 make mrproper make menuconfig 我这里需要的依赖有

sudo apt install make cmake gcc g++ clang
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt install ncurses-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install linux-libc-dev:amd64
sudo apt-get install libssl-dev

然后窗口调大点 打开相关选项:(我看了下好像全默认开启) https://blog.csdn.net/ztguang/article/details/52410562

Kernel: arch/x86/boot/bzImage is ready  (#1)
FATAL: drivers/scsi/am53c974.o has no symtab?
scripts/Makefile.modpost:92: recipe for target '__modpost' failed
Makefile:972: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev

sudo apt install libelf-dev 换内核就先修改: sudo gedit /etc/default/grub 注释第二行: 更新 sudo update-grub2 /////////////////////// 拷贝被调试机上编译出来的vmlinux 到调试机上,与内核源码(是自己下载的内核源码这里是4.17)同级目录(内存足够多把编译生成的中间文件也可以一起拷贝) 然后 第一步建立串口通信 测试 开启调试环境 打开 /boot/grub/grub.cfg 文件,选择需要启动的内核版本,在尾部添kgdbwait kgdboc=ttyS0,115200 第一个菜单 对应 第二个菜单 对应 根据需要内核版本自定义设置 这里默认第一个菜单对一项 重启系统会断下 调试机 进入系统源码目录 gdb vmlinux set remotebaud 115200 目前其实没有用 target remote /dev/ttyS0 还是有点问题 可能是符号也要拷贝吧 这里可能会有新内核启动不了的情况报cpu没有工作 我的做法是干掉原理的旧内核只要新内核,同时内核研究时一定要记得很定会有各种错。 个人觉得至少会有三个镜像。 第一个镜像是linux安装成功的镜像。防止编译,安装内核的各种错误。 第二个镜像。编译成功,或者直接是内核已经安装成功。 第三个镜像搭建环境的镜像。 ////////////////////////////////////////////////////////// 如果是不想开机就断下的话只要加上 kgdboc=ttyS0,115200 重启 root运行 echo g > /proc/sysrq-trigger 但是可能会报错误 说权限错误 重新设置下root密码就可以了 可以和原来密码一样

haidragon@ubuntu:~$ echo g > /proc/sys
sys/           sysrq-trigger  sysvipc/       
haidragon@ubuntu:~$ echo g > /proc/sys
sys/           sysrq-trigger  sysvipc/       
haidragon@ubuntu:~$ echo g > /proc/sys
sys/           sysrq-trigger  sysvipc/       
haidragon@ubuntu:~$ echo g > /proc/sysrq-trigger 
bash: /proc/sysrq-trigger: Permission denied
haidragon@ubuntu:~$ sudo echo g > /proc/sysrq-trigger 
bash: /proc/sysrq-trigger: Permission denied
haidragon@ubuntu:~$ su
Password: 
su: Authentication failure
haidragon@ubuntu:~$ sudo passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
haidragon@ubuntu:~$ su
Password: 
root@ubuntu:/home/haidragon# echo g>/proc/sys
sys/           sysrq-trigger  sysvipc/       
root@ubuntu:/home/haidragon# echo g>/proc/sysrq-trigger 
root@ubuntu:/home/haidragon# 
root@ubuntu:/home/haidragon# 

运行后系统就会卡住 调试机运行gdb vmlinux 然后 set remotebaud 115200 target remote /dev/ttyS0 输入c运行 https://blog.csdn.net/ztguang/article/details/52410562 https://blog.csdn.net/u013470224/article/details/51314231 https://blog.csdn.net/swingwang/article/details/72331196