WEB开发网
开发学院操作系统Linux/Unix Linux 网管 123 --- 第10章. 升级 Linux 及其他... 阅读

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

 2005-04-15 11:28:16 来源:WEB开发网   
核心提示:如果您想要在一个新硬体系统上运作 linux ,或者想要使用一些原本核心没有支援的特点,Linux 网管 123 --- 第10章. 升级 Linux 及其他应用软体 -6.作一,也许或 者您想减少核心所占的记忆体使系统记忆体运作的更好,您会发现必须建立自己所定的核心,在这期间不是所有的装置及服务都能正常动作), 然後

如果您想要在一个新硬体系统上运作 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'') 然後关机/重新启动。然後您可以试着用不同选项重
新编译核心再试一次。 

Tags:Linux 网管 升级

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接