Linux Kernel HOWTO 中译版--3.如何真正进行核心的配置?

Linux Kernel HOWTO 中译版


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

2004-02-14 Brian Ward 译者: C.W.Huang & Asd L. Chen http://www.math.psu.edu/ward/

 
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 xpvflinux-x.y.z.tar').你将会看到原始程序的内容飞逝而过.当它完成以后,在 /usr/src 将会出现一个新的 `linux'子目录. cd 到 linux 目录下然后查看 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' 指令来改变其中的选项.
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值