文章目录
1.linux系统启动步骤
(1)POST加电自检
Linux系统在接通电源之后,会自动启动POST加电自检程序来对内部的各个配件进行自检;自检出现错误系统无法启动,重则停机
(2)BIOS启动引导阶段
- BOIS 基本输入输出系统
加电自检后,系统会静入BIOS阶段,在该阶段系统会启动Boot Sequence来查找引导设备,当找到有引导程序的设备时,系统会读取该引导设备的磁道一扇区mbr主引导程序,mbr会告诉系统下一步该干什么,进行下一阶段的启动
(3)GRUB启动引导阶段
- GRUB 多重操作系统启动管理器
在该阶段系统会读取/etc/grub/grub.conf 系统配置文件,该文件为系统提供了菜单及加载的kernel位置,当kerenl被成功加载到内存重时,系统将进入下一阶段
(4)kerenl内核阶段
- kerenl为系统的核心程序
进入内核阶段,系统会先探测可识别的所有硬件设备;随后系统会加载硬件驱动程序
(5)init初始化阶段
初始化阶段,系统开始完成启动前的初始化操作,根据文件执行脚本
2.linux系统故障排错
(1) BIOS硬盘引导阶段
- 查看根所在的硬盘
fdisk -l
* 所在的硬盘即为根所在的硬盘
- 模拟问题:
dd if=/dev/zero of=/dev/vda bs=446 count=1
mbr 主引导程序丢失 - 解决方法:
1)为系统添加光盘,使用光盘启动系统,进入rescue援救模式
2)chroot /mnt/sysimage
切换到主机真实环境
grub2-install /dev/vda
启动分区所在的硬盘
exit
退出主机环境
exit
退出援救模式
3)重新设置用硬盘启动系统,系统恢复正常 - 实验现象:
问题出现后,reboot系统,将停留在下面这个画面:
为系统添加镜像:
重置选项,让系统用镜像安装:
援救系统:
(2)grub文件引导阶段
1)引导文件丢失
- 模拟问题:
rm -fr /boot/grub2/grub.cfg
- 解决方法:
umane -r
查看内核版本号
未重启系统时:
grub2-mkconfig > /boot/grub2/grub.cfg
重新建立引导文件
重启系统时:
grub > set root='hd0,msdos1' 给系统引导
grub > linux16 /root/vmlinuz-[内核版本号] ro root=/dev/vda1
grub > initrd16 /boot/initramfs-[内核版本号].img
grub > boot
grub2-mkconfig > /boot/grub2/grub.cfg 重新建立引导文件
- 实验现象:
删除引导文件后,重启系统,系统不知道下一步该干嘛,会停留在如下界面:
给系统引导:
引导系统成功后,系统中依然缺少引导文件,建立引导文件,让系统下次开机自动引导:
2)内核文件丢失
-
模拟问题:
rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64
-
解决方法:
未重启系统时:(系统中需要有镜像)
步骤与重启系统时类似,到镜像中找到我们丢失的内核引导文件,重新复制一份到/boot分区
重启系统时:
1)选择镜像启动系统
2)进入rescue模式:
chroot /mnt/sysimage
切根
mkdir /rhel7
建立一个新目录
mount /dev/sr0 /rhel7 将
镜像虚拟设备挂载到新建目录下
cd /rhel7/Packages
镜像中有几千条安装包,为了方便起见,进入到镜像中将需要的内核安装包单令存放出来cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id类似于将此内核安装包安装
cd boot
我们丢失的内核引导文件包在该包的boot目录下
cp vmlinuz-3.10.0-123.el7.x86_64 /boot
将我们丢失的内核引导文件重移回/boot分区
3)exit
切根
exit
退出援救模式
4) 用硬盘启动系统 -
实验现象:
选择以硬盘启动系统:
3)初始化镜像文件丢失
-
模拟问题:
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
-
解决方法:
未重启系统时:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
重新建立镜像文件
注: $ (umane -r) 表示引用uame -r 这条命令的输出结果
重启系统时:
1)选择镜像启动系统
2)进入援救模式
chroot /mnt/sysimage
切根mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
exit
切根
exit
退出援救模式
3)选择硬盘启动系统 重新启动
- 实验现象:
重启系统出现如下停留
设置以硬盘启动系统:
4)/boot分区丢失
-
模拟问题:
rm -fr /boot
-
解决方法:
1)设置以镜像启动系统
2)进入resue模式chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda 重新安装mbr程序
mount /dev/sr0 /mnt
rpm -ivh /mnt/kernel-3.10.0-123.el7.x86_64.rpm --force 强制重新安装内核的安装包
grub2-mkconfig > /boot/grub2/grub.cfg
exit 切根
exit 退出援救模式3)设置系统以硬盘模式启动,恢复系统
-
实验现象:
重启系统后:
援救系统:
(3)开机启动级别被篡改
- 模拟问题:
systemctl set-defaults reboot.target
将系统启动级别设置为不断重启状态 - 解决方法:
1)reboot
系统 让系统在读秒界面停止读秒
按【e】停止读秒进入如下界面:
2)找到linux16这一行 将linux16 …ro…更改为 linux16…rw rd.break…
3)按【ctrl+x】进入虚拟用户界面:
chroot /sysroot
切根
ll /etc/systemd/system/default.target
可以看到默认启动模式为一个软链接
rm -fr /etc/systemd/system/default.target
删除之前的默认系统启动模式
ln -s /lib/systemd/system/graphical.target/etc/systemd/system/default.target
为系统重新创建一个图形化的默认启动模式的软链接
reboot
重新启动系统,系统恢复正常开机图形模式