「GPT fdisk」の版間の差分
(同期) |
Kusanaginoturugi (トーク | 投稿記録) (テンプレート:Expansion を削除) |
||
209行目: | 209行目: | ||
{{Warning| |
{{Warning| |
||
* GPT ではディスクの末尾にセカンダリテーブルが格納されています。このデータ構造はデフォルトで512バイトのセクタ33個分(16.5 KiB)を消費します。しかし、MBR ではディスクの末尾にこのようなデータ構造は存在しません。このせいで、MBR から GPT に変換すると MBR ディスクの最後のパーティションが変換後のディスクに収まらず、変換を完全に行うことができない場合があります。このようなことが起きた場合、変換を中断し、最後のパーティションをリサイズしなければなりません。 |
* GPT ではディスクの末尾にセカンダリテーブルが格納されています。このデータ構造はデフォルトで512バイトのセクタ33個分(16.5 KiB)を消費します。しかし、MBR ではディスクの末尾にこのようなデータ構造は存在しません。このせいで、MBR から GPT に変換すると MBR ディスクの最後のパーティションが変換後のディスクに収まらず、変換を完全に行うことができない場合があります。このようなことが起きた場合、変換を中断し、最後のパーティションをリサイズしなければなりません。 |
||
− | |||
− | {{Expansion|Provide a reference to the issue.}} |
||
* Intel のチップセットを搭載していて、RAID モードで実行されているノートパソコンにおいて、バックアップの GPT が破損する既知の問題が存在します。解決策は、RAID ではなく AHCI を使用することです。 |
* Intel のチップセットを搭載していて、RAID モードで実行されているノートパソコンにおいて、バックアップの GPT が破損する既知の問題が存在します。解決策は、RAID ではなく AHCI を使用することです。 |
2023年4月5日 (水) 16:37時点における最新版
関連記事
GPT fdisk は、Rod Smith 氏により作成されたテキストモードパーティショニングツールのセットです。gdisk、cgdisk、sgdisk、そして fixparts から成ります。これらのツールは、(かつて一般的であった)Master Boot Record (MBR) パーティションテーブルではなく、Globally Unique Identifier (GUID) Partition Table (GPT) のディスク上で動作します。
gdisk、cgdisk、そして sgdisk はすべて同じ機能を持っていますが、異なるユーザインターフェイスを提供します。gdisk はテキストモードで対話的に動作し、sgdisk はコマンドライン、cgdisk は Curses ベースのインターフェイスです。この記事では、gdisk(8) と sgdisk(8) ユーティリティについて説明します。
インストール
パーティションの一覧表示
ブロックデバイス上のパーティションテーブルとパーティションを一覧表示するには、以下のコマンドを実行してください(デバイスは /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
キーを押すと、先頭セクタの一番広いブロックから末尾セクタと同じブロックの終末までが指定されます。
パーティションタイプ
パーティションのタイプを選択します。入力できる形式は、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 | /var 1
|
8310
|
4D21B016-B534-45C2-A9FB-5C16E091FD2D
|
Linux /var/tmp | /var/tmp 1
|
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
|
- systemd-gpt-auto-generator(8) は、特定の条件を満たした場合にのみ、パーティションを自動マウントします。詳細は systemd#GPT パーティションの自動マウント を見てください。
必要なパーティションが揃うまで、この手順を繰り返してください。
ディスクに変更を書き込む
w
コマンドを使って、パーティションテーブルをディスクに書き込み、終了します。
ヒントとテクニック
MBR と GPT の変換
gdisk、sgdisk、cgdisk は、データの損失を起こさずに、MBR と BSD ディスクラベルを GPT に変換することができます。この時、すべての MBR プライマリパーティションと論理パーティションは GPT に変換され、それぞれのパーティションに対して適切なパーティションタイプ GUID とユニークなパーティション GUID が割り当てられます。
変換後に、ブートローダーを再インストールして、GPT からブートするように設定し直す必要があります。
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
設定ファイルを適切に変更する必要があるかもしれません。
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 アプリケーション
EFI バージョンの gdisk パッケージはありませんが、Rod Smith 氏がビルド済みの gdisk-1.04 EFI バイナリを SourceForge にて配布しています。gdisk-efi-*.zip
をダウンロードしてアーカイブを展開してください。使用方法は gdisk_x64.efi
を EFI システムパーティションにコピーしてブートローダーか UEFI シェルから起動してください。
gdisk_x64.efi を使えばオペレーティングシステムが起動する前でもパーティションテーブルを編集できるようになります。使用方法は Linux での gdisk バイナリと変わりません。
さらなる情報については README-efi.txt をご覧ください。
参照
- GPT fdisk Tutorial - GPT fdisk の公式ウェブページ。詳細なチュートリアルがあります。
- GPT fdisk の SourceForge ページ