摘要:通常,核心安装叫做vmlinuz。过去Unix使用者共同起了这名字。"z"表示压缩,"v"和"m"意思是"virtual"(虚拟)和"sticky(粘性的)",各自属于内存和磁盘管理。建议保留vmlinuz核心,直到知道它工作。
第四节 启用内核
通常,核心安装叫做vmlinuz。过去Unix使用者共同起了这名字。"z"表示压缩,"v"和"m"意思是"virtual"(虚拟)和"sticky(粘性的)",各自属于内存和磁盘管理。建议保留vmlinuz核心,直到知道它工作。
为了能够使用新版本的内核,还需要做一些改动:
#cp /usr/src/linux/System.map /boot/System.map-2.2.16
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.16
以上这两个文件是刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:
#cd /boot
#rm -f System.map vmlinuz
#ln -s vmlinuz-2.2.16 vmlinuz
#ln -s System.map-2.2..16 System.map
注意:要保留vmlinuz核心,以下列步骤进行
#cp /usr/src/linux/System.map /boot/System.map-2.2.16
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.16
#cd /boot
#rm -f System.map
#ln -s System.map-2.2..16 System.map
现在#vi /etc/lilo.conf,增加如下一段:
image=/boot/vmlinuz-2.2.16 是设定为已经安装的核心
label=linux2.2.16 则是由 lilo 用来告诉你现在要启动的是那个核心或作业系统,
read-only
root=/dev/hda2 则是这个特别的作业系统的根目录 /
其中root=/dev/hda2一行要根据需要自行加以修改。
运行:#/sbin/lilo -v 保存执行命令:lilo你将看到核心标签,第一个是星号。如果你没有看到新核心的标签或LILO出现错误,你需要重新对/etc/lilo.conf工作(看下面的LILO分析)。
确认对/etc/lilo.conf的编辑无误,现在重新启动系统:
#shutdown -r now
不建议使用热启动或ctrl+Alt+del键。在一些情况下,文件系统不完全卸栽会损坏打开的文件。在LILO提示时,如果你需要启动旧的核心或使用一些参数启动,如果你没看见启动提示,你可以试用shift或ctrl键,这样启动提示就出现了。一旦出现,按tab看核心标签。输入标签和可选参数启动。通常,在/etc/lilo.conf文件指定的时间后自动启动核心。启动时,你可能看见一些出错信息就象SIOCADDR。这常常显示模块(一般是网络模块)没有引导。处理这事很简单,如果有此一错,"VFS,cannotmount root",你就不要在核心中编译适当的磁盘或文件系统支持。
在机器重启后出现LILO时按TAB键,输入linux2.1.16,新内核发挥作用了。
附录:LILO分析(技术性强,仅供参考)
第一部分 LILO介绍
LILO(Linux Loader)是Linux自带的一个优秀的引导管理器,使用它可以很方便地引导一台机器上的多个操作系统。与其他常用的引导加载程序相比,LILO引导方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多操作系统、网络引导、大硬盘及大内存等诸多棘手的问题。
LILO的引导机制------众所周知,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader及Partition Magic等引导加载程序都可以配置成这种方式。软盘的引导扇区相当于硬盘活动分区的引导扇区,它通常用于装入软盘上的操作系统。由此可见,只要把LILO安装在MBR、活动分区或者引导软盘上,就能接管计算机的控制权,然后由LILO完成后继的引导过程。LILO中建有一个引导表地址编码,借此它的引导程序就能定位到Linux的内核文件,这种地址编码既可以按照柱面/磁头/扇区(CHS)模式,又可以采用LBA的线性块号模式,因此,即使对某些SCSI控制程序LILO也能运转良好。
当LILO定位到配置文件后,经过预引导过程,就显示提示符:
LILO boot:
此时,系统允许选择引导不同的操作系统或者不同的内核配置,按Tab键显示可选项列表,然后输入可选项或者直接回车选择缺省配置,如果选择了引导Linux,还可以直接传递参数到系统内核。
和其他系统的引导加载程序相比,LILO具有更大的灵活性,其引导方式也更丰富多彩。
●当LILO被安装在硬盘的MBR、活动分区或引导软盘上时,作为原引导程序的替身,它能引导任一硬盘任一分区上的Linux和其他操作系统;除了引导扇区,它没有任何隐含文件,也不需要使用特定的分区,它的配置文件可以在任何分区、甚至是存放在与Linux毫不相干的DOS分区的某个子目录下;它能引导几个不同的内核配置,甚至是几个不同的内核;
它能引导同一机程序上的多个Linux版本;可达16个。
●它能从网络上引导Linux。
●LILO的灵活性使得其配置变得相当复杂,当有多个系统共存时,建议先安装其他操作系统,最后再装Linux,这样,设置LILO对其他系统的引导会相对简单一些。
第二部分 LILO参数
通常我们谈到LILO,会涉及到两个方面――LILO引导程序和LILO安装命令/sbin/lilo。
为了不至于混淆这两个概念,本文将用LILO表示LILO引导程序,而lilo表示/sbin/lilo。一般地,LILO使用一个文本文件/etc/lilo.conf作为其配置文件。lilo读取lilo.conf,按照其中的参数将特定的LILO写入系统引导区。任何时候,修改了/etc/lilo.conf,都必须重新运行lilo命令,以保证LILO正常运lilo.conf使用的配置参数很多,配置起来也相当复杂。下面以RedHat Linux为例作一些初步探讨,RedHat的lilo程序包版本为0.20,别的Linux发行版本可能会有所出入,但不会太大。
lilo.conf文件中的配置参数分为两部分,一部分是全局参数,另一部分是引导映像参数。引导映像参数作用于每一个引导映像区。如果某一引导映像参数(例如:password与全局参数的定义相抵触,则以该引导映像参数的定义为准,但仅限于该引导映像区。LILO的引导参数有很多,在此只对一些比较重要的参数作一介绍。与Linux系统其他的配置文件一样,“#”号后的一行文字表示注释。
1.“boot=”此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区中读取引导扇区。
2.“root=”此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件系统的设备名,可用的设备名有:
(1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区
(2)/dev/sdaN~/dev/sdeN:SCSI兼容硬盘,a到e上的N个分区
(3)/dev/xdaN~/dev/xdbN:XT兼容硬盘,a到b上的N个分区
(4)/dev/fdN:软盘,A:(N=0)或B:(N=1)
(5)/dev/nfs:由网络取得根文件系统的标志
3.“nfsroot=”若需通过NFS提供根文件系统来引导无盘工作站,此参数为内核指定了网络根文件系统所在的机程序、目录及NFS,其格式为:nfsroot=(〈server_ip〉:)〈root_dir〉(,nfs_options))
4.“nfsaddrs=”设定网络通讯所需的各种网络界面地址,如无此参数,则内核会试图用反向地址解析协定(RARP)或启动协定(BOOTP)找出这些参数,其格式为:nfsaddrs=〈客户端IP〉:〈服务端IP〉:〈网关IP〉:〈子网屏蔽〉:〈客户端名称〉:〈网络设备名
〉:〈auto〉
5.“image=”指定Linux的内核文件。
6.“delay=”设定引导第一个映像前的等待时间。
7.“disk=”此参数为某一特殊的硬盘定义非标准参数。
8.“append=”为内核传递一个可选的参数行,其典型的应用是为不能完全由系统自动识别的硬盘指定参数,如:append = "hd=64,32,202"
9.“label=”此参数为每个映像指定一个名字,以供引导时选择。
10.“read-only”设定以只读方式挂入根文件系统,用于文件系统一致性检查(fsck)。
11.“install=”安装一个指定文件作为新的引导扇区,缺省为/boot/boot.b。
12.“loader=”说明所使用的链加载程序(chain loader),缺省为/boot/chain.b,如果不是从首硬盘或软盘启动,那么,此选项必须说明。
13.“table=”说明包含分区表的设备名,如果此参数忽略,引导加载程序将不能传递分区信息到已引导的操作系统。当此参数指向的分区表被修改时,必须重新运行/sbin/lilo。
14.“init=”内核初始化时执行的程序,通常过程为init、getty、rc和sh,版本1.3.43以来的Linux内核能够执行/sbin/init说明的命令行,若在引导过程中出现问题,则可设置init=/bin/sh直接跳到Shell。
15.“ramdisk_start=”由于内核不能放在压缩的内存文件系统映像内,为使内核映像能够和压缩的内存映像放在一张软盘内,加入“ramdisk_start=〈off