记录第n次修复引导区

摘要

给U盘装了archlinux后,没注意把固态上archlinux的/etc/fstab分区挂载配置文件修改了,以为是grub又坏了,干脆把挂载在/boot下的EFI 系统格式化了,孙子云:“置之死地而后生。” 从头开始

准备

插网线,喝热水

过程

  1. U盘启动进去后挂载根分区和启动分区,arch-chroot到根分区

    1
    2
    3
    4
    5
    lsblk
    mkfs.vfat -F32 /dev/${/boot} # ${/boot} 启动分区
    mount /dev/${/} /mnt # ${/} 根分区
    mount /dev/${/boot} /mnt/boot
    arch-chroot /mnt

    以上操作只能在启动盘进行,如果用完整的archlinux系统,则没有arch-chroot以及pacstrap命令
    如果使用chroot代替arch-chroot命令后,执行pacman会报非本用户错误

  2. 重新生成引导区

    1
    2
    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
    grub-mkconfig -o /boot/grub/grub.cfg

    查看有没有Linux的入口

    1
    cat /boot/grub/grub.cfg

    如果没有入口

    1
    ls /boot

    查看是否有下列文件

    1
    2
    3
    initramfs-linux.img
    intel-ucode.img
    vmlinuz-linux

    如果没有,重装linux

    1
    pacman -S linux

    如果报错
    GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.cinnamon.SettingsDaemon was not provided by any .service files
    因为pacman检测到非原来用户执行,则可以执行下面命令

    1
    mkinitcpio -p linux

    重新加载内核模块,生成文件
    再执行

    1
    2
    grub-mkconfig -o /boot/grub/grub.cfg
    ls /boot

    可以看到有了三个文件
    退出/mnt根分区,回到启动盘

    1
    2
    3
    4
    initramfs-linux.img
    intel-ucode.img
    vmlinuz-linux
    exit
  3. 重新生成分区挂载配置文件
    先删除原来的分区挂载配置文件,不然无法挂载分区,系统无法启动,再生成fstab文件
    1
    2
    rm -rf /mnt/etc/fstab
    genfstab -U /mnt >> /mnt/etc/fstab
    查看生成的硬盘UUID和分区命名,一致即可
    1
    2
    3
    4
    ls -l /dev/disk/by-uuid
    cat /mnt/etc/fstab
    exit
    poweroff
  4. 设置UEFI
    本人电脑为DELL
  • 进入BIOS
  • 选择Boot Sequence
  • Add Boot Option
  • File Name 为 /boot/EFI/grub下的grubx64.efi
  • Boot Option Name 非空
  • Apply,Exit

    结束

    修grub的周期大概是3个月一次,各种坏掉的原因都有,记录下方便下次解决。

- ETX   Thank you for reading -
  • Copyright: All posts on this blog except otherwise stated, All adopt CC BY-NC-ND 4.0 license agreement. Please indicate the source of reprint!