【Linux内核分析与驱动编程】内核编译安装与调试相关问题与解决方法

内核编译安装注意事项
源码可以自己从网上下载(www.kernel.org)
在ubuntu18.04中,执行make modules_install和安装内核make install时需要提供root权限,需使用sudo命令执行安装
如果是多核PC,在编译内核过程中,可以使用
#make –jn
命令来编译 ,提高编译速度,其中n是要衍生的作业数,例如双核可以 配置为4。
• 重启后进入新内核时如果出现黑屏,登录无响应等情况,可能与虚拟机设置有关,可以通过关闭3D加速,启用PAE/NX,启用I/O APIC等设置来解决
重启后,如果某些硬件没有驱动起来,可以通过配置内核或寻找相应驱动来解决
内核编译相关bug及解决方法
1. 进行内核配置make menuconfig时,出现以下错误:

在这里插入图片描述

解决方法:
这是由于缺少相关库所致,安装ncurses即可
安装命令:sudo apt-get install libncurses5-dev
2. 进行内核配置make menuconfig时,出现以下错误:

在这里插入图片描述

解决方法:
这是由于缺少相关命令所致,安装bison即可
安装命令:sudo apt-get install bison
3. 进行内核配置make menuconfig时,出现以下错误:

在这里插入图片描述

解决方法:
这是由于缺少相关命令所致,安装flex即可
安装命令:sudo apt-get install flex
4. 进行内核编译make时,出现以下错误:

在这里插入图片描述

解决方法:
这是由于缺少相关库所致,安装libelf-dev即可
安装命令:sudo apt-get install libelf-dev
5. 进行内核编译make时,出现以下错误:

在这里插入图片描述

解决方法:
硬盘空间不足,建议硬盘空间分配30G以上
6. 进行内核编译make时,出现以下错误:

在这里插入图片描述

解决方法:
解决方法:这是由于缺少相关库所致,安装libssl-dev即可
安装命令:sudo apt-get install libssl-dev
7. 进行内核模块安装make modules_install时,出现以下错误:

在这里插入图片描述

解决方法:
解决方法:这是由于缺少权限,使用sudo命令安装即可
安装命令: sudo make modules_install
8. 内核安装完毕后,重启仍然无法选择内核版本。
解决方法:重启电脑,按Shitf键,进入Advanced options for Ubuntu即可选择内核版本
在这里插入图片描述
在这里插入图片描述
内核调试相关bug及解决方法
1. 第一次远程连接可能会失败,可以再运行一次连接指令(本次实验是target remote localhost:4321)
2. 在连接成功后,QEMU显示如下:

在这里插入图片描述
解决方法:这是内存不足的原因,将 sudo qemu-system-x86_64 -kernel bzImage -initrd initrd.img-4.15.6 -append “root=/dev/sda kgdboc=ttyS0,115200 kgdbwait” -boot c -hda busybox.img -k en-us -m 1024 -serial tcp::4321,server 指令中的-m后面的参数提高(2048,4096等)

3. 在连接成功后,QEMU显示如下,进入debug状态,但是没有正确在断点断下:

在这里插入图片描述

在这里插入图片描述

(1)注意启动qemu时nokaslr参数必须存在
(2)可能是gdb退出调试后又执行了target remote命令,重新进行了远程连接进行调试,应该关闭qemu和gdb,按照实验顺序,顺序重新启动qemu和gdb
4. 在连接成功后,QEMU显示如下,进入debug状态,但是显示超时:

在这里插入图片描述

(1)内核编译时kgdb没有打开
(2)可能是gdb退出调试后又执行了target remote命令,重新进行了远程连接进行调试,应该关闭qemu和gdb,按照实验顺序,顺序重新启动qemu和gdb

猜你喜欢

转载自blog.csdn.net/iefenghao/article/details/88323439