32位ubutu13.10内核编译与安装

    身为一个新手,昨天晚上突然想去编译内核,就找了一些相关的教程。但是网上的五花八门,各有各的说法,各有各的命令。其实ubuntu wiki上就有一个教程,简洁明了。

链接如下:https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

    编译、安装内核的过程中,遇到几个问题,值得注意,记录如下:

1、上述链接的教程,会启用menuconfig来配置。menuconfig要求安装libncurse,在终端里输入:sudo apt-get install libncurses5-dev即可

2、ubuntu wiki的教程中,fakeroot debian/rules editconfigs命令会询问是否配置amd64、i386和arm的config文件,根据自己的实际情况配置。比如我是32位的ubuntu13.10,则amd64和arm的那几项输入n,i386的输入y。要是你都输入了y,那你哭吧,好几个界面菜单要你配置。配置一个都够呛了,如果非要自虐,请全部输入y。

3、在菜单中配置选项时,可参照金步国先生翻译的资料。链接:http://lamp.linux.gov.cn/Linux/kernel_options.html。本新手在这步配置得久了些,没办法,有强迫症。应当注意的是,金步国先生翻译的资料是2.6版本的内核,13.10系统的内核比较新,像本新手的是3.11.0-13,所以有一些选项已经不存在或者位置变动了。如果想查找某个选项所在的位置,可按下/键,然后在弹出的文本框中输出关键字,没错就跟vim的搜索功能一样。诸位可与本新手一样,自虐一番,多找找,多看看帮助文档。如果对菜单中的某个配置项不清楚,再按shift + /查询,看完之后还是不确定的,一般帮助文档里有类似这样的话:If unsure, choose N.就按照文档里的建议吧。

4、配置之前,可以先在终端里用lspci命令查看自己的硬件配置,以便在device driver中尽量精简掉一些多余的driver。比如Ethernet card driver(记得是这名字)那里,本新手就狂删,基本上只留下两个网卡的驱动。Input device support那里,可以删掉一些什么游戏手柄啊,触摸屏之类的。如果要用到的话是另一回事。关于其他一些配置的,可参考此链接:http://forum.ubuntu.org.cn/viewtopic.php?t=134404

但是安装方法就不要参考了,还是按ubuntu wiki上面的来。因为那个教程里,有一些命令我的系统里是找不到的,apt-get安装时也提示找不到包。

5、在Enable the block layer这一选项中,金步国先生的翻译资料里有这样四行:

Support for Large Block Devices

仅在使用大于2TB的块设备时需要

Support for Large Single Files

仅在可能使用大于2TB的文件时需要

当然这两行其实在本新手的配置菜单中只有一行,Support for large (2TB+) block devices and files type。

本新手一开始想着,反正也不会出现大于2TB的文件,也没有大于2TB的磁盘,移动硬盘之类的,所以就取消了该项。

悲剧来了,编译内核,安装上去之后,重启进入该内核,结果root文件系统都挂载不了。就一个黑乎乎的窗口提示没有CONFIG_LBDAF选项,挂载不了。其实就是上面那个选项,在配置菜单里一搜索即知。

没办法,在tty1登录root之后,reboot重启,在grub中进入一个旧的内核(3.11.0-12),然后进入桌面后,在终端里重新编译3.11.0-13的内核,然后再安装,重启。结果就正常了。

千万不要取消这一项,除非你很久没哭过了,故意想失败,然后好好哭一下。

6、在执行教程中的这一条命令时fakeroot debian/rules binary-headers binary-generic, 好不容易编译完了,最后有个older modules checking的过程。结果提示Missing modules (start begging for mercy)。好吧,最后的最后失败了。于是去google一下,在以下链接中:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/899957

最后一楼的大神如是回复:

Hi Tony,
Because of the fact that you've disabled BTRFS the module check is failing during the build. The module check during the build is often used as a mechanism in our tooling to prevent accidental disablement of modules. However, since you have purposely disabled the module you need to ignore the module check. This can be one of a few ways which are outlined in the following wiki:
https://wiki.ubuntu.com/KernelTeam/KernelMaintenance#Overriding_module_check_failures
As this is not an issue affecting the official Ubuntu kernel. I am marking this bug as Invalid for now. Thanks.
应该是配置的过程中,有一些module被本新手disable了。于是又点开了个新的链接,按照里面的第一个方法,在命令的后面加上skipmodule=true,好了,编译无误了。
安装内核,重启,进入,enjoy!

你可能感兴趣的:(ubuntu,内核,编译)