/null に dd した後、UEFI パーティションを回復/再インストールする

/null に dd した後、UEFI パーティションを回復/再インストールする

タイトルからお分かりのように、私はバカです。USB キーに対して腹を立て、そのパーティションを およびdd/null でフォーマットしようとしましたが、代わりにsda1およびsda2パーティションを削除してしまいました。

私はすぐに自分の間違いに気づき、コンピュータをシャットダウンしなかったため、OS はまだ実行中です。

私には今、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 つのパーティションを再マウントまたは再作成する必要がありますかsda1? sda2EFI をダウンロードできますか? どうすればよいですか?

答え1

人々は 2 つのカテゴリに分かれています。バックアップを作成している人と、すでにバックアップを作成している人もいます。バックアップは作成されていると思います。

fdisk OS がまだ実行中の場合は、対話形式でパーティション テーブルを再作成する必要があります。カーネル メモリからパーティション境界を取得できる場合があります。

以下は私の作業システム (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 を使用してディープ検索を実行しないでください。バグが発生し、十分なスペースがないというメッセージが表示されます。

ありがたいことに、すべて大丈夫です。助けてくれてありがとう。

関連情報