1. 开机,系统加电,BIOS自检 Basic Input Output System
2. 根据BIOS中设置,BIOS读取启动设备引导程序 GRUB2
(1)硬盘的0磁道第一个扇区 512Byte MBR Master Boot Record 主引导记录
Bootloader 512Byte = 引导程序 446Byte + 64Byte 分区表 + 2Byte 结束位
[root@web01 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 ###破坏grub2引导程序
3. GRUB2引导程序读取配置文件/boot/grub2/grub.cfg
(1)加载/boot分区
set root=‘hd0,msdos1’
hd0: 系统识别的第一块硬盘 /dev/sda /dev/sda1 hd=hard disk
RHEL5:
root (hd0,0)
(2)加载内核(识别硬件和启动系统),以只读ro=read only方式加载根分区
linux /vmlinuz-4.18.0-305.3.1.el8.x86_64 ro root=UUID=“b8787d6f-49cc-4f14-aa68-95429fa93974”
加载根分区有三种方法
root=LABEL=/ 卷标
root=/dev/sda2 设备名
root=UUID=******* 文件系统UUID
(3)加载RAM DISK文件 initrd = init ram disk initramfs = init ram filesystem
initrd /initramfs-4.18.0-305.3.1.el8.x86_64.img 内存磁盘文件 加载根所需驱动
加载根分区是需要驱动程序,如果硬盘是SCSI硬盘或者SATA硬盘,如果硬盘是接在RAID卡上,是否需要RAID卡驱动,如果根分区是ext4文件系统或者XFS文件系统,是不是需要ext4.ko xfs.ko驱动文件
4. 加载系统第一个进程 systemd
5. 读取sysinit进行系统初始化 /usr/lib/systemd/system/sysinit.target - /usr/lib/systemd/system/sysinit.target.wants/
(1)激活udev和SELinux
(2)激活Raid和LVM
(3)设置内核参数
(4)设置主机名
(5)设置系统时钟
(6)开启磁盘配额
(7)开启sawp分区
(8)已读写的方式挂载根分区
(9)加载其他本地文件系统
(10)加载键盘布局
(11)清除锁和进程文件
6. 启动服务
#cd /etc/systemd/system/multi-user.target.wants/
7. tty终端