好了,当我们已经可以基本操控这台 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 进行选择。
# 上面这些因为是模组的关系,所以才选。
(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 --->
# 如果您有使用平行埠,如接印表机,那就选吧。
[ ] 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
--- Parallel IDE high-level drivers
--- Parallel IDE protocol modules
<*> Loopback 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)
# 您想在 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 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 的伺服器,就不要选了。
# 可以用来架设 VPN 哦,反正又是模组,干嘛不选?
[*] 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 --->
# 不是一大票人要玩封包过滤吗?可别忘了打开这里哦:
< > ipfwadm (2.0-style) support (NEW)
# 简而言之,除非您确定不用,
# 这里的东西全部都可以编为模组就是了。---
[*] IPX: Full internal IPX network (NEW)
# 要和 Novell 机器连接吗?前两项要选择哦。
# 还想和 mac 电脑连接?那也不能不选哦。
< > DECnet Support
# 如果您了解 802.1d 协定,
# 同时想用 Linux 当 Bridge,那就选吧。
QoS and/or fair queueing --->
# 想玩流量控管,这里的可不要忘了打开:
[*] QoS and/or fair queueing
[*] QoS support (NEW)
[*] Rate estimator (NEW)
[*] Packet classifier API (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
<*> Include IDE/ATAPI CDROM 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。
# 相反,如果您的卡太旧,或许调低一点。
[ ] Enable vendor-specific extensions (for SCSI CDROM) (NEW)
# 请看 help ,以确定您是否使用到其中提到的型号,否则不要设。
(2) Maximum number of CDROM devices that can be loaded as
modules (NEW)
--- 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 控制卡的型号的支援,
(4) default tagged command queue depth
(32) maximum number of queued commands
(20) synchronous transfers frequency in MHz
# 不过,因为实在太多了,不全部列出来了。
# 不过,原则还是一样:能模组就模组,
# 不能模组的就确定的才选择
# 像我这里,我确定 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
# 这个我建议您编为内建,许多网路功能都会用到。
# 如果您想用多张网路卡合并频宽,模拟 Etherchannel
# 和 Trunking 功能,那就选择。
# 主意哦,支援此功能的 switch 很贵哦!
# 咦?可以合并多条 PPP 或 SLIP 频宽?真的假的?
# 不妨试试看~~~
# 如果您没有 tunX 或 tapX 设备,可以不设,
# 但,反正是模组嘛~~~
# 如果您有 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 的网路卡,就打开这里吧。
support (NEW)
# 不管,全部编成模组,说不定某天也有那麽好的福气用哦。
< > AMD LANCE and PCnet (AT1500 and NE2100) support
[*] Western Digital/SMC cards
# 也难保证某天不会用到 Digital 的网路卡,反正模组嘛:
[ ] Racal-Interlan (Micom) NI cards
[*] Other ISA cards
# 如果您手上还有 ISA 的旧网路卡,不要浪费哦。
support (NEW)
# 许多 ISA 网路卡,都支援 NE2000 的模组,
# 其它不选也要选这个。
[*] EISA, VLB, PCI and on board controllers
# 相信您的网路卡不会是非 PCI 的吧?
# 您应该会看过 DEC 的网路卡吧?
[*] Use PCI shared mem for NIC registers
# 居然核心内定就有 Intel 的这张卡!
# 太不公平了,改成模组,否则心里不平衡 ^_^
# 嗯,还有 PCI 的 NE2000 呢,
# 如果您的网路卡怎麽都找不到模组,不妨碰碰这个运气。
# 呵~~ 俗称‘便宜大碗’的螃蟹卡,就是使用这个模组的啦 ^_^
[ ] Use PIO instead of MMIO
[ ] Support for older RTL-8129/8130 boards
# 如果您不确定您可以使用这两个选择,那就不要选择,
# 否则可能会开不了机!
# 唉~~ 那张恶名远拨的 DL-530TX 网路卡,
# 有时候可以用这个模组哦。
# 後面我专门介绍如何装这张恶卡!
# 嗯,Winbond 的和螃蟹卡一样好装!
[ ] Pocket and portable adapters
# 如果您有口袋型网路卡(非 PCMCIA),可以选择其下的模组看看。
Ethernet (1000 Mbit) --->
# 您什麽时候那麽好命啊?竟然连 Giga-bit 的网路都享受得到:
[ ] Omit support for old Tigon I based AceNICs
[ ] FDDI driver support
# 目前来说,我是铁定没运气用 FDDI 的了~~~
<*> PPP (point-to-point protocol) support
# 如果用 MODEM 拨接上网的话,这个一定要!
# 虽说这个也可以篇成模组,不过,目前还离不开 PPP,
# 尤其用拨接式 ADSL(PPPoE) ,不妨直接编进核心里面,
# 除非您觉得这个会影响到核心的体积。
[*] PPP filtering (NEW)
# 看起来是不错的功能哦,试试看?可惜不能编成模组。
# 虽说,要手工编写 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)
[*] Aironet 4500/4800 PNP support (NEW)
[*] Aironet 4500/4800 PCI support (NEW)
cards (NEW)
--- Wireless Pcmcia cards support
Symbol 802.11b
cards) (NEW)
# 上面有几个一定要内建,如果计较的话,应该不选。
Token Ring devices --->
[ ] Token Ring driver support
# 这玩意,看来我也没什麽机会玩的了~~
[*] Fibre Channel driver support
# 搞不好您还真的这麽有福气,用得到 FC 哦。
# 不过,我目前看来应该没此机会的了。
# 上两项也只作范例参考,实际上我并没安装。
Wan interfaces --->
[*] Wan interfaces support
# 知道一个 router 有多贵吗?
# 居然小小的 Linux 也能玩 WAN?真的假的?
# 这项我没选,下面仅作例子:
boards (NEW)
[*] Synchronous Point-to-Point Protocol (PPP) support (NEW)