linux - grub2常用修复命令
前言
在 Linux 有可能存在/boot 分区被修改或者配置文件丢失,导致无法正常启动系统。这时候就需要使用 grub2 的命令模式手动启动系统或者 iso 文件进行修复。
grub2 常用命令
gurb2 中支持了很多命令。
1、查看磁盘分区
ls -l
详细列出当前的所有设备。对于分区,会显示其 label 及 uuid。
ls (hd1,1)/
列出(hd1,1)分区下文件
2、设置 root 分区(注意,这里的 root 是 grub 的 root 变量,不是真正的 root 分区目录,这里的设置变量时候为了方便操作)
set root=(hd0,msdos1)
ls -l /
ls /
列出当前设为 root 的分区下的文件
3、loopback 挂载 ISO 镜像进行启动
loopback 命令可用于建立回放设备,如
loopback lo0 (hd0,msdos2)/centos7.iso
可以使用 lo0 设备来访问 centos7.iso 里的内容,比如说,可以从 centos7.iso 里的软盘映像中启动
loopback (hd0,msdos2)/centos7.iso
linux (lo0)/isolinux/vmlinuz
initrd (lo0)/isolinux/initrd.img
boot
要删除某一回放设备,可以使用-d 参数:
loopback -d lo0
4、boot 启动加载的配置
应用
1、在 grub2 中建议去编辑/etc/default/grub 这个配置文件,然后使用 update-grub 或者 grub-mkconfig 命令来更新 grub2 的配置文件。有可能出现不小心修改错了/boot/grub/grub.cfg 的配置文件,导致启动系统的时候,停留在 grub>的命令行界面,无法正常启动。这时候就可以通过手动加载文件,启动系统
grub> ls -l (通过ls -l 来一个分区找对应的内核启动文件)
grub> insmod xfs
grub> set root=(hd0,msdos1) (这里设置找到的boot分区)
grub> linux /vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/centos-root (root=这里设置的就是系统真正的根分区)
grub> initrd /initramfs-.3.10.0-514.el7.x86_64.img
grub> boot
启动进入系统只有,使用 grub-mkconfig 命令重新生成一个 grub.cfg 的配置文件就可以修复了。
grub-mkconfig -o /boot/grub2/grub.cfg
2、还有一种情况,就是 boot 分区被格式化,或者/boot 目录被删除了,这时候就没有配置文件了,需要借助另外的启动介质来修复了。
a、在光盘启动项里面选择 Troubleshooting 进行启动
b、接着选择 Resource a CentOS system
c、回车之后就可以进入一个 shell 进行操作了,这时候磁盘的系统默认是被挂载到/mnt/sysimage 里面
d、使用 rpm 命令安装丢失的文件
rpm -ivh /mnt/cdrom/Packages/kernel-3.10.0-514.el7.x86_64.rpm --root=/mnt/sysimage/ --force
e、安装完包以后,/boot 目录的文件就基本都有了,这时候只需要切换一下 root 环境,更新一下配置文件就可以了。
chroot /mnt/sysimage/
grub-install /dev/sda (如果磁盘头的grub被清除掉了,这里重新安装一下)
grub-mkconfig -o /boot/grub2/grub.cfg
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2019/2019-01/grub2_commands/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。