如果您想要在一个新硬体系统上运作;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