FDISK(8) FreeBSD システム管理者マニュアル FDISK(8)
名称
fdisk − PC スライステーブルのメンテナンスユーティリティ |
書式
fdisk [−BIaistu] [−b bootcode] [−1234] [disk] |
fdisk −f configfile [−itv] [disk] |
前置き |
BIOS がカーネルをブートするために、一定の約束をちゃんと守らねばなりませ ん。ディスクのセクタ 0 はブートコード、スライステーブル、マジックナンバを 含んでいなければならないのです。 BIOS スライスはディスクをいくつかの部分 に分けるのにも使われます。 BIOS はセクタ 0 を読み込み、マジックナンバを確 認します。そして、セクタ 0 のブートコードはスライステーブルを探し、どのス ライスが ‘‘アクティブ’’ と印されているか判定します。そして、このブート コードはブートストラップをアクティブスライスから読み込み、ブート可能の印 が付いていればこれを実行します。 DOS では、1 個以上のスライスと 1 個のア クティブを持てます。 DOS の fdisk ユーティリティは、ディスク空間を 1 個以 上のスライスに分割して、1 個のアクティブを設定することができます。 |
解説
FreeBSD のプログラム fdisk は、 DOS のそれと似た目的に役立ちます。第 1 の 形は、スライス情報の表示や、スライステーブルの対話的な編集に使われます。 第 2 の形は、 configfile を使ってスライステーブルを書き込むという使い方で あり、他のスクリプト/プログラムから利用するよう設計されています。 オプション: |
−a
アクティブスライスの変更のみを行ないます。 −f があるときには無視 されます。 −b bootcode −B −f configfile 警告: −f が使われたときには、 (対話モードで尋ねられるように) 本当 にスライステーブルを書き込むのかどうかを尋ねられません。用心して 使うこと! −i −I −s −t −u −v −1234 最後のディスク名 disk は、 ‘‘裸の’’ ディスク名だけ、つまり da0 か、あるい は完全なパス名です。もし省略された場合、 fdisk は、マウントされたルート ディスクからデフォルトディスクデバイスを算出しようとします。 オプションなしで呼び出されたときには、セクタ 0 スライステーブルを表示しま す。例えば: |
******* Working on device /dev/ad0 ******* |
|||
parameters extracted from in-core disklabel are: |
|||
cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) |
|||
parameters to be used for BIOS calculations are: |
|||
cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) |
|||
Warning: BIOS sector numbering starts with sector 1 |
|||
Information from DOS bootblock is: |
|||
The data for partition 1 is: |
|||
sysid 165,(FreeBSD/NetBSD/386BSD) |
|||
start 495, size 380160 (185 Meg), flag 0 |
|||
beg: cyl 1/ sector 1/ head 0; |
|||
end: cyl 768/ sector 33/ head 14 |
|||
The data for partition 2 is: |
|||
sysid 164,(unknown) |
|||
start 378180, size 2475 (1 Meg), flag 0 |
|||
beg: cyl 764/ sector 1/ head 0; |
|||
end: cyl 768/ sector 33/ head 14 |
|||
The data for partition 3 is: |
|||
<UNUSED> |
|||
The data for partition 4 is: |
|||
sysid 99,(ISC UNIX, other System V/386, GNU HURD or Mach) |
|||
start 380656, size 224234 (109 Meg), flag 80 |
|||
beg: cyl 769/ sector 2/ head 0; |
|||
end: cyl 197/ sector 33/ head 14 |
このディスクは、たまたまディスク全体を満たす 3 つのスライスに分割されてい ます。 2 つ目のスライスは最初のスライスの最後に重なっています。 (デバッグ 目的に使われます) |
sysid
スライスのラベル付に使われます。 FreeBSD ではマジッ クナンバ 10 進数 165 (16進 では A5) を予約していま す。 start と size flag 80 cyl, sector と head 注: これらの数字は、 BIOS の理解するディスクジオメトリを使って計算され、 ブートブロックに保存されます。 −i と −u のオプションは、スライスデータを更新すべきであることを指示しま す。もし −f がなければ、 fdisk は対話モードに入ります。このモードでは、 fdisk に明示的に指示しない限り、どんな変更もディスクに書き込みません。 fdisk ユーティリティは各々のスライスを表示し、それを編集したいかどうかを 尋ねます。 yes と答えたら、 fdisk は古い値を表示し、新しい値を尋ねて各々 のフィールドを進みます。 1 個のスライスが終了したら、 fdisk はそれを表示 して、それで正しいかどうかを尋ねます。そして次のエントリに進みます。 cyl, sector, head のフィールドを正しく得るにはちょっとした芸当が要りま す。そのためデフォルトでは、 fdisk が代わって計算しますが、選択してそれら の値を指定することもできます。 全てのスライスが進行した後、 ‘‘アクティブ’’ スライス変更をすることができ ます。最後に、セクタ 0 の新規データが全部集められたときに、本当に書換えて も良いか尋ねられます。 yes と答えた場合だけ、データはディスクに書き込まれ ます。 −u フラグと −i フラグの間の違いは、 −u フラグはディスク上にあるフィールド の値を編集 (更新) するだけですが、一方 −i フラグはセクタ 0 を ‘‘初期化’’ するのに使われます; ディスク全体を FreeBSD 用に使えるように、最後の BIOS スライスをセットアップして、それをアクティブにします。 注 |
開始シリンダ等の自動計算は、 BIOS がそのドライブのジオメトリであると思っ ている数字をもとに行なわれます。これらの数字はデフォルトでは、メモリ上の ディスクラベルから取りますが、 fdisk の起動時にそれらを変更する機会が与え られます。このおかげでユーザは、 BIOS がジオメトリ変換を行なうドライブで も動作できるブートブロックを作ることができます。 もしディスクのレイアウトを手作業で変更するのなら、どうか FreeBSD スライス がシリンダ境界から開始することを確認してください。その後のたくさんの決定 がこのことを仮定しています。 (これは必要ではなかったのかもしれませんが) すでにあるスライスを編集すると、たぶんそのスライスのデータを失うことにな るでしょう。 fdisk がどう働くかを調べるために、 1 度か 2 度は対話的に実行するべきで す。これは、最後の質問に否定で答える限り完全に安全です。このマニュアルで は完全に説明されていませんが、 fdisk が検出する微妙な点があります。 |
設定ファイル
−f オプションが与えられたとき、 configfile の値を使ってディスクのスライス テーブルを書換えることができます。このファイルの構文はたいへん単純です。 各行はコメントか仕様のどちらかです。 |
# comment ...
# で開始している行はコメントで無視されます。 g spec1 spec2 spec3 cnum hnum snum これらの指定はどんな順序でもよく、先頭の文字がどの値かを決定しま す; しかし、3 つ全てを指定することが必要です。 この行はスライス情報を指定するどんな行よりも前に現れなくてはなり ません。 次の条件が真でなければ、エラーです: 1 <= シリンダの数 シリンダの数は 1024 以下でなければなりませんが、しかしこれは強制 されるものではなく、警告が表示されるでしょう。ブート可能な FreeBSD スライス (‘‘/’’ ファイルシステム) は最初の 1024 シリンダ 以内に収まっていなといけません; もしそうでなければ、ブートに失敗 するかもしれません。ブートしないスライスには、この制限はありませ ん。 1019 シリンダ、39 ヘッド、63 セクタのディスクの例 (これらの全ては みな等価): g c1019 h39 s63 g h39 c1019 s63 g s63 h39 c1019 |
p slice type start length
partition (1-4) で与えられたスライスに、タイプ type 、開始セクタ start 、長さ (セクタ数) length を設定します。 これらの行で明示的に言及されたスライスだけが変更されます; p 行で 参照されていないスライスは変更されません。しかし、無効なスライス テーブルがあるか、 −i オプションが指定されているなら、存在するス ライスエントリは全て取り除かれ (未使用の印がつけられ)、スライス情 報を明示的に設定するのに、 p 行が使われなければなりません。もし複 数のスライスを設定する必要があるなら、複数の p 行が指定されなけれ ばなりません; 1 行で 1 個のスライスを設定します。 これらのスライス行は、もしあればジオメトリ指定行の後に現れなけれ ばなりません。 FreeBSD スライスの type は 165 です。0 のスライスタイプを指定する と、スライスを取り除き未使用の印をつけたのと同じことになります; しかし、 (‘‘0’’ とかの) ダミーの値が start と length に指定されな ければなりません。 注: スライスの開始オフセットはヘッド境界まで必要なら繰り上げら れ、終了オフセットはシリンダ境界まで必要なら繰り下げられます。 例: スライス 4 を取り除いて、未使用の印をつける: p 4 0 0 0 例: スライス 1 を FreeBSD スライスであって、セクタ 1 から始まって 2503871 セクタの長さに設定する (注: これらの値は、対応するヘッド とシリンダ境界に繰り上げ/繰り下げられます): p 1 165 1 2503871 a slice 例: スライス 1 をアクティブスライスにします: a 1 関連ファイル |
/boot/mbr
デフォルトのブートコード 関連項目 |
バグ
デフォルトのブートコードは、必ずしもすべてのスライスタイプを正しく扱いま せん。特に MS-DOS 6.x 以降に導入されたものについてはそうです。 ユーティリティ全体をよりユーザフレンドリにするべきです。 FreeBSD の新規ユーザは、 ‘‘スライス’’ と ‘‘パーティション’’ の違いが分か らず、慣れるまで大変でしょう。 ディスク全体を FreeBSD に捧げるためには、このコマンドは使えません。これに は bsdlabel(8) コマンドを使わなければなりません。 FreeBSD 10.0 April 18, 2002 FreeBSD 10.0 |