Linux系统启动流程

我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linux操作系统了。那么在按下电源到输入账号和密码之前,操作系统都做了些什么?下面就来讲述在这段时间发生的动作。

下面以CentOS6系列为例来讲解Linux的启动流程。

一、Linux启动流程详解

下图就是启动流程的大致过程:

二、POST加电自检

POST(PowerOnSelfTest)首先对每一个设备进行检查。完成后会寻找存有引导记录的设备,,找到后读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动。

三、MBR引导

MBR(Master Boot Record) MBR记录一般是在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoder,后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。

四、GRUB(GRand Unified Bootloader)、加载内核

就是MBR中的前 446 个字节,是BooTLoader的一种,它的作用是要选择要启动的内核。

1、GRUB程序的组成:

主要是由device.map,menulst,stage1,stage2,以及一系列的stage1_5组成。对于这些部分我的理解是这样:

2、grub.conf 文件参数意义

default=1#默认启动的内核title,0表示是第一个timeout=5#默认等待时间splashimage=(hd0,0)/grub/splash.xpm.gz#指定菜单的背景图片的路径。为xpm格式,采用gzip压缩,只能为14bits色hiddenmenu#隐藏菜单titleCentOS(2.6.32-358.el6.x86_64)#标题名,用户可自定义root(hd0,0)#指定grub的根位置#指定kernel文件的位置,还要指出root(系统启动后)的位置,挂载方式ro,这项很关键。#加载后会启动init进程。kernel/vmlinuz-2.6.32-358.el6.x86_64roroot=/dev/mapper/vg0-rootrd_NO_LUKSrd_NO_DMLANG=en_US.UTF-8rd_LVM_LV=vg0/swaprd_NO_MDSYSFONT=latarcyrheb-sun16crashkernel=autord_LVM_LV=vg0/rootKEYBOARDTYPE=pcKEYTABLE=usrhgbcrashkernel=autoquietrhgbquiet#在内核启动过程中装载根文件系统时有用initrd/initramfs-2.6.32-358.el6.x86_64.img

initramfs-2.6.32-358.el6.x86_64.img 的本质是????

#initramfs是以gzip压缩的cpio格式的文件。内核启动时将他作为一个临时的根文件系统。#grub的stage2将initrd加载到内存里,让后将其中的内容释放到内容中,#内核便去执行init脚本,这时内核将控制权交给了init文件处理。#init它也主要是加载各种存储介质相关的设备驱动程序。当所需的驱动程序加载完后,#会创建一个根设备,然后将根文件系统rootfs以只读的方式挂载。#这一步结束后,释放未使用的内存,转换到真正的根文件系统上面去,同时运行/sbin/init程序,#执行系统的1号进程。此后系统的控制权就全权交给/sbin/init进程了。

如何制作 initramfs 呢?

#可以使用dircut命令,用法如下:#只有在initramfs文件损毁的时候会使用到[root@server~]#dracut/mnt/initramfs-`uname-r`.img`uname-r`[root@server~]#du-sh/mnt/initramfs-2.6.32-358.el6.x86_64.img16M/mnt/initramfs-2.6.32-358.el6.x86_64.img[root@server~]#du-sh/boot/initramfs-2.6.32-358.el6.x86_64.img16M/boot/initramfs-2.6.32-358.el6.x86_64.img#详细介绍,可使用这个链接:https://zh.opensuse.org/index.php?title=SDB:Dracut&variant=zh-cn#.E5.90.AF.E7.94.A8_dracut_.E7.94.9F.E6.88.90.E7.9A.84_initramfs

3、grub的功能

1)提供菜单,并提供交互式接口

e: 进入编辑模式

2)选择要启动的内核或系统

允许传递引导参数给内核

选择界面可隐藏

#可以自启动是通过grub像内核传递参数。#应用之一是:修改root密码(忘记密码),使用e选项,传递单用户指令。

3)为编辑功能提供保护机制

启用内核文件

选择运行指定的内核得先输入密码

传递参数

出门走好路,出口说好话,出手做好事。

Linux系统启动流程

相关文章:

你感兴趣的文章:

标签云: