「GPT fdisk」の版間の差分
細 (→パーティションテーブルとパーティションの作成: 修正) |
(→ヒントとテクニック: 翻訳) |
||
201行目: | 201行目: | ||
=== MBR と GPT の変換 === |
=== MBR と GPT の変換 === |
||
− | {{Tip| |
+ | {{Tip|より詳細な情報やチュートリアルは、Rod Smith 氏の [https://www.rodsbooks.com/gdisk/mbr2gpt.html Converting to or from GPT] を見てください。}} |
+ | ''gdisk''、''sgdisk''、''cgdisk'' は、データの損失を起こさずに、MBR と [[Wikipedia:BSD disklabel|BSD ディスクラベル]]を GPT に変換することができます。この時、すべての MBR プライマリパーティションと論理パーティションは GPT に変換され、それぞれのパーティションに対して適切なパーティションタイプ GUID とユニークなパーティション GUID が割り当てられます。 |
||
− | ''gdisk'', ''sgdisk'' and ''cgdisk'' have the ability to convert MBR and [[Wikipedia:BSD disklabel|BSD disklabels]] to GPT without data loss. Upon conversion, all the MBR primary partitions and the logical partitions become GPT partitions with the correct partition type GUIDs and Unique partition GUIDs created for each partition. |
||
+ | 変換後に、[[ブートローダー]]を再インストールして、GPT からブートするように設定し直す必要があります。 |
||
− | After conversion, the [[boot loader]] will need to be reinstalled to configure it to boot from GPT. |
||
{{Warning| |
{{Warning| |
||
+ | * GPT ではディスクの末尾にセカンダリテーブルが格納されています。このデータ構造はデフォルトで512バイトのセクタ33個分(16.5 KiB)を消費します。しかし、MBR ではディスクの末尾にこのようなデータ構造は存在しません。このせいで、MBR から GPT に変換すると MBR ディスクの最後のパーティションが変換後のディスクに収まらず、変換を完全に行うことができない場合があります。このようなことが起きた場合、変換を中断し、最後のパーティションをリサイズしなければなりません。 |
||
− | * GPT stores a secondary table at the end of disk. This data structure consumes 33 512-byte sectors (16.5 KiB) by default. MBR does not have a similar data structure at its end, which means that the last partition on an MBR disk sometimes extends to the very end of the disk and prevents complete conversion. If this happens to you, you must abandon the conversion and resize the final partition. |
||
{{Expansion|Provide a reference to the issue.}} |
{{Expansion|Provide a reference to the issue.}} |
||
+ | * Intel のチップセットを搭載していて、RAID モードで実行されているノートパソコンにおいて、バックアップの GPT が破損する既知の問題が存在します。解決策は、RAID ではなく AHCI を使用することです。 |
||
− | * There are known corruption issues with the backup GPT on laptops that are Intel chipset based, and run in RAID mode. The solution is to use AHCI instead of RAID, if possible. |
||
}} |
}} |
||
− | + | ''sgdisk'' で MBR パーティションテーブルを GPT に変換するには、{{ic|-g}}/{{ic|--mbrtogpt}} オプションを使ってください: |
|
# sgdisk -g /dev/sda |
# sgdisk -g /dev/sda |
||
+ | GPT から MBR に変換するには、{{ic|-m}}/{{ic|--gpttombr}} オプションを使ってください。注意点として、5つ以上のパーティションを GPT から MBR に変換することはできません。 |
||
− | To convert GPT to MBR use the {{ic|-m}}/{{ic|--gpttombr}} option. Note that it is not possible to convert more than four partitions from GPT to MBR. |
||
# sgdisk -m /dev/sda |
# sgdisk -m /dev/sda |
||
− | === パーティションの |
+ | === パーティションのソート === |
+ | パーティションのソートを行う場面としては、新しいパーティションを2つのパーティションの間に挿入したい場合や、パーティションを削除したい場合があります。この例では、{{ic|/dev/sda}} を使用します。 |
||
− | This applies for when a new partition is created in the space between two partitions or a partition is deleted. {{ic|/dev/sda}} is used in this example. |
||
# sgdisk -s /dev/sda |
# sgdisk -s /dev/sda |
||
+ | [[永続的なブロックデバイスの命名]]を使っていない場合、パーティションをソートした後に {{ic|/etc/fstab}} や {{ic|/etc/crypttab}} 設定ファイルを適切に変更する必要があるかもしれません。 |
||
− | After sorting the partitions if you are not using [[Persistent block device naming]], it might be required to adjust the {{ic|/etc/fstab}} and/or the {{ic|/etc/crypttab}} configuration files. |
||
− | {{Note| |
+ | {{Note|パーティション(例えば {{ic|/dev/sda1}})を利用可能にするために、カーネルは新しいパーティションテーブルを読み込む必要があります。システムを再起動するか、カーネルに[https://serverfault.com/questions/36038/reread-partition-table-without-rebooting パーティションテーブルを再読込み]させてください。}} |
=== GPT ヘッダのリカバリ === |
=== GPT ヘッダのリカバリ === |
||
248行目: | 248行目: | ||
=== GPT ディスクの拡張 === |
=== GPT ディスクの拡張 === |
||
+ | ディスク(例えば、ハードウェア [[RAID]] や [[仮想マシン]]ディスク)を拡張した直後は、新しく追加された空き領域はまだ利用できません。GPT ではディスクの末尾にデータを格納しているからです。バックアップ GPT ヘッダーをディスクの新しい末尾に移動する必要があります。 |
||
− | After enlarging a disk (e.g. in hardware [[RAID]] or a [[virtual machine]] disk) the newly added free space will not be immediately usable since GPT keeps data at the end of the disk. You must relocate the backup GPT header to the new end of the disk. |
||
− | + | ''sgdisk'' を {{ic|-e}}/{{ic|--move-second-header}} オプションで実行してください。例えば: |
|
# sgdisk -e /dev/sda |
# sgdisk -e /dev/sda |
||
+ | その後、[[#パーティションの一覧表示|パーティションを一覧表示]]して、空き領域の合計が増えていることを確認してください。 |
||
− | Afterwards [[#List partitions|print the partition table]]; the total free space should now be increased. |
||
=== GPT パーティションの自動マウントを防ぐ === |
=== GPT パーティションの自動マウントを防ぐ === |
||
− | {{man|8|systemd-gpt-auto-generator}} |
+ | {{man|8|systemd-gpt-auto-generator}} は [https://systemd.io/DISCOVERABLE_PARTITIONS/ Discoverable Partitions Specification] に準拠しているパーティションを自動マウントします。しかし、自動マウントしてほしくない場合もあるでしょう。 |
− | + | [[Wikipedia:GUID Partition Table#Partition entries (LBA 2-33)|パーティション属性]] {{ic|63}} "do not automount" をパーティションに設定することで、そのパーティションの自動マウントを無効化することができます。 |
|
+ | ''gdisk'' を起動してください。例えば: |
||
− | Start ''gdisk'', e.g.: |
||
# gdisk /dev/sda |
# gdisk /dev/sda |
||
+ | {{ic|p}} を入力し、パーティションテーブルを表示します。自動マウントを無効化したいパーティションのパーティション番号を確認してください。 |
||
− | Press {{ic|p}} to print the partition table and take note of the partition number(s) of the for which you want to disable automounting. |
||
− | + | {{ic|x}} を入力してください。これで ''extra functionality (experts only)'' のモードになります。 |
|
− | + | {{ic|a}} を入力してください(''set attributes'')。確認したパーティション番号を入力し、属性 {{ic|63}} を設定してください。これで、{{ic|Set fields are:}} の下に {{ic|63 (do not automount)}} が表示されているはずです。{{ic|Enter}} を押し、属性の設定画面を出てください。自動マウントを無効化したいパーティション全てに対してこの手順を繰り返してください。 |
|
+ | 完了したら、{{ic|w}} コマンドを入力してテーブルをディスクに書き込んで終了します。 |
||
− | When done write the table to disk and exit via the {{ic|w}} command. |
||
− | + | 他の方法としては、''sgdisk'' で {{ic|-A}}/{{ic|1=--attributes=}} オプションを使って属性を設定することができます。使用法は {{man|8|sgdisk}} を見てください。例えば、パーティション属性 {{ic|63}} "do not automount" を {{ic|/dev/sda2}} に対して設定する場合は: |
|
# sgdisk -A 2:set:63 /dev/sda |
# sgdisk -A 2:set:63 /dev/sda |
2022年7月30日 (土) 04:30時点における版
関連記事
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 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 ページ