快捷搜索:

系统技术开发新篇章:编译linux内核 (1)

好了,当我们已经可以基础操控这台 Linux 机械之後,不妨帮它动点手术,让它更得当自己的情况。就像爱好飙车的同伙,总免不了要对心爱的座架改装改装一样。

要改车,除了要改弹簧、轮胎、煞车、排气、裙边、尾翼等,要想车子真正能发挥机能,当然免不了改引擎啦。下面我们进行的核心编译,便是为 Linux 改引擎了。日後,我们还要装 KDE、GNOME 等等这些 X Window,那是雾灯、座椅、偏向盘、表板等这些‘装饰’改装了。这些改动,都逐一显示了应用者的小我风格,而且也有许多产品可供选择,就如改车除了用“momo”之外,还可以选择“无限”。

何谓核心?

前面先容 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 上面得知旧核心有严重的破绽,否则,不必要如斯劳师动众。

事实上,更新核心不是为了干时髦,您必须很清楚您的必如果什麽,要是当前核心已经能敷衍您的必要,那就继承保留它便是了。下面这篇文章,是小州兄的建言,异常有代表性,盼望大年夜家能深切领会此中的要旨:

"小州" 撰写於邮件

news:3iFIVR$84V@bbs.cynix.com.tw...

※ 引述《asho (阿信)》之铭言∶

这样是否由于没有最佳化

cpu以及周边的关系ㄋ

我想...假如编译核心的时刻

不选duron而选x86系列ㄉ话

效能应该会打折扣吧

我会去 compile kernel,一样平常来说只由于:

1. 你抓取新版 kernel source,当然你就必要自己编译。

2. 虽然今朝 kernel 在 linux dist 出厂时都尽可能编入必要的项目

到核心内,其他项目都选择编译成为 module 可以事後挂入。若是

很巧你用的周边装配该好很冷僻,预先编译好的 kernel 既没把你

必要的项目编入核心,也没有编译成为 module,这时刻才必要

自己从新编译核心。

3. 特殊情况应用....

从新编译 kernel 并不会提升效能,recompile kernel 最多只是调选

自己必要的项目编译核心或者是编译成为模组来应用。大概在选择

编译核心项目时,把 cpu 等级选好一点,那编译出来的 kernel 是针对

该 cpu 最佳化编译,然则整体增添效能百分比却是很低,比方可能增添了

1 ~ 3 %,这对於今朝的 cpu 来说,着实也没有大年夜幅度增快若干。

若是你用 mandrake,他整个 package 都是针对 pentium 的系统

编译程式,那整体效率上切实着实才会比一样平常 linux dist 的 package 都是用

i386 指令集的程式套件快上许多。

以小弟履历看,最好是在系统安装完毕之後,顿时就进行核心编译事情,免得以後每次装一些特定功能的时刻又要花一大年夜轮光阴编译。当然了,我是假设您如我在“安装 Linux”文章中所说的:已经明确知道自己的系统要用来做什麽的。例如,您盘算架设 NAT 和 QoS,并且涉猎过文件,明确知道要将什麽器械编译进核心里面。当然,假如您不怕花光阴,每装一次办事就从新编译一次核心,也未尝弗成。只是,当您真的有过几回核心编译履历之後,我信托您巴不得一次过就将核心编好,最好照样别人已经编好,然後送一个现成的过来!呵呵~~ 我常会在编核心的是许这样的希望哦~~ ^_^

假如您不是到网路上抓最新的核心,但当初安装的时刻又不是选择 everything,而且也没选择 Development Tools (kernel source) ,那您也可以应用安装光碟带来的核心版本 (RH7.1 是在 Disk2 上面)。当您将光碟 mount 好之後,然後转到这个目录去:: cd /mnt/cdrom/RedHat/RMPS

然後将 kernel-source 的 rpm 装上。别说您不会应用 rpm 哦,果然的话,请往前面翻看看程式治理 (RPM)再回来: rpm -Uvh kernel-source-2.4.2-2.i386.rpm

(假如您看履新错信息显示您还必要其他程式,逐一装好它们的 rpm 後再来安装 kernel-source 的rpm。)

完成之後,您应该会在 /usr/src/ 目录里面看到一个 linux-2.4.2 的子目录。这便是刚才的 rpm 程式干的好事了!

假如您的核心是从 internet 上面下载回来的,平日会是‘.tar.gz’或‘.tar.bz2’这样的压缩档。今朝,我在 http://www.kernel.org/pub/linux/kernel/v2.4/ 所找到的最新版本是 2.4.9 ,请先将 linux-2.4.9.tar.bz2 这个档案抄进 /usr/src 再进行解压: tar Ixvf linux-2.4.9.tar.bz2

界面因此层级形式显示选项,您首先辈入的顶层选单。然後您可以用‘向上’和‘向下’偏向键来选择选项。

假如您发明所选择的选项的最右边有一个向右的箭头,那就表示其下还有更进一层的子选单。

在选单的底部,分手有:Select、Exit、和 Help 的按钮,只要按‘tab’键就可以轮回选择。

当您用高低偏向键选择好有子选单的选项,以及确定底部按钮为 Select 之後,敲‘Enter’就可以进入下一层选单。

假如按 tab 键选择 Exit 的话,就会退回上一级选单 (也可以按‘Esc’,但要异常小心,由于不留心多按两下的话可能会退出程式,然後您又不确定是保存照样放弃好!以是不鼓励用‘Esc’)。

当您选择到最底部的选项的时刻,也便是选项的右边没有箭头了,那麽在选项的左边应该是一个 [ ] 或的符号。分手是:前者只能选择为内建或不选择;後者则可以让您选择为内建、或模组、或不选择。您可以按空缺键来轮回您的选择:[ * ] 和为内建、[ ] 和是不选择、则为模组。(我的建议是:能够编成模组的就只管即便编成模组,除非某些特其余效能斟酌或没有模组选择的,才编成内建。)

当您退回顶级目录的时刻,假如按 Exit 或 Esc 就会退出所有选单,同时系统会问您是否保存设定。您只有 ‘Yes’ 或 ‘No’的选择,假如不确定,请用 no ,然後从新进行选择。不过,您在任何时刻,在顶级目录那里可以选择:Save Configuration to an Alternate File ,将当前设定保存在 /usr/src/linux 目录下,档案名称您自定则可;您也可以选择:Load an Alternate Configuration File ,从设定档载入曩昔的设定。我强烈建议您在进行任何篡改之前,先为今朝的设定保存起来,请选择 Save Configuration 那个选项,然後输入 origin,那您就可以随时用 Load Configuration 还原核心的原始设定了。(假如对核心的选项够懂得,可以复制一份设定档,然後直接改动里面的设定,是最快的措施!)

# 上面这些由于是模组的关系,以是才选。

(off) High Memory Support

(X) off

( ) 4GB

( ) 64GB

# 假如您的实体影象体少於 1G 的话,用预设的 off 就行;

# 假如您的影象体介於 1G 到 4G 之间,选择 4GB;

# 假如您的影象体跨越 4G ,那可以选择 64GB。

[ ] Math emulation

# 除非您的 CPU 是 intel 386,否则不用选择。

[*] MTRR (Memory Type Range Register) support

# 假如您有盘算跑 X window,不妨将之加上。

[ ] Symmetric multi-processing support

# 假如您的机械是双 CPU 的,可以选择上面这个。

[ ] APIC and IO-APIC support on uniprocessors (NEW)

General setup --->

[*] Networking support

[ ] SGI Visual Workstation support

[*] PCI support

(Any) PCI access mode

( ) BIOS

( ) Direct

(X) Any

[*] PCI device name database

[ ] EISA support

[ ] MCA support

[*] Support for hot-pluggable devices

PCMCIA/CardBus support --->

PCMCIA/CardBus support

[*] CardBus support

[*] i82365 compatible bridge support

[ ] Databook TCIC host bridge support

# 假如您应用 notebook,或许会有 PCMCIA 装配,

# 不妨将 i82365 加进来,除非您确定不应用 PCMCIA。

# 我实际上是没有选择的,这里仅作示范而已。

# 假如您没选择这个,後面许多 PCMCIA 的选择就看不到了,

# 参考的时刻请把稳这点!

您可能还会对下面的文章感兴趣: