1.先学增减功能吧.弄个虚拟机,
virtualbox 免费,已经支持 hyper-v 据说更快一些了.
vmware workstation 要钱但更稳更快.有神秘档案可用(自己找)
然后选个常用的 linux 套装版本,装上 GCC.
推荐 gentoo,预设就有 GCC 并且整个系统预设就是要编译.
gentoo 中文安装说明
https://wiki.gentoo.org/wiki/Handbook:AMD64/zh-cn当然 gentoo 安装过程有第一次点痛,之后就很爽了(感觉怪怪的)
重点在核心配置的手动配置章节"make menuconfig"
genkernel 也可以,使用"genkernel --menuconfig all",会侦测现有环境设备后帮你选上必须的驱动项目,减少难度.
gentoo 还可以学怎帮核心加上别人的 patch,例如 gentoo 有名的 CK,BK.用过你就回不去标准和新版本了.
注:genkernel 会产生一个 initramfs 引导档案.
当你能够增减核心的功能和驱动之后"能正常开机使用",基本上核心处理就入门了.
因为会很花时间在 menuconfig 和编译阶段,
尤其 menuconfig 的每一行几乎都要上网查说明,(就算有英文说明也是要翻译).
还有编好之后会花很多时间确认编出来的核心是否稳定.
所以建议用虚拟机.可以建立快照状态,编译失败直接还原到编译核心前的那一刻重新开始.
快照是你的好朋友.虚拟机万岁!!
2.移植到 arm 体系.当桌面环境的核心都很熟很稳定的跑了,再学 ARM 环境的核心编译,差别是
桌面核心可以很自由的选择功能然后用成模组的形式,没什么容量限制.
ARM 核心因为嵌入式的环境需求,要求编出结果的档案大小有严格限制,例如不能编出含模组总容量大于 4/8/16MB,开发机通常有 32MB 可用,但真实上机环境例如网路设备通常是 4/8/16MB,
所以嵌入式核心编译的原则是"先都不选,依需求优先度加入功能,按剩余空间作模组".
3.修改核心原始码.这部分我也不熟,基本上 1 的部分很熟,linux 就可以跑得比别人的预设核心快很多很多很多了.