📄 1153.html
字号:
<TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff
border=0>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TR>
<TD vAlign=top align=middle width="60%">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
<TBODY>
<TR>
<TD vAlign=top width="80%">
<DIV align=center>
<FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
</FORM>
<TABLE cellSpacing=0 cellPadding=0 width="95%"
border=0><TBODY>
<TR>
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>linux内核的编译</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:Chris Ricker<br>来自:Linux知识宝库<br>联系方式:无名<br><br>1. 要怎麽进行核心的配置? <br>
1.1. 取得原始程序码 <br>
你可以经由 ftp 从 ftp.funet.fi 或是 mirror in /pub/OS/Linux/PEOPLE/Linus 取 <br>
得原始程序码。也可以到这个节点的 mirror 或其他节点去拿。档案名称一般是以标记 <br>
成 linux-x.x.x.tar.gz 为代表,其中的 x.x.x 是版本编号。较新的(更好的?)版 <br>
本以及修补档一般是放在类似”v1.1 ”以及”v1.2”这样的子目录下。 <br>
强烈建议你去找 mirror 的 ftp 节点,而不要直接到 ftp.funet.fi 去!底下是一些 <br>
mirrors 以及其他节点的简要列表 <br>
( ftp.funet.fi 的 mirror 节点:) <br>
Germany: ftp.Germany.EU.net <br>
UK: doc.ic.ac.uk <br>
Australia: kirk.bu.oz.au <br>
( 其它有摆放核心档案的节点:) <br>
USA: tsx-11.mit.edu <br>
USA: sunsite.unc.edu <br>
Germany: ftp.dfv.rwth-aachen.de <br>
如果你没有办法上 ftp ,有个存放 linux 的 BBS 系统列表会定期刊登在 <br>
comp.os.linux.announce 上,试著到那边去找点帮助。 <br>
1.2. 解开原始程序码的包装 <br>
确定你是以″ root ″的身份签入,然後 cd 到 /usr/src 。如果你的 linux 是从其 <br>
它任何可能的地方取得的,在这个目录底下应该已经存在一个叫做” linux ”的子目 <br>
录。这是旧版的 linux 原始程序码。如果你还有磁碟空间而且想要玩得安全一点,那 <br>
麽你会想要保留这个子目录的。有个好主意是根据你目前使用的核心版本来修改这个子 <br>
目录的名称。″ uname -r ″这个指令将会告诉你新的版本。 <br>
所以,如果″ uname -r ″显示″ 1.1.47,″你就可以把″ linux ″改名为 <br>
″ Linux-1.1.47 。″如果你是个鲁莽型的人,那就直接把这个子目录清除掉。无论是 <br>
哪一种情况,反正只要确定在解开全部的原始程序码之前, /usr/src 目录下没有 <br>
”linux ”这个子目录就对了。 <br>
在 /usr/src 目录下,用″zcat linux.x.x.tar.gz | tar xvf- ″来解开原始程序码 <br>
的包装(你也可以用更简单的″ tar zxvf linux.x.x.x.tar.gz″;如果你拿到的是 <br>
..tar 的档案(後面没有加上 gz ),那就用” tar xvf linux.x.x.x.tar ”)。你 <br>
将会看到原始程序的内容飞逝而过。当它完成以後,将会出现一个新的″ linux ”子 <br>
目录。 <br>
″ cd ″到 linux 目录下然後查看 README 档,里面应该会有一段标题为 <br>
″INSTALLING the kernel″ 或类似的文字。如果适当的话,先执行说明里的指示 — <br>
建立该有的符号链结,移除过时的 .o 档案等等等诸如此类的工作。 <br>
1.3. 配置核心 <br>
注意:这部份内容有些是重覆 Linus 的 README 档案中的相应章节或加以修订。 <br>
在 /usr/src/linux 下执行″ make config ″ 这个命令将会启始一个指令稿,而这个 <br>
指令稿会问你各种问题。它需要 bash ,所以要确定 bash 是 /bin/bash,/bin/sh 或 <br>
$BASH 。 <br>
你现在该准备好回答这些问题,通常用″ y ″或″ n ″就可以了。有一些很明显或是 <br>
不重要的选项将不会在此加以说明。 <br>
1.3.1. Kernel math emulation (核心的浮点运算模拟) <br>
如果你没有数学辅助运算处理机(ie,你只有一台单纯的 386 或 486SX ),那麽你在 <br>
这里要回答″ y ″。如果你已经有数学辅助运算处理机却还回答″ y ″,那也不必太 <br>
担心 — linux 还是会去使用它而忽略掉核心的模拟程序。唯一的影响是编译出来的核 <br>
心变大了。 <br>
1.3.2. Normal harddisk support (标准硬碟支援) <br>
你在这里差不多都得回答″ y ″。它代表的意思是核心将会支援标准的 PC 磁碟,例 <br>
如大多数人使用的 IDE 界面硬碟。这不包括 SCSI 设备的支援。 <br>
1.3.3. Networking support (网络支援) <br>
如果你有连接网络,譬如说,你与 internet 有连线,或是你将使用 SLIP,PPP,term <br>
或其它方式拨接到 internet 上的话,回答″ y 。″ <br>
1.3.4. Limit memory to low 16MB (限制记忆体在 16 MB) <br>
如果你的记忆体不到 16 MB,几乎一定要回答″ y ″;那麽当你使用这个核心的时候 <br>
将会节省一点记忆体。但是,当然罗,如果你有 16 MB 以上的记忆体而不回答″ n ″ <br>
的话,这个新的核心将只使用其中的 16 MB ,即使你有 34 billion megs 也一样。 <br>
也可能会有一些不良的 386 DMA controllers(或是一些与硬件有关的东西)无法正确 <br>
地定址到 16 megs 以上的记忆体位址;你的机器刚好有这种情况时(罕见),那麽你 <br>
也就只好回答″ y ″了。 <br>
1.3.5. Use -m486 flag for 486-specific optimizations <br>
(使用 -m486 旗标指定对 486 做最佳化) <br>
这将会为核心做 486 最佳化处理。新的核心将会变得稍微大一些,如果你担心的话的 <br>
话,其实它还是可以在 386 上执行。只是会比较慢,不过你感觉不出来的。 <br>
1.3.6. SCSI support (SCSI 的支援) <br>
如果你有 SCSI 设备,那麽就回答” y 。”接著会有提示要求更进一步的资讯,像是 <br>
你是否要支援光碟机,磁碟机,还有你使用的是那一种 SCSI 介面卡。这部份请参阅 <br>
SCSI-HOWTO ,有更详细的说明。 <br>
1.3.7. Network device support (网络设备支援) <br>
如果你有以太网络卡,或者你想要使用 SLIP,PPP,或是并列埠界面卡,那就回答 <br>
″ y ″,接著会有提示问你使用的是那一种网络卡,或要使用那一种串列通讯协定。 <br>
1.3.8. Filesystems (文件系统) <br>
这将会有提示要你回答所要支援的文件系统种类,计有: <br>
Standard( minix )— 新的套件不再建立 minix 文件系统,而且很多人不使用它, <br>
但是把它配置在核心里仍然是个好主意。某些″ rescue-disk ″ 程序会用到它,而且 <br>
仍然有许多磁片可能用 minix 文件系统,因为 minix 文件系统对於处理磁片方面是最 <br>
好的。 <br>
Extended fs — 这是扩充文件系统的第一版,现在已经不再使用。使用的时机是,如 <br>
果你有需要,你就会知道的。 <br>
Second extented — 这是现在新发行的套件所广泛采用的文件系统,你可能会有其中 <br>
一种。 <br>
xiafs filesystem — 这个文件系统曾经一度很普遍,但是在写这份文件时,我已经不 <br>
知道有任何人在使用它了。 <br>
msdos — 嗯,你猜对了;如果你想要在 linux 下使用你硬碟中的 MS-DOS 分割区,或 <br>
是想将用 MS-DOS 格式化的磁片挂进来的话,回答″ y ″。 <br>
ums-dos — 这是一个相当 slick 的文件系统,它能使 MS-DOS 文件系统拥有更多的特 <br>
性,像是长档名等等。这对那些不使用 MS-DOS 的人(像我)并不是很有用。 <br>
/proc — 这是最 slick 的文件系统之一(我猜这个概念是无耻地从贝尔实验室里偷过 <br>
来的)。它不是你硬碟分割区里的任何东西,而是核心与程序之间的文件系统介面。许 <br>
多程序工具(像″ ps ″)都会用到它。 <br>
如果你已经将它安装好了,有空不妨试试看″ cat /proc/meminfo ″或者是 <br>
″ cat /proc/devices ″。有些 shells ,像是 rc ,会用 /proc/self/fd(在其它 <br>
系统上为 /dev/fd )来处理输出入。几乎可以确定你在这里得要回答″ y ″,有许多 <br>
重要的 Linux 标准工具是靠它来运作的。 <br>
NFS — 如果你在网络环境下而且想要分享档案,回答″ y 。″ <br>
ISO9660 — 绝大部分的光碟都使用这个文件系统。 <br>
OS/2 HPFS — 在编写这份文件的时候,这个文件系统还只支援到 OS/2 HPFS 的读取。 <br>
System V and Coherent — 这是为 System V 以及 Coherent 的分割区而设的。 <br>
1.3.8.1. 但是我不知道我需要那些文件系统! <br>
好吧,键入″ mount 。″它看起来会像这样: <br>
blah% mount <br>
/dev/hda1 on / type ext2 (defaults) <br>
/dev/hda3 on /usr type ext2 (defaults) <br>
none on /proc type proc (defaults) <br>
/dev/fd0 on /mnt type msdos (defaults) <br>
仔细看看每一行;在” type ”後面的那个字就是文件系统的格式。在这个例子中,我 <br>
的 / 和 /usr 分割区是 second extended 格式,我有使用 /proc ,而且挂有一张以 <br>
msdos (bleah) 为文件系统格式的磁片。 <br>
如果你有使用 /proc ,可以试试″ cat /proc/filesystems ″。它会给你一份目前使 <br>
用的核心所支援的文件系统列表。 <br>
1.3.9. Character devices (字元设备) <br>
在这里,你将会发现许多设备名称,用来设定你的印表机,汇流排滑鼠,PS/2 滑鼠( <br>
大部分笔记型电脑使用内建的 PS/2 滑鼠),以及一些磁带机驱动程序,selection 。 <br>
当有合适的选项时,回答” y ”。 <br>
注意:” Selection ”让你能够执行一个程序,这个程序使你可以在 X-windows 之外 <br>
使用滑鼠在各个虚拟控制台间做剪贴的动作。如果你有串列滑鼠的话,这真的很棒,因 <br>
为它与 X-windows 之间的沟通良好,然而在编写这份文件的时候,它跟 PS/2 滑鼠还 <br>
是处不来(它会锁住滑鼠所使用的埠,使得你在杀掉这个 selection 程序之前都不可 <br>
能执行 X-windows 。)。 <br>
1.3.10. Sound card (声卡) <br>
如果你对於让隔壁的人保持清醒有兴趣的话,回答″ y ,″然後等一下会有一个配置 <br>
程序编译并详细询问你所有关於你的声卡的问题。 <br>
1.3.11. kernel hacking <br>
>这是从 Linus 的 README 里摘录的: <br>
″ kernel hacking ″配置的细节通常会产生一个更大或是更慢的核心(或者是又大又 <br>
慢),而且可能因为将一些常式配置成很活跃地去尝试中断一些不良的程序码以便找出 <br>
核心里的问题( kmalloc() ),而使得核心变得比较不稳定。所以要产生一个核心″ <br>
产品 ″的话,你在这里应该回答″ n ″。 <br>
1.4. 现在呢?( The Makefile ) <br>
现在应该会有一个讯息告诉你核心已经配置好了,以及要你去″ check the <br>
top-level Makefile for additional configuration,”等等。 <br>
所以查看一下 Makefile。你应该不必改变它,但是看看无妨。一旦新核心完成, <br>
你也可以用″ rdev ″指令来改变其中的选项。 <br>
2. 编译核心 <br>
2.1. 清除与确认 <br>
当用来进行配置的指令稿执行完成时,它会告诉你去做″ dep ″跟″ clean 。”所以 <br>
要执行″ make dep 。″除非你的电脑真的很慢,否则它不会花太久时间的。Making <br>
depend 确定你已经具备所有必需的要件,像是含入档以及诸如此类的东西。当它完成 <br>
後(你也可以在″ make dep ″之前执行它),执行″ make clean 。″这会清除核心 <br>
编译的所有目的档以及其它东西。不要忘记这个步骤。 <br>
2.2. 编译时期 <br>
在执行清除与确认工作之後,你现在可以执行″ make ″或是″ make zdisk 。″ <br>
″ make ″将会编译核心,并且留给你一个叫做″ zImage ″的档案(这一类的东西) <br>
。这就是新的核心。″ make zdisk ″做的事也一样,但是它会把核心放到你所希望的 <br>
磁片去,只要把这张磁片放在 a:。” zdisk ”对於测试新核心很方便;如果它完全 <br>
不行,只要把磁片拿掉再用旧的核心启动即可。 <br>
如果你意外地删除了核心或是什麽的,它也是个方便的启动办法。当你把一台磁碟的内 <br>
容倾倒到另外一台去时,你也可以用它来安装新的系统(除了这些之外还有更多用途! <br>
NOW how much would you pay ?)。 <br>
所有近来的核心都是压缩过的,所以有个” z ″在名字前面。核心是压缩过的,当它 <br>
执行的时候会自动将自己解压缩(一个节省磁碟空间的好方法)。 <br>
2.3. 其他可以″ make ″的东西 <br>
″ make mrproper ″将会做更广泛的″清除″。这个动作有时候是必须的,所以你可 <br>
能会希望在每次修补的时候执行它。″ make zlilo ″将会安装核心,然後对它执行 <br>
LILO ,使你完成所有开机的准备,但是这只有在 lilo 已经以下列这种方式配置好的 <br>
时候才可以:核心为 /vmlinuz , lilo 在 /sbin 下,而且与你的 lilo 配置一致。 <br>
2.4. 安装核心 <br>
在你已经获得一个看起来能够照你希望运作的新核心之後,现在是安装它的时候了。大 <br>
大部份的人使用 LILO( Linux Loader )来做这件事。这是一个相当容易安装的软体 <br>
,然而,它会因为配置档而困扰人们。如果你没有最新的版本,查看配置档(不是旧版 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -