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 命令详解及使用方法实战[初级]中我们就 ...
随机推荐
- extern “C”的作用
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程 式 ...
- CentOS系统Apache服务器优化详解
1.Apache优化 Apache能够在CentOS系统正常运行.但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问 ...
- Oracle数据库小知识,改数据库数据
在一张表上面右键-->查询数据,会生成sql语句,表后面带有t,表示模糊查询, 后面跟上for update之后,执行语句-->小锁(编辑数据)就可以修改数据里面的数据了,修改之后--&g ...
- PHP javascript 值互相引用(不用刷新页面)
PHP javascript 值互相引用的问题 昨天通过EMAIL给一些公司投了简历,希望他们能给我一份工作,今天其中一家公司的人给我打电话,大意是要我做一点东西(与AJAX有关) 给他们看,我听 ...
- HDU1004 (数组元素出现最多)
HDU1004 思路:求数组中出现次数最多的那个元素: 遍历数组元素,找出每个元素出现的次数 Input Input contains multiple test cases. Each test c ...
- SQL Server 2008 R2 主从数据库同步设置
一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2 DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...
- vs2010 未能正确加载方案中的一个或多个项目
Visual studio在打开解决方案时,往往会碰到一个这样的错误,提示说:未能正确加载方案中的一个或多个项目: 我们可以通过以下步骤来解决该问题:首先,在相应的sln类型文件上点击右键,选择用记事 ...
- XCode 项目配置说明
初学XCode最让人头疼的就是项目各属性设置,各种不解,这里做个总结: 项目配置: 基本项(Basic) 1.Architectures(指令集)——设置你想支持的指令集,目前ios的指令集有以下几种 ...
- BZOJ 1711: [Usaco2007 Open]Dingin吃饭
Description 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想让尽可能多的牛吃到他们喜欢的食品和饮料. ...
- 可爱的PYTHON,更新到0.5版本代码
这书看得挺顺的. 按着思路学习软件开发的主流思想.. cdctools.py # _*_ coding: utf-8 _*_ import os,sys def cdWalker(CDROM, cdc ...