Linux

修復啟動分區

  • February 1, 2019

更新核心後,引導分區看起來很奇怪,ls輸出如下:

root  /usr/src > ls -l /boot/
ls: cannot access '/boot/'$'\307\005''?'$'\021''H. B': Input/output error
ls: cannot access '/boot/'$'\006'')?E'$'\020''.'$'\002\254\004': Input/output error
total 8541635
-rwxr-xr-x 1 root root   76613760 Apr  2  2052 ''$'\030''4'$'\001\307''H'$'\030\021''.'$'\f''*'$'\026'
-rwxr-xr-x 1 root root 2221816324 Nov 23  2016 '70A-V'$'\006''D..@6$'
-r-xr-xr-x 1 root root 2312722265 Feb  9  2019 'ag?m'$'\025''h?".q'$'\342''?'
-rwxr-xr-x 1 root root     112574 Oct 11 00:50  config-4.14.65-gentoo
-rwxr-xr-x 1 root root     111211 Oct 11 00:11  config-4.14.65-gentoo.old
-rwxr-xr-x 1 root root     121860 Jan 16 11:07  config-4.14.83-gentoo
-rwxr-xr-x 1 root root     121860 Jan 16 10:41  config-4.14.83-gentoo.old
-rwxr-xr-x 1 root root     122477 Feb  1 11:42  config-4.18.13-gentoo
-rwxr-xr-x 1 root root     122477 Feb  1 11:31  config-4.18.13-gentoo.old
-r-xr-xr-x 1 root root  406883360 Dec 17  2092 ' '$'\004''D'$'\002\004''P'
d????????? ? ?    ?             ?            ? ''$'\006'')?E'$'\020''.'$'\002\254\004'
drwxr-xr-x 4 root root        512 Nov  2 09:34  EFI
drwxr-xr-x 6 root root       1024 Feb  1 11:44  grub
d????????? ? ?    ?             ?            ? ''$'\307\005''?'$'\021''H. B'
-rwxr-xr-x 1 root root    3955824 Oct 11 00:51  initramfs-genkernel-x86_64-4.14.65-gentoo
-rwxr-xr-x 1 root root    4104576 Jan 16 11:07  initramfs-genkernel-x86_64-4.14.83-gentoo
-rwxr-xr-x 1 root root    4112812 Feb  1 11:44  initramfs-genkernel-x86_64-4.18.13-gentoo
-rwxr-xr-x 1 root root    4060100 Nov  1 22:10  initramfs-gentest-x86_64-4.18.13-gentoo
-rwxr-xr-x 1 root root    7947120 Nov  1 22:09  kernel-gentest-x86_64-4.18.13-gentoo
-rwxr-xr-x 1 root root        387 Oct 29 13:54  livecd-mount.sh
-rwxr-xr-x 1 root root 3630445658 Jan  1  2059 'si?_x?'$'\367\374''.'$'\341''0-'
-rwxr-xr-x 1 root root    3871048 Oct 11 00:50  System.map-4.14.65-gentoo
-rwxr-xr-x 1 root root    3579283 Oct 11 00:11  System.map-4.14.65-gentoo.old
-rwxr-xr-x 1 root root    3780712 Jan 16 11:07  System.map-4.14.83-gentoo
-rwxr-xr-x 1 root root    3780712 Jan 16 10:41  System.map-4.14.83-gentoo.old
-rwxr-xr-x 1 root root    3932691 Feb  1 11:42  System.map-4.18.13-gentoo
-rwxr-xr-x 1 root root    3936350 Feb  1 11:31  System.map-4.18.13-gentoo.old
-rwxr-xr-x 1 root root    3932456 Nov  1 22:09  System.map-gentest-x86_64-4.18.13-gentoo
-rwxr-xr-x 1 root root    8003856 Oct 11 00:50  vmlinuz-4.14.65-gentoo
-rwxr-xr-x 1 root root    7205136 Oct 11 00:11  vmlinuz-4.14.65-gentoo.old
-rwxr-xr-x 1 root root    7639840 Jan 16 11:07  vmlinuz-4.14.83-gentoo
-rwxr-xr-x 1 root root    7639840 Jan 16 10:41  vmlinuz-4.14.83-gentoo.old
-rwxr-xr-x 1 root root    7947120 Feb  1 11:42  vmlinuz-4.18.13-gentoo
-rwxr-xr-x 1 root root    7967600 Feb  1 11:31  vmlinuz-4.18.13-gentoo.old

更新後它包含奇怪的文件,如ls上面的輸出。當我嘗試刪除這些文件時,我收到boot分區變為只讀的錯誤(我當然可以使用 重新掛載它mount -o remount,rw /boot,但在每個rm命令之後它再次變為只讀)。

引導分區是一個帶有核心映像和 luks 密鑰的 grub2 USB 記憶棒。它的格式為fat32,這是我fstab的 for /boot

UUID=<my-uuid>      /boot       vfat        noatime,noauto      0 0

是否可以在不失去所有數據的情況下安全地修復此類引導分區?

看起來您的/boot文件系統已損壞。

通常,/boot系統執行時不使用該分區,除了用於安裝核心和/或引導載入程序更新。因此,很有可能備份其中的所有內容,然後解除安裝、完全銷毀然後重新創建/boot文件系統。但顯然你不應該在這樣做的時候重新啟動系統。

在這種情況下,如果可以的話,您應該首先備份所有看起來有效的文件/boot及其子目錄。

由於您的/boot分區是 U 盤,您應該使用另一個已知良好的 U 盤並開始在其上重新創建/boot。您可以使用mkfs.vfat -i <VFAT uuid without separators>與原始文件系統相同的 ID 創建一個新文件系統。

完成後,驗證它是否正常工作(即嘗試使用它啟動)。當您可以使用新棒成功啟動時,您可以嘗試fsck.vfat在原始棒上執行。如果失敗,只需擦除並重新創建它。如果事實證明實際的 USB 記憶棒出現故障,請將其物理銷毀並繼續使用您的新 USB 記憶棒。

如果不被鎖定在您的系統之外對您很重要,請考慮維護兩個引導 USB 記憶棒。請記住,U 盤有時會在沒有警告的情況下失敗。

引用自:https://unix.stackexchange.com/questions/498094