linux开机引导流程:
1.BIOS开机自检
BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做"硬件自检"(Power-On Self-Test),缩写为POST。
如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。
2.MBR(主引导记录):512字节:
主引导程序(Bootloader):446字节;
硬盘分区表DPT:64字节;
分区结束标记:2字节。
(MBR不属于任何一个文件系统)
PS:
如何查看MBR的第一个扇区(最前面的512个字节)
(这512个字节的最后两个字节是0x55和0xAA)
# dd if=/dev/sda of=sda.mbr bs=512 count=1
#hexdump -C sda.mbr
–》会发现是以55 aa结尾的
3.GRUB引导程序
grub是linux里的一个引导系统启动的程序。
分3个部分(阶段):
- stage 1
- stage 1.5 --》文件系统的驱动程序
- stage 2 --》文件系统的驱动程序
#cd /boot/grub/
#ls --》
device.map ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 grub.conf menu.lst splash.xpm.gz ufs2_stage1_5
fat_stage1_5 iso9660_stage1_5 minix_stage1_5 stage1 vstafs_stage1_5
4.加载内核kernel
vmlinuz-2.6.32-279.e16.i68
内核文件:被夹在到内存里执行,可以开始管理内存、cpu、磁盘等设备,
解压image映像文件,查看里面的内容。
①/boot/kernel and kernel parameter
②/boot/initrd
5. Sys V init 初始化阶段
- /sbin/init
- /sbin/mingetty
- /etc/X11/prefdm
一个文件系统下面有哪些目录:*
最后贴一个自己画的linux开机启动流程思维导图:
(注:放大即可看清)
power on–》开机
bios:系统自检、读启动顺序,启动顺序定位到MBR–》
MBR(主引导程序bootloader、DPT硬盘分区表、55aa分区结束标记):
bootloader读取DPT,知道哪一个是活动分区–》
bootloader(stage1)找到/boot分区(ext4),但是stage1识别不了ext4,于是启动stage2–》
stage里面有大量的驱动,加载驱动,例如ext4的驱动,就能读取分区(/boot/grub/grub.conf)了–》
grub.conf会加载kernel和initramfs.img文件到内存里面。–》
initramfs-版本号.img文件加载到内存里之后,会启动init进程–》
init进程起来后,会读取/etc/fstab文件、/etc/rc.sysinit、/etc/inittab–》
通过/etc/inittab文件例如知道运行级别是3了,就会加载/etc/rc.d/rc3.d/目录下的所有文件–》
例如会启动所有以f开头的服务–》
再启动/sbin/mingetty文件,提供接口来登录–》
输入用户名、密码–》
通过/ertc/passwd和/etc/shadow等文件来验证用户名和密码是否正确–》
然后再加载4个配置文件:/etc/profile、/etc/bashrc、/root/.bashrc、/root/.bash_profile–》
之后就可以使用了。
手动分割线
最后的最后,贴一个当时班里很牛的一个大神画的超级好看的思维导图。