说到 CentOS7 的紧急模式与救援模式,网上可以搜到漫天飞的帖子,说一下区别
RESCUE 救援模式: 救援模式启动的系统没有挂载硬盘,可以将硬盘 mount 出然后拷出数据。
EMERGENCY 紧急模式: 紧急模式启动的系统是一个最小的环境。根目录档案系统将会被挂载为仅能读取,而且将不会做任何的设定。
当然进入的方法也很简单,进入系统的时候按 e 修改 grub 菜单参数,就可以进入不同的模式
本文讨论的重点不是怎么进去,而是那两句命令,在紧急状态下反正我是记不住的
1systemd.unit=rescue.target
2systemd.unit=emergency.target
都没有之前的 single 简单,也完全记不住,既然记不住,那就干脆做到菜单里好了,这才是本文的重点。
现在都是使用 grub2 了,而不是 grub,这很重要。grub2的配置文件是 /boot/grub2/grub.cfg。
修改 grub2 有两个工具,grub2-mkconfig 和 grubby,不要同时使用这两个工具修改,会覆盖的
- grub2-mkconfig 会去搜索 /boot 目录下的内核文件,有多少个内核就会生成多少个启动项。那么如果是同一个内核,想修改不同的启动参数,做多个启动项就完蛋,他不能自动生成单内核的多个启动项
- grubby 很灵活,可以根据当前 grub2 的配置,生成一个内核,多个不同启动参数的多个启动项。
那么我们要加进去两个只是启动参数不同,内核其实一样的启动项,用 grubby 就好了
1grubby --add-kernel=\$(ls -1cat /boot/vmlinuz*|grep rescue) --title="RESCUE BOOT" --initrd=\$(ls -1cat /boot/initramfs*|grep rescue) --args="systemd.unit=rescue.target" --copy-default
2
3grubby --add-kernel=\$(ls -1cat /boot/vmlinuz*|grep rescue) --title="EMERGENCY BOOT" --initrd=\$(ls -1cat /boot/initramfs*|grep rescue) --args="systemd.unit=emergency.target" --copy-default
切忌我们之后不能运行
1grub2-mkconfig -o /boot/grub2/grub.cfg
否则上面的两个启动项菜单会消失,因为 grub2-mkconfig 配置的话一个内核只能有一个启动项
grub2-mkconfig 也有自己的强项,如果要修改缺省的菜单超时时间,grubby 就做不到了
1sed -i '/^GRUB_TIMEOUT=/s/^.*$/GRUB_TIMEOUT=10/' /etc/default/grub
2grub2-mkconfig -o /boot/grub2/grub.cfg