如果你第一次安装Linux,那么可能就需要用到双重启动。LILO(LInux LOader)就是实现这种功能的最简单但是最具有伸缩性的程序。
计算机启动时,BIOS会执行位于硬盘主引导记录(MBR) 或者软盘上的一段引导程序,这段程序的作用就是定位并加载操作系统。如果是引导Linux的话,引导程序会把Linux内核调入内存。LILO就是干这种活儿的程序。
首先遇到LILO,估计应该在你安装Linux的时候,你会被要求选择LILO 的安装处,是MBR还是Linux 的根分区。如果你有其他的启动管理程序例如Boot Magic 或者 System Commander 等,并且想使用他们,那么你应该把LILO安装到Linux的根分区。如果你选择使用LILO作为启动管理程序,就可以选择MBR。如果你想在启动时传递参数给内核,也应该使用MBR。
使用LILO作为启动程序后,机器启动后就会有LILO:的提示符,按下TAB键,可以看到可以选择的操作系统列表。输入其中的操作系统标签名就可以启动到对应的操作系统,或者直接输入回车启动到缺省的操作系统。
我们来看一个LILO启动的配置文件(/etc/lilo.conf)实例:
boot = /dev/hda
vga = normal
read-only
prompt
default = dos
timeout = 30
append="hdc=ide-scsi"
image = /boot/vmlinuz
label = linux
root = /dev/hda2
initrd = /boot/initrd
第一个选项是 boot,定义了LILO 的安装位置,'/dev/hda'就是把LILO安装到MBR,所以你如果要把LILO作为启动管理程序,就必须这样写哦!反之,你要把他定位到具体的Linux根分区例如 /dev/hda3。
vga是一个显示启动菜单的配置选项,可以有: 'normal' (80x25 文本模式), 'extended' (80x50 文本模式) 以及 'ask' (提示你选择文本模式)。
采用read-only选项时,系统会把根分区挂接为只读方式,推荐采用这个选项,因为 fsck 程序要求文件系统只读。 但不用担心你的根分区会不能写入了,相反,系统一旦启动就会把根分区挂接为读写方式。
prompt是一个必须放入的选项,否则就没有LILO 的提示符了。但是按住shift键可以看到提示。
default 指定缺省的引导映像,如果没有指定,那么第一个定义的映像就成为缺省值。
timeout 是提示显示的时间,单位是 0.1 秒。
append是一个十分有用的选项,他允许你把额外的参数传递给内核,例子中的 /dev/hdc 是一个可擦写CD驱动器,传递的参数就是用来让内核认识这个驱动器,另外这个选项在个别不认识内存的机器上十分有用。需要注意的是,你需要使用双引号来引入想要传递的参数,不要使用单引号。
LILO 也可以让你手工在LILO 提示符下传递这些参数。例如:
LIL linux single
就是告诉Linux 启动Linux 进入单用户模式。在引导区损坏时,可以从软盘启动,然后指定硬盘的根来修复硬盘引导扇区。
LIL linux root=/dev/hda3
image 指定需要启动的内核映像。每个映像还包括一个 label 选项定义启动时你需要输入的标签。
还可以为某一个 image 指定口令:
password='password'
添加 restricted 选项后,系统就会在你传递额外的参数时提示口令。这就防止有人采用“linux single” 来直接引导到提示符,而不需要验证系统口令。这在采用主机托管的服务器上十分有用,如果碰到别有用心的主机托管机房的管理人员时,这一招还是管用的。
other = /dev/hda3
label = dos
table = /dev/hda
other 指明操作系统所在的分区,同样的和Linux 下的image 一样也需要给定一个标签(label),table 选项指向包含分区表的设备,这个选项必不可少,因为LILO 会从这个这个分区表寻找对应的分区信息,然后把他传递给要启动的操作系统。
对lilo.conf 的任何改变都要求重新运行 /sbin/lilo ,保证最新的改变能写入分区。另外,如果你升级内核或者重构了 initrd 映像,也需要重新运行 /sbin/lilo。
运行/sbin/lilo 后,可以看到如下信息:
Added linux *
Added suse
Added windows
表示各种映像已经写入分区,带有 * 的分区是目前的缺省引导分区。可以用 -D 参数改变缺省引导分区:
/sbin/lilo -D windows
Added linux
Added suse
Added windows *
可以看到缺省分区已经成为 windows了。