首页 百科知识 操作系统的引导过程

操作系统的引导过程

时间:2022-10-22 百科知识 版权反馈
【摘要】:当无法启动Linux操作系统时,大多数情况都是由于引导程序损坏或是配置不当所造成的。Linux操作系统的引导程序有很多种,最为常见是lilo和grub。在grub出现之前,lilo是Linux操作系统引导程序的最佳选择,目前仍然有很多人在使用。在安装Linux操作系统时,lilo可以装在硬盘的MBR中,也可以安装在活动分区的引导扇区中。文件系统的类型可自动检测。

1.5.3 Linux操作系统的引导过程

接通PC的电源之后,CPU执行的第一条指令通常是使CPU跳跃到BIOS的入口地址,然后BIOS就开始进行开机自检,包括对内存等硬件进行检测,若存在其他设备自带有BIOS(如SCSI或RAID设置等),系统也会执行它们。完成自检后的BIOS会根据设定好的启动设备和启动顺序来启动Linux操作系统。

对于PC,有以下几种设备可以作为启动设备来使用。

1)硬盘

硬盘是最常用的启动设备,硬盘有IDE接口和SCSI接口两种。一台PC中可能有多个硬盘,用户可以在PC的CMOS设置哪块硬盘首先启动。

2)光盘驱动器

光盘驱动器是PC必备的设备之一,包括CD-ROM、DVD-ROM及各种刻录机等。现在多数用户都是通过光驱来安装Linux的。

3)U盘

随着U盘的出现,许多主板也都开始支持由USB设备来启动系统了。

4)网卡的Boot ROM

有一些网卡带有Boot ROM芯片,可将引导信息写入Boot ROM,许多主板都支持Boot ROM启动。常用于无盘工作盘环境中。

无论系统选择了哪一种启动设备,它都将该设备起始地址的内容读入内存,如果启动设备是IDE硬盘,系统就会去读取硬盘的第一个扇区(这个扇区通常称为主引导扇区,又称MBR),并将这个扇区的内容读入内存,然后运行它。这一步是引导Linux操作系统的关键,这一步将启动Linux操作系统的引导程序,若找不到引导程序,则将无法引导Linux操作系统。当无法启动Linux操作系统时,大多数情况都是由于引导程序损坏或是配置不当所造成的。

引导程序的责任是载入操作系统内核软件并把控制权转交给它。对于Linux操作系统来说,引导程序就是负责在启动计算机时装入Linux操作系统的Kernel,并将计算机的控制权交给Kernel,然后Kernel再进一步初始化剩余的操作系统,直到Linux操作系统显示用户登录画面。由此可见,引导程序对一个操作系统来说是非常重要的。Linux操作系统的引导程序有很多种,最为常见是lilo和grub。

1)lilo

lilo是用于Linux操作系统的灵活多用的引导程序。它不依赖于某一特定文件系统,能够从软盘和硬盘引导Linux内核映像,也能够引导其他操作系统。在grub出现之前,lilo是Linux操作系统引导程序的最佳选择,目前仍然有很多人在使用。

2)grub

grub是一个功能强大的引导程序,专门处理Linux操作系统与其他操作系统共存的问题,可以引导的操作系统有Linux、OS/2、Windows系列、BeOS、Solaris、FreeBSD、NetBSD等。其优势在于支持大硬盘,支持开机画面(能支持到1024×768像素的画面),支持菜单式选择,并且分区位置改变后不必重新配置,使用非常方便。Linux新版本的操作系统大多采用grub作为默认的引导程序。

3)其他引导程序

如果没有安装lilo或grub,或者你的lilo或grub损坏了(比如不小心覆盖了MBR), Linux操作系统无法直接引导时,可通过Linux操作系统的引导盘,或者是利用loadin、syslinux等程序来从MS-DOS中载入Linux操作系统。

Linux操作系统的引导过程如下。

启动Linux操作系统,通常需要安装lilo(the Linux Loader),lilo不仅可以引导Linux操作系统,也可以引导其他操作系统,包括MS-DOS或Windows 2000等。在安装Linux操作系统时,lilo可以装在硬盘的MBR中,也可以安装在活动分区的引导扇区中。

计算机启动时,BIOS装载MBR,然后从当前活动分区启动,lilo获得引导过程的控制权后,会显示lilo提示符,即

LILO BOOT:

此时如果用户不进行任何操作,lilo将在等待制定时间(如5 s)自动引导默认的操作系统,而如果在此期间按下“Tab”键,则可以看到一个可引导的操作系统列表,例如,

LILO BOOT:[TAB]

WIN2000 LINUX

BOOT:

上述列表表明,lilo可引导Windows 2000和Linux两种操作系统,并且Windows 2000是默认的操作系统。如果此时用户在lilo提示符后键入“Linux”,则可启动Linux操作系统。

Linux操作系统还可以将许多参数传递给Linux内核,例如,

BOOT:LINUX SIGLE可指定Linux进入单用户模式。

当用户选择启动Linux操作系统时,lilo就会根据事先设置好的信息从ROOT文件系统所在的分区读取Linux操作系统映像,然后装入内核映像并将控制权交给Linux内核。Linux内核获得控制权后,以如下步骤继续引导系统。

Linux内核一般是压缩保存的。因此,首先要进行内核映像前面的一些代码完成解压缩。

若系统中安装有可支持特殊文本模式的、且Linux操作系统可识别的SVGA卡,则Linux操作系统会提示用户选择适当的文本显示模式。若在内核的编译过程中预先设置了文本模式,则不会提示选择显示模式。该显示模式可通过lilo或rdev工具程序进行设置。

内核接下来检测其他的硬件设备,例如,硬盘、软盘和网卡等,并对相应的设备驱动程序进行配置。在显示器上有内核运行输出的一些硬件信息。

接下来,内核装载ROOT文件系统。ROOT文件系统的位置可在编译内核时指定,也可通过lilo或rdev指定。文件系统的类型可自动检测。如果由于某些原因装载失败,则内核启动失败,最终会终止系统。

然后,INIT切换到多用户模式,并为每个虚拟控制台和串行线路启动一个GETTY进程,GETTY进程管理用户从虚拟控制台和串行终端上的登录。根据不同的配置,INIT也可以启动其他进程。

引导程序成功后,Linux内核就接管了系统,开始了Linux操作系统的启动过程。若引导过程发生错误则按如下操作处理。

1)分析屏幕显示的错误信息

引导程序本身所显示的错误信息都是有含义的。

(1)lilo的错误信息。当lilo启动完成时,会在屏幕上显示字符串“lilo”。若lilo在某个部分出错了,则可根据屏幕上当前出现的字母推断出故障原因。例如,若屏幕上什么都没出现,就表示lilo还未被安装或者lilo所在的分区未被设为active状态。若屏幕显示“li”,则表示lilo引导程序的第一部分能够将lilo引导程序的第二部分装入,但却不能执行,这可能是因为硬盘参数设置不当或者是因为在移动/boot/boot.b时没有运行map安装程序。若屏幕显示“lil”,则可能是介质故障或硬盘参数设置不当,无法从map文件中装载描述符表等。

(2)grub的错误信息。与lilo相比,grub的信息要好理解一些,因为它是直接用英语来表达的,而不是用符号。比如:“Hard Disk Error”、“Read Error”、“Selected disk doesn’t exist”、“Disk geometry error”、“Device string unrecognizable”、“Attempt to access block outside partition”、“Partition table invalid or corrupt”等。

2)通过光盘或USB盘引导进入系统,修复原引导程序

分析屏幕显示的错误信息,能大致找到原引导程序的出错原因,此时可通过光盘或USB盘引导进入系统,修复原引导程序。许多Linux操作系统的发行光盘是可启动的,例如,slackware就是很好的引导光盘。进入系统后,可以重装引导程序或者重新设置引导程序。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈