redhat启动流程
Redhat启动流程
    当用户打开PC 的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux, Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初 始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从 开机到登录的整个启动过程。
Linux 系统启动过程大致按照如下步骤进行(这是一个简述):
第一阶段:BIOS启动引导阶段;
在该过程中实现硬件的初始化以及查启动介质;
青春寄语MBRMaster Boot Record中装载启动引导管理器(LILOGRUB)并运行该启动引导管理
第二阶段:GRUB为例启动引导阶段;
装载stage1
装载stage1.5
装载stage2
读取/f 文件并显示启动菜单;
装载所选的kernelinitrd 文件到内存中
第三阶段:内核阶段:
运行内核启动参数;
解压initrd 文件并挂载initd 文件系统,装载必须的驱动;
挂载根文件系统
第四阶段:Sys V init 初始化阶段:
启动/sbin/init 程序;
运行rc.sysinit脚本,设置系统环境,启动swap 分区,检查和挂载文件系统;
读取/etc/inittab文件,运行在/et/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本;
打开字符终端1-6号控制台/打开图形显示管理的7号控制台
(下面是详细的过程)
第一阶段:
系统上电开机后,主板BIOSBasic Input / Output System)运行POSTPower on self test乒乓球双打比赛规则)代码,检测系统外围关键设备(如:CPU、内存、显卡、I/O
键盘鼠标等)。硬件配置信息及一些用户配置参数存储在主板的CMOS( Complementary Metal Oxide Semiconductor)上(一般64字节),实际上就是主板
上一块可读写的RAM芯片,由主板上的电池供电,系统掉电后,信息不会丢失。
执行POST代码对系统外围关键设备检测通过后,系统启动自举程序, 根据我们在BIOS中设置的启动顺序搜索启动驱动器(比如的硬盘、光驱、网络服
务器等)。选择合适的启动器,比如通常情况下的硬盘设备,BIOS会读取硬盘设备的第一个扇区(MBR512字节),并执行其中的代码。实际上这里
BIOS并不关心启动设备第一个扇区中是什么内容,它只是负责读取该扇区内容、并执行,中秋国庆双节祝福语大全简短BIOS的任务就完成了。此后将系统启动的控制权移交到MBR
分的代码。
注: 在我们的现行系统中,大多关键设备都是连在主板上的。因此主板BIOS提供了一个操作系统(软件)和系统外围关键设备(硬件)最底级别的接口,
在这个阶段,检测系统外围关键设备是否准备好,以供操作系统使用。
第二阶段:
BIOS通过下面两种方法之一来传递引导记录:
第一, 将控制权传递给initial program loaderIPL),该程序安装在磁盘主引导记录(MBR)中
第二, 将控制权传递给initial program loaderIPL),该程序安装在磁盘分区的启动引导扇区中
无论上面的哪种情况中,IPL 都是MBR 的一部分并应该存储于一个不大于446字节的磁盘空间中,因为MBR 是一个不大于512字节的空间。
因此IPL 仅仅是GRUB的第一个部分(stage1),他的作用就是定位和装载GRUB的第二个部分(stage2);stage2对启动系统起关键作用,该部分提供了
GRUB启动菜单和交互式的GRUBshell。启动菜单在启动时候通过/boot/f 文件所定义的内容生成。在启动菜单中选择了kernel之后,GRUB
会负责解压和装载kernel image并且将initrd装载到内存中。最后GRUB初始化kernel启动代码。
完成之后后的引导权移交给kernel
Boot Loadergrub (grub-0.97),其引导系统的过程如下:
grub 分为stage1 (stage1_5) stage2两个阶段。stage1可以成是initial program loaderIIPL),stage2实现了grub 的主要功能包括定文件
系统的支持(如ext2ext3reiserfs等),grubshell,以及内部程序(如:kernrlinitrdroot)等。
stage 1MBR512 字节,001扇区),446字节存的是 stage1,后面存硬盘分区信息,BIOSstag1内存中0x7c00跳转执行。
stage1/stage1/start.S)的任务常单,仅仅是将硬盘002扇区读内存。002扇区内容是代码中的/stage2/start.S编译512字节,
它是stage2或者stage1_5口。
注:此时stage1没有能力识别文件系统的,其定位硬盘002扇区过程如下:
BIOSstage1内存0x7c00并执行,BIOS INIT13,将硬盘002扇区内容载内存0x7000copy_buffer 将其移到
内存0x8000。定位002扇区两种寻址方式:LBACHS
start.S的主要功能是将中国女子组合stage2stage1_5从硬盘载内存,如stage20x820;如 stage1_50x2200
注:这里的stage2或者stage1_5不是/boot 分区/boot/grub 录下的文件,这个时候grub 还没有能力识别任文件系统。分以下两种情况:
1start.S读取的是stage1_5,它存在硬盘003扇区后的位置,stage1_5作为stage1stage2中间的桥梁stage1_5有识别文件系统的
能力,此后grub 才有能力去访问/boot分区/boot/grub 录下的 stage2文件,将stage2内存并执行。
2start.S读取的是stage2,同,这个stage2不是/boot 分区/boot/grub 录下的stage2,这个时候start.S读取的是存/boot 分区Boot Sector
stage2。这种情况下就一个制:因为start.S通过BIOS方式接对硬盘寻址而非通过访问具体的文件系统),其寻址范有限制在8GB
以内。因此这种情况需要将/boot分区分在硬盘8GB寻址空间之
如是情形(2),我们将/boot/grub 录下的内容空,依然能启动grub如是情形(1),将/boot/grub 录下stage2删除后,系统启动过程
grub 会启动失
这个常要进行的操作:
是关于grub 常用的指令对应的数:
grub>root (hd0,0) --_root指令grub 定了一个根分区
grub>kernel /-2.6.18-37.el5 --_kernel指令将操作系统内核载内存
grub>module /vmlinuz-2.6.18-37.el5xen ro root=/dev/sda2 --_module指令加定的
grub>module /initrd-2.6.18-37.el5xen.img --_initrd文件
grub>boot --_淘宝怎么开网店boot 指令调应的启动数启动OS内核
第三阶段:
如阶段2所述,grub>boot 指令后,系统启动的控制权移交给kernelKernel立即初始化系统中各设备并做相关配置作,其中包括CPUI/O、存储设
备等。
关于设备驱动载,两部分:一部分设备驱动编入Linux Kernel中,Kernel用这部分驱动初始化关设备,同时将日志输出kernel message buffer
系统启动后dmesg可以查到这部分输出信息。火炬之光2局域网联机补丁另一部分设备驱动并没有编入Kernel是作为块形式initrdramdisk)中。
2.6内核中,支持两种式的initrd,一种是2.4内核的文件系统镜像image-initrd,一种是cpio 式。以 cpio 式为,内核判断initrdcpio 的文件
式后,会将initrd 中的内容释放rootfs 中。
initrd 是一种基于内存的文件系统,启动过程中,系统在访问真正的根文件系统/时,会先
访问initrd文件系统。将initrd 中的内容打开来看,会发现有bin
devetclibprocsyssysrootinit等文件(包含目录)。其中包含了一些设备的驱动模块,比如scsi ata等设备驱动模块,同时还有几个基本的可执行程
insmod, modprobe, lvmnash。主要目的是加载一些存储介质的驱动模块,如上面所说的scsi ideusb 等设备驱动模块,初始化LVM,把/根文件系统以
只读方式挂载。
initrd 中的内容释放到rootfs 中后,Kernel会执行其中的init 文件,这里的init 是一个脚本,由nash 解释器执行。这个时候内核的控制权移交给init文件处
理,我们查看init 文件的内容,主要也是加载各种存储介质相关的设备驱动。
驱动加载后,会创建一个根设备,然后将根文件系统/以只读的方式挂载。这步结束后释放未使用内存并执行switchroot,转换到真正的根/上面去,同时
运行/sbin/init 程序,开启系统的1号进程,此后系统启动的控制权移交给 init 进程。关于sw
itchroot是在nash 中定义的程序。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。