dd 到 /null 後恢復/重新安裝 UEFI 分割區

dd 到 /null 後恢復/重新安裝 UEFI 分割區

從標題就可以猜出我是個白痴嗎?我對 USB 密鑰很生氣,並嘗試使用 add和 /null 格式化它的分割區,但我刪除了我的sda1sda2分割區。

我很快意識到自己的錯誤,並沒有關閉我的計算機,所以我的作業系統仍在運行。

我現在只有我的sda3

brw-rw---- 1 root disk 8, 0 Jun  6 19:40 /dev/sda
brw-rw---- 1 root disk 8, 3 Jun  6 19:40 /dev/sda3

如果我catfstab得到

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/mint--vg-root /               ext4    errors=remount-ro 0       1

# /boot was on /dev/sda2 during installation
UUID=f16adf40-841d-48de-afb6-bdbe66bd6eae /boot           ext2    defaults        0       2

# /boot/efi was on /dev/sda1 during installation
UUID=2008-2EBF  /boot/efi       vfat    umask=0077      0       1
/dev/mapper/mint--vg-swap_1 none            swap    sw              0       0

我必須說我有點迷失並且還沒有理解 UEFI、GRUB 是如何工作的以及如何fstab工作的。

如果我這樣做ll /boot它不為空:

-rw-r--r--  1 root root  1249214 Dec 11 15:36 abi-4.4.0-104-generic
-rw-r--r--  1 root root  1243479 Dec  2  2016 abi-4.4.0-53-generic
-rw-r--r--  1 root root   190517 Dec 11 15:36 config-4.4.0-104-generic
-rw-r--r--  1 root root   189877 Dec  2  2016 config-4.4.0-53-generic
drwxr-xr-x  2 root root     1024 Jun 23  2017 efi/
drwxr-xr-x  5 root root     1024 Apr 17 23:05 grub/
-rw-r--r--  1 root root 48667470 Apr 18 07:27 initrd.img-4.4.0-104-generic
-rw-r--r--  1 root root 48377536 Jan  6 14:59 initrd.img-4.4.0-53-generic
drwx------  2 root root    12288 Jun 23  2017 lost+found/
-rw-r--r--  1 root root   182704 Jan 28  2016 memtest86+.bin
-rw-r--r--  1 root root   184380 Jan 28  2016 memtest86+.elf
-rw-r--r--  1 root root   184840 Jan 28  2016 memtest86+_multiboot.bin
-rw-------  1 root root  3887726 Dec 11 15:36 System.map-4.4.0-104-generic
-rw-------  1 root root  3874377 Dec  2  2016 System.map-4.4.0-53-generic
-rw-------  1 root root  7104112 Dec 11 15:36 vmlinuz-4.4.0-104-generic
-rw-r--r--  1 root root  7065648 Dec 13  2016 vmlinuz-4.4.0-53-generic

但是ll /boot/efi空的。

我需要重新安裝或重新建立 2 個分割區sda1sda2?我可以下載 EFI 嗎?我能做些什麼?

答案1

人們分為兩類。人們正在進行備份。其他人已經做了備份。我相信你有後援。

您需要透過互動式重新建立分割區表fdisk 如果您的作業系統仍在運行,您可能會從核心記憶體中取得分割區邊界。

以下是我的工作系統(帶有 UEFI 的 RHEL7)的範例:

# fdisk -l /dev/sda 

Disk /dev/sda: 300.0 GB, 299966445568 bytes, 585871964 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disk label type: dos
Disk identifier: 0x000a146c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      526335      262144   83  Linux
/dev/sda2          526336     1050623      262144    6  FAT16
/dev/sda3         1050624   585871359   292410368   8e  Linux LVM

您有鬆散的 /dev/sda1 和 /dev/sda2 訊息,如下恢復。尋找帶有邊界資訊的文件:

# find /sys -name start
/sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/start
/sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/start
/sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda3/start
....

sda1從內核記憶體開始分區塊

# cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/start
2048

sda1內核記憶體中分區的結束區塊

echo end $((
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/size) \
+ \
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda1/start) \
- 1 \
))
end 526335

sda2從內核記憶體開始分區塊

# cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/start
526336

sda2內核記憶體中分區的結束區塊

echo end $((\
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/size)\
+ \
$(cat /sys/devices/pci0000:00/0000:00:02.2/0000:03:00.0/host0/target0:1:0/0:1:0:0/block/sda/sda2/start)\
- 1 \
))
end 1050623

現在您需要使用互動式重新建立具有此邊界的遺失分割區fdisk。不要忘記設定分區類型。

恢復分割區後,您需要檢查其檔案系統。您正在寫,/boot/efi 是空的,但只有在您不使用 UEFI 的情況下它才應該是空的。您可以嘗試透過重新安裝grub2-efi-x64軟體包來恢復它。

話題繼續恢復。

答案2

我修正了我的錯誤。我首先保存了對我來說重要的所有內容,並創建了一個 USB 啟動盤以防萬一。然後我使用 testDisk,由於我的分割區沒有被覆蓋,因此透過快速搜尋(UEFI sda1 和 swupdate sda2)恢復分割區表和資料沒有任何問題。我最終檢查它是否可以與 gparted 一起使用並重新啟動我的系統。

為了您的訊息,不要從您的磁碟和磁碟上使用 testDisk 進行深入搜索,它會出現錯誤並告訴您它沒有足夠的空間。

慶幸的是一切都好。感謝大家的幫忙。

相關內容