嵌入式系统嵌入式系统/ARM技术中的技术中的Linux启动过程剖析启动过程剖析
作者:王姗姗,华清远见嵌入式学院讲师。 Linux启动过程的剖析能帮助那些想深入学习Linux用户建立一
个相关Linux启动过程的清晰概念,进而可以进一步研究Linux接下来是如何工作的。 Linux启动过程如下:
当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引
导程序lilo或grub开始引导Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc
等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了
作者:作者:王姗姗,华清远见嵌入式学院讲师。
Linux启动过程的剖析能帮助那些想深入学习Linux用户建立一个相关Linux启动过程的清晰概念,进而可以进一步研究
Linux接下来是如何工作的。
Linux启动过程如下:当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设
备上安装的引导程序lilo或grub开始引导Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc
等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,
用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。如图所示:
下面分步来介绍下linux的启动过程:
1、BIOS自检
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这
是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计
算机心里就有谱了,知道应该去读取哪个硬件设备了。
计算机在接通电源之后首先由BIOS进行自检,即进行所谓的POST(Power On Self Test),然后依据BIOS内设置的引
导顺序从硬盘、软盘或CDROM中读入“引导块”。 在 PC 中,引导 Linux 是从 BIOS 中的地址 0xFFFF0 处开始的。BIOS 的第
一个步骤是加电自检(POST)。POST 的工作是对硬件进行检测。BIOS 的第二个步骤是进行本地设备的枚举和初始化。给
定 BIOS 功能的不同用法之后,BIOS 由两部分组成:POST 代码和运行时服务。当 POST 完成之后,它被从内存中清理了出
来,但是 BIOS 运行时服务依然保留在内存中,目标操作系统可以使用这些服务。
要引导一个操作系统,BIOS 运行时会按照 CMOS 的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设
备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备,甚至是 USB 闪存。通常,Linux 都是从硬盘上引导的,
其中主引导记录(MBR)中包含主引导加载程序。
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,
别看地方不大,可里面却存放了预启动信息、分区表信息。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地
址所在的物理内存中。当 MBR 被加载到 RAM 中之后,BIOS 就会将控制权交给 MBR。其实被复制到物理内存的内容就是
Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
提取MBR的信息
要看MBR的内容,请使用下面的命令
#从/dev/sda上读取前512个字节的内容,并将其写入mbr.bin文件中
root@farsight:/home/linux# dd if=/dev/sda f=mbr.bin bs=512 count=1
1+0 records in