Linux 删除 swap 分区导致系统启动失败

删掉 swap 分区, /etc/fstab 中删掉挂载 swap 一行后,系统启动报错

[  194.496292] dracut-initqueue[432]: Warning: dracut-initqueue: starting timeout scripts
[  195.038614] dracut-initqueue[432]: Warning: dracut-initqueue: timeout, still waiting for following initqueue hooks:
[  195.040135] dracut-initqueue[432]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2fmapper\x2frl_anonymous-root.sh: "if ! grep -q After=remote-fs-pre.target /run/systemd/generator/systemd-cryptsetup@*.service 2>/dev/null; then
[  195.042941] dracut-initqueue[432]:     [ -e "/dev/mapper/rl_anonymous-root" ]
[  195.043926] dracut-initqueue[432]: fi"
[  195.044506] dracut-initqueue[432]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2frl_anonymous\x2froot.sh: "[ -e "/dev/rl_anonymous/root" ]"
[  195.046399] dracut-initqueue[432]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2frl_anonymous\x2fswap.sh: "[ -e "/dev/rl_anonymous/swap" ]"
[  195.048290] dracut-initqueue[432]: Warning: dracut-initqueue: starting timeout scripts
Bash

重启系统按 e 删除加载 swep 分区的代码,然后按 ctrl+x 启动:

                               GRUB version 2.06

 +----------------------------------------------------------------------------+
 |load_video                                                                  | 
 |set gfxpayload=keep                                                         |
 |insmod gzio                                                                 |
 |linux ($root)/vmlinuz-5.14.0-570.17.1.el9_6.x86_64 root=/dev/mapper/rl_anon\|
 |ymous-root ro resume=/dev/mapper/rl_anonymous-swap rd.lvm.lv=rl_anonymous/r\|
 |oot rd.lvm.lv=rl_anonymous/swap console=ttyS0                               |
 |initrd ($root)/initramfs-5.14.0-570.17.1.el9_6.x86_64.img                   |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            | 
 +----------------------------------------------------------------------------+

      Minimum Emacs-like screen editing is supported. TAB lists           
      completions. Press Ctrl-x or F10 to boot, Ctrl-c or F2 for          
      a command-line or ESC to discard edits and return to the GRUB menu.
Bash

启动系统后编辑 GRUB 配置:

sudo vim /etc/default/grub

# 修改 GRUB_CMDLINE_LINUX 参数
GRUB_CMDLINE_LINUX="resume=/dev/mapper/rl_anonymous-swap rd.lvm.lv=rl_anonymous/root rd.lvm.lv=rl_anonymous/swap console=ttyS0"
# 修改为
GRUB_CMDLINE_LINUX="rd.lvm.lv=rl_anonymous/root console=ttyS0"
Bash

更新 GRUB 配置:

# 对于 BIOS 系统:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 对于 UEFI 系统:
sudo grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
# 或者根据您的发行版:
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Bash

重新生成 initramfs:

sudo dracut -f --regenerate-all
Bash

重启顺利进入系统。

如果还是无法启动检查 /boot/loader/entries 下的文件:

[root@k8s-node-02 ~]# cat /boot/loader/entries/*.conf
title Rocky Linux (0-rescue-a84d89b6045044e29498209ecc49c25e) 9.6 (Blue Onyx)
version 0-rescue-a84d89b6045044e29498209ecc49c25e
linux /vmlinuz-0-rescue-a84d89b6045044e29498209ecc49c25e
initrd /initramfs-0-rescue-a84d89b6045044e29498209ecc49c25e.img
options root=/dev/mapper/rl_anonymous-root ro resume=/dev/mapper/rl_anonymous-swap rd.lvm.lv=rl_anonymous/root rd.lvm.lv=rl_anonymous/swap console=ttyS0 
grub_users $grub_users
grub_arg --unrestricted
grub_class rocky
title Rocky Linux (5.14.0-570.17.1.el9_6.x86_64) 9.6 (Blue Onyx)
version 5.14.0-570.17.1.el9_6.x86_64
linux /vmlinuz-5.14.0-570.17.1.el9_6.x86_64
initrd /initramfs-5.14.0-570.17.1.el9_6.x86_64.img
options root=/dev/mapper/rl_anonymous-root ro resume=/dev/mapper/rl_anonymous-swap rd.lvm.lv=rl_anonymous/root rd.lvm.lv=rl_anonymous/swap console=ttyS0 
grub_users $grub_users
grub_arg --unrestricted
grub_class rocky
Bash

更新所有 BLS 配置文件:

sed -i 's/resume=\/dev\/mapper\/rl_anonymous-swap//g' /boot/loader/entries/*.conf
sed -i 's/rd.lvm.lv=rl_anonymous\/swap//g' /boot/loader/entries/*.conf
sed -i 's/  / /g' /boot/loader/entries/*.conf  # 清理多余空格
Bash
上一篇