GPT fdisk

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

GPT fdisk は、Rod Smith 氏により作成されたテキストモードパーティショニングツールのセットです。gdiskcgdisksgdisk、そして fixparts から成ります。これらのツールは、(かつて一般的であった)Master Boot Record (MBR) パーティションテーブルではなく、Globally Unique Identifier (GUID) Partition Table (GPT) のディスク上で動作します。

gdiskcgdisk、そして sgdisk はすべて同じ機能を持っていますが、異なるユーザインターフェイスを提供します。gdisk はテキストモードで対話的に動作し、sgdisk はコマンドライン、cgdiskCurses ベースのインターフェイスです。この記事では、gdisk(8)sgdisk(8) ユーティリティについて説明します。

ヒント:
  • テキストユーザインターフェイスで基本的なパーティショニング機能を使いたい場合は、cgdisk(8) を使用できます。
  • GPT fdisk のウェブサイトには gdiskcgdisksgdisk、そして FixParts の詳細なチュートリアルがあります。

インストール

gptfdisk パッケージをインストールしてください。

パーティションの一覧表示

ブロックデバイス上のパーティションテーブルとパーティションを一覧表示するには、以下のコマンドを実行してください(デバイスは /dev/sda/dev/nvme0n1/dev/mmcblk0 のような名前です):

# gdisk -l /dev/sda

あるいは、sgdisk を使って同じことができます:

# sgdisk -p /dev/sda

パーティションテーブルのバックアップとリストア

ディスクに変更を加える前に、ドライブのパーティションテーブルとパーティションスキームをバックアップしておくと良いでしょう。また、バックアップを利用して、同じパーティションレイアウトを多数のドライブにコピーすることもできます。

sgdisk を使えば、protective MBR、メイン GPT ヘッダ、バックアップ GPT ヘッダ、そしてパーティションテーブルのコピーからなるバイナリバックアップを作成できます。以下の例では、/dev/sda のパーティションテーブルをファイル sgdisk-sda.bin へ保存します:

# sgdisk -b=sgdisk-sda.bin /dev/sda

以下を実行することで、バックアップから復元できます:

# sgdisk -l=sgdisk-sda.bin /dev/sda

現在のデバイスのパーティションレイアウト(ここでは /dev/sda)を他のドライブ(ここでは /dev/sdc)にクローンしたい場合、以下を実行してください:

# sgdisk -R=/dev/sdc /dev/sda

両方のドライブが同じコンピュータに搭載される予定であるならば、クローン先のディスクとパーティションの GUID を乱数にする必要があります:

# sgdisk -G /dev/sdc

パーティションテーブルとパーティションの作成

パーティショニングする際の最初のステップは、パーティションテーブルの作成です。その後、望ましいパーティションスキームにあわせてパーティションを作成します。

最初に、パーティションテーブルとレイアウトをバックアップすることを推奨します。

以下のセクションでは、gdisk を使用してパーティションテーブルとパーティションを作成する方法を説明しています。curses ベースの cgdisk を使うこともできますが、操作は以下と異なります。cgdisk の使用方法は cgdisk(8) を参照してください。

gdisk は、512バイトセクタ2048個分(1 MiB)のブロックサイズベースで自動的にパーティションアライメントを行います。これは、すべての Advanced Format HDD と、全てではないにしても大半の SSD と互換性があるはずです。

gdisk を使用するには、変更/編集したいブロックデバイスの名前を渡して gdisk プログラムを実行してください。以下の例では、/dev/sda に対して実行します:

# gdisk /dev/sda

新しいテーブルの作成

警告: データが含まれているディスクに新しいパーティションテーブルを作成すると、ディスク上の全てのデータが消去されます。注意して実行してください。

新しい GUID パーティションテーブルを作成して既存のパーティションデータを全て消去するには、プロンプトに o と入力します。既存のテーブルを使用する場合は次に進んで下さい。

パーティションの作成

n コマンドで新しいパーティションを作成します。ここで入力する必要のある情報は、パーティション番号、先頭のセクタ、最後のセクタ、そしてパーティションタイプです。

ノート: パーティションのサイズや場所に関する考慮事項は パーティショニング#パーティションスキーム を見てください。

パーティション番号

パーティション番号とは、パーティションに割り当てられる番号です。例えば、ディスク /dev/sda 上の番号1が割り当てられたパーティションは /dev/sda1 となります。パーティション番号は、ディスク上のパーティションの順番と必ずしも一致しているとは限りません。この場合、パーティションをソートすることができます。

パーティション番号は、gdisk によって提案されたデフォルトの番号を使うことをおすすめします。

先頭と末尾のセクタ

パーティションの先頭と末尾のセクタは、セクタ番号で、あるいはキビバイト(K)、メビバイト(M)、ギビバイト(G)、テビバイト(T)、ペビバイト(P)単位で指定することができます。

パーティションの位置の指定方法は以下の2通りあります:

  • ディスクの先頭からの絶対値。例えば、先頭のセクタとして 40M を指定すると、ディスクの先頭から 40 MiB の位置となります。
  • +size-size のように、サイズの前に +/- を付けると相対値を指定できます。例えば、デフォルトの先頭セクタから 2 GiB の点を指定するには +2G、利用可能な末尾のセクタから 200 MiB の点を指定するには -200M

何も入力しないで Enter キーを押すと、先頭セクタの一番広いブロックから末尾セクタと同じブロックの終末までが指定されます。

ヒント:
  • パーティショニング時に +size{M,G,T,P} 記法による相対値を使ってパーティションサイズを指定し、常に 1 MiB 以上のサイズを使うと良いでしょう。このようにサイズを指定すれば、パーティションは常にデバイスの特性に従ってアライメントされます。
  • BIOS ブートパーティションを作成する必要がある場合、ディスクの先頭 2 TiB のどこかに 1 MiB の空き領域を作成してください(例えば、パーティションの最初のセクタとして +1M を使う)。

パーティションタイプ

パーティションのタイプを選択します。入力できる形式は、gdisk の内部タイプコードとパーティションタイプ GUID です。デフォルトのパーティションタイプである Linux filesystem(GUID 0FC63DAF-8483-4772-8E79-3D69D8477DE4、gdisk の内部タイプコード 8300) は、ほとんどのユースケースで十分なはずです。

ヒント:
一般的なパーティションタイプ
パーティションタイプ マウントポイント gdisk の
コード
パーティションタイプ GUID
Linux ファイルシステム 任意 8300 0FC63DAF-8483-4772-8E79-3D69D8477DE4
EFI システムパーティション 任意1 ef00 C12A7328-F81F-11D2-BA4B-00A0C93EC93B
BIOS ブートパーティション なし ef02 21686148-6449-6E6F-744E-656564454649
Linux x86-64 root (/) / 8304 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
Linux swap [SWAP] 8200 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Linux /home /home 8302 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
Linux /srv /srv 8306 3B8F8425-20E0-4F3B-907F-1A25A76F98E8
Linux /var /var1 8310 4D21B016-B534-45C2-A9FB-5C16E091FD2D
Linux /var/tmp /var/tmp1 8311 7EC6F557-3BC5-4ACA-B293-16EF5DF639D1
Linux LVM 任意 8e00 E6D6D379-F507-44C2-A23C-238F2A3DF928
Linux RAID 任意 fd00 A19D880F-05FC-4D3B-A006-743F0F84911E
Linux LUKS 任意 8309 CA7D7CCB-63ED-4C53-861C-1742536059CC
Linux dm-crypt 任意 8308 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7
  1. systemd-gpt-auto-generator(8) は、特定の条件を満たした場合にのみ、パーティションを自動マウントします。詳細は systemd#GPT パーティションの自動マウント を見てください。

必要なパーティションが揃うまで、この手順を繰り返してください。

ディスクに変更を書き込む

ヒント: c コマンドを使うと、パーティションの名前(PARTLABEL)を変更できます。これにより、パーティションの判別が容易になります。

w コマンドを使って、パーティションテーブルをディスクに書き込み、終了します。

ヒントとテクニック

MBR と GPT の変換

ヒント: より詳細な情報やチュートリアルは、Rod Smith 氏の Converting to or from GPT を見てください。

gdisksgdiskcgdisk は、データの損失を起こさずに、MBR と BSD ディスクラベルを GPT に変換することができます。この時、すべての MBR プライマリパーティションと論理パーティションは GPT に変換され、それぞれのパーティションに対して適切なパーティションタイプ GUID とユニークなパーティション GUID が割り当てられます。

変換後に、ブートローダーを再インストールして、GPT からブートするように設定し直す必要があります。

警告:
  • GPT ではディスクの末尾にセカンダリテーブルが格納されています。このデータ構造はデフォルトで512バイトのセクタ33個分(16.5 KiB)を消費します。しかし、MBR ではディスクの末尾にこのようなデータ構造は存在しません。このせいで、MBR から GPT に変換すると MBR ディスクの最後のパーティションが変換後のディスクに収まらず、変換を完全に行うことができない場合があります。このようなことが起きた場合、変換を中断し、最後のパーティションをリサイズしなければなりません。
  • Intel のチップセットを搭載していて、RAID モードで実行されているノートパソコンにおいて、バックアップの GPT が破損する既知の問題が存在します。解決策は、RAID ではなく AHCI を使用することです。

sgdisk で MBR パーティションテーブルを GPT に変換するには、-g/--mbrtogpt オプションを使ってください:

# sgdisk -g /dev/sda

GPT から MBR に変換するには、-m/--gpttombr オプションを使ってください。注意点として、5つ以上のパーティションを GPT から MBR に変換することはできません。

# sgdisk -m /dev/sda

パーティションのソート

パーティションのソートを行う場面としては、新しいパーティションを2つのパーティションの間に挿入したい場合や、パーティションを削除したい場合があります。この例では、/dev/sda を使用します。

# sgdisk -s /dev/sda

永続的なブロックデバイスの命名を使っていない場合、パーティションをソートした後に /etc/fstab/etc/crypttab 設定ファイルを適切に変更する必要があるかもしれません。

ノート: パーティション(例えば /dev/sda1)を利用可能にするために、カーネルは新しいパーティションテーブルを読み込む必要があります。システムを再起動するか、カーネルにパーティションテーブルを再読込みさせてください。

GPT ヘッダのリカバリ

メイン GPT ヘッダ、あるいはバックアップ GPT ヘッダが破損した場合、gdisk を使うことでどちらか片方からもう片方を復元できます。以下の例では /dev/sda となっています。

# gdisk /dev/sda

リカバリと変換のオプションである r を選択してください(上級者のみ)。そして、以下のどちらかを選択してください:

  • b: バックアップ GPT ヘッダを使う (メイン GPT ヘッダを再生成)
  • d: メイン GPT ヘッダを使う (バックアップ GPT ヘッダを再生成)

リカバリが完了したらディスクにテーブルを書き込んで w コマンドで終了してください。

GPT ディスクの拡張

ディスク(例えば、ハードウェア RAID仮想マシンディスク)を拡張した直後は、新しく追加された空き領域はまだ利用できません。GPT ではディスクの末尾にデータを格納しているからです。バックアップ GPT ヘッダーをディスクの新しい末尾に移動する必要があります。

sgdisk-e/--move-second-header オプションで実行してください。例えば:

# sgdisk -e /dev/sda

その後、パーティションを一覧表示して、空き領域の合計が増えていることを確認してください。

GPT パーティションの自動マウントを防ぐ

systemd-gpt-auto-generator(8)Discoverable Partitions Specification に準拠しているパーティションを自動マウントします。しかし、自動マウントしてほしくない場合もあるでしょう。

パーティション属性 63 "do not automount" をパーティションに設定することで、そのパーティションの自動マウントを無効化することができます。

gdisk を起動してください。例えば:

# gdisk /dev/sda

p を入力し、パーティションテーブルを表示します。自動マウントを無効化したいパーティションのパーティション番号を確認してください。

x を入力してください。これで extra functionality (experts only) のモードになります。

a を入力してください(set attributes)。確認したパーティション番号を入力し、属性 63 を設定してください。これで、Set fields are: の下に 63 (do not automount) が表示されているはずです。Enter を押し、属性の設定画面を出てください。自動マウントを無効化したいパーティション全てに対してこの手順を繰り返してください。

完了したら、w コマンドを入力してテーブルをディスクに書き込んで終了します。

他の方法としては、sgdisk-A/--attributes= オプションを使って属性を設定することができます。使用法は sgdisk(8) を見てください。例えば、パーティション属性 63 "do not automount" を /dev/sda2 に対して設定する場合は:

# sgdisk -A 2:set:63 /dev/sda

gdisk EFI アプリケーション

この記事またはセクションは情報が古くなっています。
理由: gdisk_x64.efiもはや動作しないようです。さらに、明らかにメンテナンスされていません。 (Discuss)

EFI バージョンの gdisk パッケージはありませんが、Rod Smith 氏がビルド済みの gdisk-1.04 EFI バイナリを SourceForge にて配布しています。gdisk-efi-*.zip をダウンロードしてアーカイブを展開してください。使用方法は gdisk_x64.efiEFI システムパーティションにコピーしてブートローダーUEFI シェルから起動してください。

gdisk_x64.efi を使えばオペレーティングシステムが起動する前でもパーティションテーブルを編集できるようになります。使用方法は Linux での gdisk バイナリと変わりません。

ノート: gdisk_x64.efi はファイルシステムにアクセスできません。ゆえにパーティションテーブルをファイルにバックアップしたり、バックアップファイルからパーティションテーブルを復活させたりはできません。

さらなる情報については README-efi.txt をご覧ください。

参照

翻訳ステータス: このページは en:GPT fdisk の翻訳バージョンです。最後の翻訳日は 2023-02-09 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。