捣鼓了一整天,记录下踩的坑
参考平凡之路公众号
在参考钞sir
一路编译下来,都没啥问题,但是调试的时候就出毛病了:
启动脚本是这样的:
1 | qemu-system-x86_64 \ |
感jio没什么毛病,但就是没有符号,百度谷歌搜索了3个多小时还是没解决,我直接裂开.jpg
无奈只能重新在编译一次 (编译一次要好久啊)。因为这个内核是我寒假的时候编译的,时间隔得有点久,所以不知道当时有没有漏掉了哪一步
重新编译好后,谷歌到一篇文章说可能是开了kaslr
的问题,所以在启动脚本里加了一句nokaslr
,奇迹发生了(好吧,是我太蠢了):
gef真好用.jpg
知道了原因后,开了aslr的话,也没问题了,只要手动填下vmlinux的基地址就好:
1 | gef➤ add-symbol-file ./vmlinux 0xffffffffaa600000 |
现在想想,我有点傻
第二天编译低版本的内核时,又报错了:
1 | cc1: sorry, unimplemented: -mfentry isn’t supported for 32-bit in combination with -fpic |
不过这次没花多少时间就解决了,参考了 https://patchwork.kernel.org/patch/9409661/
对Makefile打上Patch就好:
1 | diff --git a/Makefile b/Makefile |