下面只是个大体的流程,希望 初次尝试者 做好面对各种困难的准备。
我的体会是:要一步步地走,做好‘打持久战’的准备:今天弄不完,改天有时间再弄,或
啥时无聊了再来折腾折腾它解解闷儿。当遇到问题时,google下,如果没有理想的结果,那就去看文档吧。获得源码 下载源码 kernel.org
- 我保存到了我的home下
- 你应该先去了解下版本号的意思
- 我开始下了个 “linux-3.4.88.tar.xz”,在用‘make localmodconfig’配置时,发现我现在使用着的几个模块在这个版本的源码中没有,结果编译完用它启动后GUI特别卡,查看‘dmesg’中有“fail...”. 换成 “linux-3.14.2.tar.xz”后没事了。
- 直接右键“提取到此处”
- 我提取到了我的home下
- 强烈推荐:源码根目录中的 README
- 建立build目录用来存放编译时生成的文件
- 这不是必须的,但我倾向于这样做 :)
b@T43:~$ mkdir build-kernel’
- 编译前 配置内核:定制内核的功能
b@T43:~$ cd linux-3.14.2/
b@T43:~/linux-3.14.2$ make O=~/build-kernel/ menuconfig
#这里用的‘make menuconfig’可以用‘make help’查看说明
#或者从源码根目录下的README中找到说明
#它应该自动加载了系统现在所用内核的配置(如:/boot/config-版本号-generic)
#从里面选择了我的CPU型号
Processor type and features --->
Processor family (Pentium M) --->
#调高这个值提高 UI的响应 对于Server 这个值则应调低...看Help吧说的很明白
Processor type and features --->
Timer frequency (1000 HZ) --->
#调了这个值后‘爽多了’,真搞不明白为何Ubuntu 14.04 x86 用的3.13.0-24-generic 内核
#要把这个值调成250Hz :( 难倒是在SMP(多核CPU:对称多处理器) 上跑 250Hz就ok了?
#原来250Hz时,‘开始菜单’往外弹的时候就跟‘慢放’似得
#最后保存退出 新配置被保存为‘~/build-kernel/.config’
- 强烈建立:只编译用得着的模块,节省时间
b@T43:~/linux-3.14.2$ make O=~/build-kernel/ localmodconfig
#我第一次编译差不多用了4小时(机器配置低+散热不好) :(
#运行‘localmodconfig’后,也就一个多小时吧.... :)
- 开始编译吧
b@T43:~/linux-3.14.2$ make O=~/build-kernel/
#这一条命令就把内核,模块都给编译了
#也可以一个一个来:
#编译内核后将它压缩
b@T43:~/linux-3.14.2$ make O=~/build-kernel/ bzImage
#编译模块
b@T43:~/linux-3.14.2$ make O=~/build-kernel/ modules
- 安装内核
b@T43:~/linux-3.14.2$ sudo cp ~/build-kernel/arch/x86/boot/vmlinuz /boot/vmlinuz-3.14.2
- 安装模块
b@T43:~/linux-3.14.2$ sudo make O=~/build-kernel/ modules_install
- 建立initrd.img
#我没建也从新内核启动起来了,读者随便吧
#但我后来还是建上了,因为我看原来的内核也带着这文件
b@T43:~/linux-3.14.2$ sudo mkinitramfs -v 3.14.2 -o /boot/initrd.img-3.14.2
- 更新GRUB选单
#我Google了好多看了,试了都不对(应该是那些说明都太老了)
#最后搞明白了,so easy...
#先备份下原来的配置文件 以防万一
b@T43:~/linux-3.14.2$ sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old
#自动生成新的配置文件
b@T43:~/linux-3.14.2$ sudo grub-mkconfig --output=/boot/grub/grub.cfg
#GRUB把开机选单中的‘Ubuntu’配置为引导新的内核
#你可以从‘Ubuntu高级选项’中选择想要引导的内核
- “Reboot with the new kernel and enjoy.” ----- 引自内核源码根目录下的README
end.如有错误欢迎指正,转载请注明出处。