Next Previous Contents

3. 如何真正进行核心的配置?

3.1 取得源程序

你可以经由匿名 ftp 站从 ftp.funet.fi /pub/Linux/PEOPLE/Linus, 或是其它 MIRROR 站取得 ([译注] 台湾可从 ftp.edu.tw 取得 ) 文档名称一般是以标记成 linux-x.y.z.tar.gz 为代表,其中的 x.y.z 是版本编号  较新的(更好的?)版本以及修补档一般是放在类似 `v1.1' 以及 `v1.2' 这样的子目录下  数字最大的是最新的版本,而且通常是``测试版'',也就是说如果你对 beta 或 alpha 版感到不安的话,你应该停留在主要的发行版本上 

强烈建议你去找 mirror 的 ftp 节点,而不要直接到 ftp.funet.fi 去! 底下是一些 mirrors 以及其他节点的简要列表:

USA:         sunsite.unc.edu:/pub/Linux/kernel
USA:         tsx-11.mit.edu:/pub/linux/sources/system
UK:          sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
Austria:     ftp.univie.ac.at:/systems/linux/sunsite/kernel
Germany:     ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
Germany:     sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
France:      ftp.ibp.fr:/pub/linux/sources/system/patches
Australia:   sunsite.anu.edu.au:/pub/linux/kernel

一般来说,sunsite.unc.edu 的 mirror 站是很好找的  文档 /pub/Linux/MIRRORS 包含了已知的 mirror 节点  如果你没有办法上 ftp ,有个存放 linux 的 BBS 系统列表会定期刊登在 comp.os.linux.announce 上,试著到那边去找一下 

如果你想寻找一般的 Linux 信息与套件,去 http://www.linux.org/ 

3.2 解开源程序的包装

确定你是以`root'的身份签入,然后 cd/usr/src  如果你安装 Linux 时已经安装了核心源程序,在这个目录底下应该已经存在一个叫做 `linux' 的子目录  这是旧版的 linux 源程序 如果你还有磁盘空间而且想要玩得安全一点,那么你会想要保留这个子目录的  有个好主意是根据你目前使用的核心版本来修改这个子目录的名称  `uname -r' 这个指令将会告诉你目前的核心版本  所以,如果 `uname -r' 显示 `1.0.9',你就可以把 `linux' 改名(用 `mv')为 `linux-1.0.9'  如果你是个鲁莽型的人,那就直接把这个子目录清除掉  无论是哪一种情况,反正只要确定在解开全部的源程序之前,/usr/src 目录下没有 `linux' 这个子目录就对了 

/usr/src 目录下,用 `tar zxpvf linux-x.y.z.tar.gz' 来解开源程序的包装 (如果你拿到的是 .tar 的文档,后面没有加上 .gz,那就用 `tar xpvf linux-x.y.z.tar')  你将会看到原始程序的内容飞逝而过 当它完成以后,在 /usr/src 将会出现一个新的 `linux' 子目录  cdlinux 目录下然后查看 README 档, 里面应该会有一段标题为 `INSTALLING the kernel' 或类似的文字  如果适当的话,先依照说明里的指示 ─ 建立该有的符号链结,移除过时的 .o 文档等等等诸如此类的工作 

3.3 配置核心

注意:这部份内容有些是重覆 Linus 的 README 文档中的相应章节或加以修订 

/usr/src/linux 下执行 `make config' 这个命令将会启始一个指令稿, 而这个指令稿会问你各种问题 它需要 bash ,所以要确定 bash 是 /bin/bash/bin/sh$BASH 

还有其它种 `make config' 的方式你可能会觉得更容易使用  对哪些执行 X Window 的人你如果有装 Tk 的话可以试著用 `make xconfig'  `make menuconfig' 是给哪些有装 (n)curses 而且喜欢文字模式选单的人用的  这些界面有个明显的好处: 如果在配置过程中你不小心犯了错,可以简单地回去修正 

你现在该准备好回答这些问题,通常用 `y' 或 `n' 就可以了  设备驱动程序通常会有一个 `m' 选项  这表示``模块(module)'',表示说系统将会编译它,但不会直接放进核心里,而是做为一可载入模块  一个有趣的说法是表示``maybe'' 有一些很明显或是不重要的选项将不会在此加以说明  请见`` 其它配置选项''一节对其中的简短说明 

在 2.0.x 或以后的版本中有一个 `?' 选项,提供了这个配置参数的简短描述  这些信息应该都是最新的 

Kernel math emulation (核心的数学运算模拟)

如果你没有数学辅助运算处理机(你只有一台单纯的 386 或 486SX),那么你在 这里要回答 `y' 如果你已经有数学辅助运算处理机却还回答 `y', 那也不必太担心 ─ linux 还是会去使用它而忽略掉核心的模拟程序  唯一的影响是编译出来的核心变大了(用掉更多的内存)  我听说数学运简模拟很慢; 虽然和本节无太大关系,还是应该注意这对 X Window 系统的效率会有很大影响 

Normal (MFM/RLL) disk and IDE disk/cdrom support (标准硬盘支持)

你在这里差不多都得回答 `y' 它代表的意思是核心将会支持标准的 PC 硬盘, 例如大多数人使用的 IDE 界面硬盘 这不包括 SCSI 设备的支持; 这将在后面设定 

然后你会被问到关于 ``old disk-only'' 与 ``new IDE'' 驱动程序的事  你应该两者选一; 主要的差别是旧的驱动程序只支持单一界面两部磁盘机, 而新的驱动程序支持第二界面及 IDE/ATAPI 光驱 新的驱动程序比旧的大约多 4K, 而且应该是``改良的'',也就是说除了可能包含些许错误之外,它应该会改善你的磁盘效率,特别是如果你有较新的 EIDE 硬件的话 

Networking support (网路支持)

原则上,如果你有连接网路,譬如说,你有 Internet 连线,或是你将使用 SLIP,PPP,term 或其它方式拨接到 Internet 上的话,回答 `y'  然而,某些软件套件(例如 X Window 系统)需要网路支持,即使你的机器并不真正连接到网路上 这情形你也应该回答 `y'  然后,你会被问到是否需要支持 TCP/IP 网路,如果你不十分确定,就回答 `y' 

Limit memory to low 16MB (制内存在 16 MB)

可能会有一些不良的 386 DMA 控制器无法正确地定址到 16 MB 以上的内存位址; 如果你的机器刚好有这种(罕见)情况时,那么你也就只好回答? y ?了 

System V IPC

一个 IPC (行程内通讯,Interprocess Communication) 的定义就在 Perl 书中的注解  这并不大奇怪,一些 Perl 程序设计者用它来让行程之间互相沟通,就像许多其它套件(最著名如 DOOM)一样  因此除非你完全了解你在做什么,不然最好别回答 n 

Processor type (386, 486, Pentium, PPro) (微处理机种类)

(在较旧版本的核心中为: Use -m486 flag for 486-specific optimizations,使用 -m486 旗标针对 486 做最佳化)

按照惯例地,这是对一特别的微处理机做某种最佳化; 核心仍可在其它蕊片上跑得很好,但可能会比较大些  不过,在较新版本的核心上,已经不是这个样子了 因此你应该正确地回答你要编译的微处理机种类  ``386'' 的核心可以在所有的机器上工作 

SCSI support (SCSI 的支持)

如果你有 SCSI 设备,那么就回答 `y'  接著会有提示要求更进一步的信息,像是你是否要支持光驱,磁盘机,还有你使用的是那一种 SCSI 界面卡  这部份请参阅 SCSI-HOWTO,有更详细的说明 

Network device support (网路设备支持)

如果你有网路卡,或者你想要使用 SLIP,PPP,或是并列埠界面卡,那就回答 `y'  接著会有提示问你使用的是那一种网路卡,或要使用那一种通讯协定 

Filesystems (文档系统)

这将会有提示要你回答所要支持的文档系统种类,计有:

Standard (minix) ─ 新的套件不再建立 minix 文档系统,而且很多人不使用它,但是把它配置在核心里仍然是个好主意  某些``急救磁片''程序会用到它,而且仍然有许多软盘磁片可能用 minix 文档系统,因为 minix 文档系统对于处理软盘片方面较无问题 

Extended fs ─ 这是扩充文档系统的第一版,现在已经不再使用 使用的时机是,如果你有需要,你就会知道的 如果你觉得怀疑,你就不需要它 

Second extended ─ 这是现在新发行的套件所广泛采用的文档系统,你可能会有其中一种,所以必须回答 `y' 

xiafs filesystem ─ 这个文档系统曾经一度很普遍,但是在写这份文件时,我已经不知道有任何人在使用它了 

msdos ─ 如果你想要在 linux 下使用你硬盘中的 MS-DOS 分割区,或是想将用 MS-DOS 格式化的软盘片挂进来的话,回答 `y' 

ums-dos ─ 这种文档系统能使 MS-DOS 文档系统拥有更多像 Unix 的特性,像是长档名等等 这对哪些不使用 MS-DOS 的人(像我)并不是很有用 

/proc ─ 另一种神奇的东西(我猜这个概念是无耻地从贝尔实验室里偷过来的)  它不是你硬盘分割区里的任何东西,而是核心与程序之间的文档系统界面 许多程序工具(像 `ps')都会用到它  有时可以试著用 `cat /proc/meminfo' 或 `cat /proc/devices'  某些 shell (特别像是 rc) 使用了 /proc/self/fd (在其它系统里叫做 /dev/fd) 来做输出输入动作  你几乎应该回答 `y'; 许多重要的 Linux 工具都依赖它来运作的 

NFS ─ 如果你在网路环境下而且想要由 NFS 来使用其它机器的文档系统,回答 `y' 

ISO9660 ─ 绝大部分的光碟片都使用这个文档系统 如果你有光驱而且想在 Linux 下使用,回答 `y' 

OS/2 HPFS ─ 在编写这份文件的时候,这个文档系统还只支持到 OS/2 HPFS 的读取 

System V and Coherent ─ 这是为 System V 以及 Coherent 系统的分割区而设的(它们是另一种在 PC 上的 Unix 系统) 

但是我不知道我需要哪些文档系统!

好吧,键入 `mount' 它看起来会像这样:

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

仔细看看每一行;在 `type' 后面的那个字就是文档系统的格式  在这个例子中,我的 //usr 分割区是 second extended 格式, 我使用了 /proc ,而且挂有一张以 msdos (bleah) 为文档系统格式的磁片 

如果你有使用 /proc,可以试试 `cat /proc/filesystems'  它会给你一份目前使用的核心所支持的文档系统列表 

这配置并不常使用 不重要的文档系统会使核心显得臃肿; 参见可载入模块一节的说明以避免此情况,以及`` 陷阱''一节说明为何臃肿的核心不好 

Character devices (字元设备)

在这里,你将会发现许多设备名称,用来设定你的印表机,汇流排鼠标,PS/2 鼠标(大部分笔记型电脑使用内建的 PS/2 鼠标), 以及一些磁带机驱动程序,以及其它的``字元''设备 当有合适的选项时,回答 `y' 

注意:Selection 这个程序使你可以在 X window 之外使用鼠标在各个虚拟控制台间做剪贴的动作  如果你有串列鼠标的话,这真的很棒,因为它与 X window 之间的沟通良好, 不过如果你用其它种类的鼠标就需要点技巧了 Selection 曾经一度是选择的配置配项,不过现在已经是标准了 

注意二: Selection 现在已经过时了 现在新的程序名叫 ``gpm''  它能做更神奇的事,像是转换鼠标协定,处理多重鼠标等……

Sound card (声卡)

如果你想听到 biff 程序大叫的话,回答 `y'  然后等一下会编译另一个配置程序并详细询问你所有关于声卡的问题  (注意: 当它问你是否安装完整版本的驱动程序时,你可以回答 `n' 以减少你核心内存并只选用你真正需要的 ) 如果你有声卡我强烈建议看一下 Sound-HOWTO 以知道更多的细节 

其它配置选项

没有将所有的选项都列出来,因为有些经常改变,或是相当自明的(例如 3Com 3C509 support 就是编译这种特别乙太网路卡的驱动程序), 有一个十分容易理解的所有选项列表(包括将它们放到 Configure 指令稿的方法)可在这个 URL 找到(由 Axel Boldt axel@uni-paderborn.de 所收集):

http://math-www.uni-paderborn.de/~axel/config_help.html
或经由匿名 FTP 站:
ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz
其中 x.yz 是版本号码 

其后来的核心中(2.0.x 及其后的),这已被整合到源程序中 

Kernel hacking

>这是从 Linus 的 README 里摘录的:

``kernel hacking'' 配置的细节通常会产生一个更大或是更慢的核心(或者是又大又慢), 而且可能因为将一些常式配置成很活跃地去尝试中断一些不良的程序码以便找出核心里的问题( kmalloc() ), 而使得核心变得比较不稳定 所以要产生一个核心``产品''的话,你在这里应该回答 `n' 

3.4 现在呢? (The Makefile)

在你完成 make config 之后,应该会有一个信息告诉你核心已经配置好了, 以及要你去``check the top-level Makefile for additional configuration'' 等等信息 

所以查看一下 Makefile 你应该不必改变它,但是看看无妨  一旦新核心完成,你也可以用 `rdev' 指令来改变其中的选项 


Next Previous Contents