名前
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
種類の入力書式と、両方に共通するヘッダ行をサポートしている。
ヘッダ行
指定が任意のヘッダ行では、パーティションテーブル全体に適用される情報を指定する。
ヘッダ行の書式は、次のようになる。
現在のところ、認識されるヘッダは以下のものである。
- 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
以降である)。
気を付けてほしいが、ヘッダ行が使用できるのは、入力中で最初のパーティションを指定する前だけである。
フィールド名なしの書式
こうした各行は、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)
でも使われている。一例を挙げよう。
次のようにすれば、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
は、以下の論理カラー名をサポートしている。
- 出力するテーブルのヘッダ
- 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。
作者
Karel Zak <kzak@redhat.com>
現在の sfdisk
の実装は、Andries E. Brouwer
による最初の sfdisk
を元にしている。
入手方法
この sfdisk
コマンドは、util-linux
パッケージの一部であり、以下の
URL
から入手できる。https://www.kernel.org/pub/linux/utils/util-linux/