现在我手边有一块树莓派4B、orangepi 3 lts、 orangepi zero 2,希望自己编译linux的内核并且仅仅保证linux保留最基本的系统功能,比如中断、串口、定时器、mmu等等,其余驱动模块通通不需要,有哪里有这方面的资料么,尝试了很多次自己改defconfig ,但是启动时都会遇到各种各样的问题。
离线
这个确实比较难,因为每个系统的硬件都不一样,写一份通用的 kernel config 教程不太现实
我当时折腾这个的时候,就是一点点慢慢试,一次砍掉一点内核功能,慢慢降低大小,没法启动了就 undo 取消掉的东西,最后搞出来了一个 672KB 的极简kernel,能在 qemu-system-x86_64 里运行。过程我写在这里了:https://github.com/Unturned3/Microdot/blob/master/wiki/3_miniSystem/3_miniKernel.md
如果你的目标是在树莓派等平台上运行的话,那估计还得在这个基础上添加一堆硬件模块的支持。
离线
感谢感谢,不过我现在通过官方的config编译的linux Image都没办法启动板子,可能是官网制作的镜像在启动时,都有initramfs对硬件的驱动模块进行初始化,而我在自己编译时没有挂载文件系统,导致uboot加载Image到内存后也没有正确的进入启动流程,还在排查。
离线
拉一个新内核去porting,最小依赖是很少的。应该比做减法更能符合你的要求
离线
拉一个新内核去porting,最小依赖是很少的。应该比做减法更能符合你的要求
最初我的确是想这么做的,但是我对这块板子的硬件也没有很熟悉,想着做减法更容易。如果是从头 porting 是直接拿官网的 Linux 内核,重新配置config么?这样不会出现有一些驱动是没有适配的情况么?
离线