fdisk

提供: ArchWiki
2024年6月15日 (土) 23:22時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎パーティションの確認: 更新)
ナビゲーションに移動 検索に移動

関連記事

util-linux fdisk はダイアログで操作するコマンドラインユーティリティで、ハードディスク上のパーティションテーブルやパーティションを作成・編集することができます。ハードディスクはパーティションに分割され、その分割情報はパーティションテーブルに記述されます。

この記事では fdisk(8) とその派生である sfdisk(8) ユーティリティについて解説します。

ノート: util-linux 2.23 以降、fdiskGPT をサポートしています。[1] GPT に対しては gptfdisk を使うこともできます。詳細は gdisk を見てください。
ヒント: Curses ベースのユーザインターフェイスで基本的なパーティショニング機能を使いたい場合は、cfdisk(8) を使うことができます。

インストール

fdisk とその派生ユーティリティは、util-linux パッケージにより提供されています。このパッケージは base メタパッケージの依存パッケージです。

パーティションの確認

ブロックデバイス上のパーティションテーブルとパーティションを確認するには、以下を実行します (デバイスの名前 /dev/sda/dev/nvme0n1/dev/mmcblk0 は適当に置き換えてください):

# fdisk -l /dev/sda
ノート: デバイスを指定しなかった場合、fdisk/proc/partitions の全てのパーティションを表示します。

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

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

GPT と MBR のどちらでも sfdisk-d/--dump オプションを使ってデバイスのパーティションレイアウトをファイルに保存できます。/dev/sda デバイスを保存するには以下のコマンドを実行:

# sfdisk -d /dev/sda > sda.dump

1 GiB の ext4 パーティションが存在する場合、ファイルは以下のようになります:

sda.dump
label: gpt
label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE
device: /dev/sda
unit: sectors
first-lba: 34
last-lba: 1048576

/dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7

レイアウトを復元するには次を実行:

# sfdisk /dev/sda < sda.dump

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

パーティショニングするときはまずパーティションテーブルを作成します。その後、望ましいパーティションスキームにあわせてパーティションを作成します。MBRGPT のどちらを使用するかについてはパーティションテーブルを見てください。

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

最近のバージョンの fdisk はデフォルトの表示単位にシリンダーを使用する古いシステムのサポートや、MS-DOS との互換性をデフォルトで廃止しています。fdisk は自動的に全てのパーティションを2048セクタ (1024 KiB、1セクタあたり 512 B) にアライメントします。なので、すべての Advanced Format HDD と、全てではないにしても大半の SSH と互換性があるはずです。つまりデフォルト設定で正しいアライメントが行われます。

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

# fdisk /dev/sda

これで、fdisk の対話が開始され、コマンドを実行してパーティショニングを行うことができます。

新しいテーブルの作成

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

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

パーティションの作成

n コマンドで新しいパーティションを作成します。MBR パーティションタイプ、パーティション番号、開始セクタ、終わりのセクタを入力します。

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

パーティションタイプ

MBR を使用している場合、fdisk は MBR パーティションタイプを尋ねてきます。プライマリパーティションを作成したい場合は p と、拡張パーティションを作成したい場合は e と入力してください。プライマリパーティションは4つまで作成できます。

fdisk はパーティションタイプ ID を尋ねずに、デフォルトで 'Linux filesystem' を使用します。これは後で変更できます。

パーティション番号

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

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

先頭と末尾のセクタ

パーティションの先頭のセクタは、セクタ番号を使って絶対値で指定しなければなりません。パーティションの末尾のセクタは、セクタ番号で絶対値で指定するか、あるいはキビバイト(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 以上のサイズを使うと良いでしょう。このようにサイズを指定すれば、パーティションは常にデバイスの特性に従ってアライメントされます。
  • MBR パーティションテーブルのディスクでは、ディスクの末尾に512バイトのセクタ33個分(16.5 KiB)のパーティショニングされていない空き領域を作っておくことで、MBR と GPT の変換ができるようになります。
  • EFI システムパーティションには、タイプ EFI System を指定する必要があります。
  • GRUB を GPT のディスクにインストールする際は、タイプ BIOS bootBIOS ブートパーティションが必要です。
  • スワップパーティションには Linux swap を使用することを推奨します。そうすると、Systemd がそのパーティションを自動マウントしてくれます。

これらのパーティションのサイズや配置に関する考慮事項はそれぞれの記事を見てください。

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

パーティションタイプの変更

それぞれのパーティションには、1つのタイプが割り当てられます。MBR では、パーティション ID を使います。GPT では、パーティションタイプ GUID を使います。

パーティションのタイプを変更するには、t を入力してください。デフォルトでは Linux filesystem が使用され、ほとんどのユースケースで問題ないはずです。

ヒント:

パーティションを起動可能にする

a を入力することで、MBR パーティションを起動可能にすることができます。

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

ディスクにテーブルを書き込んで終了するには w コマンドを使います。

パーティションの移動

警告: パーティションはオフラインでのみ移動できます。パーティションを移動するには、パーティション全体をディスクに書き直す必要があるため、時間がかかり、潜在的に危険な操作になります。バックアップを強くお勧めします! sfdisk のマニュアルページによると、 'この操作は危険を伴います"

パーティションを移動するには、パーティションを移動する場所に空き領域が必要です。必要に応じて、パーティションとその上のファイルシステムを縮小することでスペースを空けることができます。 Parted#パーティションの縮小 を参照してください。パーティションを再配置するには:

# echo '+sectors,' | sfdisk --move-data device -N number

ここで、sectors はパーティションを移動するセクターの数です(+ はパーティションを前方に移動することを示します)、device はパーティションを保持するデバイスであり、number はパーティション番号です。ディスクの中央または先頭に新しいパーティションを追加する場合は、パーティションの番号を付け直す必要があることに注意してください。 #パーティションのソート または fdisk の "extrafunctionality" モードを参照してください。

ヒントとテクニック

パーティションのソート

パーティションの合間に新しいパーティションを作成したり、パーティションを削除した場合に、以下のコマンドでパーティションを並び替えられます。

# sfdisk -r /dev/sda

永続的なブロックデバイスの命名を使っていない場合、パーティションを並び替えたら /etc/fstab/etc/crypttab ファイルを修正する必要があるかもしれません。

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

参照

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