文章目录
Linux系统引导流程
1 通电
2 BIOS初始化
BIOS是固定在主板上的一组程序
主要是对硬件检测
初始化硬件时钟
3 磁盘引导
mbr=主引导记录=0磁道1扇区446
作用:
记录grub2引导文件的位置
当mbr数据丢失系统会因为找不到启动分区而停止启动
fdisk -l ## 查看磁挂载情况
dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1 ##清空系统dev/nvme0n1上的mbr数据
重启后不能正常启动 进入网络安装
要恢复正常
- 1 挂载光盘 进入Troubleshooting
- 2 选择挽救系统
- 3 选择第1项
- 4
输入chroot /mnt/sysimage 意思是将磁盘中存在的系统挂载到
/mnt/sysimage下 此时使用的shell是cdrom里的系统 - 5 使用grub2-install /dev/nvme0n1 重新安装grub2到系统硬盘上
修复成功
4 grub2 文件引导
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
rhel8中 grub2 引导
这个文件指定了启动选项
rhel8使用了/grub2/grub.cfg和
/boot/loader/entries/xxxxxxxxx.conf两个文件来完成grub过程
rhel7中 grub2 引导
在rhel7中使用/boot/grub2/grub.cfg一个文件管理grub过程
grub文件修复
rhel8
在/boot/grub2/grub.cfg 中可以看到
删掉/boot/loader/*
reboot进入这个界面
set root=‘hd0,msdos1’
linux16 /vmlinuz-4.18.0-80.el8.x86_64 ro root=/dev/mapper/rhel-root ##挂载到根分区
initrd16 /initramfs-4.18.0-80.el8.x86_64.img boot
进入系统后 尽管手动引导 但是还要修复grub文件
kerne-install add 内核版本号 内核镜像
kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
rhel7 引导修复
删除/boot/grub2/grub.cfg 进入grub界面
步骤和rhel8一样 系统版本号不同
依旧是暂时进入系统 需要生成引导文件
grub2-mkconifg > /boot/grub2/grub.cf
5 内核加载
加载内核作用:
/boot/vmlinuz-$(uname -r)
系统初始化硬件设备
只读挂在/设备
内核修复
- rhel8中
rm -fr /boot/vmlinuz-$(uname -r)
进入急救模式
chroot /mnt/sysimage 挂载光盘镜像 安装 kernel-core-4.18.0-80.el8.x86_64.rpm
注意是强制安装
- rhel7
删除内核
进入急救模式
方法和rhel8一样 只不过 kernel-core-4.18.0-80.el8.x86_64.rpm 这个包在/mnt/Packages下
6 系统初始化镜像
加载系统时钟
加载selinux
加载系统主机信息
加载/etc/fstab文件中磁盘挂在策略
加载磁盘配额
初始化系统程序开启开机启动服务
开启虚拟控制台
开启图形
/boot/initramfs-4.18.0-80.el8.x86_64.img
reboot 进入急救模式
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r
成功 启动
rhel7中步骤相同 只有系统版本不同
7 系统启动级别
系统启动级别 | |
---|---|
0 | 关机 |
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形网络模式 |
6 | 重启 |
使用systemctl set-default 加 xxxx.target 控制启动级别
恢复系统启动级别
设置为reboot.target
启动后会进入重启无限循环
按 e 进入这个界面在quiet后面加5 ctrl + x 执行
登陆成功
永久修复启动级别
修改root密码
开机按 e 进入引导文件编辑模式
在内核选项删除ro后面所有 将 ro 改为 rw 最后面加上rd.break
ctrl+x 执行
进入单用户环境后chroot /sysroot 进入root用户环境 然后就可以更改密码了
如果系统selinux开启的情况下 需要执行touch /.autorelable