本来还想打BFS补丁和鸡血补丁的,但是经测试,结果发现,鸡血补丁完全不支持BFS,而鸡血补丁打上后,可能是源码要经过修正,总是提示函数的写法尚未被支持,然后出错中断,但是非常有意思的是,如果CPU类型选为 pentium pro 反而可以通过编译, Google 了一下,没找到解决方案,而我对C源码的了解又近于白痴,所以放弃了这两个补丁。
至此,补丁工作完成。开始正式的内核编译过程。
编译内核
直接上命令,等有需要说明的时候再补充一下:
cd /tmp/kernel/linux-2.6.37.4
cp /boot/.config .
make oldconfig
复制代码
唉。。。。逃不走啊,这里就要说明一下了。
之所以要 cp .config 文件,主要是,继承大量的原版 iThink Slax 内核的配置,当然,我的主要目的是为了省力,省去再一项项点选驱动了,如果你的内核没有 .config 这个文件,那么也没关系,可以直接生成一个,用 make menuconfig 或者 make xconfig 都可以。
至于 make oldconfig 主要是因为新老内核在内容上有非常多的变化,所以,需要先把老内核文件与新内核同步,在执行这条命令时,会出很多选项,大多是回答 y/n/m 的,我在这里的原则是,能 m 则 m ,遇 debug 时,全都跳过不选,遇到必须的,又没有 m 选项的,才会选y。
这里:
y 是指把这个模块编译进内核文件中,成为内置模块(就是那个 vmlinuz)
m 是指,把这个模块编译成外挂模块,这就是常见的那种 .ko 驱动之类的模块
n 或者 直接回车,则表示不选当前模块,并且这个模块不参与编译,放弃此项功能或驱动
累!接上回打命令:
make xconfig
make scripts
make prepare
make all
复制代码
这里就说一下最上面的 make xconfig ,这条命令会打开一个图形界面的内核配置界面,在这个界面中,你可以更详细清晰地看到所有的模块选项(还配有每个选项的说明哦),在这里,你选择自己需要的就行了,不过这里我说一下我的几个重点检查的地方:
1、内核压缩方式,我选的是 lzma 方式,这个在第一个常规选项里
---[General setup]/[kernell compression mode]
2、process 选项里,我选的 i586 处理器
---[Processor type and features]/[Processor family]
3、内存选的是 64G 模式(也就是PAE)
---[Processor type and features]/[High Memory Support]
4、loop device 选 Y,表示内置它,这里要说一下,以前的SLAX这里选的是 m 表示可以生成一个 loop.ko 文件,但是新版 squashfs 4 以后,我发现,这个驱动外置的后果很严重,会造成 loop 设置数量受限的问题。
---[Device Drivers]/[Block device]/[Loopback device support]
5、squashfs 里要选 lzma 和 lzo 压缩支持,其它的都不选,另外,squashfs 本身要选择为 m,即外挂
---[File systems]/[Miscellaneous filesystems]/[SquashFS 4.0 - Squashed file system support]
6、aufs 选择为 m 外挂,其中 Maximum number of branches 选项中,我选的是 511 ,这是我自己测出来确实是压缩和效率都比较均衡的值了
---[File systems]/[Miscellaneous filesystems]/[Aufs (Advanced multi layered unification filesystem) support]