首页 > 新闻中心 > > 正文

编译linux内核

更新时间: 2006-04-14 11:03:09来源: 粤嵌教育浏览量:1557

好了,当我们已经可以基本操控这台 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,其预装的核心力都尽可能的将所有东西以模组的方式进行编译,而这些模组都是可以插入和移除的。这是一个非常灵活的设计:当您需要模组的时候,就载入到核心里面;鸟尽弓藏的时候,可以将模组从核心中移除:呼之则来、挥之则去,怎一个方便了得!要知道,作业系统的效能好坏、稳定与否,其中一个很关键的因素是核心的体积短小精悍。一个臃肿的核心,没错,能提供样样俱到的功能,但也牺牲掉系统效能和稳定性。所以在编译核心的时候,‘将核心编得尽量的小’,是原则。

就像改车一样:车身越轻,其可控性越佳,如果您完全是一个 飙车发烧友,很可能,您的车箱里面,除了改良後的前坐位和防翻侧支架外,其它能拿掉的都拿掉,连仪 都是裸露的。呵~~ 如果您的车子里面还有一大堆 Kitty 、Snoppy,以及上十组喇叭和 CD 音响,那我只能说您是“爱车一族”,而不够资格称得上“飙车一族”!如果您能将所有的汽车周边都设计成模组,那就不过了:需要泡马子的时候,将所有耍 cool 玩意都弄上;需要午夜狂奔的时候,全部拿掉,一件不留。

同样的,如果您真的是一个 的 Linux 发烧友,假如发现核心里面竟然载有您不想要的东西,是不能容忍的。不过,对於初入门的朋友,倒不必急於以 Linux 发烧友来自居,先摸熟核心的功能之後,才真正打造适合自己的精确核心吧。说实在,若不是赶时髦,一般用 Distro 预装的核心已经非常足够了。而且预装核心都带有非常充足的模组,随时应付您的需求。除非您千真万确的知道您要的硬体只有在新核心里面才能支援,或是从 kernel.org 上面得知旧核心有严重的漏洞,否则,不需要如此劳师动众。

好了,现在,就假设您有十万零一个理由需要进行核心的编译,那就不妨一起共赴一趟核心的编译之旅吧!

选择版本

不管您的核心是从网路上抓的,还是从 CDROM 里面 copy 出来的,首先要确定的事情是:这个版本是否适合您?

事实上,Linux 核心的版本号码上面,就隐含著一些重要的资讯。先让我们看看您目前使用的核心版本吧: # uname -r

2.4.2-2

不知道您对这这些数字有何认识呢?不知道不要紧,让我告诉您吧:

<主版本>.<次版本>.<修订版本>-<副版本>

然後,再让我们看看核心版本的维护流程:

kernel

2.2.0

|

V

2.2.1

:

|

V Kernel

2.2.8 ---> 2.3.0

| |

V V

2.2.9 2.3.1

: :

| |

V V Kernel

2.2.60 ... ---> 2.4.0

|

V Kernel

: ---> 2.5.0

| |

V V

: :

事实上,在众多的核心版本中,我们需要特别留意的是第二个数字,也就是次版本的号码:

如果它是一个奇数,那这个版本是实验性的版本,或许有些新的设备和功能能够在这个种版本找到,但因为尚处於开发期,不能保证其稳定性和安全性。无论如何,不建议在真正用来工作的系统上面安装实验性的核心版本。例如:2.1.1、2.3.2、2.3.3、2.5.0 ....

如果它是一个偶数,基本上,该版本已经获得一定程度的测试和肯定,已趋於稳定和可靠的状态。如果您的系统是真正用来工作的,只建议安装稳定的核心版本。例如:2.2.1、2.2.17、2.4.2、2.4.9 ....

无论如何,当新核心推出之後,都不建议立即在真正工作的系统上面应用,尤其是在商业机构中,不要拿营运中的系统来做白老鼠。就算您获得一个被认为是稳定的版本,也应该经过反复的测试,以及随时留意核心团体所公布的资讯。只有经过一段时期和广泛的应用与回报,再加上自己的严格测试之後,才能决定是否要应用在工作的环境中。

事实上,更新核心不是为了干时髦,您必须很清楚您的需要是什麽,假如当前核心已经能应付您的需要,那就继续保留它就是了。下面这篇文章,是小州兄的建言,非常有代表性,希望大家能深切领会其中的要旨:

"小州" 撰写於邮件

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 dist 可能预先编译好的 kernel 是支援 qos 机制,若是

不需要该机制,拿掉也许能够减少一些编出来的 kernel image 大小,

但是这并不会增加系统效能..... 不过对於以前古老环境来说,当时

记忆体不多,而且那时候模组化还不成熟的年代,让 kernel image 变小

一点,是可以减少一些记忆体耗费,但是对於目前其实都是不需要去担心。

另外,还有一个地方要留意的:就是您目前使用的应用程式和新版核心之间的兼容性如何?其中头痛的地方莫过於 Library 的更新。因为 Library 是核心和程式之间的主要沟通界面,实在有太多的程式需要使用到 Library 提供的函式库。如果单纯为了升级某一个套件,而需要更新 Library 版本的话,在很大程度上也会牵涉到核心版本的升级;但其它应用程式是否能使用新版的 Library 却是个非常棘手的难题。调过来说,如果您单纯为了某一核心功能而升级核心,而导致所有 Library 和应用程式都必须更新,您必须有足够的 study 和风险评估,否则当您发现牵一发动全身的时候,再临急抱佛脚,恐为时已晚了。况且,许多隐藏性的问题,可能要等到积压了某一时期之後才能浮现出来,这个恐怕更是让人吃不了兜著走。

无论如何,如果您觉得要升级核心的话,三思而後行!

取得 source

Linux核心的发展,可以说是相当迅速的,其版本更新反而有时候让人觉得受不了呢。

如果您使用的我们这里用来作范例的 RedHat 7.1 套件,那您应该看到和我一模一样的版本:2.4.2-2。想要获得的核心版本资讯,不妨到 http://www.kernel.org/ 走走,说不定会满载(指频宽)而归呢!上面有 http 和 ftp 的下载选择,如果您是用网页浏览器的话,建议用 http 模式;如果您习惯了 ftp 界面,那就用 ftp 好了。

以小弟经验看,是在系统安装完毕之後,马上就进行核心编译工作,免得以後每次装一些特定功能的时候又要花一大轮时间编译。当然了,我是假设您如我在“安装 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

(因为这是 bz2 的压缩,所以用 I 参数,如果您抓的是 gz 格式,就用 z 参数吧。)

这样您就会产生一个‘linux’的目录!注意哦:这个和您用 rpm 从 RH7.1 Disk2 的 CD 装的目录不一样哦,如果您是用 CD 来装的话,建议您建立一个 link: ln -sf linux-2.4.2 linux

无论您是用光碟的 rmp,还是下载回来的核心,终我们都应该有一个‘/usr/src/linux’的目录:如果原来已经有这样一个目录存在,而不是 link 的话,那就先用 mv 将它改一个名字吧。

当我们的目录准备好之後,就是我们进行编译的步骤了:

进行编译

不过,编译核心一点都不轻松,而且是相当费神费时的事情。幸好现在的机器越来越快,而且核心的编译程式也好用多了。

首先确定您在安装 Linux 时候准备的开机片可以工作,用它boot 一下就知道了,要确定您的 BIOS 里面的开机顺序是以“A”(即软碟)为先。如您当初忘记了制作开机片,或磁片坏掉了,先在这里自行做一张: mkbootdisk --device /dev/fd0 `uname -r`

(用 uname -r 命令是找出您当前的核心版本,如果您确定是 2.4.2-2 , 那可以直接用版本号码来代替。)

重新启动机器,确定是用 bookdisk 开机的。然後用 root 身份进行登录,并取出开机磁碟,贴好标签,然後换一张新的磁碟进去。

然後,让我们转换到 /us/src/linux/Documentation/ 目录里面,看看里面您认为需要了解的资讯,例如 Changes,modules.txt、Configure.help 和其它 .txt 档。

当您阅读完新 kernel 的重要资讯之後,然後回到 /usr/src/linux 目录,并输入: make menuconfig

如果在Xwindows里面,可以输入:make xconfig。不过,我们这里使用 menuconfig 就好。在这个界面里面,不如先学习一下如何操作键盘吧:

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

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

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

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

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

当您选择到部的选项的时候,也就是选项的右边没有箭头了,那麽在选项的左边应该是一个 [ ] 或 < > 的符号。分别是:前者只能选择为内建或不选择;後者则可以让您选择为内建、或模组、或不选择。您可以按空白键来循环您的选择:[ * ] 和 < * > 为内建、[ ] 和 < > 是不选择、 < M > 则为模组。(我的建议是:能够编成模组的就尽量编成模组,除非某些特别的效能考虑或没有模组选择的,才编成内建。)

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

接下来,应该是伤神的时候了,这里,我们要面对一大堆的选择。如果您不确定哪些需要,可以接受预设值,或是一股脑做成模组。当您不知道某应该项目是什麽意思,可以按‘help’看看您是否需要,如没需要的话可以不要编进核心里面,否则核心编得太大,会影响系统效能。

Code maturity level options --->

[*] Prompt for development and/or incomplete code/drivers

# 如果您想用核心进行研发工作,如测试新硬体,可以考虑,

# 否则不用理会,

# 不过,有些尚处於 alpha 阶段的新功能必须选择後才用。

Loadable module support --->

[*] Enable loadable module support

[*] Set version information on all module symbols

[*] Kernel module loader

# 如果您要采用其它版本(或旧版本)编译过来的模组,

# 那就要打开第二项,但可能不那麽安全。

# 然则,您也要确定装有 genksyms 程式,

# 否则可能会编译失败。

Processor type and features --->

(Pentium-III/Celeron(Coppermine)) Processor family

( ) 486

( ) 586/K5/5x86/6x86/6x86MX

( ) Pentium-Classic

( ) Pentium-MMX

( ) Pentium-Pro/Celeron/Pentium-II

(X) Pentium-III/Celeron(Coppermine)

# 如果项的 CPU 型号不是您目前机器的,

#可以 Enter 进行选择。

Toshiba Laptop support

/dev/cpu/microcode - Intel IA32 CPU microcode support

/dev/cpu/*/msr - Model-specific register support

/dev/cpu/*/cpuid - CPU information support

# 上面这些因为是模组的关系,所以才选。

(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 的选择就看不到了,

# 参考的时候请留意这点!

[*] System V IPC

[*] BSD Process Accounting

# 是是非常好用的东西,可以将您的行程资料记录下来,

# 强烈建议选择,要不然开机可能会看到错误信息。

[*] Sysctl support

# 这个不能不选,否则 /proc/sys 就没作用了。

(ELF) Kernel core (/proc/kcore) format

(X) ELF

( ) A.OUT

<*> Kernel support for a.out binaries

<*> Kernel support for ELF binaries

<*> Kernel support for MISC binaries

[*] Power Management support

<*> Advanced Power Management BIOS support

# 上面这行要编成模组或内建,然後才看得到下面的哦:

[ ] Ignore USER SUSPEND (NEW)

[ ] Enable PM at boot time (NEW)

[ ] Make CPU Idle calls when idle (NEW)

[ ] Enable console blanking using APM (NEW)

[ ] RTC stores time in GMT (NEW)

# 如果您的硬体时钟是使用世界标准时间,可以选择,

# 如果是本地时则不选。

[ ] Allow interrupts during APM BIOS calls (NEW)

[ ] Use real mode APM BIOS call to power off (NEW)

# 如果您的系统不能自己切断电源,就选这个吧。

# 不过,对某些 BIOS 而言,选了这个反而不能关机!

# 这样的话,您自己试试看棉~~

# 我这里没选啦,因为我用的是华硕的旧板 P2L97。

# 另外,我还发现如果您是单 CPU 的机器,

# 前面却将 SMP 选择起来的话,那也不能关机哦~~

Memory Technology Devices (MTD) --->

< > Memory Technology Device (MTD) support

# 如果您要做 embedded 系统,

# 使用到 FDM 和 DOM/DOC 的话,可选。

# 不过选择之後,还有很多选项,请尽量用模组来编译就是了。

# 如果不知道是什麽,请看 Help 的说明!

# 我这里没选。

Parallel port support --->

Parallel port support

# 如果您有使用平行埠,如接印表机,那就选吧。

PC-style hardware (NEW)

Multi-IO cards (parallel and serial) (NEW)

[ ] Support foreign hardware (NEW)

[*] IEEE 1284 transfer modes (NEW)

# 假如您的印表机有状态回报功能的话,可以考虑。

Plug and Play configuration --->

<*> Plug and Play support

<*> ISA Plug and Play support

# 哇:PnP 耶~~ 这麽好的事情为什麽不用?

Block devices --->

<*> Normal PC floppy disk support

XT hard disk support

Parallel port IDE device support

--- Parallel IDE high-level drivers

Parallel port IDE disks (NEW)

Parallel port ATAPI CD-ROMs (NEW)

Parallel port ATAPI disks (NEW)

Parallel port ATAPI tapes (NEW)

Parallel port generic ATAPI devices (NEW)

--- Parallel IDE protocol modules

ATEN EH-100 protocol (NEW)

MicroSolutions backpack (Series 5) protocol (NEW)

MicroSolutions backpack (Series 6) protocol (NEW)

DataStor Commuter protocol (NEW)

DataStor EP-2000 protocol (NEW)

FIT TD-2000 protocol (NEW)

FIT TD-3000 protocol (NEW)

Shuttle EPAT/EPEZ protocol (NEW)

Shuttle EPIA protocol (NEW)

Freecom IQ ASIC-2 protocol (NEW)

FreeCom power protocol (NEW)

KingByte KBIC-951A/971A protocols (NEW)

KT PHd protocol (NEW)

OnSpec 90c20 protocol (NEW)

OnSpec 90c26 protocol (NEW)

Compaq SMART2 support

Compaq Smart Array 5xxx support

Mylex DAC960/DAC1100 PCI RAID Controller support

<*> Loopback device support

# 这个建议做到核心去。

Network block device support

<*> RAM disk support

(4096) Default RAM disk size (NEW)

[*] Initial RAM disk (initrd) support

# 呵这趟收获甚丰:反正是模组嘛~~ ^_^

# 不过,如果您确定真的是用不上,那也可以不选啦。

# 至於後 3 项的使用时机,是当系统在开机过程中,

# 必须先载入某些模组才能完成档案系统的挂载,

# 例如 SCSI 模组,或核心太大装不进磁片中,

# 那您可以将 RD 和 initrd 选进核心里面。

# 我这里打算尝试这个选项,因为我有 SCSI 控制卡。

# 如果您使用这个选项,请确定您的 SCSI 模组

# 要写在 /etc/modules.conf 档中;

# 您也可以执行 mkinitrd 帮助您完成。

Multi-device support (RAID and LVM) --->

[*] Multiple devices driver support (RAID and LVM)

RAID support

Linear (append) mode

RAID-0 (striping) mode

RAID-1 (mirroring) mode

RAID-4/RAID-5 mode

Logical volume manager (LVM) support

# 您想在 Linux 玩 RAID 和 LVM 吗?这些可要选哦。

Networking options --->

# 在这里的选项非常多,若想将 Linux 当成 gateway 来玩,

# 那可能会选择较多的选项。

# 无论如何,参考 Help 的说明来决定您的需求。

<*> Packet socket

# 这个可以加快封包的双向沟通。

[*] Packet socket: mmapped IO

# 目的同上。

[*] Kernel/User netlink socket

# 如果您想架设 diskless 工作站,

# 同时要这台机器提供 RARP 这样的服务,

# 那就选择它。

# 其它一些服务如 ipvsadm 也需要它。

[*] Routing messages (NEW)

# 如果您想用 iproute2 接收路由资讯,请选择。

Netlink device emulation (NEW)

# 这个选项应该很快合并到前面的 netlink socket 那里去。

[*] Network packet filtering (replaces ipchains)

# 呵~~ 这个是许多人都想玩的功能: NAT 和 firewall !

# 一定要选哦~~

[ ] Network packet filtering debugging (NEW)

# 如果您还有能力帮助 iptables 进行 debug,可以选。

# 我嘛,暂时偷懒~~

[*] Socket Filtering

# 这功能似乎很神奇,

# 如果您会写 socket 程式,应该蛮受惠的。

<*> Unix domain sockets

# 许多程式,例如 X window 和 syslog ,都用到。

# 除非您做 embedded 系统,确定不会使用到,

# 否则一定要选。

[*] TCP/IP networking

# 上面这项如果不选,也别想上 Internet 了。

[*] IP: multicasting

# 如果没用到 MBONE 功能,可以不选。

[*] IP: advanced router

# 如果要将 Linux 当 router 用,那就选吧。

[*] IP: policy routing (NEW)

# 如果您打算用 iproute2 来管理 TOS ,那就要选。

[*] IP: use netfilter MARK value as routing key (NEW)

# 可以用 iproute2 配合 iptalbes 来控制频宽,很好玩哦。

[*] IP: fast network address translation (NEW)

# 哦:NAT 耶~~ 当然选择啦。

[*] IP: equal cost multipath (NEW)

# 如果网路环境有多重路由,不妨考虑。

[*] IP: use TOS value as routing key (NEW)

# 如果您打算用 TOS 来做路由判定依据,那可以选。

[*] IP: verbose route monitoring (NEW)

# 建议选择,这样可以让核心告诉您一些奇怪的路由资讯。

[ ] IP: large routing tables (NEW)

# 如果您的路由区域可能超过 64 个,可以考虑。

[ ] IP: kernel level autoconfiguration

# 只有上面这项选择了,下面三项才会跑出来:

[ ] IP: DHCP support (NEW)

[ ] IP: BOOTP support (NEW)

[ ] IP: RARP support (NEW)

# 如果您要构建一个 diskless 工作站的核心,

# 可以选择前面四项。

# 如果您是做 diskless 的伺服器,就不要选了。

IP: tunneling

# 可以用来架设 VPN 哦,反正又是模组,干嘛不选?

IP: GRE tunnels over IP

[*] IP: broadcast GRE over IP (NEW)

# 如果您的网路混合了 IPv6 和 IPv4,

# 可以考虑选择前两项。

[*] IP: multicast routing

[*] IP: PIM-SM version 1 support (NEW)

[*] IP: PIM-SM version 2 support (NEW)

# 和前面的提到的 MBONE 一样,前面三项有用才选吧。

[*] IP: TCP Explicit Congestion Notification support

# 网路拥塞通知协定可以减少封包遗弃及加速传送,

# 然而许多防火墙目前都不支援这些封包,

# 有可能会影响到防火墙後面的连线,

# 如果您不确定,那就不选为佳。

# 不过,您也可以用如下命令将此功能关闭:

# echo 0 > /proc/sys/net/ipv4/tcp_ecn

[*] IP: TCP syncookie support (disabled per default)

# 使用 SYN cookies 来抵御 SYN Flood 攻击,

# 但光设定这里是不够的,您还必须确定

# /proc/sys/net/ipv4/tcp_syncookies 的值为 1 。

IP: Netfilter Configuration --->

# 不是一大票人要玩封包过滤吗?可别忘了打开这里哦:

Connection tracking (required for masq/NAT) (NEW)

FTP protocol support (NEW)

IP tables support (required for filtering/masq/NAT) (NEW)

limit match support (NEW)

MAC address match support (NEW)

netfilter MARK match support (NEW)

Multiple port match support (NEW)

TOS match support (NEW)

tcpmss match support (NEW)

Connection state match support (NEW)

Packet filtering (NEW)

REJECT target support (NEW)

Full NAT (NEW)

MASQUERADE target support (NEW)

REDIRECT target support (NEW)

Packet mangling (NEW)

TOS target support (NEW)

MARK target support (NEW)

LOG target support (NEW)

TCPMSS target support (NEW)

ipchains (2.2-style) support (NEW)

< > ipfwadm (2.0-style) support (NEW)

# 简而言之,除非您确定不用,

# 这里的东西全部都可以编为模组就是了。---

The IPX protocol

[*] IPX: Full internal IPX network (NEW)

# 要和 Novell 机器连接吗?前两项要选择哦。

Appletalk protocol support

# 还想和 mac 电脑连接?那也不能不选哦。

< > DECnet Support

802.1d Ethernet Bridging

# 如果您了解 802.1d 协定,

# 同时想用 Linux 当 Bridge,那就选吧。

QoS and/or fair queueing --->

# 想玩流量控管,这里的可不要忘了打开:

[*] QoS and/or fair queueing

CBQ packet scheduler (NEW)

CSZ packet scheduler (NEW)

The simplest PRIO pseudoscheduler (NEW)

RED queue (NEW)

SFQ queue (NEW)

TEQL queue (NEW)

TBF queue (NEW)

GRED queue (NEW)

Diffserv field marker (NEW)

Ingress Qdisc (NEW)

[*] QoS support (NEW)

[*] Rate estimator (NEW)

[*] Packet classifier API (NEW)

TC index classifier (NEW)

Routing table based classifier (NEW)

Firewall based classifier (NEW)

U32 classifier (NEW)

Special RSVP classifier (NEW)

Special RSVP classifier for IPv6 (NEW)

[*] Traffic policing (needed for in/egress) (NEW)

# 和前面的封包过滤一样,能选为模组的就用 M ,

# 否则就内建。

Telephony Support --->

< > Linux telephony support

# 除非您确定用 Linux 玩 VoIP,否则不用设定。

# 我这里没设啦。

ATA/IDE/MFM/RLL support --->

<*> ATA/IDE/MFM/RLL support

# 相信今天的硬碟没有不支援 ATA 的吧?一定要选哦。

IDE, ATA and ATAPI Block devices --->

<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/

floppy support

--- Please see Documentation/ide.txt

for help/info on IDE drives

[ ] Use old disk-only driver on primary interface

<*> Include IDE/ATA-2 DISK support

[*] Use multi-mode by default

PCMCIA IDE support

<*> Include IDE/ATAPI CDROM support

Include IDE/ATAPI TAPE support

Include IDE/ATAPI FLOPPY support

SCSI emulation support

--- IDE chipset support/bugfixes

[*] CMD640 chipset bugfix/support

[ ] CMD640 enhanced support

[ ] ISA-PNP EIDE support

[*] RZ1000 chipset bugfix/support

[*] Generic PCI IDE chipset support

[*] Sharing PCI IDE interrupts support

[*] Generic PCI bus-master DMA support

[ ] Boot off-board chipsets first support

[*] Use PCI DMA by default when available

[ ] AEC62XX chipset support

[ ] ALI M15x3 chipset support

[ ] AMD Viper support

[ ] CMD64X chipset support

[ ] CY82C693 chipset support

[ ] Cyrix CS5530 MediaGX chipset support

[ ] HPT34X chipset support

[ ] HPT366 chipset support

[*] Intel PIIXn chipsets support

[*] PIIXn Tuning support

[ ] NS87415 chipset support (EXPERIMENTAL)

[ ] PROMISE PDC202{46|62|65|67|68} support

[ ] ServerWorks OSB4/CSB5 chipsets support

[ ] SiS5513 chipset support

[ ] SLC90E66 chipset support

[ ] Tekram TRM290 chipset support (EXPERIMENTAL)

[ ] VIA82CXXX chipset support

[ ] Other IDE chipset support

[ ] IGNORE word93 Validation BITS

# 上面这些,如果能做成模组的就尽量做,其它的,

# 除非确定您会使用到,例如 Promise 的 IDE RAID 晶片,

# 否则不要选择或接受预设的选项。

SCSI support --->

# 如果您机器上有 SCSI 装置,那就打开这里:

<*> SCSI support

--- SCSI support type (disk, tape, CD-ROM)

<*> SCSI disk support

(40) Maximum number of SCSI disks that can be loaded as modules

# 如果您确定您的 SCSI 控制卡可以超过这个速度,可以调整这里的数值。

# 例如 Utra-Wide,可以到 160。

# 相反,如果您的卡太旧,或许调低一点。

SCSI tape support

SCSI OnStream SC-x0 tape support

SCSI CD-ROM support

[ ] Enable vendor-specific extensions (for SCSI CDROM) (NEW)

# 请看 help ,以确定您是否使用到其中提到的型号,否则不要设。

(2) Maximum number of CDROM devices that can be loaded as

modules (NEW)

SCSI generic support

--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs

[*] Enable extra checks in new queueing code

[*] Probe all LUNs on each SCSI device

[*] Verbose SCSI error reporting (kernel size +=12K)

[ ] SCSI logging facility

# 上面那些选项,如果是模组的话,尽量选,其它的,接受预设就好,

# 除非您确切知道。

SCSI low-level drivers --->

# 这里基本上是关於特定 SCSI 控制卡的型号的支援,

NCR53C8XX SCSI support

SYM53C8XX SCSI support

(4) default tagged command queue depth

(32) maximum number of queued commands

(20) synchronous transfers frequency in MHz

Tekram DC390(T) and Am53/79C974 SCSI support

# 不过,因为实在太多了,不全部列出来了。

# 不过,原则还是一样:能模组就模组,

# 不能模组的就确定的才选择

# 像我这里,我确定 SCSI 控制卡是 Symbios 的 53C810 ,

# 这也是预设的,但我尝试用 initrd (RAM DISK) 方式来启动,

# 所以改为模组。

PCMCIA SCSI adapter support --->

# 如果前面的 generic 中没选 PCMCIA ,那这里就没有了。

[ ] PCMCIA SCSI adapter support

# 除非您确定有使用这些设备,否则可以不理。

Fusion MPT device support --->

< > Fusion MPT (base + ScsiHost) drivers

# 这个我不知道是什麽,也就不理了。

I2O device support --->

< > I2O support

# 如果您确定您有 I2O 设备,可以选择。我没有,所以没选。

Network device support --->

# 到这里可不能不选了,要不我们怎麽上网啊?

[*] Network device support

ARCnet devices --->

< > ARCnet support

# 如果您没有 ARCnet 的界面,可以不理。

Appletalk devices --->

[ ] Appletalk interfaces support (NEW)

# 如果您没有 Appletalk 界面,可以不理。

<*> Dummy net driver support

# 这个我建议您编为内建,许多网路功能都会用到。

Bonding driver support

# 如果您想用多张网路卡合并频宽,模拟 Etherchannel

# 和 Trunking 功能,那就选择。

# 主意哦,支援此功能的 switch 很贵哦!

EQL (serial line load balancing) support

# 咦?可以合并多条 PPP 或 SLIP 频宽?真的假的?

# 不妨试试看~~~

Universal TUN/TAP device driver support

# 如果您没有 tunX 或 tapX 设备,可以不设,

# 但,反正是模组嘛~~~

General Instruments Surfboard 1000

# 如果您有 SURFboard 1000 插卡式 Cable Medem ,

# 不妨试试。

Ethernet (10 or 100Mbit) --->

# 这可是重点哦,不能不看:

[*] Ethernet (10 or 100Mbit)

[ ] ARM EBSA110 AM79C961A support

< > Sun Happy Meal 10/100baseT support

< > Sun GEM support

[*] 3COM cards

# 假如您已经有或打算买 3Com 的网路卡,就打开这里吧。

3c501 "EtherLink" support (NEW)

3c503 "EtherLink II" support (NEW)

3c505 "EtherLink Plus" support (NEW)

3c509/3c529 (MCA)/3c579 "EtherLink III" support (NEW)

3c515 ISA "Fast EtherLink" (NEW)

3c590/3c900 series (592/595/597) "Vortex/Boomerang"

support (NEW)

# 不管,全部编成模组,说不定某天也有那麽好的福气用哦。

< > AMD LANCE and PCnet (AT1500 and NE2100) support

[*] Western Digital/SMC cards

# 也难保证某天不会用到 Digital 的网路卡,反正模组嘛:

WD80*3 support (NEW)

SMC Ultra support (NEW)

SMC 9194 support (NEW)

[ ] Racal-Interlan (Micom) NI cards

DEPCA, DE10x, DE200, DE201, DE202, DE422 support

[*] Other ISA cards

# 如果您手上还有 ISA 的旧网路卡,不要浪费哦。

Cabletron E21xx support (NEW)

EtherWORKS 3 (DE203, DE204, DE205) support (NEW)

EtherExpress 16 support (NEW)

EtherExpressPro support/EtherExpress 10 (i82595)

support (NEW)

HP PCLAN+ (27247B and 27252A) support (NEW)

HP PCLAN (27245 and other 27xxx series) support (NEW)

ICL EtherTeam 16i/32 support (NEW)

NE2000/NE1000 support (NEW)

# 许多 ISA 网路卡,都支援 NE2000 的模组,

# 其它不选也要选这个。

[*] EISA, VLB, PCI and on board controllers

# 相信您的网路卡不会是非 PCI 的吧?

AMD PCnet32 PCI support

Apricot Xen-II on board Ethernet

CS89x0 support

DECchip Tulip (dc21x4x) PCI support

# 您应该会看过 DEC 的网路卡吧?

[*] Use PCI shared mem for NIC registers

Generic DECchip & DIGITAL EtherWORKS PCI/EISA

Digi Intl. RightSwitch SE-X support

Davicom DM910x/DM980x support

EtherExpressPro/100 support

# 居然核心内定就有 Intel 的这张卡!

# 太不公平了,改成模组,否则心里不平衡 ^_^

Myson MTD-8xx PCI Ethernet support

National Semiconductor DP8381x series PCI Ethernet support

PCI NE2000 and clones support (see help)

# 嗯,还有 PCI 的 NE2000 呢,

# 如果您的网路卡怎麽都找不到模组,不妨碰碰这个运气。

RealTek RTL-8139 PCI Fast Ethernet Adapter support

# 呵~~ 俗称‘便宜大碗’的螃蟹卡,就是使用这个模组的啦 ^_^

[ ] Use PIO instead of MMIO

[ ] Support for older RTL-8129/8130 boards

# 如果您不确定您可以使用这两个选择,那就不要选择,

# 否则可能会开不了机!

SiS 900/7016 PCI Fast Ethernet Adapter support

SMC EtherPower II

Sundance Alta support

TI ThunderLAN support

VIA Rhine support

# 唉~~ 那张恶名远拨的 DL-530TX 网路卡,

# 有时候可以用这个模组哦。

# 後面我专门介绍如何装这张恶卡!

Winbond W89c840 Ethernet support

# 嗯,Winbond 的和螃蟹卡一样好装!

[ ] Pocket and portable adapters

# 如果您有口袋型网路卡(非 PCMCIA),可以选择其下的模组看看。

Ethernet (1000 Mbit) --->

# 您什麽时候那麽好命啊?竟然连 Giga-bit 的网路都享受得到:

Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support

[ ] Omit support for old Tigon I based AceNICs

D-Link DL2000-based Gigabit Ethernet support

Packet Engines Hamachi GNIC-II support

SysKonnect SK-98xx support

[ ] FDDI driver support

# 目前来说,我是铁定没运气用 FDDI 的了~~~

PLIP (parallel port) support

<*> PPP (point-to-point protocol) support

# 如果用 MODEM 拨接上网的话,这个一定要!

# 虽说这个也可以篇成模组,不过,目前还离不开 PPP,

# 尤其用拨接式 ADSL(PPPoE) ,不妨直接编进核心里面,

# 除非您觉得这个会影响到核心的体积。

[*] PPP filtering (NEW)

# 看起来是不错的功能哦,试试看?可惜不能编成模组。

PPP support for async serial ports (NEW)

PPP support for sync tty ports (NEW)

PPP Deflate compression (NEW)

PPP BSD-Compress compression (NEW)

SLIP (serial line) support

# 虽说,要手工编写 SLIP 拨接 script 的时代已经很久远了,

# 不过,很多程式都会用到哦,例如 vpnd ,还有 ippfvsadm,有备无患。

[*] CSLIP compressed headers (NEW)

# 如果双方都支援 SLIP 压缩技术,用这个可以提高传送量哦。

[*] Keepalive and linefill (NEW)

# 除非线路品质太差,否则不用计较。

[ ] Six bit SLIP encapsulation (NEW)

# 这个也太古老了吧?不确定的话,不必理会。

Wireless LAN (non-hamradio) --->

# 咦?无线网路耶~~ 这麽好的玩意,怎能不试呢?

# 不过,我短期内是用不到的了,真有那麽好福气,

# 也愿意回来编核心啦 ^_^

# 所以,下面仅作范例参考:

[*] Wireless LAN (non-hamradio)

STRIP (Metricom starmode radio IP) (NEW)

AT&T WaveLAN & DEC RoamAbout DS support (NEW)

Aironet Arlan 655 & IC2200 DS support (NEW)

Aironet 4500/4800 series adapters (NEW)

Aironet 4500/4800 ISA/PCI/PNP/365 support

[*] Aironet 4500/4800 PNP support (NEW)

[*] Aironet 4500/4800 PCI support (NEW)

Aironet 4500/4800 PROC interface

Cisco/Aironet 34X/35X/4500/4800 ISA and PCI

cards (NEW)

--- Wireless Pcmcia cards support

Hermes support (Orinoco/WavelanIEEE/PrismII/

Symbol 802.11b

cards) (NEW)

Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards (NEW)

# 上面有几个一定要内建,如果计较的话,应该不选。

Token Ring devices --->

[ ] Token Ring driver support

# 这玩意,看来我也没什麽机会玩的了~~

[*] Fibre Channel driver support

Interphase 5526 Tachyon chipset based adapter support (NEW)

# 搞不好您还真的这麽有福气,用得到 FC 哦。

# 不过,我目前看来应该没此机会的了。

# 上两项也只作范例参考,实际上我并没安装。

Wan interfaces --->

[*] Wan interfaces support

# 知道一个 router 有多贵吗?

# 居然小小的 Linux 也能玩 WAN?真的假的?

# 这项我没选,下面仅作例子:

Comtrol Hostess SV-11 support (NEW)

COSA/SRP sync serial boards support (NEW)

MultiGate (COMX) synchronous serial boards support (NEW)

Support for COMX/CMX/HiCOMX boards (NEW)

Support for LoCOMX board (NEW)

Support for MixCOM board (NEW)

Support for HDLC and syncPPP protocols on MultiGate

boards (NEW)

Support for Frame Relay on MultiGate boards (NEW)

Etinc PCISYNC serial board support (EXPERIMENTAL) (NEW)

FarSync T-Series X.21 (and V.35/V.24) cards (NEW)

LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards (NEW)

Sealevel Systems 4021 support (NEW)

SyncLink HDLC/SYNCPPP support (NEW)

Generic HDLC driver (NEW)

[*] Synchronous Point-to-Point Protocol (PPP) support (NEW)

免费预约试听课