名前

sfdisk - ディスクパーティションテーブルの表示や操作を行う

書式

sfdisk [options] device [-N partition-number]

sfdisk [options] command

説明

sfdisk は、 ブロックデバイスのパーティション操作を行うスクリプト指向のツールである。 端末上で実行されたときは (標準入力が端末を指しているときは)、 対話モードになる。

sfdisk は、 バージョン 2.26 以降、 MBR (DOS), GPT, SUN, SGI のディスクラベルをサポートしているが、 CHS (シリンダー/ヘッド/セクター) によるアドレッシングの機能は提供していない。 CHS は Linux において重要となったことはなく、 このアドレッシングの考え方は、 最近のデバイスでは意味がない。

sfdisk によるディスクラベルの新規生成時には、 第 1 ディスクセクターは保護される。 オプション --wipe always は、 その保護を無効にする。 なお fdisk(8) と cfdisk(8) は、 デフォルトではこの領域を完全に消去する。

sfdisk は、 (バージョン 2.26 以来) デフォルトの値が使用された場合や、 パーティションの開始点に相対的なサイズが指定された場合、 あるいは、 サイズに (MiB などの) 乗数を表すサフィックスが使用された場合に、 パーティションの開始点と終了点をブロックデバイスの I/O リミットに合わせて整えるようになっている。 開始オフセットがセクターで厳密に指定された場合でも、 パーティションのサイズが相対的な形で、 すなわち乗数サフィックスをつけて指定されているならば、 I/O リミットに揃えるために、 パーティションサイズの最適化が行われるかもしれない (すなわち、 サイズが増減されるかもしれない)。

推奨される方法は、 開始オフセットを全く指定せず、 パーティションサイズを MiB, GiB などの単位で指定する方法である。 その場合 sfdisk は、 すべてのパーティションをブロックデバイスの I/O リミットに合わせて整える (I/O リミットでは細かすぎる場合には、 ディスクレイアウトに可搬性があるように、 メガバイトレベルの境界に揃える)。 デフォルトのこの動作が望ましくない場合は (よくあることとして、 非常に小さなパーティションを作りたい場合)、 オフセットとサイズをセクターで指定すればよい。 その場合 sfdisk は、 指定された数値に全面的に従い、 最適化を一切行わない。

sfdiskfdisk と違って、 SGI や SUN のディスクラベルのために標準的なシステムパーティションを作成しない。 ディスク全体を表すシステムパーティションを含めて、 すべてのパーティションを明示的に作成する必要がある。

sfdisk は (パーティションテーブルの再読み込みを行う) BLKRRPART ioctl を使用して、 対象とするデバイスがシステムや他のツールによって使用されていないことを確認する (--no-reread オプションを参照)。 この機能や sfdisk の他の動作が systemd-udevd(8) と競合する可能性がある。 衝突が起きないようにするための推奨方法は、 --lock オプションを使用することである。 排他的ロックがなされていると、 systemd-udevd はそのデバイスにおけるイベントハンドリングをスキップする。

sfdisk のプロンプトは、 ユーザーに対してのヒントでしかなく、 パーティション番号が表示されても、 (-N が指定されていなければ) そのパーティションテーブルエントリーが生成されるわけではない。 これはギャップ (gap) を持つテーブルにおいては、 特にそうである。

コマンド

以下のコマンドはどれか一つしか使えない。

[-N partition-number] device

デフォルトによる sfdisk コマンドは、 device にどんなパーティションを作成するかの具体的な指示を標準入力から読み込んで、 その指示に従ってパーティションテーブルを作成する。 入力の書式がどのようなものになるかは、 後述の説明を参照のこと。 標準入力が端末の場合 sfdisk は対話セッションを開始する。

オプションの -N が指定されている場合は、 partition-number で指示されたパーティションに変更が適用される。 そのパーティションのフィールドでも、 具体的な指定のないフィールドは、 変更されない。

なお -N を用いて、 未使用のパーティションを指定することもできる。 たとえば MBR には、 いつでも 4 個のパーティションを登録できるが、 現在使用しているパーティションは、 それより少ないことがある。 その場合 sfdisk は、 -N で指定された未使用のパーティションについては、 パーティションテーブルから取得されるデフォルトの値に従い、 プログラムに埋め込まれたデフォルトは使用しない。 --append も参照のこと。

-A, --activate device [partition-number...]

指定されたパーティション (複数指定可) のブート可能フラグを ON に切り替え、 指定されなかったすべてのパーティションのブート可能フラグを OFF にする。 すべてのパーティションのブート可能フラグを OFF にするには、 パーティションナンバーではなく、 特別な引数 '-' を使えばよい。

このアクティベーションコマンドは、 MBR と PMBR (Protective MBR) に対してのみサポートされている。 GPT のディスクラベルが検出された場合、 sfdisk は警告メッセージを表示し、 自動的に PMBR にブートフラグを記入する。

partition-number が指定されていない場合は、 ブート可能フラグのついたパーティションを一覧表示する。

--backup-pt-sectors device

現在のパーティションテーブルセクターを、 バイナリ形式でバックアップして終了する。 パーティションテーブルのバックアップ セクションを参照。

--delete device [partition-number...]

全パーティション、 あるいは指定パーティションを削除する。

-d, --dump device

sfdisk の入力に使用できるフォーマットでデバイスのパーティションをダンプする。 パーティションテーブルのバックアップ セクション参照。

-g, --show-geometry [device...]

全デバイス、 あるいは指定デバイスのジオメトリを一覧表示する。 後方互換のために、 非推奨のオプション --show-pt-geometry も、 このコマンドと同じ意味を持っている。

-J, --json device

JSON フォーマットでデバイスのパーティションをダンプする。 sfdisk は、 入力書式として JSON フォーマットを使用できない点に注意すること。

-l, --list [device...]

全デバイス、あるいは指定デバイスのパーティションを一覧表示する。 このコマンドは --verify とともに使うことができる。

-F, --list-free [device...]

全デバイス、 あるいは指定デバイスに対して、 パーティションが切られていない未使用領域を一覧表示する。

--part-attrs device partition-number [attributes]

GPT パーティションの属性ビット (attribute bits) を変更する。 attributes の指定がない場合は、 現在のパーティション設定を表示する。 引数 attributes は、 カンマまたはスペースで区切ったビット数値またはビット名のリストである。 たとえば "RequiredPartition,50,51" という文字列は、 3 個のビットを設定する。 現在サポートされている属性ビットは以下のとおり。

ビット 0 (RequiredPartition)

このビットがセットされている場合、 パーティションは、 プラットフォームが機能するために必要なものである。 つまりパーティション内容を削除または修正すると、 プラットフォーム機能を失ったり、 プラットフォームの起動や操作に失敗したりすることにつながる。 このことをパーティション生成が示しているものである。 このパーティションを削除すると、 システムは正常に動作しない。 したがってシステムハードウェアの一部分であるものとして捉えるべきである。

ビット 1 (NoBlockIOProtocol)

EFI ファームウェアはパーティション内容を無視し、 そこからの読み込みは行おうとしない。

ビット 2 (LegacyBIOSBootable)

このパーティションは、 レガシーな BIOS ファームウェアによってブート可能である。

ビット 3-47

未定義でありゼロとしなければならない。 UEFI 仕様の将来版への拡張として予約されている。

ビット 48-63

GUID に固有の目的で予約されている。 このビットの使用は、 パーティションタイプによってさまざまである。 たとえば Microsoft では、 読み込み専用をビット 60、別パーティションのシャドーコピーを 61、隠しパーティションを 62、自動マウント無効を 63 として使用する。

--part-label device partition-number [label]

GPT パーティションの名前 (ラベル) を変更する。 label の指定がない場合は、 現在のパーティションラベルを表示する。

--part-type device partition-number [type]

パーティションタイプを変更する。 type の指定がない場合は、 現在のパーティションタイプを表示する。

type 引数は、 MBR では 16 進数値、 GPT では GUID であり、 またタイプエイリアス (たとえば "linux") やタイプのショートカット (たとえば 'L') である。 後方互換のため、 オプション -c--id も、 このコマンドと同じ意味を持っている。

--part-uuid device partition-number [uuid]

GPT パーティションの UUID を変更する。 uuid の指定がない場合は、 現在のパーティション UUID を表示する。

--disk-id device [id]

ディスク識別子を変更する。 id の指定がない場合は、 現在の識別子を表示する。 識別子は GPT に対しては UUID であり、 MBR に対しては負でない整数である。

-r, --reorder device

パーティションの番号をつけ直す。 すなわち、 パーティションの番号を開始オフセットの順番にする。

-s, --show-size [device...]

すべての、 または指定されたデバイスのサイズを、1024 バイト単位で一覧表示する。 このコマンドは「非推奨」である。 blockdev(8) の使用をお勧めする。

-T, --list-types

現在のディスクラベル、 または --label オプションで指定されたディスクラベルでサポートされているパーティションのタイプ (type) のすべてを表示する。

-V, --verify [device...]

パーティションテーブルとパーティションが、 正しく見えるかどうかを検査する。

--relocate oper device

パーティションテーブルヘッダーを再配置する。 本コマンドが現在サポートしているのは GTP ヘッダーのみである。 引数 oper は以下のいずれかである。

gpt-bak-std

GPT バックアップヘッダーを、 デバイス最終の標準位置に移動する。

gpt-bak-mini

GPT バックアップヘッダーを、 最終パーティションの後ろに移動する。 なお UEFI 規格においては、 このバックアップヘッダーはデバイスの最終位置にあることが必要である。 またパーティショニングツールでは、 この規格に準拠するように、 ヘッダーの自動的な再配置を行っている。

オプション

-a, --append

新しいパーティションテーブルを作成しない。 既存のパーティションテーブルに対して、 指定されたパーティションの追加のみを行う。

なお上の場合に、 それがパーティションテーブルの最終パーティションではなかったとしても、 未使用パーティションが再利用されるかもしれない点に注意すること。 パーティションテーブル内のエントリーを指定する方法については -N も参照のこと。

-b, --backup

パーティショニングを始める前に、 現在のパーティションテーブルが格納されているセクターをバックアップする。 デフォルトのバックアップファイル名は、 ~/sfdisk-<device>-<offset>.bak である。 別の名前を使う場合は、 オプション -O, --backup-file の説明を参照のこと。 さらに詳しいことは パーティションテーブルのバックアップ セクションを参照のこと。

--color[=when]

出力をカラー表示にする。 指定が任意の引数 when には、 auto, never, always が使える。 引数 when を省略すると、 デフォルトの auto になる。 カラー表示は無効にすることもできる。 プログラムに埋め込まれた現在のデフォルトが有効か無効かを知りたければ、 --help の出力を見ればよい。 「カラー表示」セクションも参照していただきたい。

-f, --force

整合性チェックを一切行わないようにする。

--Linux

非推奨なオプションであり無視される。 パーティションの作成は、 Linux (あるいは今日のオペレーティングシステム) で問題なく使えるのがデフォルトである。

--lock[=mode]

操作するデバイスやファイルに対して、 排他 BSD ロックを用いる。 mode は任意の引数であり、 yes, no (あるいは 1 か 0) または nonblock の指定が可能である。 mode 引数が省略された場合、 そのデフォルトは yes である。 このオプションは、 環境変数 $LOCK_BLOCK_DEVICE を上書きする。 デフォルトは、 ロックを一切利用しない。 ただし systemd-udevd(8) や他のツールを用いる際の衝突は避けることが推奨される。

-n, --no-act

デバイスへの書き込み以外をすべて行う。

--no-reread

デバイスが使用中かどうかを、 パーティションテーブルの再読み込みを行う ioctl によってチェックしない。

--no-tell-kernel

パーティションの変更についてカーネルに通知しない。 使用中のディスクのパーティションを変更する場合、 このオプションを --no-reread とともに使用することをお勧めする。 変更したパーティションは、 使用 (たとえばマウントなどを) するべきではない。

-O, --backup-file path

バックアップファイルの名前をデフォルトから変更する。 ファイル名の末尾に、 デバイス名とオフセットが必ず追加されることに注意すること。

--move-data[=path]

たとえば、 パーティションの先頭をディスクの別の位置に移動するといった場合に、 パーティションの再配置をした後で、 データを移動する。 パーティションのサイズは、 操作の前後で同じでなければならない。 新旧の位置は、 オーバーラップしていても構わない。 このオプションは、 -N オプションを必須とする。 特定の 1 パーティションに対してのみ、 処理を行うためである。

任意指定の引数 path にはログファイルを指定する。 このログファイルには、 パーティションのデータに関するすべての read/wite 操作の情報が含まれる。 path に "@default" という語を指定すると、 sfdisk はログファイルとして ~/sfdisk-<devname>.move を使う。 このログは、 v2.35 以降、 任意生成のものとなった。

この操作は危険であり、 アトミックでもないことに注意すること。 したがって データのバックアップを取ることを忘れないこと!

--move-use-fsync も参照のこと。

次の例では、 最初のコマンドは、 第 1 パーティションの前に 100MiB の空き領域を作成し、 第 1 パーティションのデータ (ファイルシステムなど) を後方に移動している。 2 番目のコマンドは、 今作った空き領域に (オフセット 2048 から) 新パーティションを作っている。 最後のコマンドは、 ディスク上の順番と一致するように、 パーティションの番号をつけ直している (元の sdc1 が sdc2 になる)。

echo '+100M,' | sfdisk --move-data /dev/sdc -N 1 echo '2048,' | sfdisk /dev/sdc --append sfdisk /dev/sdc --reorder

--move-use-fsync

--move-data でデータを新しい場所に移動する際、 書き込みをするたびにシステムコール fsync(2) を使用する。

-o, --output list

出力する項目を指定する。 --help を実行すれば、 サポートされている項目一覧を見ることができる。

list+list という書式で指定すれば、 デフォルトの項目一覧を拡張することができる (たとえば -o +UUID)。

-q, --quiet

追加情報のメッセージを出さないようにする。

-u, --unit S

非推奨オプションである。 使用できる単位がセクターのみになる。 このオプションは、 --show-size コマンドを使用しているときは、 サポートされない。

-X, --label type

ディスクラベルの型を指定する (たとえば dos, gpt, ...)。 このオプションが指定されていない場合、 sfdisk は、 デバイスにすでに存在しているディスクラベルをデフォルトとして使用するが、 デバイスにまだディスクラベルが存在しないときは、 デフォルトのラベル型を dos にする。 こうしたデフォルトや現在のラベルは、 スクリプトのヘッダー行 "label: <name>" で上書きすることができる。 この --label オプションを指定しても、 sfdisk が空のディスクラベルを生成することはない (以下の「空のディスクラベル」セクションを参照)。

-Y, --label-nested type

ネストしたディスクラベルを強制的に編集する。 プライマリーなディスクラベルはあらかじめ存在していなければならない。 このオプションを使えば、 たとえば GPT のデバイス上で hybrid/protective MBR を編集することができる。

-w, --wipe when

デバイスからファイルシステムや RAID やパーティションテーブルのシグナチャーを消去する。 衝突が起きないようにするためである。 引数の when には、 auto, never, always のいずれかを指定する。 このオプションが指定されなかった場合のデフォルトは auto であり、 その場合シグナチャーが消去されるのは、 原則として対話モードのときだけである。 古いパーティションテーブルシグナチャーだけは例外で、 引数の whennever でないかぎり、 新しいパーティションテーブルが作成される前に、 必ず消去される。 auto モードの場合も、 第 1 セクター (ブートセクター) の消去は行わない。 この領域を消去するには always モードを用いることが必要である。 いずれの場合でも検出されたシグナチャーが、 警告メッセージとして通知されて、 その後に新しいパーティションテーブルが生成される。 wipefs(8) コマンドも参照のこと。

-W, --wipe-partitions when

新たに生成するパーティションからファイルシステムや RAID やパーティションテーブルのシグナチャーを消去する。 これは衝突が起きないようにするためである。 引数 when には auto, never, always を指定する。 このオプションが指定されない場合のデフォルトは auto であり、 その場合シグナチャーが消去されるのは、 対話モードのときであり、 ユーザーが承認した後である。 いずれの場合でも、 検出されたシグナチャーは警告メッセージとして通知され、 それは新たなパーティションが生成された後である。 wipefs(8) コマンドも参照のこと。

-v, --version

バージョン情報を表示して終了する。

-h, --help

ヘルプテキストを表示して終了する。

入力書式

sfdisk は 2 種類の入力書式と、 両方に共通するヘッダー行をサポートしている。

ヘッダー行

任意指定のヘッダー行では、 パーティションテーブル全体に適用される情報を指定する。 ヘッダー行の書式は以下である。

<name>: <value>

現在のところ、 認識されるヘッダーは以下のものである。

unit

パーティション分割で使う単位を指定する。 サポートされている単位は、 sectors (セクター数) だけである。

label

パーティションテーブルの型 (partition table type) を指定する。 たとえば dosgpt である。

label-id

パーティションテーブルの識別名を指定する。 識別名は、 MBR では (前に 0x のついた) 16 進数であり、 GPT では UUID である。

first-lba

GPT パーティションで使用できる最初のセクターを指定する。

last-lba

GPT パーティションで使用できる最後のセクターを指定する。

table-length

GPT パーティションの最大数を指定する。

grain

パーティションの開始、終了位置を整えるとき、 計算に使用する最小のサイズをバイト単位で指定する。 デフォルトは 1MiB であり、 このデフォルトの使用を強くお勧めする。 不明な場合は、 この変数を変更しないこと。

sector-size

セクターのサイズを指定する。 このヘッダーは参考用にあるだけであり、 sfdisk が新しいパーティションテーブルを作成するときに使うわけではない。 そのときは、 実際のデバイスに固有な値が常に使用され、 ダンプによって取得したセクターサイズは無視される。

なおヘッダー行が使用できるのは、 入力中で最初のパーティションを指定する前だけである。

フィールド名なしの書式

start size type bootable

こうした各行は、 1 つのパーティションについての記述になっている。

フィールドは、 ホワイトスペース、 カンマ (これを推奨)、セミコロンによって区切られる。 その後ろにはホワイトスペースがあってもよい。 先頭と末尾のホワイトスペースは無視される。 数値には 8 進、10 進、16 進数が使える。 デフォルトは 10 進数である。 フィールドが存在しない場合、 空の場合、 '-' として指定されている場合は、 デフォルト値が使用される。 ただし -N オプション (単一パーティションへの変更) が指定されているときは、 各フィールドのデフォルトは、 前回と同じ値になる。

start のデフォルト値は、 位置やサイズをデバイスの I/O リミットに合わせて整えたセクターの、 まだ割り当てられていない最初のものである。 ただし、 最初のパーティションのデフォルト開始オフセットは 1 MiB である。 指定するオフセットには、 乗数を表すサフィックスを続けることができる (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB)。 この場合、 数値はバイト単位のオフセットと解釈される。 v2.38 からは -N オプション (単一パーティションへの変更) が追加された。 パーティションの前方に未使用領域がある場合には、パーティション先頭を移動させることで、 パーティションサイズを拡張するものとして利用できる。

size のデフォルト値は「できるだけ大きく」である。 すなわち、 次のパーティションまで、 またはデバイスの終わりまでである。 数値の指定は、 デフォルトではセクター数と解釈されるが、 数値に乗数を表すサフィックスの 1 つ (KiB, MiB, GiB, TiB, PiB, EiB, ZiB and YiB) が続く場合は、 バイト単位のパーティションサイズと解釈され、 その上でデバイスの I/O リミットに合わせてサイズが整えられる。 数値に代えて、 1 個の '+' を使用することもでき、 その場合は、 パーティションをできるだけ大きく広げる。 '+' は、 新規パーティションでは、 デフォルトの動作と同じであることに注意すること。 すでに存在しているパーティションは、 必要に応じてサイズが変更される。

パーティションタイプ type は、 MBR (DOS) に対しては 16 進数で指定し、プレフィックス 0x をつけるかどうかは任意である。 また GPT に対しては GUID とする。 ショートカットやエイリアス指定も可能である。 非推奨となっているショートカットである 'E' や '0E' の16 進数コードとの衝突を避けるため、 MBR 16 進コードには 2 文字の英字を用いることが推奨される。 後方互換のため、 sfdisktype を解釈する際には、 パーティショニングスクリプト内ではショートカットであるものとして初めに解釈しようとする。 一方で別の場面 (たとえば --part-type コマンド) では、 最後の可能性としてショートカットと解釈しようとする。

v2.36 以降 libfdisk は、 ショートカットの拡張として、 パーティションタイプのエイリアスをサポートしている。 エイリアスにはわかりやすい語句が用いられている (たとえば "linux")。

v2.37 以降 libfdisk は、 入力としてパーティションタイプ名をサポートしている。 その際には、 大文字小文字の別や、 英数字以外の文字は無視される (たとえば "Linux /usr x86" は "linux usr-x86" と同じになる)。

サポートされているショートカットとエイリアスは、 以下のとおりである。

L - alias 'linux'

Linux。 MBR では 83 を意味し、 GPT では 0FC63DAF-8483-4772-8E79-3D69D8477DE4 を意味する。

S - alias 'swap'

swap 領域。 MBR では 82 を意味し、 GPT では 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F を意味する。

Ex - alias 'extended'

MBR 拡張パーティション。 MBR では 05 を意味する。 元々のショートカット 'E' は、 0x0E MBR パーティションタイプと衝突するため、 非推奨になっている。

H - alias 'home'

ホームパーティション。 GPT では 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 を意味する。

U - alias 'uefi'

EFI システムパーティション。 MBR では EF を意味し、 GPT では C12A7328-F81F-11D2-BA4B-00A0C93EC93B を意味する。

R - alias 'raid'

Linux RAID。 MBR では FD を意味し、 GPT では A19D880F-05FC-4D3B-A006-743F0F84911E を意味する。

V - alias 'lvm'

LVM。 MBR では 8E を意味し、 GPT では E6D6D379-F507-44C2-A23C-238F2A3DF928 を意味する。

type のデフォルトの値は、 linux である。

Linux 拡張パーティション (85) に対するショートカットは、 'Ex' に置き換えられており、 'X' は推奨されていない。

bootable は [*|-] という形で指定する。 デフォルトは not-bootable である。 このフィールドの値は、 Linux には関係がない (Linux が動いているなら、 すでに問題なくブートしているわけだ)。 だが、 ブートローダーやオペレーティングシステムによっては、 何らかの役割を果たしていることもあり得る。

フィールド名のある書式

この書式は、 フィールド名なしの書式とくらべて、 より読みやすく、 堅牢であり、 拡張性もあって、 追加の情報 (たとえば、 UUID) を指定することも可能になる。 こちらの書式を使用して、 作成するスクリプトをより読みやすくしておくことをお勧めする。

[device :] name[=value], ...

device フィールドの指定は任意である。 sfdisk は、 パーティション番号をこのデバイス名から取り出す。 そこで、 これを使用すれば、 パーティションを任意の順番で指定することが可能になる。 この機能は、 主に --dump で使用されている。 パーティション番号に確信がない場合は、 device フィールドを使用してはいけない。

value は、 引用符で囲むことができる (たとえば、 name="This is partition name")。 フィールド start= および size= は、 フィールド名なしの書式と同様に '+' と '-' をサポートする。

現在のところ、 サポートされているヘッダーは以下である。

start=number

デフォルトは、 位置やサイズをデバイスの I/O リミットに合わせて整えたセクターの、 まだ割り当てられていない最初のもの。 ただし、 最初のパーティションのデフォルトの開始オフセットは 1 MiB である。 指定するオフセットには、 乗数を表すサフィックス (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB) を続けた場合、 数値はバイト単位のオフセットと解釈される。

size=number

パーティションのサイズをセクター数で指定する。 数値には乗数を表すサフィックスを続けることができる (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB)。 その場合、 数値はバイト単位のサイズと解釈され、 サイズがデバイスの I/O リミットに合わせて整えられる。

bootable

パーティションにブート可能の印をつける。

attrs=string

パーティションの属性。 普通は、 GPT パーティションの属性ビットである。 GPT-bits ストリングのフォーマットについては、 --part-attrs を参照のこと。

uuid=string

GPT パーティションの UUID。

name=string

GPT パーティションの名前。

type=code

MBR パーティションでは (0x を前につけない) 16 進数、 GPT パーティションでは GUID。 フィールド名なしの書式、またはタイプ名 (たとえば type="Linux /usr (x86)") と同様に、 短縮表記も使える。 フィールド名なしの書式についての詳細は、前節を参照のこと。 後方互換のために、 Id= フィールドも同じ意味を持っている。

空のディスクラベル

sfdisk は、 デフォルトではパーティションの存在しないパーティションテーブルを作成しない。 デフォルトでは、 パーティションを記述する行が、 スクリプト中に存在しなければならない。 そこで、 空のパーティションテーブルを作りたかったら、 それを明示的に要求しなければならない。 すなわち、 スクリプトヘッダー行の "label: <name>" を使用して、 パーティションを記述する行を一切指定しないようにする。 たとえば以下のとおり。

echo 'label: gpt' | sfdisk /dev/sdb

上記のコマンドは、 空の GPT パーティションテーブルを作成する。 なお、 --append オプションは、 この動作を無効にすることに注意すること。

パーティションテーブルのバックアップ

使用しているデバイスのレイアウトを保存しておくことが推奨される。 sfdisk は 2 種類の方法をサポートしている。

Dump in sfdisk compatible format

--dump コマンドを使えば、 デバイスレイアウトの明細をテキストファイルに保存できる。 このダンプのフォーマットは、 後日 sfdisk の入力に使えるものである。 たとえば次のようにする。

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

保存した状態は、 次のようにして後に復元することができる。

sfdisk /dev/sda < sda.dump

Full binary backup

パーティションテーブルが格納されているセクターすべての完全なバイナリバックアップを行いたい場合は、 --backup-pt-sectors コマンドを使用する。 これを行うと、 該当するセクターが ~/sfdisk-<device>-<offset>.bak といったファイルに書き出される。 バックアップファイルのこのデフォルト名は、 --backup-file オプションで変更することができる。 こうしたバックアップファイルには、 device にあった raw data しか含まれていない。 以下はその例である。

sfdisk --backup-pt-sectors /dev/sda

次のようにすれば GPT ヘッダーを後に復元することができる。

dd if=~/sfdisk-sda-0x00000200.bak of=/dev/sda seek=$((0x00000200)) bs=1 conv=notrunc

It’s also possible to use the --backup option to create the same backup immediately after startup for other sfdisk commands. For example, backup partition table before deleting all partitions from partition table:

sfdisk --backup --delete /dev/sda

The same concept of backup files is used by wipefs(8).

なお sfdisk は、 バージョン 2.26 以降、 セクターを復元するための -I オプションを提供していない。 必要な機能はすべて dd コマンドが提供している。

カラー表示

カラー出力は terminal-colors.d(5) の機能により実現されている。 自動的なカラー表示は、 以下の空ファイルを用意することで無効にできる。

/etc/terminal-colors.d/sfdisk.disable

これは sfdisk コマンドに対してのみであり、 ツール全体に対しては以下のファイルを用いる。

/etc/terminal-colors.d/disable

ユーザー固有の指定 $XDG_CONFIG_HOME/terminal-colors.d または $HOME/.config/terminal-colors.d は、 グローバル設定を上書きする。

Note that the output colorization may be enabled by default, and in this case terminal-colors.d directories do not have to exist yet.

The logical color names supported by sfdisk are:

header

出力するテーブルのヘッダー。

warn

警告メッセージ。

welcome

ウェルカムメッセージ。

環境変数

SFDISK_DEBUG=all

sfdisk デバッグ出力を有効にする。

LIBFDISK_DEBUG=all

libfdisk デバッグ出力を有効にする。

LIBBLKID_DEBUG=all

libblkid デバッグ出力を有効にする。

LIBSMARTCOLS_DEBUG=all

libsmartcols デバッグ出力を有効にする。

LOCK_BLOCK_DEVICE=<mode>

排他 BSD ロックを用いる。 モードには "1" または "0" がある。 詳しくは --lock を参照のこと。

バージョン 2.26 以降 sfdisk は、 カーネルにパーティションテーブルを再読込させる -R--re-read オプションを提供していない。 代わりに blockdev --rereadpt を使用すること。

バージョン 2.26 以降 sfdisk は、 以下のオプションを提供していない。 --DOS, --IBM, --DOS-extended, --unhide, --show-extended, --cylinders, --heads, --sectors, --inside-outer, --not-inside-outer

sfdisk --list --label-nested=mbr /dev/sda

Print protective MBR on device with GPT disk label.

echo -e ',10M,L\n,10M,L\n,,+\n' | sfdisk /dev/sdc

Create three Linux partitions, with the default start, the size of the first two partitions is 10MiB, and the last partition fills all available space on the device.

echo -e 'size=10M, type=L\n size=10M, type=L\n size=+\n' | sfdisk /dev/sdc

The same as the previous example, but in named-fields format.

echo -e 'type=swap' | sfdisk -N 3 /dev/sdc

Set type of the 3rd partition to 'swap'.

sfdisk --part-type /dev/sdc 3 swap

The same as the previous example, but without script use.

sfdisk --delete /dev/sdc 2

2 つめのパーティションを削除する。

echo "," | sfdisk -N 3 --move-data /dev/sdc

Enlarge 3rd partition in both directions, move start to use free space before the partition and enlarge the size to use all free space after to the partition, and move partition data too.

作者

現在の sfdisk の実装は、 Andries E. Brouwer による最初の sfdisk を元にしている。

関連項目

fdisk(8), cfdisk(8), parted(8), partprobe(8), partx(8)

バグ報告

バグ報告は、 以下に示す issue トラッカーを利用すること。 <https://github.com/util-linux/util-linux/issues>.

入手方法

sfdisk コマンドは util-linux パッケージの一部であり、 以下からダウンロードできる。 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.