电脑技术学习

Linux 网管 123 --- 第10章. 升级 Linux 及其他应用软体 -6.作一

dn001

如果您想要在一个新硬体系统上运作;Linux;,或者想要使用一些原本核心没有支援的特点,也许或
者您想减少核心所占的记忆体使系统记忆体运作的更好,您会发现必须建立自己所定的核心。;
更新核心包含了组态所需的模组,编译核心及模组,最後安装核心映像档,随着重新开机而载入新的
核心。在``README''中这些所有的文件都来自於每个核心套件。进一步的资讯可以在
``Documentation/'';子目录中找到。一个特别有帮助的档案是``Configure.help'';,其中包含了有
关编译核心的选项及模组的详细资讯。;

下面是一个例,显示如何建立自己的;Intel;平台;2.0.36;版核心。建立订的核心常常只是组态,
编译及安装上的问题。有时(通常因为新的硬体);需要下载新的驱动程式,因为原本核心编译时该硬体
尚未被支援。;

建立订核心的第一个步骤是下载及安装核心,不论是来自;RPM;(优先选择);或从;tarball。参考;
第10章,Linux;核心的升级;;一节;有关获得合适档案的详细资料。;

下一步,使用;``rpm'';公用程式;(或;``tar'',也可以);安装核心来源及标头档。例如,安装
2.0.36-3;核心的;RPM;档:;
rpm;-Uvh;kernel-source-2.0.36-3.i386.rpm;kernel-headers-2.0.36-3.i386.rpm
rpm;-Uvh;kernel-ibcs-2.0.36-3.i386.rpm



(如果您在笔记型电脑上运作Linux,您或许想要安装;``kernel-pcmcia-cs-2.0.36-3.i386.rpm'';这个
档,它提供了电源管理的功能);

在安装好核心档之後,您应该可以找到新的原始档,位在;``/usr/src/linux/'';目录。;

下一个步骤是下载任何附加的驱动程式档;(如果有的话),并且安装他们在新的核心来源。例如,要增加
对;Mylex;DAC960;硬体;RAID;控制器的支援,我会从网站上下载驱动软体。不幸地,像;
http://www.dandelion.com/;网页上的驱动软体常常只有提供;tarball;而且需要;``tar'';公用程式去安
装它。例如:;
cd;/usr/src/
tar;zxvpf;DAC960-2.0.0-Beta4.tar.gz



可能的话,您应该阅读由您所增加驱动程式软体所提供的文件。例如;DAC960;驱动程式包括了;``README'';
档案,里面有关於哪里下载最新的驱动程式,及如何索取核心的修正档:;
mv;README.DAC960;DAC960.[ch];/usr/src/linux/drivers/block
patch;-p0;<;DAC960.patch



下面步骤是确保您的系统符号档案连结和新的核心相符。事实上,这个步骤只需要作一次,所以下面步骤只
有在您从未编译过自己的核心情形下才需要:;
mail:/usr/src#;cd;/usr/include
mail:/usr/include#;rm;-rf;asm;linux;scsi
mail:/usr/include#;ln;-s;/usr/src/linux/include/asm-i386;asm
mail:/usr/include#;ln;-s;/usr/src/linux/include/linux;linux
mail:/usr/include#;ln;-s;/usr/src/linux/include/scsi;scsi

注意:;上述步骤在;2.2.x;或更高版本核心已不再需要。;


下一个步骤是组态您的核心。这是建立订核心的最重要步骤,如果您;disable;错误的设定,可能漏
失您所需要的特性或硬体支援。然而,如果您;enable;了错误的设定,您会无谓地扩大核心而且浪费珍贵
的系统记忆体;(说是这麽说,但在以後犯错而不是之前可能比较好);

确保您的核心编译正常的最好办法是:了解您所需要使用的特性是什麽,您的系统中哪些硬体需要支援。
在您有几次订核心的经验後,这些过程会变为;“过时?而且不具威胁;!;

键入下列各项开始进行组态程序:;
mail:/usr/include#;cd;/usr/src/linux
mail:/usr/src/linux#;make;mrproper
mail:/usr/src/linux#;make;menuconfig



(如果您执行;X;Window;系统可以键入;``make;xconfig'';取代;``make;menuconfig'';;参考;第;5;章;有
关如何使;X;运作的细节.);

要组态您的核心,必须经由种种的设定及选择;(enable);哪一些是您需要的,并且剔除;(disable)您所不
需要的。您可以选择直接经由核心支援,或是建立依需求可由核心载入或卸下的模组。(如果您编译了一个
事实上需要重新启动系统的功能,像是;SCSI;驱动程式,如果是模组,您需要建立;RAMdisk;映像档或系统
必须重新启动。这是使用;``mkinitrd'';这个命令去完成;;这个程序在下面会谈到);

当进行这些组态设定时,;您可以选择;获得有关核心各个选项的描述;

在您完成对核心的组态设定後,键入下列命令编译您的核心:;
mail:/usr/src/linux#;make;dep;;;make;clean
mail:/usr/src/linux#;make;bzImage
mail:/usr/src/linux#;make;modules



如果您重新编译和之前相同的核心;(在本例中是;2.0.36-3;),您或许会想要用下面的指令将现有的模组移
到备份的目录下:;
mail:/usr/src/linux#;mv;/lib/modules/2.0.36-3;/lib/modules/2.0.36-3-backup



现在,键入下列指令真正地安装新的模组:;
mail:/usr/src/linux#;make;modules_install



下一个步骤是将核心到;``/boot/'';目录下,并且使用;LILO;更新;boot;record;,如此一来新的核
心就会被承认。下面的指令会将现有核心作一个备份,新的核心取代它,然後更新;LILO;boot;record:;
mail:/usr/src/linux#;cd;/boot
mail:/boot#;cp;vmlinuz;vmlinuz.OLD
mail:/boot#;cp;/usr/src/linux/arch/i386/boot/bzImage;vmlinuz-2.0.36
mail:/boot#;/sbin/lilo



最後,您需要编辑;``/etc/lilo.conf'';档,并且确定;“image”是指向新的核心。您也应该加入一个项目
指向您的备份核心,也许称作“OldLinux”.;这是一个例档:;
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
label=Linux
root=/dev/hdb1

read-only
image=/boot/vmlinuz.OLD
label=OldLinux
read-only



藉由此种方法备份您的核心资讯,万一您的新核心无法正常启动(也许因为某设备不被承认,或者一个
daemon;应该启动而未启动),您可以简单地键入;``OldLinux'';从原来的核心启动然後检查系统。;
注意:;如同前面所提到,如果您已经编译了一个需要以模组方式启动系统的核心,您需要建立一个起始;
RAMdisk;映像档以便启动系统。(别忘了将您的核心编译成可支援这样的映像档);


建立及使用起始;RAMdisk;映像档的程序如下:;


在您的;``/etc/lilo.conf''加入项目,以便启动起始;RAMdisk;映像档;;这里是一个先前已经展示过的组态
档增加的例子,:;image=/boot/vmlinuz
label=Linux
root=/dev/hdb1
initrd=/boot/initrd-2.2.4-4.img
read-only


在您可以使用;mkinitrd;指令前要先载入loopback;装置.;确定;loopback;装置模组已经载入:;/sbin/insmod;loop


(如果您得到有关无法载入loopback;模组的错误讯息,您可能需要指定给目前正在运作的核心该模组完整路
径,例如;``/lib/modules/2.0.35/loop''.);

使用;``mkinitrd'';指令真正地建立映像档:;/sbin/mkinitrd;/boot/initrd-2.0.36-3.img;2.0.36-3


执行;``/sbin/lilo'';更新您的;boot;loader.;
现在,关闭系统且启动新的核心!;
mail:/boot#;/sbin/shutdown;-r;now


如果您的核心拒绝完成启动,别惊慌。利用在安装;Linux;时所作的开机磁片开机。如果您没有该磁片,
应该可以利用Red;Hat;CD作。插入磁片然後重新启动电脑。当您看到“boot:”;提示时,键入:;
mount;root=/dev/hda1



上述的指令假设您的“/”;(root);partition;位於;/dev/hda1.;

Linux;应该然後正常地启动;(既然您是使用开机磁片开机,在这期间不是所有的装置及服务都能正常动作),
然後您可以回存您的旧核心然後重新安装;LILO;boot;loader;的资料;
(亦即.;``mv;/vmlinuz.old;/vmlinuz;;;/sbin/lilo'');然後关机/重新启动。然後您可以试着用不同选项重
新编译核心再试一次。;

标签: linux