继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

ubuntu18.04下linux4.17内核调试环境搭建

holdtom
关注TA
已关注
手记 1842
粉丝 240
获赞 991


版本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

然后窗口调大点

ubuntu18.04下linux4.17内核调试环境搭建

打开相关选项:(我看了下好像全默认开启)

https://blog.csdn.net/ztguang/article/details/52410562

ubuntu18.04下linux4.17内核调试环境搭建

ubuntu18.04下linux4.17内核调试环境搭建

 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

注释第二行:

ubuntu18.04下linux4.17内核调试环境搭建

更新

sudo update-grub2

ubuntu18.04下linux4.17内核调试环境搭建

///////////////////////

拷贝被调试机上编译出来的vmlinux 到调试机上,与内核源码(是自己下载的内核源码这里是4.17)同级目录(内存足够多把编译生成的中间文件也可以一起拷贝)

然后

第一步建立串口通信

ubuntu18.04下linux4.17内核调试环境搭建

测试

ubuntu18.04下linux4.17内核调试环境搭建

开启调试环境

打开 /boot/grub/grub.cfg 文件,选择需要启动的内核版本,在尾部添kgdbwait kgdboc=ttyS0,115200

第一个菜单

ubuntu18.04下linux4.17内核调试环境搭建

对应

ubuntu18.04下linux4.17内核调试环境搭建

第二个菜单

ubuntu18.04下linux4.17内核调试环境搭建

对应

ubuntu18.04下linux4.17内核调试环境搭建

根据需要内核版本自定义设置

这里默认第一个菜单对一项

重启系统会断下

ubuntu18.04下linux4.17内核调试环境搭建

调试机

进入系统源码目录

gdb vmlinux

ubuntu18.04下linux4.17内核调试环境搭建

set remotebaud 115200 目前其实没有用

target remote /dev/ttyS0

还是有点问题 可能是符号也要拷贝吧

ubuntu18.04下linux4.17内核调试环境搭建

这里可能会有新内核启动不了的情况报cpu没有工作

ubuntu18.04下linux4.17内核调试环境搭建

我的做法是干掉原理的旧内核只要新内核,同时内核研究时一定要记得很定会有各种错。

个人觉得至少会有三个镜像。

第一个镜像是linux安装成功的镜像。防止编译,安装内核的各种错误。

第二个镜像。编译成功,或者直接是内核已经安装成功。 

第三个镜像搭建环境的镜像。

ubuntu18.04下linux4.17内核调试环境搭建

//////////////////////////////////////////////////////////

如果是不想开机就断下的话只要加上 kgdboc=ttyS0,115200

ubuntu18.04下linux4.17内核调试环境搭建

重启 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# 

运行后系统就会卡住

ubuntu18.04下linux4.17内核调试环境搭建

调试机运行gdb vmlinux

然后

set remotebaud 115200

target remote /dev/ttyS0

ubuntu18.04下linux4.17内核调试环境搭建

输入c运行

ubuntu18.04下linux4.17内核调试环境搭建

https://blog.csdn.net/ztguang/article/details/52410562

https://blog.csdn.net/u013470224/article/details/51314231

https://blog.csdn.net/swingwang/article/details/72331196

©著作权归作者所有:来自51CTO博客作者土匪猿的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP