GPTディスクでの保護MBR操作

GPTディスクでの保護MBR操作

GPTフォーマットディスクの保護MBRの先頭に0x00タイプの空のパーティションを追加したいと思います。私が一つ見つけた方法ただし、このアプローチは、Linuxバージョンにはないfdisk機能の向上(特に-p/-ffdiskで利用可能なオプション)に依存しています。FreeBSDしかし、Linux)。私も一つ見つけた方法空のパーティションの追加後ろに最初のパーティション。

私の保護MBRには現在0xEEタイプのエントリがあります。これをパーティションテーブルの2番目のエントリにし、GPTパーティションテーブルやディスクのGPTパーティションを中断することなく、その前に0x00タイプの空のエントリを追加したいと思います。これはどのように達成できますか?保護MBRを編集できますが、空きセクタがないため、パーティションの追加を拒否しますfdisk -t dos <device>fdiskそして、保護MBRパーティションを削除して2つの新しいパーティションを再作成すると、ディスク上のGPTパーティションに影響を与えるかどうかはわかりません。

ベストアンサー1

これはを使用して行うことができますdd

復元する必要がある場合に備えて、MBRを保存してください。

# dd bs=1 count=512 status=none if=/dev/sdb > foo

MBRパーティションテーブルを表示します(セクタ1のバイトオフセット446で始まる64バイト)。サンプル出力は、hexdump各パーティションテーブルエントリが1行を占めるようにフォーマットされています。

# dd if=/dev/sdb bs=1 skip=446 count=64 status=none | hexdump -ve '16/1 " %02X" "\n"'
    00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

必要に応じて、最初のパーティションの行をコピーし、0番目のバイトを0x80に変更して、そのパーティションの起動フラグを設定します。 4番目のバイトを0x00に変更し、パーティションをnull型に設定します。 (各バイトの重要性はウィキペディア.) 最初のパーティションを編集した行に置き換え、元の最初のパーティションを2番目の位置に移動します。

    80 01 00 00 00 FF FF FF 01 00 00 00 FF FF FF FF
    00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

変更された16進部分文字列をディスクに書き込み、0xEEパーティションの前に空のパーティションを追加します。

# printf '\x80\x01\x00\x00\x00\xFF\xFF\xFF\x01\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x01\x00\x00\xEE\xFF\xFF\xFF\x01\x00\x00\x00\xFF\xFF\xFF\xFF' | dd bs=1 seek=446 of=/dev/sdb

変更を確認する:

# dd if=/dev/sdb bs=1 skip=446 count=64 status=none | hexdump -ve '16/1 " %02X" "\n"'
80 01 00 00 00 FF FF FF 01 00 00 00 FF FF FF FF
00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

おすすめ記事