Linux内核编译备忘
时间:2006-05-21 来源:oliliango
用linux的人越来越多了,他吸引人们的一个重要原因就是,开源,可以自定义内核,不过说实话,就象albcamus大虾说的那样,对于桌面应用,开不 开源其实并没有什么意义,又有多少人有能力自己hack内核,并按照自己意愿修改之呢。
但是作为一个linux的使用者,自己定制编译内核却是具有强大的吸引力,无论如何总想要尝试一下的事情,数年之前,我第一次编译成功内核时,那种喜悦和 成就感至今记忆尤新。今天睡懒觉起来,突然想到,应该把内核编译的一些经历和注意事项列于此处,备忘,或可对有心人有所裨益。
如今的各种各样的linux发行版本非常多,大多数用户选择的是其中的一种版本,这些发型版所使用的内核版本,应用软件版本都不一而足。当前来说,对新的 发行版使用的都应该是2.6.1x的内核版本。如果是为了体验新内核,那么应该自己获取最新的内核源码,这可以在www.kernel.org上面下载 到。
编译内核注意:
1.开始的时候,不要直接到/usr/src/...这个目录下去编译内核,可能有很多教程上都说,这里放的是和当前运行的内核相匹配的内核源码。不过我 认为这个说法是nonsense,在2.6.x内核里面,不同版本的kernel都放在/usr/src这个目录下,区别仅仅在于子目录的名称不同。当然 可以自己把新下载的源码放到这里,不过不一定要放到这里。
2.在编译内核的时候,不要太“完美主义“。这是说,不要按照有的教程上说的,在编译开始之前,make clean,不是必需的。make modules clean更是不能做,如果你太完美的想要一个”clean“的系统,而且还没有备份准备的话,那么,你有很大的可能性会把系统搞挂掉。
3.编译器的准备,在编译新的内核的之前,注意看看内核说明文档,看看最适合的gcc版本是什么,尽量减低编译失败的可能性。ps:gcc和kernel 都是开源的,都是庞大的系统,如果你很强,对gcc和kernel都能hack,那就当我什么都没说,呵呵。
4.新的内核编译好了之后在2.4.x和2.6.x不一样,2.6.x的内核编译系统做的相当完善,一个make install都完全搞定了,在grub和lilo里面都设置好了,真是厉害。如果是老版的内核就比较麻烦,要自己make bzImage,然后自己改配置文件。而且不同版本kernel共存也很困难。
5.如果新编译的内核启动时出现很多出错信息,不要着急,可以先用老版内核启动,在内核源码里面去找出错消息,可能会有线索。不过如果这也不原意做的话, 那么一个很大的可能性是编译时cpu参数设置不正确。才会出现kernel panic之类的消息。ps:2.6.x的内核编译系统是自动probe你的硬件信息的。所以如果不是手工改错了,出错的可能性较小。
以上是我的愚见,可能正确也可能有错。鄙帚自珍,愿君善之。
但是作为一个linux的使用者,自己定制编译内核却是具有强大的吸引力,无论如何总想要尝试一下的事情,数年之前,我第一次编译成功内核时,那种喜悦和 成就感至今记忆尤新。今天睡懒觉起来,突然想到,应该把内核编译的一些经历和注意事项列于此处,备忘,或可对有心人有所裨益。
如今的各种各样的linux发行版本非常多,大多数用户选择的是其中的一种版本,这些发型版所使用的内核版本,应用软件版本都不一而足。当前来说,对新的 发行版使用的都应该是2.6.1x的内核版本。如果是为了体验新内核,那么应该自己获取最新的内核源码,这可以在www.kernel.org上面下载 到。
编译内核注意:
1.开始的时候,不要直接到/usr/src/...这个目录下去编译内核,可能有很多教程上都说,这里放的是和当前运行的内核相匹配的内核源码。不过我 认为这个说法是nonsense,在2.6.x内核里面,不同版本的kernel都放在/usr/src这个目录下,区别仅仅在于子目录的名称不同。当然 可以自己把新下载的源码放到这里,不过不一定要放到这里。
2.在编译内核的时候,不要太“完美主义“。这是说,不要按照有的教程上说的,在编译开始之前,make clean,不是必需的。make modules clean更是不能做,如果你太完美的想要一个”clean“的系统,而且还没有备份准备的话,那么,你有很大的可能性会把系统搞挂掉。
3.编译器的准备,在编译新的内核的之前,注意看看内核说明文档,看看最适合的gcc版本是什么,尽量减低编译失败的可能性。ps:gcc和kernel 都是开源的,都是庞大的系统,如果你很强,对gcc和kernel都能hack,那就当我什么都没说,呵呵。
4.新的内核编译好了之后在2.4.x和2.6.x不一样,2.6.x的内核编译系统做的相当完善,一个make install都完全搞定了,在grub和lilo里面都设置好了,真是厉害。如果是老版的内核就比较麻烦,要自己make bzImage,然后自己改配置文件。而且不同版本kernel共存也很困难。
5.如果新编译的内核启动时出现很多出错信息,不要着急,可以先用老版内核启动,在内核源码里面去找出错消息,可能会有线索。不过如果这也不原意做的话, 那么一个很大的可能性是编译时cpu参数设置不正确。才会出现kernel panic之类的消息。ps:2.6.x的内核编译系统是自动probe你的硬件信息的。所以如果不是手工改错了,出错的可能性较小。
以上是我的愚见,可能正确也可能有错。鄙帚自珍,愿君善之。
相关阅读 更多 +