QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9767|回复: 17

菜鸟内核配置编译经验

[复制链接]
发表于 2003-9-2 14:49:17 | 显示全部楼层 |阅读模式
我是一个编译过很多次内核的菜鸟,由于刚开始的时候,我对于编译内核感到非常高深,甚至敬

而远之,(以至于我不能把所有的windowsxp分区都格成ntfs,留了一个fat32的——缺省的内核是不支持

ntfs的。而我有很多的东西想要在windows和linux之间共享,相信广大菜鸟也有同感吧。)但是在自己真

正的操作过之后,发现其实编译内核也很简单,而且有助于我们菜鸟对linux有更进一步的了解,所以不

揣冒昧,把自己的经验写出来给广大菜鸟看看。
        编译内核的帖子其实也有一些了,可是我在自己的实践中发现有些是早期的帖子,有些呢,因为

是老鸟写的,所以就没有注意到一些小处,还有一少部分呢,咳,好像不是很对的说。。。。。。反正我

的rh9在编译的时候总是有不一样的感觉。
        相信菜鸟们大部分用的都是很新的rh版本吧?我的是9,所以我只能据此给大家说说。
        首先要安装源代码包,下载的或者是光盘上有的都行。rpm -Uvh filename。
        编译的步骤很简单,尤其是初次编译的同志们,呵呵。就是
        1,cd /usr/src/linux4.20.8(好像差不多,不过没关系,输入到src/l之后就可以用tab补齐了

,呵呵。一定要进入到源代码的目录哦!
       
        2,(make mrproper).这个第一次编译的时候可有可无,如果你不确定自己是不是第一次编译,

是用它也没有关系。它主要是清楚一些以前编译内核时候留下的痕迹,避免对当前便已有影响。不过第二

次开始就一定要用了。

        3,(make oldconfig).强烈推荐用这个。因为这样我们一般就只需要关闭一些确定不用的选项

,而不用完全的考虑自己都要选什么了,不知道的选项,按默认好了。
       
        4, (make xconfig )。当然你也可以用menuconfig....等,可是经验来说,那些不是特别的

灵活。还是xconfig好的说。把自己确定的东东都可以按照自己的意思来改变。具体的含义如下:
       
        4。1。Code maturity level options:代码成熟等级。这个选项很多大虾的帖子都写着要关闭

,否则会导致系统不稳定。可是根据个人的经验,如果不是要真地在公司的服务器上编译和使用的话,最

好还是选上。因为这个选项对于linux来说,有很多的东西是很必要的。比如,最明显的,就是我的内核

在编译之后(当然是按照前辈们所说得把这个选项给关了),本来是好好的,可是后来换了一个光电鼠标

,就开始糟糕了,每次引导内核,都告诉我一个错误:“modules:ehci:ehci-hcd“的模块找不到。郁闷

了好几天。最后使用一个笨办法找到的——因为默认的内核本来是支持的,我就从oldconfig开始,每次

都把一些不必要的选项去掉,等待错误的出现。。。。就是在这里了,呵呵,如果把这个关掉的话,就会

出错!不过我不知道这个是什么,因为usb的支持是有自己的选项的,或者是usb2.0吧。

        4。2。2.Loadable module support:对模块的支持。模块就是这样一种东东:有用却不常用的

。当需要的时候,就可以把它从磁盘上边调入内存中,如果不用的时候,内核会自动把它从内存中移出来

,可以节省内存。可是这样的缺点是在一入一出的时候,会消耗一部分资源,所以要时常用的话,反而降

低了系统的性能。(个人观点:其实如果你的内存很大的话,大部分确定用的东西都可以直接编译到内核

——毕竟是占用不了多少的内存的,移动来移动去的反而麻烦,速度最慢的不是内存和cpu而是硬盘阿。




        4。2。2。Set version information on all module symbols. 通常,我们更新核心版本之后,

模块耍重新的编译。这个选项使您不必更新编译模块而能使用以前的模块。可以不选它。但如果您选y,

则按照它的说明,您必须有genksyms这个程序(可用whereis指令查看有无此程序)。
        4。2。3。Kernel module loader. 让内核在启动时有自己装入必需模块的能力,建议选上。注

意:在开机就会 mount 上来的 partition 的 FS 、device driver 记得要 compiler 进 kernel,不能

把它弄成 modules。请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里


       
        不行,这样写下去,就要成了剽窃了,我还是多给大家写一些括号里边的东西吧。呵呵,那个才

是自己的。

        下面的都是有括号的哦。没写的地方,都是和大虾们一个意见哦,呵呵,和大虾们一个意见,与

有荣焉。
       
        2.2.Set version information on all module symbols. 这个还是不选的好。因为我们经常地

要重新编译,如果删除原来的modules的话,就会出错。

        。。。。。。。。。。。。。。

        Network Device Support. 这个其实很简单,把“绝对“不要的关掉,不知道的不要动,一定要

注意,否则网络设备出错很郁闷的。

        还有就是usbkeyboard 和usbmouse这个我一直都只能编译成模块,如果编译成内核就会出错,不

知道为什么。有兴趣可以试验一下。找到原因之后记得告诉我哦。

        其余的,大部分都在附件里呢。。。无耻的剽窃阿。。。连名字都抄上了。。。。。


        make config 之后,就是make dep ,make clean,make bzImage .make modules.make

modules_install,make install,然后就是期待上帝保佑了。。。。。。


还有一些经验,就是:
        1 rh9是不会有编译新内核之后引导不了的情况的,所以广大才鸟不用担心,因为新install是支

持在系统选单中增加新的选单,即使启动不了也没有关系。。。。好消息吧。
        2 修改./Makefile 文件,查找custom 把这个改成什么,就会在编译之后在grub选单中生成什么

条目,可以避免覆盖你刚刚生成的可用的内核。。。。不过我想也不用很多的选单123455665768来检验

grbu到底支持多少条吧。
        3 ./.config市make xconfig 或者make oldconfig 等的配置文件,如果想要保留这次的配置,

可以把它cp到别的目录或者改名。。。否则make mrproper 会rm  -rf的哦。
        4 编译内核最好不要在服务器上,即使是自己练习配置的服务器。因为, 唉,不是kernel稳定

的问题啦,而是每次试验新内核,启动好多的服务实在是好慢阿。。。。


        大概就是这么多了,要是有其他的什么问题,也可以问我哦,我不是大虾,不过我也很认真的。
[email protected]

        我不是经常上网,条件限制啊。。所以有什么很急的问题还是不要问我的好。:p

        砖我是抛出来了,有玉你就尽管的砸吧!

有附件的,才鸟不妨看看。
发表于 2003-9-4 09:19:30 | 显示全部楼层
太好了,我正被内核问题弄得晕头转向呢
回复

使用道具 举报

发表于 2003-9-5 08:27:22 | 显示全部楼层
good .
回复

使用道具 举报

发表于 2003-12-18 12:04:33 | 显示全部楼层
perfect
你就是我的老师!
回复

使用道具 举报

发表于 2003-12-18 20:50:50 | 显示全部楼层
我也是一个才玩linux不久的菜鸟。不过我也想提一点编译内核的经意:
有时内核不能通过编译是因为你的机器不稳电造成的。你可以在成功译好内核部分后,关机等一会或者重启后在译模块部分
回复

使用道具 举报

 楼主| 发表于 2003-12-19 13:53:19 | 显示全部楼层
我也是一个才玩linux不久的菜鸟。不过我也想提一点编译内核的经意:
有时内核不能通过编译是因为你的机器不稳电造成的。你可以在成功译好内核部分后,关机等一会或者重启后在译模块部分


收到!谢谢指点
回复

使用道具 举报

 楼主| 发表于 2003-12-19 13:57:30 | 显示全部楼层
perfect
你就是我的老师!

呵呵,我都骄傲了,不过,让我们共同进步吧
回复

使用道具 举报

发表于 2003-12-19 17:02:48 | 显示全部楼层
好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好好
回复

使用道具 举报

发表于 2003-12-19 22:13:21 | 显示全部楼层
[quote:a7a41cbc2d="gxl117"]请不要灌水,警告一次[/quote]
呵呵
回复

使用道具 举报

发表于 2003-12-21 22:52:58 | 显示全部楼层
附件在哪里啊?
回复

使用道具 举报

发表于 2004-1-2 18:10:05 | 显示全部楼层
是呀,不知附件在哪里呵.
回复

使用道具 举报

发表于 2004-3-15 15:03:36 | 显示全部楼层
附件在哪里啊?
回复

使用道具 举报

发表于 2004-3-15 22:02:07 | 显示全部楼层
好人啊!不象有的人……

谨代表我个人向你表示诚挚的感谢!
回复

使用道具 举报

发表于 2004-7-22 16:14:52 | 显示全部楼层
不错,可我还是有点不清楚,看来要自己亲手做一次才能明白。
回复

使用道具 举报

发表于 2004-7-28 11:47:30 | 显示全部楼层
想问一个问题!当我编译好内核后,将生成的bzImage放到/boot下,修改lilo.conf就可以正常启动了吗?
比如,/boot ,/root ,/dev,/bin,/usr/等会自动的生成吗,还是要我自己做呢?
谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-5-15 00:36 , Processed in 0.055062 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表