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 命令详解及使用方法实战[初级]中我们就 ...
随机推荐
- SQL Proc(存储过程)/tran(事物)
存储过程好比C#方法 1.事物写在过程里面,直接调用存储过程 1.1没有参数的过程 /*transaction事物,procedure存储过程*/ create proc CopyTable_1_10 ...
- tr设置border无效的解决方法
给table的css添加属性:border-collapse: collapse; 边框不折叠的表格 行,列,行组是不具有border的
- em,pt和px之间的换算
任意浏览器的默认字体高度16px(16像素).所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em,10px=0.625em.为了简化font-size的换算,需要在css中的b ...
- scrapy使用爬取多个页面
scrapy是个好玩的爬虫框架,基本用法就是:输入起始的一堆url,让爬虫去get这些网页,然后parse页面,获取自己喜欢的东西.. 用上去有django的感觉,有settings,有field.还 ...
- MVVM Light 一个窗口承载两个视图
MVVM Light 一个窗口承载两个视图 原文地址:http://www.codeproject.com/Articles/323187/MVVMLight-Using-Two-Views 本文 ...
- c++读文件-对try-throw-catch的应用
#include<iostream> #include<fstream> #include<stdlib.h> #include<stdio.h> us ...
- DES原理与实现
一 DES综述 DES是对称密码的一种,它使用56位秘钥对64位长分组进行加密.DES对每个分组的内容都会进行16轮迭代,每轮的操作相同但是对应不同的子秘钥.所有的子秘钥都是由主密钥推导而来. 64位 ...
- Metasploit渗透测试魔鬼训练营
首本中文原创Metasploit渗透测试著作,国内信息安全领域布道者和资深Metasploit渗透测试专家领衔撰写,极具权威性.以实践为导向,既详细讲解了Metasploit渗透测试的技术.流程.方法 ...
- Unreal Engine4 蓝图讲解
UE4开发群:344602753 Unread Engine4的界面概况: UE4的效果可以说是比较好的,从整体架构上来说,和Unity3d的逻辑架构不太 一样,发现UE4不好上手,但是从理论上考虑, ...
- ECmall错误:Call to a member function get_users_count() on a non-object
问题描述: 在后台添加了一个app报错:Call to a member function get_users_count()Fatal error: Call to a member functio ...