パーティションテーブルの順序を修正するにはどうすればいいですか?

パーティションテーブルの順序を修正するにはどうすればいいですか?

私は完全に新しい Linux ディストリビューション (Mageia) をインストールするつもりだったので、これをパーティションを再編成する機会だと考えました。Linux 以外のパーティション (Windows、復元など) をすべて先頭に置き、Linux のパーティションを最後に置くことで、さらにいくつかのディストリビューションをテストしたい場合に新しい Linux パーティションを簡単に作成できるようにしたいと考えました。

GParted を使用して既存の Linux パーティションを削除し (保存したいデータはバックアップしておいた)、残りのパーティションを最前面に移動しました。後で Mageia インストーラーで Linux パーティションを作成します。

少し時間がかかりましたが、最終的に GParted は問題なく終了しました。Mageia も問題なくインストールされました。

Mageia を起動すると、ATI Radeon ビデオ カードに何らかの (無関係の?) 問題が発生し (まだ解決されていません)、コンソールだけが残り、再起動すると、画面がすばやくError: Can't have overlapping partitions切り替わりました。

問題ない、GPartedをもう一度起動して修正すればい​​い、と思った。残念ながら、GPartedはディスク全体を未割り当てとして表示している。さて、Linuxに戻る。コマンドラインからpartedを起動すると、

[root@localhost ~]# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: Can't have overlapping partitions.

fdiskより多くの情報が得られるはずであり、実際にそうなりました:

[root@localhost ~]# fdisk -l -u /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2bd2c32a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS
/dev/sda2          208845  1953520064   976655610    5  Extended
/dev/sda3       950740992  1013655551    31457280    7  HPFS/NTFS
/dev/sda4      1013655552  1015754751     1049600   12  Compaq diagnostics
/dev/sda5          208896   409808895   204800000    7  HPFS/NTFS
/dev/sda6       409810944   950740991   270465024    7  HPFS/NTFS
/dev/sda7      1015757883  1034184374     9213246   82  Linux swap / Solaris
/dev/sda8      1034184438  1953520064   459667813+  83  Linux

パーティションの開始で並べ替えると、/dev/sda5およびが/dev/sda6呼び出され/dev/sda3/dev/sda4その逆も行われるようです。

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS
/dev/sda2          208845  1953520064   976655610    5  Extended
/dev/sda5          208896   409808895   204800000    7  HPFS/NTFS
/dev/sda6       409810944   950740991   270465024    7  HPFS/NTFS
/dev/sda3       950740992  1013655551    31457280    7  HPFS/NTFS
/dev/sda4      1013655552  1015754751     1049600   12  Compaq diagnostics
/dev/sda7      1015757883  1034184374     9213246   82  Linux swap / Solaris
/dev/sda8      1034184438  1953520064   459667813+  83  Linux

testdiskグーグルで調べたところ、これを修正できることがわかりました。

  1. どのように使用すればいいですかtestdisk?インターフェースが非常にわかりにくいです。
  2. Linux/Windows から実行できますか? それともライブ バージョンを起動する必要がありますか?

前もって感謝します、

ニック


以下の回答の指示に従いましたが、機能しません。

以下のパーティションを再作成する必要があります:

/dev/sda3       950740992  1013655551    31457280    7  HPFS/NTFS
/dev/sda4      1013655552  1015754751     1049600   12  Compaq diagnostics

次のようなことが起こります:

[root@localhost ~]# fdisk /dev/sda

Command (m for help): d
Partition number (1-8): 3

Command (m for help): d
Partition number (1-8): 4

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (950743040-1953520064, default 950743040): 950740992
Value out of range.
First sector (950743040-1953520064, default 950743040):

最初のパーティションは95074から始まる必要があります0992しかし、新しいものは95074から始まるかもしれない3040

どうすればいいですか?

答え1

パーティションの順序を修正するために私が見つけた最善の解決策:

Enter into the disk partition place: 
fdisk /dev/sda

Command (m for help):   m  
Command action
  ...
   l   list known partition types
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):   x

Expert command (m for help):   m
Command action
...
   f   fix partition order
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   v   verify the partition table
   w   write table to disk and exit

Expert command (m for help):   f
Done.

Expert command (m for help):   w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

終わり!

答え2

重複パーティションの問題は、PC パーティションの特殊性によって部分的に発生します。

パーティション テーブルには、ちょうど 4 つの「プライマリ パーティション」エントリ用のスペースがあります。4 つ以上のパーティションが必要な場合は、「拡張」パーティションと呼ばれるメカニズムがあります。これは、実際には大きなパーティション (この場合はパーティション #2) を作成し、そのパーティションに独自のサブパーティション テーブルを作成して、「論理」パーティションと呼ばれる追加のエントリを許可します。

実行したことは、セクター 208845 から 1953520064 に及ぶ拡張パーティションを作成することですが、さらに、「拡張」パーティション用に予約されたディスク領域と重複する追加のプライマリ パーティション 3 と 4 も作成されます。

問題を解決する最も簡単な方法は次のとおりです。

  • Linux fdiskを使用してパーティション3と4を削除する
  • 以前と同じセクターの開始/終了値を使用して、拡張パーティション内の論理パーティションとして再作成します(再びfdiskを使用)。

論理パーティションの順序をディスク上の「物理的な」位置に合わせて変更したい場合は、fdiskこちらも役立ちます。拡張機能を有効にするには「x」を押して、 ix パーティション順序機能。その後、Linux システム用に を調整する必要があるかもしれませんfstab。Windows は GUID ベースのパーティション識別を持っているので、順序を気にする必要はありません。

答え3

注意: fdisk の高度な修正オプションを試し、システムを再起動しました。これにより、私のケースでは /dev/sda8 が /dev/sda5 になり、結果として /boot/grub は変更されないという悲惨な結果になりました。

したがって、この問題のマングリングを回避するための明らかな修正方法は次のとおりです。

$ fdisk /dev/sda
x
f
w
$ update-grub
$ grub-install

ただし、一部のシステムでは非推奨になっているようなので、まずは grub コマンド (上記) がインストールされていることを確認してください。

関連情報