SFDISK(8)

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

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

sfdisk [options] command

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

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

[訳注]
    util-linux の fdisk グループのマニュアルでは、「パーティションテーブル」と「ディスクラベル」の両方を、 ほぼ同じ意味で、混ぜて使っている。強いて言えば、Linux や DOS (GPT や MBR) については「パーティションテーブル」を使い、他の OS の場合も含めて、より一般的に言うときは「ディスクラベル」を使うようにしているらしいが、 必ずしもそうとは言えないところもある。

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

[訳注]
    util-linux 所収の blkid(8) の man によれば、blkid -i device で「I/O Limits (aka I/O topology) の情報を表示する」ことになっている。そこで、それを実行すると、MINIMUM_IO_SIZE, PHYSICAL_SECTOR_SIZE, LOGICAL_SECTOR_SIZE が表示された。I/O リミットとは、そうしたもののことなのだろう。特に、PHYSICAL_SECTOR_SIZE が重要なようだ。「I/O 境界」「I/O 制約」と訳せるかもしれない。

    なお、上のパラグラフでは、「パーティションの開始点に相対的なサイズを指定する」ということが、 わかりにくいかもしれない。 たとえば、開始点を +100M といった形で指定することで、現在の開始点より 100MiB 後方という指示が可能なのである。--move-data オプションの用例の最初のコマンドがその一例である。

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

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

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

    flock /dev/sdc sfdisk /dev/sdc

現在のところ、この方法の持つ効果は、MD や DM デバイスに対しては udevd によってサポートされていない (訳注: MD や DM デバイスというのは、ソフトウエア RAID, LVM, 暗号化デバイスなどのことらしい)。

コマンド
以下のコマンドはどれか一つしか使えない (訳注: ただし、-l と -V の組み合わせは例外である)。

[-N partition-number] device
    sfdisk のデフォルトのコマンドは (訳注: 要するに以下にあるような特定のコマンドが指定されていないときのデフォルトの動作は)、 device にどんなパーティションを作成するかの具体的な指示を標準入力から読み込んで、 その指示に従ってパーティションテーブルを作成することである。 入力の書式がどんなものになるかについては、後述の説明をお読みになっていただきたい。 標準入力が端末の場合は、 sfdisk は対話セッションを開始する。

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

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

    [訳注]
        対話セッションを行わず、いわゆる sfdisk 互換スクリプトの読み込みも行わない場合の、sfdisk の典型的、かつ単純な使用法は、次のように指示を標準入力から読み込ませることである。

            # sfdisk /dev/sda <<END
            > 2048,300GiB,L
            > ,20GiB,S
            > ,
            > END

        上記の指示は、/dev/sda に 3 個のパーティションを作っている。まず、2048 セクタを開始オフセットとして 300 GiB の Linux filesystem (L)、/dev/sda1 を作り、続いて開始オフセットの決定を sfdisk にまかせて、20 GiB の Linux swap (S)、/dev/sda2 を作る。 そして最後に残りのすべてを /dev/sda3 にしている (タイプは、自動的にデフォルトの Linux filesystem になる)。 指示の書式についての詳しいことは、「入力の書式」セクションをご覧いただきたい。

-A, --activate device [partition-number...]
    指定されたパーティション (複数指定可) のブート可能フラグを ON に切り替え、指定されなかったすべてのパーティションのブート可能フラグを OFF にする。すべてのパーティションのブート可能フラグを OFF にしてしまうには、パーティションナンバーの代わりに、特別な引き数の '-' を使えばよい。

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

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

--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, NoBlockIOProtocol, LegacyBIOSBootable、それに 48 から 63 までの範囲の GUID-specific bits である。たとえば、"RequiredPartition,50,51" という文字列は、3 個のビットを設定する。

--part-label device partition-number [label]
    GPT パーティションの名前 (ラベル) を変更する。label の指定がない場合は、現在のパーティションラベルを表示する。 (訳注: この label は、下記「フィールド名のある書式」で name に対して指定している値と同じものであり、パーティションの簡単な説明である。)

--part-type device partition-number [type]
    パーティションのタイプを変更する。type の指定がない場合は、現在のパーティションタイプを表示する。引き数 type は、MBR では 16 進数であり、GPT では GUID である。後方互換のために、オプション -c と --id も、このコマンドと同じ意味を持っている。

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

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

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

-T, --list-types
    現在のディスクラベル、または --label オプションで指定されたディスクラベル (訳注: dos とか gpt とか) でサポートされているパーティションのタイプ (type) のすべてを表示する。 (訳注: 訳者の手元では、--label gpt と指定しないかぎり、gpt のディスクでも、dos のパーティションタイプ一覧が表示される。)

-V, --verify [device...]
    パーティションテーブルとパーティションが、正しく見えるかどうかを検査する。

オプション

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

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

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

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

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

-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 を使用する。

-o, --output list
    出力にどの項目 (columns) を表示するかを指定する。 使用できる全項目のリストを知るには、--help を使用すればよい。

    デフォルトの項目リストを拡張することもできる。list を +list の形で指定すればよいのだ (たとえば、-o +UUID のように)。

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

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

-X, --label type
    ディスクラベルの型を指定する (たとえば、dos, gpt, ...)。 このオプションが指定されていない場合、sfdisk は、デバイスにすでに存在しているディスクラベルをデフォルトとして使用するが、 デバイスにまだディスクラベルが存在しないときは、デフォルトのラベル型を dos にする。こうしたデフォルトや現在のラベルは、スクリプトのヘッダ行 "label: <name>" で上書きすることができる。この --label オプションは、空のディスクラベルを (訳注: 別の言い方をすると、パーティションテーブルの型だけが指定されて、パーティションは 1 個も存在しないパーティションテーブルを) sfdisk に無理矢理作らせるようなことはしない (以下の「空のディスクラベル」セクションを参照)。

-Y, --label-nested type
    ネストしたディスクラベルを強引に編集する。 プライマリーなディスクラベルはすでに存在していなければならない。 このオプションを使えば、たとえば、GPT のデバイス上で hybrid/protective MBR を編集することができるようになる。

-w, --wipe when
    デバイスからファイルシステムや RAID やパーティションテーブルのシグナチャーを消去する (訳注: 前から存在する古いシグナチャーを消去するということだろう)。衝突 (collision) が起きないようにするためである。引き数の when には、auto, never, always が使える。このオプションが指定されない場合のデフォルトは、auto であり、その場合シグナチャーが消去されるのは、原則として対話モードのときだけだが、 古いパーティションテーブル・シグナチャーだけは例外で、引き数の when が never でないかぎり、新しいパーティションテーブルが作成される前に、必ず消去される。 いずれの場合でも、新しいパーティションテーブルが作成される前に、検出されたシグナチャーが、 警告メッセージとして通知される。wipefs(8) コマンドの説明もご覧いただきたい。

-W, --wipe-partitions when
    新たに作成するパーティションからファイルシステムや RAID やパーティションテーブルのシグナチャーを消去する (訳注: 前から存在する古いシグナチャーを消去するということだろう)。衝突 (collision) が起きないようにするためである。引き数の when には、auto, never, always が使える。このオプションが指定されない場合のデフォルトは、auto であり、その場合シグナチャーが消去されるのは、対話モードのときだけで、 それもユーザが承認した後である。 いずれの場合でも、新しいパーティションが作成された後で、検出されたシグナチャーが、 警告メッセージとして通知される。wipefs(8) コマンドの説明もご覧いただきたい。

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

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

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

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

        <name>: <value>

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

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

        label
            パーティションテーブルの型 (partition table type) を指定する。たとえば、dos とか gpt とかである。(訳注: このマニュアルの中で partition table type は、disk label type とも呼ばれている。)

        label-id
            パーティションテーブルの識別名を指定する。識別名は、MBR では (前に 0x の付いた) 16 進数であり、GPT では UUID である。(訳注: sfdisk -l の出力では、Disk identifier と表示される。)

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

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

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

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

        sector-size
            セクタのサイズを指定する。このヘッダはもっぱら参考用であり、sfdisk が新しいパーティションテーブルを作成するときに、使われるわけではない。そのときは、 実際のデバイスに固有な値が常に使用され、ダンプによって取得したセクタサイズは無視される (訳注: sector-size が --dump によって取得されるのは、v2.35 以降である)。

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

フィールド名なしの書式

        start size type bootable

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

    フィールドは、空白 (whitespace)、コンマ、またはセミコロンによって区切られる。 コンマなどの後ろには、空白があってもよく、先頭と末尾の空白は無視される。 数値には 8 進、10 進、16 進数が使え、10　進数がデフォルトである。 あるフィールドが存在しない場合や、空っぽの場合、'-' という値が指定されている場合は、デフォルトの値が使用される。ただし、-N オプション (ある 1 つのパーティションを変更せよ) が指定されているときは、 各フィールドのデフォルトは、前回と同じ値になる。

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

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

    パーティションの type は、MBR (DOS) では 0x を前に付けない 16 進数で指定し、GPT では GUID 文字列で指定する。以下のような短縮表記による指定も可能だ。

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

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

        E   拡張パーティション; MBR では 5 を意味する。

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

        X   linux 拡張パーティション; MBR では 85 を意味する。

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

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

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

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

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

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

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

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

    value は、引用符で囲むことができる (たとえば、name="This is partition name" のように)。現在のところ、次のフィールドがサポートされている。

        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 パーティションの名前 (訳注: "EFI system partition", "Basic data partition" のようなパーティションの簡単な説明)。

        type=code
            MBR パーティションでは (0x を前に付けない) 16 進数。GPT パーティションでは GUID。 フィールド名なしの書式と同様、短縮表記も使える (訳注: フィールド名のある書式で短縮表記が使えるのは、v2.35 以降のようだ)。後方互換のために、Id= フィールドも同じ意味を持っている。

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

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

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

パーティションテーブルのバックアップ
使用しているデバイスのレイアウトを保存しておくのは、よいことである。 sfdisk は、2 種類の方法をサポートしている。

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

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

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

    sfdisk /dev/sda < sda.dump

パーティションテーブルが格納されているセクタすべての完全な (バイナリの) バックアップがしたかったら、--backup オプションを使用すればよい。 そうすると、該当するセクタが ~/sfdisk-<device>-<offset>.bak といったファイルに書き出される。バックアップファイルのこのデフォルト名は、 --backup-file オプションで変更することができる。こうしたバックアップファイルには、 device にあった raw data しか含まれていない。ちなみに、同じ発想のバックアップファイルが、 wipefs(8) でも使われている。一例を挙げよう。

    sfdisk --backup /dev/sda

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

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

注意していただきたいが、sfdisk は、バージョン 2.26 以来、もうセクタを復元するための -I オプションを提供していない。必要な機能は、すべて dd コマンドに存在している。

カラー表示
自動的なカラー表示は、/etc/terminal-colors.d/sfdisk.disable という空ファイルを作ることで無効にできる。

カラー表示の設定についてもっと詳しいことを知りたかったら、termianl-colors.d(5) をご覧になるとよい。sfdisk は、以下の論理カラー名をサポートしている。

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

warn
    警告メッセージ

welcome
    ウェルカムメッセージ

注意
バージョン 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_DEBUG=all
    sfdisk デバッグ出力を有効にする。

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

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

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

関連項目
fdisk(8), cfdisk(8), parted(8), partprobe(8), partx(8)

作者
Karel Zak <kzak@redhat.com>

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

入手方法
この sfdisk コマンドは、util-linux パッケージの一部であり、以下の URL から入手できる。https://www.kernel.org/pub/linux/utils/util-linux/