Linux系统可通过GRUB临时或永久添加systemd.unit=emergency.target等参数进入紧急/救援模式排查故障,支持GRUB编辑、配置文件修改、GRUB命令行及UEFI工具四种方法。

如果您需要在Linux系统启动时进入类似安全模式的环境,以便排查硬件兼容性、驱动冲突或系统服务故障等问题,则可以通过修改GRUB引导参数来临时调整内核启动行为。以下是实现该目标的具体操作步骤:
一、通过GRUB编辑界面临时添加引导参数
此方法无需修改配置文件,适用于单次调试,避免误操作导致系统无法启动。在开机进入GRUB菜单时,中断默认倒计时并手动编辑当前启动项。
1、开机时在GRUB启动菜单界面按 e 键进入编辑模式。
2、使用方向键定位到以 linux 开头的行(通常包含 vmlinuz 和根文件系统路径)。
3、将光标移至该行末尾,在现有参数后追加空格及以下任一组合:
• systemd.unit=emergency.target:进入紧急模式,仅挂载根文件系统并启动minimal shell。
• systemd.unit=rescue.target:进入救援模式,挂载所有本地文件系统并启动基础服务与root shell。
• init=/bin/bash:绕过systemd,直接启动bash shell,需手动执行 mount -o remount,rw / 才能写入文件系统。
4、按 Ctrl+X 或 F10 启动修改后的内核。
二、永久修改默认引导参数
若需每次启动均应用特定参数,应更新GRUB配置文件并重新生成引导菜单。该操作影响系统默认行为,建议先确认临时参数有效后再执行。
1、以root权限编辑 /etc/default/grub 文件。
2、找到 GRUB_CMDLINE_LINUX 行,在双引号内已有的参数后添加空格及目标参数,例如:
GRUB_CMDLINE_LINUX="... systemd.unit=rescue.target"
3、保存文件并退出编辑器。
4、执行 grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)或 update-grub(Debian/Ubuntu)重新生成配置。
三、使用GRUB命令行手动启动指定目标
当GRUB菜单不可见或配置损坏时,可直接进入GRUB命令行,手动加载内核与initramfs,并指定启动目标。该方式不依赖预设菜单项,适用于严重异常场景。
1、开机时长按 Shift(BIOS模式)或持续按 Esc(UEFI模式)进入GRUB菜单,若未出现则强制重启并在POST阶段反复按键。
2、在GRUB菜单中按 C 进入命令行模式。
3、依次输入以下命令(路径需根据实际系统调整):
set root=(hd0,msdos1)(根据 ls 命令确认/boot所在分区)
linux /vmlinuz-$(uname -r) root=/dev/sda1 systemd.unit=emergency.target
initrd /initramfs-$(uname -r).img
boot
四、通过kernelstub或efibootmgr调整UEFI启动项
在纯UEFI系统中,部分发行版(如Ubuntu with kernelstub)将启动参数直接嵌入EFI启动条目,而非依赖GRUB配置。此时需使用专用工具更新固件级启动参数。
1、确认系统使用UEFI模式:运行 ls /sys/firmware/efi,存在该目录即为UEFI。
2、查看当前启动项:执行 efibootmgr -v,记录对应Linux启动项编号(如 Boot0001)。
3、使用 kernelstub 修改(若已安装):
sudo kernelstub -a "systemd.unit=rescue.target"
4、或使用 efibootmgr 直接重写启动命令(需精确匹配原参数):
sudo efibootmgr --bootnum 0001 --attr "0x0000000000000001" --unicode 'root=UUID=... systemd.unit=rescue.target'

















