获取最新的内核源码

获取最新的内核源码

我尝试在调试模式下构建 Linux 内核版本 3.10.107 和 4.13.8。我使用了以下步骤来构建内核。

主机装有 Ubuntu 16.04 操作系统,并尝试将其内核更新到带有调试信息的最新版本(4.13.8)。

获取最新的内核源码

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.13.8.tar.xz
mkdir linux-4.13.8 && tar xvf linux-4.13.8.tar.xz -C $(pwd)/linux-4.13.8/
cd linux-4.13.8

从主机 linux 复制 .​​config

cp /boot/config-`uname -r`* .config

启用以下选项以在调试模式下构建内核

gedit .config
CONFIG_DEBUG_KERNEL=y
CONFIG_FRAME_POINTER=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_DEBUG_INFO=y

验证了 menuconfig 的 gui 菜单

make menuconfig

在内核黑客选项中,(内核调试、编译内核调试信息、Printk 选项)已启用,默认调试消息和控制台级别为 7。

执行了make命令。内核构建成功。

使-j4

安装内核

sudo make modules_install install 

更新了Grub2

sudo update-grub2

重新启动操作系统

reboot

操作系统更新为最新的内核 4.13.8 并且运行良好,但在 dmesg 控制台输出和日志文件(如(var/log/kern.log、dmesg、syslog)中看不到调试信息和 printk 输出)

我还尝试使用 gdb 调试内核映像,它显示(未找到调试符号)

请帮忙调试内核。我的目的是详细调试和分析系统调用、陷阱、用户空间到内核空间的切换、内存管理。 (预期比 strace 输出有更多的调试信息)

相关内容