はい、/sys
でこれを行うことができます ファイルシステム。
/sys
カーネルおよびカーネル ドライバーによって動的に生成される偽のファイル システムです。
この特定のケースでは、 /sys/block/sda
に移動できます ドライブ上の各パーティションのディレクトリが表示されます。これらのフォルダーには、必要な 2 つの特定のファイル start
があります。 そして size
. start
ドライブの先頭からのオフセットと size
が含まれます パーティションのサイズです。パーティションを削除して、/sys
とまったく同じ開始位置とサイズで再作成するだけです。 .
たとえば、これは私のドライブがどのように見えるかです:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 133119 65536 83 Linux
/dev/sda2 * 133120 134340607 67103744 7 HPFS/NTFS/exFAT
/dev/sda3 134340608 974675967 420167680 8e Linux LVM
/dev/sda4 974675968 976773167 1048600 82 Linux swap / Solaris
これが /sys/block/sda
にあるものです :
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
実行中のシステムでパーティション テーブルを変更した後、情報が正確であることを確認するためにこれをテストしました
無保証で、この問題の解決に役立つスクリプトを作成しました .(ただし、仮想マシンでテストしました)
次のスクリプトのように、最初のパラメータに破損した HD を指定して実行します:
[email protected]:~$ ./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 形式です。ただし、注意 、このファイルを使用するには変更する必要があります。拡張パーティション タイプ =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
タイプを変更する必要があります 、XX からパーティション タイプの番号まで。 ブータブル 最初の行で分割します。
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
テストディスクを試しましたか?再起動した後でも、ディスクをスキャンし、失われたパーティション テーブルを回復できます。
Debian 用に事前にパッケージ化されており、おそらく Ubuntu でも利用できます。おそらく他のディストリビューションです。
gparted CD を起動している場合は、CD がプリインストールされているかどうかを確認する価値があります。