在今年八月底的某次更新后猪腕,再啟動進入 Arch grub 引導之后顯示:
loading linux linux...
error: invalid cluster 0.
Unable to mount root fs on unknown-block(0,0)
...
更新把引導弄壞了硕并,只好自己修了霎褐,不過這對于 arch 也算是家常便飯,就順便記錄下馁蒂。
進入安裝啟動盤
找到之前安裝 Arch Linux 的U盤呵晚,丟了的話現(xiàn)做一個也行
連接網(wǎng)絡
因為中間隔了幾天沒用,所以系統(tǒng)可能又有更新沫屡,就需要更新到最新饵隙,因此先進行網(wǎng)絡連接
iwctl
# 進入 iwctl 交互
device list # 可以看到設備是 wlan0
station wlan0 scan
station wlan0 get-networks
station wlan0 connect wlan_name # 之后輸入密碼
# 推出 iwctl 交互
exit
掛載分區(qū)
查看硬盤分區(qū)情況
$ lsblk
output:
nvme0n1
| nvme0n1p1 400Mi efi
| nvme0n1p2 40Mi Windows mgr
| nvme0n1p3 1.9t windows
nvme1n1
| nvme1n1p1 400G ntfs
| nvme1n1p2 40G Linux swap
| nvme1n1p3 1.5t Linux filesystem
我是雙系統(tǒng),很容易理清各個分區(qū)的情況沮脖。接下來進行掛載金矛,可以直接掛載/和/boot,也可以按照安裝時從root開始完全掛載:
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme1n1p3 /mnt # 掛載 /
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme1n1p3 /mnt/home # 掛載 /home
mount /dev/nvme0n1p1 /mnt/boot # 掛載 /boot
change root后進行修復
change root 重建 fstab 與 grub引導:
$ rm -rf /mnt/etc/fstab
$ genfstab -U /mnt > /mnt/etc/fstab
$ ls -l /dev/disk/by-uuid # 查看硬盤 uuid
$ cat /mnt/etc/fstab # 對應 uuid 查看重置分區(qū)配置文件是否正常
# 接下來修復引導
$ arch-chroot /mnt
[root@archiso] $ pacman -Syyu
[root@archiso] $ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
# 若要修改 grub 參數(shù): vim /etc/default/grub
[root@archiso] $ grub-mkconfig -o /boot/grub/grub.cfg
[root@archiso] $ exit
$ umount -R /mnt
$ reboot
重啟后發(fā)現(xiàn)勺届,不僅沒修改驶俊,arch的引導直接無了,重新進去安裝盤看一下:
# 掛載同之前的操作免姿,省略
$ ls -a /mnt/boot
# 查看是否有如下文件: { initramfs-linux.img, intel-ucode.img, vmlinuz-linux }, 發(fā)現(xiàn)只有 intel-ucode.img
$ arch-chroot /mnt
[root@archiso] $ pacman -S linux
# 若報錯 GDBus.Error: ... org.cinnamon.SettingsDeamon was not provided by any .service files, 是pacman檢測到非原來用戶執(zhí)行饼酿,可以執(zhí)行: mkinitcpio -p linux
# 重新生成 grub
[root@archiso] $ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
[root@archiso] $ grub-mkconfig -o /boot/grub/grub.cfg
[root@archiso] $ exit
$ umount -R /mnt
$ reboot
重啟后引導恢復,如果Windows引導確實可以進入系統(tǒng)后執(zhí)行一下命令重建引導:
# 需要在 /etc/default/grub 中加入一行 GRUB_DISABLE_OS_PROBER=false
os-prober
grub-mkconfig -o /boot/grub/grub.cfg
至此胚膊,引導修復完畢故俐。