linux内核的编译
linux内核的编译,linux内核的编译
1.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 上,试著到那边去找点帮助。
1.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 档案等等等诸如此类的工作。
1.3. 配置核心
注意:这部份内容有些是重覆 Linus 的 README 档案中的相应章节或加以修订。
在 /usr/src/linux 下执行″ make config ″ 这个命令将会启始一个指令稿,而这个
指令稿会问你各种问题。它需要 bash ,所以要确定 bash 是 /bin/bash,/bin/sh 或
$BASH 。
你现在该准备好回答这些问题,通常用″ y ″或″ n ″就可以了。有一些很明显或是
不重要的选项将不会在此加以说明。
1.3.1. Kernel math emulation (核心的浮点运算模拟)
如果你没有数学辅助运算处理机(ie,你只有一台单纯的 386 或 486SX ),那麽你在
这里要回答″ y ″。如果你已经有数学辅助运算处理机却还回答″ y ″,那也不必太
担心 — linux 还是会去使用它而忽略掉核心的模拟程序。唯一的影响是编译出来的核
心变大了。
1.3.2. Normal harddisk support (标准硬碟支援)
你在这里差不多都得回答″ y ″。它代表的意思是核心将会支援标准的 PC 磁碟,例
如大多数人使用的 IDE 界面硬碟。这不包括 SCSI 设备的支援。
1.3.3. Networking support (网络支援)
如