Linux系统启动修复

首先,我们了解一下Linux系统在启动的时候做了那哪些工作:
Linux系统启动修复_第1张图片
Linux启动过程

手动引导系统启动

主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
当MBR部分出错后,可以通过光盘引导进入急救模式,系统自带grub2-install指令重装grub到/boot/grub目录下,再切换到硬盘启动就OK啦。

一、修复GRUB引导

方法一、通过修复模式恢复

重启后系统找不到引导位置,无法从硬盘启动:

Linux系统启动修复_第2张图片

关闭虚拟机:
Linux系统启动修复_第3张图片
打开虚拟机硬件配置界面
Linux系统启动修复_第4张图片
用添加IDE光驱启动,并添加镜像源,对系统进行修复
Linux系统启动修复_第5张图片
选择Boot启动设备为CDROM
Linux系统启动修复_第6张图片
重启系统时进入修复模式
Linux系统启动修复_第7张图片
Linux系统启动修复_第8张图片
Linux系统启动修复_第9张图片
Linux系统启动修复_第10张图片
Linux系统启动修复_第11张图片
更改家目录,重新安装grub引导(ps:更改selinux配置为disabled是为了避免系统启动时间较长)
这里写图片描述
重新生成grub后,关闭虚拟机,恢复使用硬盘启动
Linux系统启动修复_第12张图片
虚拟机正常启动界面:
Linux系统启动修复_第13张图片

方法二、从启动设备中提取GRUB文件

1.GRUB配置文件丢失,且未重启系统

直接用grub2-mkconfig命令生成GRUB配置文件
Linux系统启动修复_第14张图片

2.GRUB配置文件丢失,系统重启

set root=‘hd0 msdos1‘设置系统启动时启用分区

hd0表示第一块硬盘
msdos表示分区类型

linux16 +file

   以传统的16位启动协议从"file"载入一个Linux内核映像,并将其余的字符作为内
   核的命令行参数逐字传入。这通常用于启动一些遵守Linux启动协议的特殊工具
   (例如MEMDISK)。

set root=(loop0)
linux /boot/vmlinuz-2.6.32-22-generic root=/dev/sda5 loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.32-22-generic

进入系统后用grub2-mkconfig > /boot/grub2/grub.cfg 恢复文件

[root@localhost ~]# grub2-mkconfig > /boot/grub2/grub.cfg  
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-946cb0e817ea4adb916183df8c4fc817
Found initrd image: /boot/initramfs-0-rescue-946cb0e817ea4adb916183df8c4fc817.img
done

二、修复内核文件

1.内核文件丢失,系统未重启
  • 找出文件依赖的应用
  • 从镜像安装源中取出安装包
  • 从安装包取出内核文件放到/boot目录下
[root@localhost boot]# rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64         
[root@localhost boot]# yum whatprovides /boot/vmlinuz-3.10.0-123.el7.x86_64   查看内核文件附属的安装包
Loaded plugins: langpacks
kernel-3.10.0-123.el7.x86_64 : The Linux kernel
Repo        : rhel_dvd
Matched from:
Filename    : /boot/vmlinuz-3.10.0-123.el7.x86_64
kernel-3.10.0-123.el7.x86_64 : The Linux kernel
Repo        : installed
Matched from:
Filename    : /boot/vmlinuz-3.10.0-123.el7.x86_64

将解压出来的内核文件复制在boot目录里面,即可恢复系统内核文件

[root@localhost Desktop]# rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id  
219282 blocks
[root@localhost Desktop]# cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/  
2.内核文件丢失,系统重启
  • 选取完整的软驱启动
  • 安装驱动后,目录/run/install/repo/Packages/下有我们所需的安装包
  • 复制安装包到/mnt/sysimage/mnt/下
  • 更改根目录并重安装包中提取内核文件
  • 将内核文件复制到/boot下
    Linux系统启动修复_第15张图片
初始化RAM硬盘的文件丢失

1.系统还未重启

mkinitrd 命令建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。
uname -r 是查看内核版本号

Linux系统启动修复_第16张图片
2.系统重启后如何修复

这里写图片描述
系统无法正常启动:
Linux系统启动修复_第17张图片
重新用软盘启动,并进入修复模式
Linux系统启动修复_第18张图片

启动级别发生错误

linux系统有0-6个启动级别
0表示关机,系统默认运行级别不能设置为0,否则不能正常启动
1表示单用户工作状态,root权限,用于系统维护,禁止远程登陆
2表示多用户状态
3表示完全多用户状态,登录后进入控制台命令行模式
4表示系统未使用,保留
5代表有图形模式启动
6表示正常关闭并重启,默认运行不能设为6,否则不能正常启动
更改启动级别:
这里写图片描述
系统启动错误:
Linux系统启动修复_第19张图片
在linux16行末添加启动级别数字
Linux系统启动修复_第20张图片
Ctrl+x启动后系统恢复

更改开机默认启动级别
[root@localhost Desktop]# systemctl set-default graphical.target 
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'

你可能感兴趣的:(运维学习)