完成总--- boots quence---- boot loader---- kernel---- init---- Linux的启动
系统: CentOS6ios
另一方面,按下电源后,cpu找到并运行CMOS BIOS,该小程序完成硬件自检。 小程序
BIOS :基本输入和输出系统缓存
二、bios根据设置的boot squence查找设备上的MBR,找到后将控制权移交给MBR中的bootloader(1stage ).ide
MBR中存在磁盘上的0号扇区。 工具
有三个组成部分:
446 :引导加载器
64:分区表16字节表示分区
2: 55AAspa
三、引导加载器加载MBR以后的一些扇区中的基本文件系统驱动(1.5 stage ),例如以后的27个扇区。 加载引导分区的第2阶段。 博客
linux上的引导加载程序是GRUB .内存
GRUB有三个阶段。
引导加载器: 1st stage
分区:文件系统驱动程序,1.5 stage
分区:/boot/grub,2nd stageci
第1.5阶段的文件系统驱动程序只能驱动基本文件系统,因此第2阶段的分区不能使用较高级别的文件系统,如lvm和软raid。
四.加载第二阶段后,将提供一个窗口,您可以在其中选择引导系统。 内容是/boot/grub/grub.conf文件中的每个条目。
如果选定的条目是本地linux系统:
点击进入系统后。 GRUB加载传递给grub.conf文件中指定的内核和内核的参数。 参数中有真正路由的地址。 有时也会加载与内核相同版本的initrd。 initrd是模拟根的文件,GRUB与内核一起加载到内存中。 此文件解压缩后,将成为虚拟根。 内核工作是通过此路由进行的,并开始在只读端挂载真正的路由。 所需的驱动程序和程序将加载到此路由中。 装载完成后,开始将所需文件(如设备文件)复制到实际根。 然后执行路线切换。 如果没有initrd文件,内核将直接装载实际的路由,如果内核中没有根分区的驱动程序,系统将无法启动。
如果选定条目是指向其他分区的另一个系统,则GRUB的控制权将传递给该分区开头的引导程序进行管理。 每个分区的开头都有引导空间(在linux上似乎是1024字节)。 这样就可以有双系统或多系统。
内核3:
自我初始化:
检测所有可识别的硬件设备;
加载硬件驱动程序; (可能使用ramdisk加载驱动器)
以只读方式装载根文件系统;
执行使用者空间中的第一个APP应用程式:/sbin/init
initrd文件有两种类型。
ramdisk
随机存取存储器
Linux内核的一个特性是使用缓冲区和缓存加快对磁盘上文件的访问。
如果使用ramdisk,则在内存中模拟磁盘,但由于磁盘需要“缓冲区”(buffer )和“缓存”(cache ),因此内存将使用缓冲区和缓存。 因为画蛇添足,所以有了射频。
如果使用ramfs,则无需在内存中使用缓冲区和缓存,因为它直接在内存中模拟文件系统。
可以生成initrd的工具。 可以手动通过以下工具生成:
centos 5:初始化(ramdisk ) )。
工具: mkinitrd
centos 6,7: init ramfs (ramfs ) )。
工具: dracut、mkinitrd (脚本) ) ) ) ) ) ) ) )。
五、路由切换完成后,内核开始运行第一个用户空间APP应用(如果以前的切换路由没有计算)/sbin/init。 今后内核将退出幕后,前面由init计划负责。 init负责初始化定义的各种服务流程和环境。
init是用户空间中所有程序的祖先。
init是完成系统用户空间初始化的项目的总称,实现因系统版本而异。
init计划类型:
CentOS 5-:SysV init
配置文件:/etc/inittab
CentOS 6:Upstart
配置文件:/etc/inittab
/etc/init/*.conf
centos7:系统
配置文件:/usr/lib/systemd/system/