📄 linux.txt
字号:
以下是转自台湾的中文Kernel-Howto
这是一份关於如何配置、编译以及升级核心的详细指引
1. 简介
这是 Kernel-HOWTO 的第 0.2 版,这份文件是否是你所需要的?如果你有下列任何症
状之一的话,是的:
。″哎呀!这套 wizzo-46.5.6 软体说它需要 1.1.193 版的核心,而我却仍然只有
1.0 版!″
。比较新的核心之一□面有你正好需要的一个设备驱动程式。
。你对於如何编译核心真的一无所知。
。″在 README 档案里面的就是全部的资料了吗?″
。你来,你试,它征服你。
。你知道如何编译以及安装核心,而其它人似乎也知道,但是他们还是一直哀求你帮忙
安装他们的核心。
1.1. 假设
这份文件中的某些范例假设你有 GNU tar,find 以及 xargs 。这些是 Linux 套件□
的标准工具。文件中也假设你知道你所用的档案系统架构,如果你并不知道,最好赶快
写下一份 mount 指令在系统正常运作下,所显示的结果作为参考(或者是一份
/etc/fstab 的列表,如果你能够看得懂)。这些资讯很重要,而且,除非你重新分割
或加入新的磁碟,重新安装你的系统以及做诸如此类的操作,否则它们不会变动。
2. 一些经常比其它东西更早出现的问题
2.1. 不管怎麽样,核心到底是做什麽的?
在 Unix 系统中,核心处理许多事情。首先,它为所有执行中的程式(程序)做记忆体
管理,并且确保它们都能够平均(或不平均,可以视情况而定)的分享处理机的运算资
源。此外,它还提供了一个良好的介面让刚刚提到的程式能透过它与你的硬体沟通。
就是这样吗?其实核心所处理的工作比这还要更复杂一些,不过将不会在这里做更进一
步的讨论。
2.2. 我为什麽更新核心?
比较新的核心一般来说会提供更强的能力来与更多种奇奇怪怪的硬体沟通(ie. 它们拥
有更多的设备驱动程式),它们能够有更好的程序管理,它们能够执行的比旧的版本更
有效率,它们可能比旧的版本来的更稳定,而且它们修正了旧版□的一些错误。大部分
的人是因为他们需要那些新的设备驱动程式以及错误修正的部份而更新核心。
2.3. 较新的核心支援那些硬体?
请看 Hardware-HOWTO 文件。另一个方法是,你可以查看 linux 原始程式码中的
″ config.in ″档,或者就在当你试著去″ make config″ 时找出来。″ make
config ″将会让你看到标准的核心原始程式码支援的所有硬体,但这并不是 linux
所支援的全部硬体;许多普遍的设备驱动程式(像是 PCMCIA 驱动程式以及某些磁带机
的驱动程式)是个别维护及发行的可载入模组。
2.4. 我需要那个版本的 gcc 或是 libc ?
Linus 对这个问题的建议放在 linux 原始程式的 README 档案□头。如果你没有该版
本或是更新的版本,新版的 gcc 应该会告诉你是否需要更新 libc 的版本。这两个操
作都不会有什麽问题,只要照著说明做就可以了。
2.5. 什麽是可载入模组?
它们是核心的一部分(通常是设备驱动程式),但是并没有编译到核心里面去。它们被
分别编译,然後几乎可以在任何时候插入运作中的核心或从中取出。这已经成为一种增
加东西到核心里去的较好方式,因为明显地更为模组化。许多常用的设备驱动程式,例
如 PCMCIA 驱动程式以及 QIC-80/40 磁带机的驱动程式就是可载入模组。
2.6. 我需要多大的磁碟空间?
这跟几件事有关。首先,压缩过後的 linux 原始程式码在 1.1.45 版时约占 1.66
megs 。你将会常常想要在手边保留一份。解压缩以後这将占掉约 8 megs 。但这还不
是全部 — 你将会需要更多的磁碟空间来实际编译这些东西。这与你配置多少垃圾到你
的核心里头去有关。例如,在我的 386 上,我有网路,the 3Com 3C503 的驱动程式,
并且配置了 5 种档案系统,而这全部共需要 16.2 megs。
加上压缩过的 linux 原始程式码以後,这个配置大概需要用掉你 18 megs 。在另外
一个系统上,这次不需要支援网路设备(但仍然需要支援网路),加上音效卡,共需要
12 megs 左右。所以,一般来说,如果你有许多种硬体设备的话,确定你有足够的硬碟
空间来容纳这个配置。
2.7. 这需要多久的时间?
对大部份的人而言,答案是″ 很久 ″。你的处理机速度有多快,以及你拥有的记忆体
数量有多少将是决定所需时间的主要因素,但是,在把多少东西配置到核心里头去这方
面还是可以做点努力。在一台有 16 megs 记忆体的 486DX4-100 笔记型电脑上,一个
有 5 种档案系统、支援网路、以及音效卡驱动程式的核心可以在 20 分钟以内完成。
类似的配置,在一台 386DX/40( 8 MB 记忆体)上大约需要要 1.5 个小时。(题外话
:我知道有人用 386SX/16 以及 4 MB 的记忆体来编译他的核心,花了一整个晚上,通
常还会更久,是的,我已经劝他去换一台真正的电脑。)
3. 要怎麽进行核心的配置?
3.1. 取得原始程式码
你可以经由 ftp 从 ftp.funet.fi 或是 mirror in /pub/OS/Linux/PEOPLE/Linus 取
得原始程式码。也可以到这个节点的 mirror 或其他节点去拿。档案名称一般是以标记
成 linux-x.x.x.tar.gz 为代表,其中的 x.x.x 是版本编号。较新的(更好的?)版
本以及修补档一般是放在类似”v1.1 ”以及”v1.2”这样的子目录下。
强烈建议你去找 mirror 的 ftp 节点,而不要直接到 ftp.funet.fi 去!底下是一些
mirrors 以及其他节点的简要列表
( ftp.funet.fi 的 mirror 节点:)
Germany: ftp.Germany.EU.net
UK: doc.ic.ac.uk
Australia: kirk.bu.oz.au
( 其它有摆放核心档案的节点:)
USA: tsx-11.mit.edu
USA: sunsite.unc.edu
Germany: ftp.dfv.rwth-aachen.de
如果你没有办法上 ftp ,有个存放 linux 的 BBS 系统列表会定期刊登在
comp.os.linux.announce 上,试著到那边去找点帮助。
3.2. 解开原始程式码的包装
确定你是以″ root ″的身份签入,然後 cd 到 /usr/src 。如果你的 linux 是从其
它任何可能的地方取得的,在这个目录底下应该已经存在一个叫做” linux ”的子目
录。这是旧版的 linux 原始程式码。如果你还有磁碟空间而且想要玩得安全一点,那
麽你会想要保留这个子目录的。有个好主意是根据你目前使用的核心版本来修改这个子
目录的名称。″ uname -r ″这个指令将会告诉你新的版本。
所以,如果″ uname -r ″显示″ 1.1.47,″你就可以把″ linux ″改名为
″ Linux-1.1.47 。″如果你是个鲁莽型的人,那就直接把这个子目录清除掉。无论是
哪一种情况,反正只要确定在解开全部的原始程式码之前, /usr/src 目录下没有
”linux ”这个子目录就对了。
在 /usr/src 目录下,用″zcat linux.x.x.tar.gz | tar xvf- ″来解开原始程式码
的包装(你也可以用更简单的″ tar zxvf linux.x.x.x.tar.gz″;如果你拿到的是
.tar 的档案(後面没有加上 gz ),那就用” tar xvf linux.x.x.x.tar ”)。你
将会看到原始程式的内容飞逝而过。当它完成以後,将会出现一个新的″ linux ”子
目录。
″ cd ″到 linux 目录下然後查看 README 档,里面应该会有一段标题为
″INSTALLING the kernel″ 或类似的文字。如果适当的话,先执行说明里的指示 —
建立该有的符号链结,移除过时的 .o 档案等等等诸如此类的工作。
3.3. 配置核心
注意:这部份内容有些是重覆 Linus 的 README 档案中的相应章节或加以修订。
在 /usr/src/linux 下执行″ make config ″ 这个命令将会启始一个指令稿,而这个
指令稿会问你各种问题。它需要 bash ,所以要确定 bash 是 /bin/bash,/bin/sh 或
$BASH 。
你现在该准备好回答这些问题,通常用″ y ″或″ n ″就可以了。有一些很明显或是
不重要的选项将不会在此加以说明。
3.3.1. Kernel math emulation (核心的浮点运算模拟)
如果你没有数学辅助运算处理机(ie,你只有一台单纯的 386 或 486SX ),那麽你在
这里要回答″ y ″。如果你已经有数学辅助运算处理机却还回答″ y ″,那也不必太
担心 — linux 还是会去使用它而忽略掉核心的模拟程式。唯一的影响是编译出来的核
心变大了。
3.3.2. Normal harddisk support (标准硬碟支援)
你在这里差不多都得回答″ y ″。它代表的意思是核心将会支援标准的 PC 磁碟,例
如大多数人使用的 IDE 界面硬碟。这不包括 SCSI 设备的支援。
3.3.3. Networking support (网路支援)
如果你有连接网路,譬如说,你与 internet 有连线,或是你将使用 SLIP,PPP,term
或其它方式拨接到 internet 上的话,回答″ y 。″
3.3.4. Limit memory to low 16MB (限制记忆体在 16 MB)
如果你的记忆体不到 16 MB,几乎一定要回答″ y ″;那麽当你使用这个核心的时候
将会节省一点记忆体。但是,当然罗,如果你有 16 MB 以上的记忆体而不回答″ n ″
的话,这个新的核心将只使用其中的 16 MB ,即使你有 34 billion megs 也一样。
也可能会有一些不良的 386 DMA controllers(或是一些与硬体有关的东西)无法正确
地定址到 16 megs 以上的记忆体位址;你的机器刚好有这种情况时(罕见),那麽你
也就只好回答″ y ″了。
3.3.5. Use -m486 flag for 486-specific optimizations
(使用 -m486 旗标指定对 486 做最佳化)
这将会为核心做 486 最佳化处理。新的核心将会变得稍微大一些,如果你担心的话的
话,其实它还是可以在 386 上执行。只是会比较慢,不过你感觉不出来的。
3.3.6. SCSI support (SCSI 的支援)
如果你有 SCSI 设备,那麽就回答” y 。”接著会有提示要求更进一步的资讯,像是
你是否要支援光碟机,磁碟机,还有你使用的是那一种 SCSI 介面卡。这部份请参阅
SCSI-HOWTO ,有更详细的说明。
3.3.7. Network device support (网路设备支援)
如果你有乙太网路卡,或者你想要使用 SLIP,PPP,或是并列埠界面卡,那就回答
″ y ″,接著会有提示问你使用的是那一种网路卡,或要使用那一种串列通讯协定。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -