Linux操作系统的LILO详解
LILO是一个在Linux环境编写的Boot Loader程序(所以安装和配置它都要在Linux下)。它的主要功能就是引导Linux操作系统的启动。但是它不仅可以引导Linux,它还可以引导其他操作系统,如DOS,WINDOWS等等。它不但可以作为Linux分区的引导扇区内的启动程序,还可以放入MRB中完全控制Boot Loadr的全过程。下面让我们看看几种典型情况下硬盘的主引导扇区和各个分区的引导扇区内程序的内容。
(1)计算机上只装了DOS一个操作系统
这种情况和刚才介绍的DOS硬盘启动相对应,如图13.6所示。

图13.6 只有DOS的硬盘分区图
(2)计算机上装了DOS和Linux操作系统,Linux由LOADIN启动,如图13.7所示。

图13.7 用LOADLIN从DOS下启动
Linux在这种情况下,DOS的主引导区没有发生变化,分区的引导扇区也没有变化,只是在DOS的配置文件Autoexec.bat中加入了Loadin程序而已。
(3)LILO存放在Linux分区的引导扇区内,如图13.8所示。

图13.8 LILO存放在Linux分区的引导扇区内
在这种情况下,LILO存放在硬盘上的一个基本分区内。如果希望从Linux启动,必须把Linux分区设为活动分区。而如果你想使用Windows,你必须把Windows所在的分区激活,然后重新启动以进入Windows,也就是说,你没办法在启动的时候选择从哪个操作系统进入,这样的多重启动显得太麻烦。回想Windows下的多重启动,你只要在引导时输入一个F3键,便能自动进入DOS6.22,这才是我们所希望的方式。Windows能做到,LILO当然可以做到,它还能做得更好。(LILO不仅允许你选择从哪个系统引导,它还允许你给Linux的内核传递参数)请看下面这种模式,如图13.9所示:

图13.9 LILO在分区引导扇区内的多重引导
无论从哪个分区引导,你都可以选择地进入Linux或是DOS,不过从DOS分区启动时,
如果你不想进入Linux,你需要单步执行autoexec.bat以跳过LOADLIN。而从Linux分区启动时,你仅需要在启动时敲键盘输入操作系统的名字(这个名字可以由你在配置LILO时自己设定)便可以选择进入哪个操作系统。这张表完全是用于说明LILO安装位置的,其实你可能已经看出来了,既然无论从哪个分区都能进入所有的操作系统,那么,只要有一个活动分区就够了,从方便的角度来讲,从Linux分区启动是个不错的选择。
(4)LILO放在硬盘的主引导扇区里。
如图13.10所示。LILO如果在安装时选择作为MRB,它将负责Boot Loader的全过程,不过这样做有一定的风险,因为它将覆盖MBR,有可能使你原来的系统无法启动,所以你需要先备份主引导扇区。

图13.10 LILO放在主引导扇区里
LILO的功能实际上是由几个程序共同实现的,它们是:
Map Installer: 这是LILO用于管理启动文件的程序。它可以将LILO启动时所需的文件放置到合适的位置(这些文件的位置由LILO本身决定)并且记录下这些位置,以便LILO访问。其实,当你运行/sbin/lilo这个程序时,Map installer就已经工作了,它将boot loader写入引导分区(原来的boot loader将被备份),创建记录文件—map file以映射内核的启动文件。每当你的内核发生变化时(比如说内核升级了),你必须运行/sbin/lilo来保证系统的正常运行。
‚ boot loader:这就是由BIOS读入内存的那部分LILO的程序,它负责把Linux的内核或其他操作系统的引导分区读入内存。另外,Linux的Boot Loader还提供一个命令行接口,可以让用户选择从哪个操作系统启动和加入启动参数。
ƒ 其他文件:这些文件主要包括用于存放Map installer记录的map文件(/boot/map)和存放LILO配置信息的配置文件(/etc/lilo.conf),这些文件都是LILO启动时必需的,它们一般存放在/boot目录下。
LILO在引导Linux的同时还可以向Linux的内核传送参数。前面我们提到了,LILO提供了一个命令行解释程序,当系统加载LILO,并在屏幕上显示了“LILO” 字样时,你可以按下Ctrl或者Shift键(不同版本的LILO可能有所不同,我的系统需要按下Tab键),这时会出现“LILO boot”字样,表明命令行解释程序已经被激活,可以从键盘输入了。如果你相应的系统引导提示符是“Linux”,“Dos”的话,你可以键入“Linux”启动Linux,或者键入“Dos”启动Windows。如果你选择启动Linux,此时你还可以在“Linux”后面加入一些参数,LILO可以把这些参数传递给内核。例如:
LILO boot: Linux 1 告诉内核按照单用户模式启动。
LILO boot: Linux ether=eth0,0×280,10 告诉内核你的第一块网卡的端口地址是0×280,中断号是10。
LILO提供许多种参数,如Debug,等等,具体这些参数和它们的作用,请你查阅LILO的 文挡。此外,并不是所有的硬件都需要加参数才能支持的。如果你的硬件设备在编译内核时已经被支持了,那么完全没有必要加参数。事实上,只有那些比较特殊 (也比较不常用)的设备,才需要在启动时设定参数值,明确它的端口地址和中断号,以节省大量的用于检测端口地址和中断号的启动时间。
象可以预设默认的启动选项一样,在/etc/lilo.conf中也可以预先定义启动时要输入的参数,这样就可以避免每次启动都要重复输入。让我们看一个具体的lilo.conf的例子, 例子的左边是Script的脚本程序,右面是对程序的解释。从这个例子可以看出,lilo.conf的编制思想,同DOS下的config.sys差不多。
# /etc/lilo.conf
# LILO configuration file
# gernerated by ‘liloconfig’
#
# Start LILO global section /*LILO的通用配置块*/
append = “ether=eth0,0×280,10″ /*请注意,这就是向内核传递的参数,我们把它写在这里,就可以免去每次在启动时输入的麻烦*/
boot = /dev/hda2 /*LILO安装在硬盘1的二号分区的分区表上*/
delay = 50 /*给用户选择从哪个操作系统启动的等待时间*/
vga = normal /*显示器设置为标准VGA*/
# ramdisk = 0 /*未安装虚拟启动盘*/
# End LILO global section /*通用配置块结束*/
# Linux bootable partition config begins /*用于启动Linux的配置块*/
root = /dev/hda2 /*Linux的根文件系统安装在硬盘1的二号分区上*/
image = /vmlinuz /*选择根目录下的vmlinuz作为内核*/
lable = linux /*启动选择的标识符为 linux*/
image = /zimage-2.4.18 /*在引导Linux时,可以选择多个内核。比如说我们编译了 一个新的内核,并想从它启动,只需把这行程序写在这里 ,当然,别忘了先运行LILO来改变Map文件。*/
label = Newkernel
read-only /*以只读方式安装,防止启动中的误操作*/
#Linux bootable partition config ends /*Linux配置块结束*/
#DOS bootable partition config begens /*用于启动DOS的配置块*/
other = /dev/hda1 /*该操作系统的boot loader安装在硬盘1的一号分区的分区表内*/
label = dos /*启动选择的标识符为 dos*/
table = /dev/hda /*该操作系统的根目录在硬盘1的一号分区 上*/
# Dos bootab le partion config ends /*Dos 配置块结束*/
Linux操作系统的LILO详解的更多相关文章
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...
- Linux启动过程详解
Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...
- linux zip 命令详解
功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时 ...
- Linux 内存机制详解宝典
Linux 内存机制详解宝典 在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于 ...
- Linux串口编程详解(转)
串口本身,标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备.虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接 ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解(转http://blog.csdn.net/maopig/article/details/7195048) 在linux下,/dev目录是很重要的,各种设备都在下面.下面 ...
- linux cat 命令详解
linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...
- 【初级】linux rm 命令详解及使用方法实战
rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...
随机推荐
- linux curl命令验证服务器断点续传支持
有个同事说,发现现在对外下载安装包的服务器不支持断点续传,我听了一阵纳闷,lighttpd server对于静态文件应该默认支持断点续传的,登机器查看lighttpd配置文件发现 对断点续传的支持被禁 ...
- Ubuntu的关机重启命令知识
Ubuntu的关机重启命令知识,以作备忘. 重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(roo ...
- pyqt中使用matplotlib绘制动态曲线
一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...
- C++中弱符号(弱引用)的意义及实例
今天读别人代码时看到一个“#pragma weak”,一时没明白,上网研究了一个下午终于稍微了解了一点C.C++中的“弱符号”,下面是我的理解,不正确的地方望大家指正. 本文主要从下面三个方面讲“弱符 ...
- Newtonsoft post Json 日期格式处理
Newtonsoft.Json.Converters.IsoDateTimeConverter DateTimeConverter = new Newtonsoft.Json.Converters. ...
- combo下拉列表选择
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 《Linux命令行大全》系列(一、shell是什么)
学习 Linux, 从命令开始 图形界面只是让简单事情,更简单 图形化界面能快速处理简单的事情,如打开/关闭文件 然后,随着事务复杂度的提升,图形化界面的操作也就繁琐起来 例如,word中插入一个图片 ...
- [原博客] BZOJ 2242 [SDOI2011] 计算器
题目链接 noip级数论模版题了吧.让求三个东西: 给定y,z,p,计算`Y^Z Mod P` 的值. 给定y,z,p,计算满足`xy≡ Z ( mod P )`的最小非负整数. 给定y,z,p,计算 ...
- mysql connect
def connect(_host, _user, _passwd, _db, _charset, _port): conn = MySQLdb.connect(host=_host, user=_u ...
- Android 程序框架设计
这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下.欢迎指正.以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议. 1.一些概念 模式的定义: 每个模式都描述了一个在我们的环境中不 ...