环境搭建
根据commit下载源码
将参数id换成你的commit即可下载;
调试
断点问题
当笔者用bulleye.img替换掉cpio后发现下了断点总是误报,即根本就没有运行到断点的时候,也给我停下来了,后来查资料发现:
原来是-enable-kvm这个启动选项的缘故,要用下面这种格式:
修改源码路径
在gdb中执行如下命令:
set substitute-path /absolute/server/source/path /your/local/path |
编译内核
报错一:incomplete ORC unwind tables in file: vmlinux
这个错误本质上是 objtool 在生成 ORC unwind 表时,调用 libelf 的 elf_update
没有正确更新节头(section header),因而报出 “invalid section” 的警告并最终在排序 ORC 表时失败。
主要还是由于编译的内核版本过高(6.4),但是服务器的内核版本太低(4.15.0-213-generic),修改编译配置如下:
make olddefconfig # 确保已有 .config |
CONFIG_UNWINDER_ORC=n |