系统技术开发新篇章:编译linux内核
时间:2007-01-05 来源:慕良文王
写在前面:喜欢这篇文章不是因为他的权威和真实,而是他把对系统的内核改造比喻为改装赛车,我感觉这可能是在这一领域里最恰当的概括。
好了,当我们已经可以基本操控这台 Linux 机器之後,不妨帮它动点手术,让它更适合自己的环境。就像喜欢飙车的朋友,总免不了要对心爱的座架改装改装一样。
要改车,除了要改弹簧、轮胎、煞车、排气、裙边、尾翼等,要想车子真正能发挥性能,当然免不了改引擎啦。下面我们进行的核心编译,就是为 Linux 改引擎了。日後,我们还要装 KDE、GNOME 等等这些 X Window,那是雾灯、座椅、方向盘、表板等这些‘装饰’改装了。这些修改,都一一显示了使用者的个人风格,而且也有许多产品可供选择,还可以选择“无 限”。
何谓核心?
前面介绍 shell 的时候,已经略略提到过核心这个东西,如果您有看过“电脑基础”中关於作业系统部分的文章,相信不用我再多做解释了。而且,我也不想再重复了,假如您不知道核心是做什麽的,可以到“电脑基础”去看看。
我们通常挂在嘴边的 Linux ,其灵魂所在,就是它稳定而强大的核心。而事实上,Linux 的定义,也只是这个核心,只是大家目前使用的系统,是经过包装的,在核心之外,还有各种各样的套件( 包括不同的 shell )整合一起。如果您有时间,而且愿意上网路去抓,那些套件都可以自己找得到。有些人,帮您把核心编好,套件也设定好并加以整合,同时将安装程式写好,还提 供套件管理工具,以及将环境设定妥当,然後烧成 CD,那就是我们常见的 Linux 套装系统了。我们称这些 Linux 套装系统的发行版本为 Distribution ,例如大家闻名的 RedHat,Slackware,OpenLinux,TurboLinux,SuSE,Debian,等等,都是 distrobutions 。不管它们如何包装,但骨子里头的东西,也就是使用的核心,都一样:都是 Linux !
那核心究竟如何定义呢?说简单些,就是作业系统 (Operating System),它负责处理所有系统的东西,包括硬碟的控制、记忆体管理、行程管理、档案系统、网路功能、等等。我们可以将核心看成是一个架於程式和硬体 之间的界面操作系统,离开来核心,什麽东西都用不了。而核心的编译好坏,也会影响到系统的效能,甚至,一些系统功能(如 tcp/ip),就必须要编进核心才行。
不过,在动手编译核心之前,请先问问自己是否真的有这个必要?因为,现在的 Linux Distro,其预装的核心力都尽可能的将所有东西以模组的方式进行编译,而这些模组都是可以插入和移除的。这是一个非常灵活的设计:当您需要模组的时 候,就载入到核心里面;鸟尽弓藏的时候,可以将模组从核心中移除:呼之则来、挥之则去,怎一个方便了得!要知道,作业系统的效能好坏、稳定与否,其中一个 很关键的因素是核心的体积短小精悍。一个臃肿的核心,没错,能提供样样俱到的功能,但也牺牲掉系统效能和稳定性。所以在编译核心的时候,‘将核心编得尽量 的小’,是最高原则。
就像改车一样:车身越轻,其可控性越佳,如果您完全是一个 100% 飙车发烧友,很可能,您的车箱里面,除了改良後的前坐位和防翻侧支架外,其它能拿掉的都拿掉,连仪 都是裸露的。呵~~ 如果您的车子里面还有一大堆 Kitty 、Snoppy,以及上十组喇叭和 CD 音响,那我只能说您是“爱车一族”,而绝对不够资格称得上“飙车一族”!如果您能将所有的汽车周边都设计成模组,那就最好不过了:需要泡马子的时候,将所 有耍 cool 玩意都弄上;需要午夜狂奔的时候,全部拿掉,一件不留。
同样的,如果您真的是一个 100% 的 Linux 发烧友,假如发现核心里面竟然载有您不想要的东西,是绝对不能容忍的。不过,对於初入门的朋友,倒不必急於以 Linux 发烧友来自居,先摸熟核心的功能之後,才真正打造适合自己的精确核心吧。说实在,若不是赶时髦,一般用 Distro 预装的核心已经非常足够了。而且预装核心都带有非常充足的模组,随时应付您的需求。除非您千真万确的知道您要的硬体只有在新核心里面才能支援,或是从 kernel.org 上面得知旧核心有严重的漏洞,否则,不需要如此劳师动众。
好了,现在,就假设您有十万零一个理由需要进行核心的编译,那就不妨一起共赴一趟核心的编译之旅吧!
http://linux.chinaitlab.com/info/376397.html 全文在这里 有兴趣的可以去看看,写的还算是比较详细。