私はこれをより簡単な方法で行いました:
# sfdisk -d /dev/sdb > sdb.bkp
安全のためにコピーを残す
# cp sdb.bkp sdb.new
私の場合のように、行の順序とパーティション番号のみを変更して、sdb.new を編集します。
から
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 1026048, size=975747120, Id=83
/dev/sdb2 : start= 2048, size= 204800, Id=83
/dev/sdb3 : start= 206848, size= 819200, Id= b
/dev/sdb4 : start= 0, size= 0, Id= 0
へ
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 2048, size= 204800, Id=83
/dev/sdb2 : start= 206848, size= 819200, Id= b
/dev/sdb3 : start= 1026048, size=975747120, Id=83
/dev/sdb4 : start= 0, size= 0, Id= 0
その後、ディスク パーティション テーブルに戻しますか?
# sfdisk /dev/sdb < sdb.new
gparted
を使用してディスクの先頭に 2 つの小さなパーティションを追加するために唯一のパーティション (sdb1) を縮小して右にシフトした後、番号付けシーケンスが壊れました。 .
私の場合のように、最後のコマンドが機能しない場合は、次のように変更します。
# sfdisk --no-reread -f /dev/sdb < sdb.new
参考までに、<strong>それは悪い考えです そして、あなたはすべてを失う可能性があります。それでもやりたい場合は、次の手順を実行してください:
<オール>
sfdisk
を使用 tool:まず、
sfdisk -d /dev/sda > sda.out
それでは、やってみましょう:
sfdisk /dev/sda -O sda-partition-sectors.save
このようなものが表示されます
Checking that no-one is using this disk right now ...
OK
Disk /dev/sda: 1018 cylinders, 124 heads, 62 sectors/track
Old situation:
Units = cylinders of 3936256 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 5 6- 23063+ 83 Linux
/dev/sda2 6 1017 1012 3890128 83 Linux
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
Input in the following format; absent fields get a default value.
<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
Usually you only need to specify <start> and <size> (and perhaps <type>).
/dev/sda1 :
ここで、「sda1」パーティションの新しい詳細を提供するよう求めています。したがって、ここで sda2 の番号を指定する必要があります。そこで、ここに「6 1012」と入力して Enter キーを押します:
/dev/sda1 :6 1012
/dev/sda1 6 1017 1012 3890128 83 Linux
/dev/sda2 :
今すぐチェック Enter を押した後に表示された数値が正確である場合 sda2 について以前に印刷されたものと同じです。よろしければ、sda2 の新しい番号を指定してください:
/dev/sda2 :0
/dev/sda2 0+ 5 6- 23063+ 83 Linux
/dev/sda3 :
今回は私の場合は「0」を入力するだけで十分でしたが、数字が間違っていないことを確認する必要があります。
次に、同じ方法で他のパーティションを続行します。すでにディスクの終わりに達している場合は、Enter キーを押すだけで十分です。最後に、すべての数値に問題がないことを再度確認し、パーティション テーブルを保存します (または保存しません)。何かを台無しにした場合は、man sfdisk
を見てください。 「-d」、「-O」、「-I」オプションの説明。
また、クレイジーな変更を行ったら、'sync' を実行して、マウントする前にパーティションを再読み込みする必要があるかもしれないことに注意してください。
既存のソリューションはすべて非常に安全に見えますが、結果として非常に複雑です。
すべてを並べ替えたかった
経験が豊富で、重要でないデータまたはバックアップ データがあり、結果として問題があれば喜んで修正する場合は、Live CD から起動して、次の方法で実行できます。
sudo fdisk /dev/sdX
次に:
x
エキスパートモードに入るf
ドライブの順序を修正します (おそらくi
必要に応じて警告を無視します)r
通常モードに戻るw
変更をディスクに書き込んで終了する
追加
一度だけ実行しただけで再テストしていないため、正確な次の手順は思い出せませんが、インストールを移動していたので、パーティションもマウントし、すべてのファイルをコピーしました:
sudo mkdir /mnt/sda4
sudo mount /dev/sda4 /mnt/sda4
sudo mkdir /mnt/sda5
sudo mount /dev/sda5 /mnt/sda5
date;cp -a /mnt/sda4/* /mnt/sda5;date
そして、パーティション ID を取得しました:
sudo blkid
新しいパーティションの UUID 値を反映するために以下を更新しました:
/mnt/sda5/boot/grub/grub.cfg
/mnt/sda5/etc/fstab
次に、GRUB2 を更新しました:
sudo grub-install --root-directory=/mnt/sda5 /dev/sda