分享
 
 
 

Linux核心安装

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

Linux对于许多用户的介绍是十分强大的、可配置的操作系统。在过去,一套类似于Unix的操作系统对大多数人来说是不可能实现的。不是该操作系统4位数的标价,而是它的硬件,即使是现在使用个人免费的SCO Unixware它还需要SCSI设备,我们中的许多人为减少花费而使用IDE设备。随着Linux的日益强大有件工作不得不在这简单的操作系统上完成:根据你的硬件和操作配置你的核心。

当前安装的核心是1.2.x或更早的建议更新;不管怎样,用新的2.0.x核心,更新是必要的。核心可以从安装包中取得,如Red Hat、Caldera、Debian 等等,这是一样的(几乎包含一切)核心。当更新核心看起来是一件让人气馁的事时,使用已经安装的核心也不坏,更新对于你的系统来说是好的。

--------------------------------------------------------------------------------

为什么自找麻烦?

标准的核心安装是一种尝试工作(就象许多系统一样),尽可能安装一套可用的Linux系统,就这一点而论,核心很膨胀它包含对于一般机器所不需要的代码。标准安装也可能没有一些用户所需的代码。

当然,当你购置了新的硬件等你就需要升级你的核心了。在同一个系列中升级通常相当直观,当你升级时,比如说从1.2.x到2.0.x,这工作正是本文章的范围,需要有点悟性(哈哈)。最好找一张最新销售的CD开始——这对于更新到试用的2.1.x核心一样实用。

--------------------------------------------------------------------------------

核心的版本号

所有的Linux核心包含由点隔开的三个数字。第一个数是核心的版本。我们现在是第三版(2.),一些人可能使用版本号为1的核心,并且我知道至少还有人在用版本0核心。

第二个号码是核心的主号,主号也是数字(包括0)表示稳定性。这样,这些核心将没有一些BUGS,他们经过相当大量的测试。当某个版本含有一些小BUGS,它们将被升级,以使硬件兼容或加强核心对付黑客。如,核心2.0.30,避开对2.0.29报表BUG的支持,它包含几个补丁包括保护SYN避免服务器受攻击。核心带有零主号是发展中的核心。这些可能未经测试,可能但不经常中断你正运行的软件包,有时候,为了更好的工作,用户需要采用在下一个稳定的核心发表之前的最新的、最好的支持核心。这就向对真理一样没有异议,这对系统有本质上的改变。

最后一个号码是次号它因每一次改动而增加。如果你看到核心版本2.0.8,你知道它是核心2.0,稳定的核心,它已经是第九次发表了(我们从零开始记数)。

--------------------------------------------------------------------------------

假设

我憎恨作任何假设,它们通常令我心痛。所以我需要提到一些事情那样我们不会在同样的遭遇下工作。为了编译一个核心,你需要一些东西,首先,我假设你已经安装了2.0.x核心,所有的基础包也许更多,你还需要安装gcc 2.7和所有支持gcc的库。你还需要libc库和binutils、bin86包(通常是标准销售版安装的一部分)。如果你是下栽的或从CD上拷的,你还需要tar和gunzip包,当然你还需要磁盘空间,建议7MB下栽,20MB解压,更多一些用来编译。

无须多说,我们研究的许多事情需要以root登录。如果以非特权用户下载了核心并且你有/usr/src目录的写权力,你仍能在成为root之前做许多事。对于Linux新手,我非常建议尽可能以非特权用户(type:su -face)使用仅当一些工作必须使用root。总有一天,你将高兴有此习惯。谨记,有二种系统管理员,当以root登录时能不经意的使安装失事,这样谁愿意做呢。

--------------------------------------------------------------------------------

获得/升级源程序

Linxu核心源程序可以从大量的FTP站点和几乎每一张Linux销售CD上得到。新手可到ftp.funet.fi最主要的站点上找Linux核心,你可以从该站点上一系列镜象站点上下栽Linux核心。选择一个最近的站点有助于减少internet整体通信量。

一旦你获得源程序,拷入/usr/src目录。创建一个目录放置你用tar解压的源文件。我建议目录以版本号命名如 linux-2.0.30 或kernel-2.0.30,用以下命令为目录建立一个叫linux连接

ln -sf linux-2.0.30 linux

我在连接命令中使用了-f因为你已经在/usr/src中有了一个核心源连接,(一些版本的ln(如3.13),强制选项(-f)将不起作用,你不得不必须首先解除连接再建立连接。在版本3.16中运行正确)现在你仅仅有一个问题就是如果linux是一个目录,不是连接,如果你有这个问题,你不得不在继续前更改目录的名字:

mv linux linux-2.0.8

现在执行下列命令:

tar xzvf linux-kernel-source.tar.gz

我有一习惯总是在tar参数中包括w(等待确认)。下来让我们看着.tar.gz 或.tgz文件解压到自己的目录,用ctrl-C中断再去掉w继续命令。这样一来我能阻止解压到当前目录。

一旦你解开了核心,这正是你执行修补程序的最佳时机如果你需要的话。假如你不希望运行2.0.30核心,但你希望使用tcp-sy-cookies.把该补丁(tcp-syn-cookies-pathc-1)拷贝到/usr/src目录执行以下命令:

patch < tcp-syn-cookeis-patch-1

该命令实现修补核心。在/usr/src目录中寻找以扩展名为.rej的文件。这些文件严格的说不是修补文件。它们也许并补重要,但需要细心的阅读。如果你安装了Red Hat系统并装了一些并不是全部的核心源程序,(SPARC,PowerPC,etc.),你将看到一些文件,如果这不是你所需要的,哪就行了。

--------------------------------------------------------------------------------

准备工作

给你一个忠告,在我们转到核心源程目录和开始编译前,让我们检查所需的连接,在你的/usr/include子了目录有以下连接:

asm - /usr/src/linux/include/asm

linux - /usr/src/linux/include/linux

scsi - /usr/src/linux/include/scsi

现在,你要知到为什么要标准的文件检索路径。如果你不把最新的核心放入/usr/src/linux(通过连接),上面的连接将不会找到目标文件核心编译将会失败。

--------------------------------------------------------------------------------

怎样进行下一步

一旦万事俱备,转到/usr/src/linux。现在你也许想停下细读一下文档文件,实际上如果你有些特别的硬件,或几种光驱驱动程需要自己动手设置,他们通常这样做,当引导时这些驱动程序将给出警告,这并不碍事他们照常工作少,阅读扩展名为.txt .h .c的文件。通常我发现他们具有共性且易于配置。如果你不想冒险,你没必要做。记住你照样可以解开tar文件(或再次安装.rpm文件)恢复前的文件。

--------------------------------------------------------------------------------

开始编译

我建议首先执行以下命令:

make mrproper

当核心源程序在以前条件下这条命令不是必需的,但这培养一个好习惯。这命令保证旧的文件不在使用。

--------------------------------------------------------------------------------

配置核心

现在,你可以配置核心,首先,你要了解一点关于模块的知识。楔块就像你特意插入核心中的某些东西,如果你家中一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。使用这个模块,机器必运行和存取/libs下的模块,意思是驱动程序(IDE,SCSI等但必须是NFS支持的网卡),文件系统(通常是ext2但也可以是nfs)和核心类型(最好是elf)必须编译在内并且不能是模块,模块只有核心引导时才起作用,驱动程序(来网络)的存取,和文件系统安装。这些文件必须编译在核心内否则将能安装启动分区。如果安装启动分区和网络,你需要网络系统文件,和己经编译的网卡。

为什么要使用模块?模块化使核心变的更简捷,它减少核心释放大量的受保护的空间。模块的安装和卸载使用的空间是可重复分配利用的。如果你打开机器有90%以上的时间用到一个模块,编译它。运用这类模块是浪费内存的,原因是一旦你编译了楔块它们同样将占用大量的内存,核心需要一些代码来挂上模块。记住,核心在保护空间运行,但模块并不是。这么说,我并不经常使用我的设备。我把它编译成只支持ext2,ide和elf。而我一直使用网卡,我把其它的编译成模块:如out,java,floppy,iso9960,msdos,minix,vfat,smb,nfs,smc-ultra(ethernet card),serial,printer,sound,ppp,等等。它们许多只是在这或那用上那么几分钟。

下一步是配置核心。这而我们有三种选择--目的相同,我建议使用一种图形方法。以前是简单的输入:make config。开始一系列提问。而且,如果你答错了,你只有按ctrl-c从新再来一遍。你甚至不能按一定顺序重复,一些问题与以前的提问有关。如果你有绝对的理由不能使用任何一种图形方式,那碰到麻烦你一定会找我的。

我建议使用make menuconfig 或make xconfig中的一种。假如使用menuconfig,你必须安装ncurses-dev和tk4-dev库。如果你没有装入上面的库,而且你又不想用下一种方法,我建议现在就你安装上面的库。在稍后你仍然可以卸载它们。

要运行xconfig,你必须安装配置X,因为X需要大量内存,我安装,配置X仅仅在一部分时间运行X,当编译核心时我回到以前的控制台,因为编译需要内存。我的观点是xconfig菜单是最好最简单的途径来配置核心。在menuconfg,如果你去掉一个选项,它的从选项将不会显示。在xconfig,如果你去掉所有选项,从选项依旧显示,它们成灰色显示。我喜欢它的原因是使我能知道新加了什么。我可以打开一个选项得到一个新的从选项来试用一下。

我将花一点文字描述一下核心配置的一些部分,告诉你一些我(艰难的)发现的事。

第一节是code-maturity-level选项。仅有的一个问题是你是否想使用开发的驱动程序和代码。如果你有令你出血的硬件,你可能不得不作出一个选择。如果你选择“no”,试验代码将成灰色或不显示。如果你核心寻求通讯产品支持,你可能选择“no”。

第二节涉及模块,如果你想模块化,在问题1和3选择“yes”。如果你想使用所有得模块,比如Calderas OpenLinux的Netwar支持,第二个问题回答“yes这样不需要从新编译模块。

第三节是一般的设置。编译模块成ELF和编译支持ELF二进制。不编译适当的支持”gotcha“是明智的,如果你的机器结构是Pentium或486你将得到高效的代码,但一个386的核心将运行在32-bit compatible clone;一个Pentium核心将不。为大多机器制作一张紧急启动盘(就象销售商的安装盘)最好在386下编译,而386并不能运行在Pentium下编译的核心。

下一个是块设备--这儿并不要特别说明什么。如果你的启动设备是IDE硬盘,确定编译它就行。

下来是网络。对于一些没有连接网络的用户,你不必要在这停留,除非你计划使用计算机拨号连接其它用户。在这儿,你需要读懂并照建议的指导使用。

紧接着是SCSI,至于为什么不直接跟在块设备后面我也不知道。如果你的启动分区是SCSI设备,不要选择SCSI模块支持。

在一般的SCSI后是SCSI低级设备驱动程序。再次重申,模块仅仅是用在不在启动分区的设备。

下一节令我们回到再次回到网络,我想你会再这找你特殊的网卡,象其它一样支持ppp,slip,等等,如果你使用nfs安装你的启动设备,把网卡编译在内。

对于那些需要ISDN支持的幸运的人,ISDN从选项就需要编译。

在下一节支持更早的CD-ROM,如果你使用SCSI或IDE CD-ROM,你可以跳过这里。

下面是文件系统。同样,编译你所需要的,通常是ext2而让其余的使用模块。

字符设备是下一个选项。非串行的鼠标,支持象PS/2。看一看你鼠标的键。许多双键鼠标是PS/2,即使它们的连接看起来象串行的。你当然期望最低限度支持串行。列表中支持普通的打印机。

最后第二节经常制造麻烦:它就是声卡。阅读帮助文件从列表中小心的选取。确信为你声卡真确的选择了I/O和IRQ。声卡的MPU I/O是0选项。一般是330,如果不对不必担心。模块的好处就是在核心编译以后你还能重新编译、安装模块并挂上核心。(模块是不是很伟大?)

最后一节的一个问题必须这样回答“no,kernel hacking"。

保存你的配置并退出。

译者:以上只是作者使用的核心编译情况,如果不同请查看你的HOWTO。

我在menuconfig或xconfig的几个地方修改数字遇到了麻烦,但我确信它是对的。无论如何,我不能改变数字或配置不接受数字,并告诉我非法。列如,把声卡的默认IRQ从7改变到5,MPU I/O从0到300。如果经历过这问题,但一切仍很好,不要失望。你刚才存盘退出的文件是一个可以编辑的文本文件。你可以用你的文本编辑器如:Emacs,vi,CrispLite,joe,等等。配置文件在/usr/src/linux目录名字是.config。前面的点使普通的(ls)无法显示,加上-a选项就能看见。编辑文件中在配置时遇到麻烦的数字。然后,make dep 把你的配置信息从.config传送到特定的子目录完成安装。最后,make clean 准备最后的核心编译。

--------------------------------------------------------------------------------

编译核心

现在我们准备编译核心。这儿有几个选项来进行该工作:

make zImage

制作基础的,压缩的核心它将留在/usr/src/linux/arch/i386/boot目录名为zImage。

make zlilo

拷贝zImage到根目录 (除非你编辑上层的Makefile) 运行LILO。如果你用了这项,你不得不确信/etc/lilo.conf是先配置

make zdisk

写zImage到软盘在/dev/fd0 (就是DOS中第一软驱A:)。在开始之前你必须有张盘在软驱中。你可以同样用make zImage 然后把它拷贝到软盘cp /usr/src/linux/arch/i386/boot/zImage /dev/fd0 记住是高密度的,底密度的720k磁盘将不能启动核心(嘿都这时候了谁还用这玩艺儿,不要告诉我你有)

make boot

和zImage一样。

make bzImage

使用和zImage一样的大核心,你要知道使用这项通常提示映象文件太大而失败

make bzdisk

使用和zdisk一样的大核心,你要知道使用这项通常提示映象文件太大而失败

其它make选项也是可用的,但是特殊的,并且不在这儿出现。当然如果你需要特别支持,就象RAM disk ,SMP,阅读适当的文档,编辑在/usr/src/linux下相应的Makefile(也叫作top-level Makefile)。上面我讨论的选项和zImage选项一样基础,剩下部分是处理make zImage--重建核心最容易的方法。

对于那些想加快进程速度的人将不做其它事情(如配置其它应用程序),建议你查看man手册使用-j选项(也许有限制比如5)和-l选项。

如果配置过程中选择了模块,你可执行以下命令:

make modules

make modules_install

把模块放入默认查找路径/lib/modules/2.0.x/,x是核心的次号。如果你已经有了这个子目录并且它有block,net,scsi,cdrom,等等子目录。除非你安装所有的模块,那么你可以删掉2.0.x和下面所有的东西,其实也不必删掉。当模块装入时,子目录被创建覆盖。

你可以简单的结合使用三条命令:

make zImage:make modules:make modules_install

磁盘插入完成后在回到这,分号使在同一行上的命令分开,并执行每一条命令,这样你在下一条命令执行前就不必等了。

一旦你的核心重建并且安装了模块,有几点必须小心。首先,把你的核心拷贝到root(或/boot/或/etc/,随你想);

cp /usr/src/linux/arch/i386/boot/zImage

同样你需要把/usr/src/linux/System.map拷贝到同意目录用作核心的镜象。改变路径(cd)到/etc目录配置LILO。这一步很重要。如果我们在新核心中不安装pointer,它将不启动。通常,核心安装叫做vmlinuz。过去Unix使用者共同起了这名字。"z"表示压缩,"v"和"m"意思是"virtual"(虚拟)和"sticky(粘性的)",各自属于内存和磁盘管理。我建议保留vmlinuz核心,直到知道它工作。

编辑/etc/lilo.conf文件并加入新核心。使用从image=/vmlinuz到下一个或最后的image= 的行。把看到的记录下来,把第一行改成image=/zImage(假设你的核心在根目录)为label=.选一个不同的名字,第一个image是默认的。启动它们有特定的顺序。保存执行命令:

lilo

你将看到核心标签,第一个是星号。如果你没有看到新核心的标签或LILO出现错误,你需要重新对/etc/lilo.conf工作(看LILO帮助页)。

我们已经准备重新引导。这时如果你知道你的系统仅要求一次启动作准备,你可以执行:

depmod -a 2.0.x

x是正是你重建的核心的次号。这条命令创建一些模块所需的文件。你当然想确信启动时不是直接进入xdm.对于Red Hat系统,它的意思是保证文件/etc/inittab不在第5层运行,或者你记住在启动时运行。对于Debian系统,你可以输入:

mv /etc/init.d/xdm /eetc/init.d/xdm.orig

现在把它移回去。

--------------------------------------------------------------------------------

重新启动新核心

重新启动机器:

shutdown -r now

我不建议使用热启动或ctrl+alt+del键。在一些情况下,文件系统不完全卸栽会损坏打开的文件。在LILO提示时,如果你需要启动旧的核心或使用一些参数启动,如果你没看见启动提示,你可以试用shift或ctrl键,这样启动提示就出现了。一旦出现,按tab看核心标签。输入标签和可选参数启动。通常,在/etc/lilo.conf文件指定的时间后自动启动核心。启动时,你可能看见一些出错信息就象SIOCADDR。这常常显示模块(一般是网络模块)没有引导。处理这事很简单,如果有此一错,"VFS,cannot mount root",你就不要在核心中编译适当的磁盘或文件系统支持。

--------------------------------------------------------------------------------

发现并修理故障

由于从/etc/initab启动时有多种分配的方法,很难在本章覆盖所有可能的原因如你不能正常启动和它的原因.

首先,运行 depmo

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有