誤って/ dev/sdaパーティションテーブルをGPartedで上書きしました( AskUbuntuの全文 )。まだリブートしておらず、ファイルシステムはまだ完全に使用可能であるため、カーネル内のメモリからパーティションテーブルを回復できるかもしれないと言われました。それは可能ですか?もしそうなら、それをどのように回復して復元しますか?
無保証を使用して、この問題の解決に役立つスクリプトを作成しました。 (ただし、仮想マシンでテストしました)
次のように、最初のパラメーターでHDが破損している次のスクリプトを実行します。
user@Host:~$ ./repart.sh sda
の内容 repart.sh
:
#!/bin/bash
echo "unit: sectors"
for i in /sys/block/$1/$1?/; do
printf '/dev/%s : start=%d, size=%d, type=XX\n' "$(basename $i)" "$(<$i/start)" "$(<$i/size)"
done
出力はsfdisk形式です。しかし注意、このファイルは使用するために変更する必要があります。拡張パーティションのtype = 5で、すべての論理スペースと、拡張の開始と最初の論理パーティションの開始の間のスペースを使用して、サイズを増やします。
unit: sectors
/dev/sda1 : start=63, size=2040192, type=XX
/dev/sda2 : start=2040255, size=20482875, type=XX
/dev/sda3 : start=22523130, size=19197675, type=XX
/dev/sda4 : start=41720805, size=2, type=XX
/dev/sda5 : start=41720868, size=208782, type=XX
typeをXXからパーティションタイプの数に変更する必要があります。 bootableパーティションを最初の行に置きます。
unit: sectors
/dev/sda1 : start=63, size=2040192, type=83, bootable
/dev/sda2 : start=2040255, size=20482875, type=83
/dev/sda3 : start=22523130, size=19197675, type=fd
/dev/sda4 : start=41720805, size=208845, type=5
/dev/sda5 : start=41720868, size=208782, type=82
この変更を適用
cat repart.sfdisk | sfdisk -f /dev/sda
パーティションテーブルの再読み取り
partprobe
/sbin/blockdev --rereadpt
GRUBを再インストール
grub-install /dev/sda
testdisk を試しましたか?再起動した後でも、ディスクをスキャンして失われたパーティションテーブルを回復できます。
Debian用と、おそらくUbuntu用にもパッケージ化されて利用可能です。おそらく他のディストリビューションでしょう。
Gparted CDを起動する場合は、それがプリインストールされているかどうかを確認する価値があるでしょう。