Hybrid MBR を GPT / MBR ディスクに変換する。


みむらです。

普通、GPT ディスクを MBR ディスクに直したりっていうのは、
ディスクの内容飛ばせーとか言われるんですが、面倒くさいのでいいのないかなーと探していたらありました。

ってことで、この先は Linux + CUI の世界ですが、

もしGUI で Windows で完結させたい人は、たぶん
窓の杜 – 【NEWS】米Paragon、BIOS-MBRからUEFI-GPTへWindows環境を移行できる「Migrate to UEFI」

この辺使うと幸せになれるんじゃないでしょうか。使ったことないので、保証はできません・・。

 

説明に入る前に Hybrid MBR とはなんぞやということですが、

簡単に言うと、本来 GPT ディスクは MBR の部分に、
「よくわからないけど、ディスクの全ては使われてるよ!」 という情報を書いて、
GPTの部分に本来のデータを書き込んでおきます。

ですが、GPT わけわからんなシステムの場合、これだと非常にまずいわけで、
そこで、MBR 領域に「ここからここまでが、起動領域、あとはしらん!」 みたいに有効な情報を書いておき、
いい感じにしてしまおうというものです。

ただ、GPT と MBR でデータの整合性がちゃんととれるのかというところで問題があり、
あんまりやらない方がいいのですが、古いシステムで使う場合や、 Mac で Windows を動かす場合に必要な用です。

 

で、この記事でやろうとしていることは、
どっちか一つにしよう! ということで、 GPT か MBR に一本化してしまおうと言うことです。

もちろん、後述する gdisk コマンドを使えば、相互にこれらを行き来できますが、
この記事の内容もそうですが、この操作によって、データを失っても私は責任を持てません。

やるのであれば、必ずバックアップを取った上で行ってください。


使うのは 「 gdisk 」というソフトウェアです。
往年の fdisk コマンドの GPT 版ととらえて、問題無いと思います。

(作業機は Linux Mint 12 を想定していますが、 Ubuntu でも動作すると思われます。)
(Fedora, CentOS などの Redhat 系は、適宜読み替えて頂ければ、問題ないかと思われます。)

 

1.gdisk をインストール。

$sudo aptitude install gdisk

追記:
debian であれば、 backports に転がっているようです。 ( ほっそーさんありがとうございます! )
(確認環境: debian squeeze)

 

2.gdisk を起動する。

この際、 /dev/ 以下のどのデバイスファイルが操作したい対象のディスクを指しているか
知っておく必要があります。

少し触れておきますと、
大抵が sd? というように、先頭2文字が sd で始まるファイルが割り当てられていることが多く、
1番目の接続が sda, 2番目が sdb というように名前が振られています。

また、IDE 接続の場合は、 sd ではなく hd となり、 hda, hdb となっている可能性があります。
(ただ、IDE 接続でも sd で始まる場合が多いようです。前は見かけたのですがやはり libata の関係ですかね。

その他、ソフトウェア RAID

マザーボード上で提供されている RAID や、
Windows の場合は、コンピュータの管理から設定できる RAID など、
RAID コントローラを経由せずに、ソフトウェアで提供されている RAID

を使っている場合、
/dev/mapper/ 以下にいい感じでデバイスファイルが用意されている場合があります。
その場合は、そのファイルを使用してください。

・・・よくわからない場合や、
実際に RAID を使っていてよくわからない人は、ここから先は特に自己責任でお願いします。

 

例: /dev/sda が対象のHDD の場合。

$ sudo gdisk /dev/sda

なお、この先の記述は 対象HDD が /dev/sda である場合を想定しています。
適宜対象環境に併せて、読み替えてください。

Hybrid MBR から GPT にする場合は 3.1 
Hybrid MBR から MBR にする場合は 3.2
単なるMBR ディスクから GPT にする場合は 3.3
にそれぞれ記述しましたので、ご参照ください。

(純粋な GPT ディスク から MBR ディスクにする場合も、 3.2 で紹介する方法が使えます。)

 


3.1 Hybrid MBR から GPT ディスクにする。

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

Command (? for help): q

GPT が present になっていることを確認し、 q を打ち、いったん閉じる。

$ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1

このようにコマンドを打ち(数値は小さくするのはいいですが、大きくするのはNG) MBR を消す。

$ sudo gdisk /dev/sda

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with corrupt MBR; using GPT and will write new
protective MBR on save.

MBR が not present となり、削除されたことがわかる。

Command (? for help): w

w を打って Enter

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): Y

Y を打って Enter

あとは再起動すれば完了となります。

 


3.2 Hybrid MBR から MBR にする。

2 にて起動した状態のまま、

Command (? for help): r

r を打って Enter

Recovery/transformation command (? for help): g
Sorted GPT partitions and their current conversion status:
                                      Can Be
Number    Boot    Size       Status   Logical   Code   GPT Name
(なにかでる)

g を打って Enter

Type partition to change, 0 to accept, -1 to abort: 0

Converted 3 partitions. Finalize and exit? (Y/N): Y
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

数字の 0 を打って Enter,  そして 次で Y と打つことで、変換が完了し、
再起動すると適用されます。

 


3.3 MBR から GPT への変換。

MBR から GPT への変換は危険なにおいがするのですが、うーむ。

というのも、
GPT 形式のディスクは MBR 領域(ディスク先頭)と GPT 領域(ディスク末端)の両方を持っていますが、
MBR 形式のディスクは MBR 領域しか持っていないため、どうするのだろう。と。
末端のデータが壊れないのかなぁ、と心配だったりします。

$ sudo gdisk /dev/sda

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present

MBR : MBR only となっていることから、 MBR ディスクであることがわかる。

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): Y
OK; writing new GUID partition table (GPT).
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

w を押して Enter, Y を押して Enter

これで GPT ディスクに変換されます。


 

関連記事