Linux开机过程简要说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux开机过程简要说明相关的知识,希望对你有一定的参考价值。
Linux开机过程流程图
首先画了一个比较简单的Linux开机过程的流程图,如下所示:
开机过程简要说明
接下来简单介绍一下整个开机的流程
- 按下电源开机键,进行开机自检
在按下电源键后,服务器主板上面的Bios芯片会对服务器的CPU、内存、硬盘等信息进行健康检查,在通过检查之后才能继续进行下一步;如果没有通过,那么服务器会返回相应的告警信息。 - 加载MBR引导菜单
MBR(main boot record)位于磁盘的0柱面0磁道的1扇区,总共有512字节。它是由bootloader、dpt、结束标志三部分组成。
bootloader
前446字节,包含有主引导程序等信息。
dpt
分区表的信息,共64字节。因为每个分区表需要2个字符位,也就是16字节,因此一块磁盘最多拥有4块主分区。
结束标志
最后两个字节,它的值是55 00
查看MBR信息
我们可以通过dd命令来查看MBR里面的信息,具体操作如下:[[email protected] ~]# dd if=/dev/sda of=mbr.bin bs=512 count=1 #<==将MBR内容写入到mbr.bin文件中 [[email protected] ~]# hexdump -C mbr.bin #<==读取MBR文件的内容 00000000 eb 48 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.H..............| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 03 02 |.........|...t..| 00000040 80 00 00 80 04 81 00 00 00 08 fa 90 90 f6 c2 80 |................| 00000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc |u....Y|..1......| 00000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 f6 c2 80 |. [email protected]|<.t...R...| 00000070 74 54 b4 41 bb aa 55 cd 13 5a 52 72 49 81 fb 55 |tT.A..U..ZRrI..U| 00000080 aa 75 43 a0 41 7c 84 c0 75 05 83 e1 01 74 37 66 |.uC.A|..u....t7f| 00000090 8b 4c 10 be 05 7c c6 44 ff 01 66 8b 1e 44 7c c7 |.L...|.D..f..D|.| 000000a0 04 10 00 c7 44 02 01 00 66 89 5c 08 c7 44 06 00 |....D...f.\..D..| 000000b0 70 66 31 c0 89 44 04 66 89 44 0c b4 42 cd 13 72 |pf1..D.f.D..B..r| 000000c0 05 bb 00 70 eb 7d b4 08 cd 13 73 0a f6 c2 80 0f |...p.}....s.....| 000000d0 84 f0 00 e9 8d 00 be 05 7c c6 44 ff 00 66 31 c0 |........|.D..f1.| 000000e0 88 f0 40 66 89 44 04 31 d2 88 ca c1 e2 02 88 e8 |[email protected]| 000000f0 88 f4 40 89 44 08 31 c0 88 d0 c0 e8 02 66 89 04 |[email protected]| 00000100 66 a1 44 7c 66 31 d2 66 f7 34 88 54 0a 66 31 d2 |f.D|f1.f.4.T.f1.| 00000110 66 f7 74 04 88 54 0b 89 44 0c 3b 44 08 7d 3c 8a |f.t..T..D.;D.}<.| 00000120 54 0d c0 e2 06 8a 4c 0a fe c1 08 d1 8a 6c 0c 5a |T.....L......l.Z| 00000130 8a 74 0b bb 00 70 8e c3 31 db b8 01 02 cd 13 72 |.t...p..1......r| 00000140 2a 8c c3 8e 06 48 7c 60 1e b9 00 01 8e db 31 f6 |*....H|`......1.| 00000150 31 ff fc f3 a5 1f 61 ff 26 42 7c be 7f 7d e8 40 |1.....a.&B|..}[email protected]| 00000160 00 eb 0e be 84 7d e8 38 00 eb 06 be 8e 7d e8 30 |.....}.8.....}.0| 00000170 00 be 93 7d e8 2a 00 eb fe 47 52 55 42 20 00 47 |...}.*...GRUB .G| 00000180 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 65 |eom.Hard Disk.Re| 00000190 61 64 00 20 45 72 72 6f 72 00 bb 01 00 b4 0e cd |ad. Error.......| 000001a0 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 00 00 00 |..<.u...........| 000001b0 00 00 00 00 00 00 00 00 1d ba 08 00 00 00 80 20 |............... | 000001c0 21 00 83 9f 06 19 00 08 00 00 00 40 06 00 00 9f |[email protected]| 000001d0 07 19 82 b4 56 1e 00 48 06 00 00 00 40 00 00 b4 |[email protected]| 000001e0 57 1e 83 fe ff ff 00 48 46 00 00 b8 39 02 00 00 |W......HF...9...| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200
- 加载GRUB菜单
GRUB菜单里面包含了需要加载的系统内核信息,具体内容可以在系统中的/etc/grub.conf文件中查看。[[email protected] ~]# cat /etc/grub.conf #<==查看grub菜单中的内容 # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd-[generic-]version.img #boot=/dev/sda #<==这里说明了分区所在位置 default=0 #<==菜单项0表示第一项,如果是多系统可以修改此选项 timeout=5 #<==在菜单到自动启动系统前的停留时间,单位为sec,可按需分配 splashimage=(hd0,0)/grub/splash.xpm.gz #<==启动菜单的背景图标 hiddenmenu hiddenmenu title CentOS (2.6.32-431.el6.x86_64) #<==启动项目名称,可随意修改 root (hd0,0) #<==root所在的位置,hd0,0参考磁盘在linux下的命名与定义 kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=5d8f1941-33a9-42b5-9b2f-2ed8f87ef31f rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img #<==内核的具体参数配置等
- 加载系统内核(kernel)
从GRUB菜单中选择需要加载的系统内核,然后根据相应的信息去加载对应的系统内核。 - 启动INIT进程
系统内核加载完成后,随即会启动一个进程号为1的进程,这个进程名为INIT。[[email protected] ~]# ps -ef |grep -v grep |grep init root 1 0 0 Apr21 ? 00:00:00 /sbin/init
- 读取/etc/inittab配置文件
INIT这个进程首先会去读取/etc/inittab配置文件,这个配置文件会告诉INIT进程接下来所需要做的工作。[[email protected] ~]# egrep -v "#" /etc/inittab #<==查看除注释以外的内容 id:3:initdefault: #<==定义了系统启动时的runlevel级别
- 运行/etc/rc.d/rc.sysinit脚本
INIT进程首先会执行/etc/rc.d/rc.sysinit这个脚本,这个脚本会在开机的时候运行一次。这里面包含了开机的时候所需要做的一系列操作,例如磁盘挂载,selinux等等。 - 运行/etc/rc.d/rc脚本
INIT进程接下来会执行/etc/rc.d/rc这个脚本,这个脚本除了一些基本的信息外,最主要的是去执行对应启动级别的启动脚本。 - 启动mingetty进程
在所有的启动脚本运行完成之后,INIT进程会去启动mingetty这个进程,这个进程就会启动一个终端,也就是我们所熟悉的命令行了,系统启动过程也就此结束!!
以上是关于Linux开机过程简要说明的主要内容,如果未能解决你的问题,请参考以下文章