スポンサーリンク

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
ブートコードをファイル bootcode から取得します。デフォルトは /boot/mbr です。

−B
ディスクのセクタ 0 に含まれるブートコードを再初期化します。もし −f があると、無視されます。

−f configfile
スライスの値をファイル configfile を使って設定します。 −i もある ときには、 configfile が読み込まれるに先立って、存在するスライス は全部消され (つまり ‘‘未使用’’ の印をつけられる) ますが、この場 合を除いて、 configfile はいつも存在するスライスの変更を行ないま す。 configfile は ‘’ であってもよく、この場合標準入力が読まれま す。ファイルの構文は、以降の 設定ファイルの節をご覧下さい。

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

−i
ディスクのセクタ 0 を初期化します。もし −f がなければ、 −u の意味 も含みます。

−I
単一の FreeBSD スライスがディスク全体となるように、セクタ 0 の内 容を初期化します。

−s
サマリ情報を表示し、終了します。

−t
テストモード; スライステーブル値を書き込みません。一般に −f オプ ションを付けて、スライステーブルに書き込まれるはずのものを見るの に使われます。 −v の意味を含みます。

−u
ディスクのセクタ 0 を更新 (編集) するのに使われます。 −f があると きには無視されます。

−v
冗長になります。 −f が使われたときには、 fdisk はディスクに書き込 まれるスライステーブルを表示します。

−1234
1 個のスライスの操作だけを行ないます。 −f があるときには無視され ます。

最後のディスク名 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) を予約していま す。

startsize
スライスのセクタ単位での開始アドレスとサイズです。

flag 80
これがアクティブスライスであることを指定します。

cyl, sectorhead
スライスの開始アドレスと終了アドレスを指定するのに 使われます。

注: これらの数字は、 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
スライス計算で使う BIOS ジオメトリを設定します。前に文字を伴った 数字で、3 つの値を指定することが必要です。

cnum
シリンダの数を num に設定します。

hnum
ヘッドの数を num に指定します。

snum
トラックあたりのセクタの数を 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 slice type start length

partition (1-4) で与えられたスライスに、タイプ type 、開始セクタ start 、長さ (セクタ数) length を設定します。

これらの行で明示的に言及されたスライスだけが変更されます; p 行で 参照されていないスライスは変更されません。しかし、無効なスライス テーブルがあるか、 −i オプションが指定されているなら、存在するス ライスエントリは全て取り除かれ (未使用の印がつけられ)、スライス情 報を明示的に設定するのに、 p 行が使われなければなりません。もし複 数のスライスを設定する必要があるなら、複数の p 行が指定されなけれ ばなりません; 1 行で 1 個のスライスを設定します。

これらのスライス行は、もしあればジオメトリ指定行の後に現れなけれ ばなりません。

FreeBSD スライスの type は 165 です。0 のスライスタイプを指定する と、スライスを取り除き未使用の印をつけたのと同じことになります; しかし、 (‘‘0’’ とかの) ダミーの値が startlength に指定されな ければなりません。

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

例: スライス 4 を取り除いて、未使用の印をつける:

p 4 0 0 0

例: スライス 1 を FreeBSD スライスであって、セクタ 1 から始まって 2503871 セクタの長さに設定する (注: これらの値は、対応するヘッド とシリンダ境界に繰り上げ/繰り下げられます):

p 1 165 1 2503871

a slice
slice
スライスをアクティブにします。設定ファイルのどこに現われて も構いませんが、 1 個だけ存在することが必要です。

例: スライス 1 をアクティブスライスにします:

a 1

関連ファイル

       /boot/mbr

デフォルトのブートコード

関連項目

boot0cfg(8), bsdlabel(8), newfs(8)

バグ

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

ユーティリティ全体をよりユーザフレンドリにするべきです。

FreeBSD の新規ユーザは、 ‘‘スライス’’ と ‘‘パーティション’’ の違いが分か らず、慣れるまで大変でしょう。

ディスク全体を FreeBSD に捧げるためには、このコマンドは使えません。これに は bsdlabel(8) コマンドを使わなければなりません。

FreeBSD 10.0 April 18, 2002 FreeBSD 10.0

スポンサーリンク