在树莓派上编译Linux内核
在PI上面编译内核有一些注意事项,本文简单记录一些重要的点。
Pi本身是Arm架构,所以如果要在Pi本身的平台上编译的话,就需要使用它自己在Github上面维护的的Arm架构的kernel代码:
https://github.com/raspberrypi/linux
编译过程参考这篇文档:
https://www.raspberrypi.org/documentation/linux/kernel/building.md
上面的文档还介绍了交叉编译的方法,这篇文章里不展开讲述了。
Arch Linux本身提供编译代码的一些工具,需要安装好,可以参考这篇文档:
https://wiki.archlinux.org/index.php/Kernels/Arch_Build_System
在Pi上面编译的过程比较慢,主要是因为Pi本身的性能一般,大概三到四个小时可以build完。
Pi目前不支持LILO或GRUB2,是通过修改/boot/config.txt
直接更换内核的。我建议使用dd
命令备份整个/boot
分区:
$ dd if=/dev/boot of=boot.img
这样万一自己build的kernel启动不成功,恢复分区即可。
编译完的kernel还有配套的modules,别忘了根据上面的PI的文档步骤进行安装:
此外,ArchLinux启动不需要initramfs这个文件,因为架构简单所以用不到,因此无需替换。
更新后的kernel如图所示:
我把这个准备好的arch linux做成img,分享给大家:
链接:https://pan.baidu.com/s/1zrmyW5XuqN6rVRp7zX8DHg 密码:kd4a
配置好的编译环境位于:
$ pwd
/home/alarm/work/pi/linux
可以自己尝试在Pi上跑起来玩玩看:
以上。
其它参考资料
- https://wiki.archlinux.org/index.php/Kernels/Traditional_compilation