LILO(LInux Loader),即
Linux引导程序。LILO是一个在系统启动时运行的
程序,它用于选择引导计算机启动的操作系统。
简介
可以用LILO引导几个不同的操作系统,如
Linux和MS-DOS。用LILO可以定义一个默认的要引导的操作系统和一个引导该操作系统的延迟时间。
例如,如果在计算机上有MS-DOS和Linux,可以配置LILO引导二者中的任何一个,然后告诉LILO,如果30秒后没有键盘介入,就引导二者中的MS-DOS;如果在30秒之内,键盘的Ctrl、Alt、Shift、Caps Lock中的任一键按下,就会出现boot,此时按下Tab键,能获得LILO引导的操作系统的清单。配置LILO时,可以指定所有这些操作。大多数新电脑都为Microsoft Windows或Mac OS的一些版本安装了引导加载程序。如果计算机使用Linux操作系统,就必须安装一个特殊的引导加载程序。LILO在那些将
Linux作为他们主要操作系统的用户间很流行。当以通常的方式安装LILO的电脑启动或重新启动时,
基本输入输出系统(BIOS)就会进行一些初步的测试,然后转移控制LILO所在的
主启动记录(MBR)。LILO的主要优点是,它可以
快速启动安装在主启动记录中的Linux操作系统。LILO的主要局限是,LILO 配置文件被反复更改时,主启动记录(
MBR)也需要反复重写,但重写可能发生错误,这将导致系统无法引导。在这种情况下,可以用其他的方法来使用LILO,但这需要花费较长的时间。有几种引导加载(boot loader)程序可以用来启动Linux系统,如LOADLIN(LOAD LINux)和
GRUB(GRand Unified Bootloader)。
对于新的
UEFI来说,主启动记录变为*.EFI程序。也就是说,从IO层面改变了以前的应用方式,将系统的引导启动交还给了IO,由EFI应用进行启动。此时,只需要操作系统对EFI进行支援,就可以完成多系统启动。
开发EFI程序,就可以改变操作系统。在电路层面,操作系统OS可以直接对话。
历程
2019年的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硬盘为hdX,
SCSI硬盘为sdX。X表示a到z的小写字母,不同的字母代表不同的硬盘设备,这个字母为主设备号。而硬盘上的分区用hd??或sd??中的第二个?表示,它由数字组成,1-4表示
主分区,从5开始表示
逻辑分区。
既是说,hda1表示第一个IDE硬盘的第一个主分区,sdb7表示第二个SCSI硬盘的第三个逻辑分区。而直接使用硬盘设备的主设备名,则表示该硬盘的MBR。如hda表示第一个IDE硬盘的MBR。
终于可以进入lilo的学习了,对于我们普通用户来说,lilo的使用主要在于lilo.conf的配置。Lilo.conf是lilo的配置文件,它位于/etc之下。
命令说明
vi /etc/lilo.conf
# 第一部分,整体的设定部分
prompt<==强制出现 boot 的开机信息。
Compact<==可以整合一些读取的扇区,可以保持 map 较小,相当适合软盘开机时使用
delay=50<==如果有多重开机的话,可以设定这个延迟时间,单位0.1秒
timeout=50<==与 delay 有类似的关系也是 0.1 秒如果 5 秒内没有按键盘直接以第一个 image 开机。
default=
linux-2.4.18<==如果开机的过程中,出现了boot之后,使用者没有动作,
则以此设定的核心开机,与底下的label需对应
boot=/dev/hda<==Lilo 的开机信息写入到 /dev/hda 这颗硬盘的 MBR 当中。
map=/boot/map<==用来说明 local 主机的地图信息啰!
install=/boot/boot.b<==关于开机区的讯息(boot sector),不用理他没关系!
Linear<==在较大容量的硬盘使用时,可以加入这一个参数试试看!
lba32<==这个东西也是在大容量的硬盘使用时候会需要的参数!
pass
word=1234567<==设定密码!如果为了安全起见,可以设定您的 lilo 密码哩!
message=/boot/message<==那个 LILO 的讯息就是在里面出现的啦!
# 第二部分,个别的开机设定部分,一个 image 或 other 均代表一个开机设定!
image=/boot/vmlinuz-2.4.7-10<==核心档案啦!
label=
linux-2.4.7<==请注意!label 前面以 [tab] 按键来作为分隔!
这个字眼则是显示在 boot 里头挑选项目。
initrd=/boot/initrd-2.4.7-10.img
read-only<==开机扇区挂载为只读!这是预设状况,实际在
挂加载 Linux 系统时,会重新挂载成可写!
root=/dev/hda1<==挂载成 / 这个 root 目录的磁盘!
other=/dev/hdb1<==如果是『非 Linux 核心』就以 other 来设定
开机的磁盘扇区!
label=Windows2k<==同样的要有 label 来表示这个开机扇区的名称!
查看设置
[root @test root]# lilo -v
LILO version 22.3.2, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2002 John Coffman
Released 11-Jul-2002 and compiled at 21:48:42 on Aug 13 2002.
Reading boot sector from /dev/hda1
Using MENU secondary loader
Calling map_insert_data
Mapping message file /boot/message ->message-text
Calling map_insert_file
Boot image: /boot/vmlinuz ->vmlinuz-2.4.19-16mdk
Mapping RAM disk /boot/initrd.img ->initrd-2.4.19-16mdk.img
Boot image: /boot/vmlinuz ->vmlinuz-2.4.19-16mdk
Mapping RAM disk /boot/initrd.img ->initrd-2.4.19-16mdk.img
Added failsafe
Boot image: /boot/vmlinuz ->vmlinuz-2.4.19-16mdk
Mapping RAM disk /boot/initrd.img ->initrd-2.4.19-16mdk.img
/boot/boot.0301 exists - no backup copy made.
Writing boot sector
故障处理
安装好了 Linux 之后,在开机的过程中却只出现『 LI 』就停止了!该如何是好?
这个问题可能发生的原因是 Lilo 没有设定好,或者是由于 Linux 安装在非 /dev/hda ( MBR )的硬盘之中,解决的方法可以如下:
用 Linux 光盘开机,然后在出现 boot: 处输入
linux root=/dev/hda1 (这个与你的 Linux 安装的 partition 有关)
顺利开机之后,以 vi 修改 /etc/lilo.conf
将linear这一行取消(如果没有这一行的话,那就在 lilo.conf 中加入吧!)然后执行lilo
再取出光盘并重新开机试试看; 进入 BIOS ,将硬盘的 mode 改成 LBA 试看看;
将
Linux往前面一点的
扇区安装,例如你可能安装在 /etc/hdc1 ,那你可以重新安装 Linux 在 /dev/hda2 试看看
无法正常的进入 Lilo 怎么办?
这的时候开机片就很重要啦!使用开机片,在出现 boot: 的时候,输入
就可以进入啦!这里请特别留意!那个linux指的是 label 呢!就像刚刚我们有三个 label ,分别是 linux, linux-test 与 failsafe ,那么如果我要以 linux-test 这个开机设定文件的单人维护模式登入,就必需要改写成
linux-test –s
linux-test single