EN JA
FDISK(8)
FDISK(8) FreeBSD System Manager's Manual FDISK(8)

名称

fdiskPC パーティションテーブルメンテナンスプログラム (pc98 用)

書式

fdisk [ -Bastu][ -b bootcode][ -1234][ disk]

fdisk -f configfile [ -itv][ disk]

前置き

BIOS がカーネルをブートするために、一定の約束をちゃんと守らねばなりません。ディスクのセクタ 0 はブートコード、パーティションテーブル、マジックナンバを含んでいなければなりません。 BIOS パーティションは、ディスクをいくつかの部分に分けるのにも使われます。 BIOS は、セクタ 0 を読み込み、マジックナンバを確認します。そして、セクタ 0 のブートコードはパーティションテーブルを探し、どのパーティションが アクティブ とマークされているか判定します。そして、このブートコードはブートストラップを アクティブ パーティションから読み込み、ブート可能とマークしていればこれを実行します。 DOS では、1 つ以上のパーティションと 1 つの アクティブ 状態にすることができます。 DOS の fdisk ユーティリティは、ディスク空間を複数のパーティションに分割するために使用することができ、1 つの アクティブ を設定します。

解説

FreeBSDfdisk ユーティリティは、 DOS プログラムと同様の目的の仕事をします。第 1 の形式は、パーティション情報の表示や、パーティションテーブルの対話的な編集に使われます。第 2 の形式は、 configfile を使用してパーティションテーブルを書き込むために使用され、他のスクリプト/プログラムで使用されるように設計されています。

オプションは、次の通りです:

-a
アクティブパーティションのみを変更します。 -f が与えられるなら、無視されます。
-b bootcode
ブートコードをファイル bootcode から取得します。
-B
ディスクのセクタ 0 に含まれるブートコードを再初期化します。 -f が与えられるなら、無視されます。
-f configfile
パーティションの値をファイル configfile を使用して設定します。 -i も与えられるなら、 configfile が読み込まれる前に、 ("未使用"とマークされている) 存在するパーティションは全て削除されますが、この場合を除いて、 configfile は、常に存在するパーティションを変更します。 configfile が "-"と指定されるなら、 標準入力 が読み込まれます。ファイルの構文については、下記の 設定ファイル を参照してください。

警告: -f が使用されるとき、(対話モードでのように) 本当にスライステーブルを書き込むのかどうか問い合わせられません。用心して使うこと!

-s
サマリ情報を印刷 (表示) し、終了します。
-t
テストモード。パーティション値を書き込みません。一般的に、パーティションテーブルに書き込まれるものを見るために -f オプションとともに使用されます。 -v の意味を含みます。
-u
ディスクのセクタ 0 を更新 (編集) するために使用されます。 -f が与えられるなら、無視されます。
-v
冗長になります。 -f が使用されるとき、 fdisk は、ディスクに書き込まれているパーティションテーブルを印刷 (表示) します。
-12345678
単一の fdisk エントリのみを操作します。 -f が与えられるなら、無視されます。

最後のディスク名は、‘裸の’ディスク名だけとして、例えば、‘ da0’か、または /dev 下の完全な形でのデバイスノードとして、提供することができます。省略されるなら、ディスク‘ wd0’, ‘ da0’と‘ od0’は、応答するのが見つけられるまで、その順序で検索されます。

引数なしで呼び出されると、セクタ 0 パーティションテーブルを印刷 (表示) します。次は、例です:

 ******* Working on device /dev/rda0 ******* 
 parameters extracted from in-core disklabel are: 
 cylinders=33075 heads=8 sectors/track=32 (256 blks/cyl) 
 
 parameters to be used for BIOS calculations are: 
 cylinders=33075 heads=8 sectors/track=32 (256 blks/cyl) 
 
 Media sector size is 512 
 Warning: BIOS sector numbering starts with sector 1 
 Information from DOS bootblock is: 
 The data for partition 1 is: 
 sysmid 148,(FreeBSD/NetBSD/386BSD) 
     start 256, size 2490112 (1215 Meg), sid 196 
  beg: cyl 1/ sector 0/ head 0; 
  end: cyl 9727/ sector 0/ head 0 
  system Name FreeBSD(98) 
 The data for partition 2 is: 
 sysmid 148,(FreeBSD/NetBSD/386BSD) 
     start 2490368, size 5505024 (2688 Meg), sid 196 
  beg: cyl 9728/ sector 0/ head 0; 
  end: cyl 31231/ sector 0/ head 0 
  system Name FreeBSD(98) 
 The data for partition 3 is: 
 <UNUSED> 
 The data for partition 4 is: 
 <UNUSED> 
 The data for partition 5 is: 
 <UNUSED> 
 The data for partition 6 is: 
 <UNUSED> 
 The data for partition 7 is: 
 <UNUSED> 
 The data for partition 8 is: 
 <UNUSED> 
 The data for partition 9 is: 
 <UNUSED> 
 The data for partition 10 is: 
 <UNUSED> 
 The data for partition 11 is: 
 <UNUSED> 
 The data for partition 12 is: 
 <UNUSED> 
 The data for partition 13 is: 
 <UNUSED> 
 The data for partition 14 is: 
 <UNUSED> 
 The data for partition 15 is: 
 <UNUSED> 
 The data for partition 16 is: 
 <UNUSED>

このディスクは、たまたまディスクを満たす 3 つのパーティションに分割されています。 2 番目のパーティションは最初のパーティションの終わりに重なっています。 2 番目のスライスは最初のスライスの終りに重なっています。 (デバッグ目的に使用されます)

sysmid
は、パーティションをラベル付けするために使用されます。 FreeBSD ではマジックナンバ 148 の 10 進数 (16 進数では 94) を予約しています。
startsize
フィールドは、パーティションのセクタ単位の開始アドレスとサイズを与えます。
cyl, sectorhead
フィールドは、パーティションの開始アドレスと終了アドレスを指定するために使用されます。
system Name
は、パーティションの名前です。
:
これらの数値は、ディスクジオメトリの BIOS の理解を使用して計算され、ブートブロックに保存されます。

フラグ -u は、 -f オプションが使用されていないなら、パーティションデータが更新されるべきであることを示すために使用されます、 -f オプションが使用されていないなら、 fdisk ユーティリティは対話モードに入ります。このモードでは、明示的に伝えない限り、少しのデータも変更しないように設計されています。 fdisk ユーティリティは、質問が上記の振る舞いを保証するように、デフォルトを選択します。

各パーティションを表示して、それを編集したいかどうか尋ねます。 yes と答えるなら、古い値を表示して、新しい値を尋ねて、各フィールドを通って進みます。 1 つのパーティションが終了したとき、 fdisk は、それを表示して、それが正しいかどうか尋ねます。そして、 fdisk ユーティリティは次のエントリに進みます。

cyl, sectorhead フィールドを正しく得るには、トリックが必要です。それで、デフォルトでは、利用者に代わって計算されます。利用者が選択するなら、それらを指定することができます。

すべてのパーティションを処理した後に、利用者は、 アクティブ なパーティションを変更するためのオプションを与えます。最終的に、最初のセクタのためのすべてのデータが累積されたとき、利用者に本当にセクタ 0 を書き直したいかどうか尋ねられます。 yes と答える場合にだけ、データはディスクに書き込まれます。

-u フラグと -i フラグの違いは、 -u フラグがディスクの上に現れるフィールドを編集するだけです。一方 -i フラグは、セクタ 0 を "初期化"するために使用されます。ディスク全体を FreeBSD で使用するように最後の BIOS パーティションをセットアップして、それをアクティブにします。

開始シリンダ等の自動計算は、BIOS がそのドライブのジオメトリであると考えるている 1 組の数字を使用して行います。これらの数字は、デフォルトでメモリ中のディスクラベルから取られますが、プログラムは初めに、それらを変更する機会を利用者に与えます。これによって、ユーザは BIOS によってジオメトリ変換を使用するドライブで動作できるブートブロックを作成することができます。

利用者がディスクのレイアウトを手作業で変更するなら、 FreeBSD パーティションがシリンダ境界から始まることを確認してください。後で行われる多くの決定はこれを仮定しています。 (これは後で必要でないかもしれません。)

既存のパーティションを編集すると、たぶん利用者はそのパーティションのすべてのデータを失うことになるでしょう。

どのように動作しているかを調べるために 1 度か 2 度は対話的にこのプログラムを実行するべきです。これは、利用者が最後の質問に否定で答える限り完全に安全です。このマニュアルページで完全に説明されていませんが、このプログラムが検出する微妙なことがらがあります。

設定ファイル

-f オプションが与えられるとき、 configfile からの値を使用してディスクのパーティションテーブルを書き込むことができます。このファイルの構文は非常に簡単です。各行は、コメントか仕様のいずれかで、(改行を除いて) 空白類は無視されます:
# comment ...
"#"で始まる行は、コメントであり無視されます。
g spec1 spec2 spec3
パーティション計算で使用される BIOS ジオメトリを設定します。各数字に先行する文字とともに指定された 3 つの値でなければなりません:
c num
シリンダ数を num に設定します。
h num
ヘッド数を num に設定します。
s num
セクタ/トラックの数を num に設定します。

これらの仕様では、先行する文字が値はどれであるかを決定するので、順不同に指定できます。しかしながら、3 つすべてを指定しなければなりません。

この行はパーティション情報を指定するどんな行より前に現れなければなりません。

次が真でなければ、エラーです:

1 <= シリンダの数 
1 <= ヘッドの数 <= 256 
1 <= セクタ/トラックの数 < 64

シリンダ数は 1024 以下であるべきです、しかし警告が出力されますが、これは強制されません。ブート可能な FreeBSD パーティション ("/"ファイルシステム) は、最初の 1024 シリンダ以内に完全に収まっていなければならないことに注意してください。そうでなければ、ブートは失敗するかもしれません。ブート不可能なパーティションには、この制限はありません。

1019 シリンダ、39 ヘッドと 63 セクタのディスクの例 (これらのすべては同等です):

g       c1019   h39     s63 
g       h39     c1019   s63 
g       s63     h39     c1019
p partition type start length
partition (1-4) で与えられたパーティションに、タイプを type、開始セクタを start、セクタ数を length セクタに設定します。

これらの行によって明白に言及されたそれらのパーティションだけが変更されます。 "p"行によって参照されない任意のパーティションは変更されません。しかしながら、無効のパーティションテーブルが存在しているか、 -i オプションが指定されるなら、すべての既存のパーティションエントリはクリアされ (未使用としてマークされ)、これらの "p"行は、きちんとパーティション情報を設定するために使用されなければなりません。複数のパーティションを設定する必要があるなら、各パーティション毎に 1 つで、複数の "p"行を指定しなければなりません。

これらのパーティション行は、存在しているなら、任意のジオメトリ指定行の後に現れなければなりません。

typeFreeBSD パーティションを表す 165 です。 0 のパーティションタイプを指定することは、パーティションをクリアして、未使用としてマークするのと同じです。しかしながら、それでも ("0"のような) ダミーの値を、 startlength に指定しなければなりません。

注: 必要なら、開始オフセットはヘッド境界まで切り上げられ、必要なら、終了オフセットはシリンダ境界また切り下げられます。

例: パーティション 4 をクリアし、それを未使用とマークします:

p       4       0       0       0

例: パーティション 1 を FreeBSD パーティションにし、セクタ 1 から始まって 2503871 セクタ長に設定します (注: これらの数値は、ヘッドとシリンダ境界に対応して切り上げ、切り下げされます):

p       1       165     1       2503871
a partition
partition をアクティブパーティションにします。設定ファイルのどこでも置けますが、1 つだけは存在していなければなりません。

例: パーティション 1 をアクティブパーティションにします:

a       1

関連ファイル

/boot/mbr
デフォルトのブートコード
 
訳注: 原文の誤り、/boot/mbr は i386 用。

バグ

デフォルトのブートコードは、必ずしもすべてのパーティションタイプを正しく取り扱いません、特に、 MS-DOS 6.x 以降に導入されたものはそうです。

プログラム全体をよりユーザフレンドリにするべきです。

このマニュアルページを通して、ほかの場所で使用された用語に従うために、‘パーティション’という用語はそれが実際に‘スライス’であるべきであるところで使用されています。

ディスク全体を FreeBSD 専用にするために、このコマンドは使用できません。このためには bsdlabel(8) コマンドを使用しなければなりません。

October 4, 1996 FreeBSD