Linux 发展到今日,已经成为了一个健壮,安全,强大,并且方便易用的操作系统。 不仅仅对于网络治理员来说是,对桌面用户来说也是。
那么,Linux 的启动治理器 lilo 您已经很熟悉了吗?要知道,Lilo 的功能可是非常强大的,它不仅仅可以作为Linux操作系统的引导器,还可引导多个操作系统(eg: Win2000, Win9x, dos, Minix…),以及启动多个Linux内核映像。
在后面的内容中,我将通过运行在我自己计算机上的真实例子,讨论lilo最主要的用法。在开始学习lilo之前,我们还需要一些预备知识--什么是硬盘分区,Linux对硬盘分区的命名方法。 什么是硬盘分区?
硬盘分区是指对硬盘物理介质的逻辑划分。将硬盘分成多个分区,不仅仅利于对文件的治理,而且不同的分区可以建立不同的文件系统。这样才能在不同的分区上安装不同的操作系统。对于一个硬盘来说,最多只能创建三个主分区,一个扩展分区。在扩展分区上又可以划分若干逻辑分区。对于一个常规的操作系统来说,一般只能安装在主分区中,并且安装在主分区中的操作系统远比安装在逻辑分区中的方便治理且安全得多。(注:Linux就可安装在逻辑分区中)
硬盘的物理第一扇(0柱面,0面,1扇区)是硬盘主引导记录扇MBR,计算机启动时,首先就读取该扇,读出硬盘分区表,从中选择三个主分区中唯一一个具有活动标记的分区,引导该分区上的操作系统。也就是说,无论有几个主分区(≤3),其中必须有一个分区是活动的。对硬盘进行分区,可以使用任何硬盘分区软件,如:Dos 下的fdisk、 PQMagic, Linux 下的cfdisk等等。Linux的引导记录可以安装在MBR中,或者Linux所在主分区中。假如Linux安装在逻辑分区中则Linux的引导记录必须安装在MBR中。
Linux对硬盘分区命名方法
Linux对硬盘设备的命名方式与Windows系列大不一样。每一个硬盘拥有自己的设备名。IDE硬盘为hd? , SCSI硬盘为sd? 。?表示a到z的小写字母,不同的字母代表不同的硬盘设备,这个字母为主设备号。而硬盘上的分区用hd??或sd??中的第二个?表示,它由数字组成,1-4表示主分区,从5开始表示逻辑分区。
既是说,hda1表示第一个IDE硬盘的第一个主分区,sdb7表示第二个SCSI硬盘的第三个逻辑分区。而直接使用硬盘设备的主设备名,则表示该硬盘的MBR。如hda表示第一个IDE硬盘的MBR。
终于可以进入lilo的学习了,对于我们普通用户来说,lilo的使用主要在于lilo.conf的配置。Lilo.conf是lilo的配置文件,它位于/etc之下。在图1中给出了我的lilo.conf文件,后面的学习将主要围绕图1进行。
配置Lilo.conf
boot=/dev/hda3
prompt
timeout=30
default=w
message=/etc/message-file
image=/boot/vmlinuz-2.2.12-20
label=l
read-only
root=/dev/hda3
other=/dev/hda1
label=w
other=/dev/hda4
label=m
other=/dev/fd0
label=f
图1
在对图1进行细致分析之前,先来看一看我的硬盘分区情况--图2
cfdisk 2.9 Disk Drive: /dev/hda
Size: 4310433792 bytes Heads: 255 Sectors per Track: 63 Cylinders: 524
Name Flags PartType FS Type Size (MB)
------------------------------------------------------------------------------
hda1 Primary Win95 FAT32 1135.09
hda4 Primary Minix / old Linux 32.91
hda5 Logical FAT16 106.93
hda6 Logical Linux swap 32.91
hda7 Logical NTFS 1348.95
hda8 Logical NTFS 575.77
hda3 Boot Primary Linux ext2 1069.29
Unusable 8.23
[Bootable][ Delete ][Help] [Maximize][ Print][Quit][Type][ Units][ Write][Toggle bootable flag of the current partition]
图2
从图2中,读者可知该硬盘一共分为7个分区,3个主分区,4个逻辑分区,有8MB空间未使用。Win98操作系统位于主分区hda1,Linux 位于hda3, Minix 位于hda4,逻辑分区hda5-hda8位于扩展分区hda2中。即需要用lilo引导三个操作系统Linix, Minix, Win98。
下面我们开始逐行分析lilo.conf,见图1。第一行,boot=/dev/hda3,告诉lilo将引导记录写到哪里。该行表明将Linux引导程序写到Linux所在分区/dev/hda3处。假如boot=/dev/hda,则意味着将Linux引导程序写到MBR处。出于兼容性与安全的考虑,我建议大家将其写入Linux所在分区处,并将该分区标记为活动的。究竟多次向MBR写入,轻易造成MBR损坏,那麻烦可就大了。
在不少的Linux安装过程中,经常直接将Linux引导程序写入MBR,假如您希望改为我所推荐的方式的话,首先按以上方法修改lilo.conf,运行lilo,再将Linux所在分区标为活动的。重启后,进入dos,运行fdisk /mbr,将MBR中的Linux引导程序清除。这样,就可以从Linux活动分区启动多个操作系统了。
接下来是prompt命令,其作用是使lilo在引导时显示"LILO:"提示符,在该提示符下,用户需要输入预备启动的引导映像的名字,按TAB键列出所有供选择的引导映像的名字。
Timeout=30通知lilo选择缺省引导映像之前等待30毫秒(3秒)。
default=w 定义将要引导的缺省操作系统。假如没有该语句,则缺省引导第一个数据块。
image=/boot/vmlinuz-2.2.12-20定义引导Linux的内核映像文件,即位于/boot下的vmlinuz-2.2.12-20。
label=l定义所在数据块的名称,在启动选择多操作系统时,用户应输入的内容。
read-only定义根文件系统挂装为只读属性。
root=/dev/hda3告诉lilo Linux的内核映像文件在哪个硬盘分区中。
以上为Linux数据块。
other=/dev/hda1定义引导Win98操作系统所在主分区。
label=w同label=l。
以上为Win98数据块。
其他数据块与之类似。
启动多操作系统
细心的读者会发现我遗漏了一行message=/etc/message-file,这是我故意将其放在后面讲的。这里有一个小小的技巧问题。
一般的,我们写"lable=linux", 在启动时输入"linux"即可启动Linux操作系统,清楚明了但却有点麻烦。写成"lable=l",输入倒是简单,却又让人摸不着头脑,不知l是什么。Message命令是在lilo启动时显示一段提示信息。这样就解决了显示与输入的矛盾。我的/etc/message-file的是这样的:l: Red Hat Linux, w: Windows98, m: Minix 2.0, f: Floppy。这样在启动时,屏幕会得到如下显示:
LILO:
l: Red Hat Linux, w: Windows98, m: Minix 2.0, f: Floppy
boot:
图3
输入l或w或m即可启动Linux或 Win98或 Minix操作系统,提示清楚,输入简单。
在看见lilo.conf文件中最末的数据块中的/dev/fd0,以及message-file中的 f: Floppy时,不知道聪明的你悟到了什么。是的,lilo还支持用启动软盘启机。除了修改lilo.conf文件以外,你在运行lilo前,必须在软驱中插入一张系统盘(启动盘或可引导盘)。这样,重启后就可以通过lilo用软盘启机了。再也不用在BIOS中改来改去了,是不是很方便呢?
遗憾的是,仅仅只能对软盘这样做,光盘则不行。即还不能用lilo通过光盘启机。
启动新的Linux内核
作为一个Hacker, 经常要修改内核模块或尝试最新的内核。比较安全的做法是将新内核数据项加入lilo.conf,并保持原有内核不变,这样一旦新内核不能启动,你可通过原内核启动Linux。对lilo.conf的修改也很简单,依葫芦画瓢即可。编译好的新内核vmlinuz-2.2.14-20保存在/boot目录下,依着原内核vmlinuz-2.2.12-20的用法在lilo.conf中添加一个新数据块就可以了。
如下图所示新内核与原内核的数据块:
image=/boot/vmlinuz-2.2.12-20
label=l
read-only 原内核
root=/dev/hda3
image=/boot/vmlinuz-2.2.14-20
label=newl
read-only 新内核
root=/dev/hda3
图4
在lilo启机时,选择newl就可以启动新的内核了。假如新内核不正常,选择l则仍可以使用原内核。
Lilo的使用
在编辑好lilo.conf后,所要做的就是用lilo将Linux引导程序写入硬盘了。其用法非常简单,运行lilo即可。记住,你需要用软盘启机,就必须在运行lilo前插入一张系统软盘。
其结果在我的计算机上如下:
Added l
Added w *
Added m
Added f
图5
重启计算机,终于大功告成。通过lilo,你可以选择硬盘上各个操作系统以及多个不同Linux的内核,当然还可启动软盘上的系统。
对Linux的lilo的讨论,我想,到此就告一段落了。Lilo的配置选项还很多,但其最重要的内容都浓缩在本文中了。有爱好的朋友可以自己试着对lilo.conf进行修改,多实践就会有收获。■
与作者联系:
我的Email:yyyxxxyyy000@sina.com