disklabel(8) FreeBSD 一般コマンドマニュアル

disklabel

前のページ 上に戻る 次のページ

disklabel


     disklabel -w [-r] [-n] disk disktype [packid]
     disklabel -e [-r] [-n] disk
     disklabel -R [-r] [-n] disk protofile
     disklabel [-NW] disk

     disklabel -B [-b boot1 -s boot2] disk [disktype/auto]
     disklabel -w -B [-n] [-b boot1 -s boot2] disk disktype/auto [packid]
     disklabel -R -B [-n] [-b boot1 -s boot2] disk protofile [disktype/auto]


解説

     disklabel はディスクドライブやディスクパックにラベルを書き込んだり、確認
     したり、修正したりするために使われます。ラベルを書き込む際には、ドライブ
     の識別子を変更したり、ディスクのパーティションを変更したり、異常のあるラ
     ベルを置き換えたりすることができます。コマンドには、ディスク上のラベルを
     読んだり (表示したり)、書き込んだり、編集したりするいくつかの書式がありま
     す。また disklabel は同時にブートストラップコードをインストールすることも
     できます。

   B>メB>モB>リB>内B>のB>ラB>ベB>ルB>とB>デB>ィB>スB>クB>上B>のB>ラB>ベB>ル

     ディスクラベルは各ディスクパーティションの先頭、もしくは先頭付近に存在し
     ます。より速くアクセスするために、カーネルは常にメモリ内にコピーを保持し
     ます。デフォルトでは、 disklabel による操作のほとんどはメモリ内にあるラベ
     ルのコピーに対してアクセスします。 (ディスク上に存在する) ラベルにアクセ
     スするためには -r オプションを使用します。このオプションにより、カーネル
     のサポート無しでラベルをディスクにインストールすることが可能になります。
     例えばラベルがはじめてシステムにインストールされる時など、ディスクにはじ
     めてラベルを書き込む際に指定されなければなりません。 -r オプションによる
     固有の効果は以下の各コマンドの説明で示します。

   B>デB>ィB>スB>クB>デB>バB>イB>スB>名

     全ての disklabel の書式で、ディスクのデバイス名が必要です。ディスクのデバ
     イス名は、ディスクまたはスライスを示すローデバイス名でなければなりませ
     ん。例えば da0 は DOS パーティションに無関係でディスク全体を表し、 da0s1
     はスライスを表します。デバイスによっては、特に ccd では、 ``ディスク全体
     を示す'' (または ``c'') パーティションを必要とします。例えば ccd0c です。
     デバイス指定時には、 /dev/ のパスプレフィックスを付ける必要はありません。
     disklabel は自動的にこれを前に付けます。

   B>デB>ィB>スB>クB>ラB>ベB>ルB>のB>読B>みB>込B>み

     ラベルをディスクドライブに保存したり確認するためにはオプションを指定せず
     に disklabel を使用します。

     disklabel [-r] disk

     disk は対象とするローディスクを示します。また da0/dev/da0c のような書
     式でも指定することができます。これによってドライブに関するすべてのパラメ
     ータとパーティションのレイアウトを表示します。 -r フラグを指定しない場合
     には、カーネルのメモリ内にあるラベルのコピーが表示されます。もしディスク
     にラベルが書き込まれていなかったり、ディスクのパーティション形式が正しく
     かれているドライブタイプが必要です。ドライブのパラメータとパーティション
     情報は、このファイルから得られたものが使われます。もし、同じ型のディスク
     に異なるパーティション情報を持たせたい場合には、 disktab にそれぞれ別々の
     エントリを書いておくか、ラベルを書き込んだあとで後述する方法でそれを編集
     する必要があります。オプションの引数として、16 文字までのパック識別用文字
     列を指定します。パック名に空白を含める場合にはそれをクォートする必要があ
     ります。

     -n フラグが与えられると、データはデバイスに書き込まれません。代りに、書き
     込まれるはずだったディスクラベルが、標準出力に表示されます。

     -r フラグが与えられると、ディスクのラベルとブートストラップが直接書き換え
     られます。この副作用として、すでにあるブートストラップ用コードが上書きさ
     れてしまうため、ディスクがブート不能にされてしまいます。ラベルとブートス
     トラップを同時に書き込む方法は後述のブートオプションを参照してください。
     -r が指定されない場合には、ラベルはメモリ内のコピーを通して書き換えられる
     ため、ブートストラップコードは影響されません。もしまだディスクがラベル付
     けされていなければ、 -r フラグをつけなければなりません。どちらの方法で
     も、カーネルのメモリ内コピーは変更されます。

     disktab(5) に記載されていない未使用のディスクに対しては、 disktype として
     ``auto'' を指定できます。この場合、ディスクの最初のラベルを生成するように
     ドライバに要求します。これは成功するかも知れないし成功しないかも知れませ
     ん。これはディスクドライバがディスクを全く読む事無く必要なデータを取得で
     きるか否かに依存します。全ての SCSI ディスクとほとんどの IDE ディスクと
     vnode デバイスにおいて成功するでしょう。ディスクに対するラベルの書き込み
     は唯一サポートされた操作であり、 disk 自身は標準の名前 (フルパス名であっ
     てはなりません) で提供される必要があります。

     ほとんどのハードディスクでは、パーセントベースのラベル (および大きさに
     `*' を指定する単一のパーティション) で、もっともな設定を出力するでしょ
     う。

     PC ベースのシステムでは、 BIOS に正しく FreeBSD ディスクラベルを認識させ
     るために、特別な要件があります。古いシステムでは、 ``危険な方法で専用化さ
     れた'' ディスクラベルが必要かもしれません。これは、偽の DOS パーティショ
     ンを作成することにより、最近のディスクのジオメトリに対して古い BIOS が引
     き起す問題を回避するというものです。新しいシステムでは、通常の DOS スライ
     スを fdisk で作成して、このスライス中に FreeBSD ディスクラベルを作成すれ
     ば良いでしょう。本件についてはこのマニュアルで後述します。

     新規ディスクラベルをインストールするだけでは、このラベルでシステムをブー
     トさせることは出来ません。ブートブロックもまたインストールする必要があり
     ます。本件についてはこのマニュアルで後述します。

   B>既B>存B>のB>デB>ィB>スB>クB>ラB>ベB>ルB>のB>編B>集

     既存のディスクラベルを編集するには、以下の書式を使います。

     disklabel -e [-r] [-n] disk

     このコマンドはラベルをカーネルのメモリ内コピーから、または -r フラグが与
     disklabel -R [-r] [-n] disk protofile

     disklabel は以前の操作により ASCII ファイルとして保存されているディスクラ
     ベルをディスクへ書き戻します。ラベルを作成するときに使われるプロトタイプ
     ファイルは、ラベルを読み込んだり編集したりするときのものと同じフォーマッ
     トである必要があります。コメントは # と改行で区切られます。新しいラベルを
     書き込む際に -r が指定されているとブートストラップコードは使えなくなって
     しまいますが、指定されていない場合には影響ありません。ラベルの復元とブー
     トストラップの書き込みを同時に行う方法は後述のブートオプションを参照して
     ください。 -n フラグが与えられると、データはデバイスに書き込まれません。
     代りに、書き込まれるはずだったディスクラベルが、標準出力に表示されます。
     特定のディスクに対して、パーティション方式がどのように動作するかを見るの
     に有用です。

   B>デB>ィB>スB>クB>ラB>ベB>ルB>領B>域B>へB>のB>書B>きB>込B>みB>のB>有B>効B>化B>おB>よB>びB>無B>効B>化

     デフォルトでは、ディスクの先頭領域にあるディスクラベル領域への書き込みは
     不可能です。ディスクドライバはいかなる操作も無視します。もし (例えばラベ
     ルを消去するなど) この領域への書き込みを行う必要があるならば、以下の書式
     を使います。

     disklabel [-W] disk

     ラベルの書き込みを可能にした後に不可能にするには以下のコマンドを使いま
     す。

     disklabel [-N] disk

   B>ブB>ーB>トB>スB>トB>ラB>ッB>プB>のB>イB>ンB>スB>トB>ーB>ル

     disklabel の最後の 3 つの書式は、ブートストラップコードをインストールする
     ために使われます:

     disklabel -B [-b boot1 -s boot2] disk [disktype]

     この書式ではブートストラップのみインストールします。ディスクラベルは変更
     しません。

     disklabel -w -B [-n] [-b boot1 -s boot2] disk disktype [packid]

     この書式は前述の ``ラベルの書き込み'' コマンドと一致します。新しいボリュ
     ームラベルを書き込むとともにブートストラップのインストールもおこないま
     す。ベースディスクに対して本コマンドを実行すると、 ``危険な方法で専用化さ
     れた'' ラベルを作成します。本コマンドは、通常、ベースディスクではなくスラ
     イスに対して実行します。 -n フラグが与えられると、データはデバイスに書き
     込まれません。代りに、書き込まれるはずだったディスクラベルが、標準出力に
     表示されます。

     disklabel -R -B [-n] [-b boot1 -s boot2] disk protofile [disktype]

     この書式は前述の ``ラベルの復元'' コマンドと一致します.  ボリュームラベル
     を復元するとともにブートストラップのインストールもおこないます。

     2.   -b フラグと -s フラグが指定されておらず disktype が指定された場合、
          disktab のエントリが存在しこれらのパラメータが含まれるならばプログラ
          ムの名前はこのディスクに対する disktab(5) エントリの ``b0'' および
          ``b1'' パラメータより得られます。

     3.   そうでない場合、デフォルトのブートイメージ名は標準のステージ 1 およ
          びステージ 2 のブートイメージとして /boot/boot1/boot/boot2 にな
          ります (詳細はアーキテクチャによって異なり、 Alpha においては単一ス
          テージのブートが使用されます)。

   B>スB>クB>ラB>ッB>チB>かB>らB>のB>、B>ブB>ーB>トB>可B>能B>デB>ィB>スB>クB>のB>初B>期B>化/B>フB>ォB>ーB>マB>ッB>ト

     ディスクをスクラッチから初期化するには、次の手順をお勧めします。この手順
     は、FreeBSD 以外のスライスを含む、ディスク上のすべてを削除してしまうこと
     に注意してください。

     1.   fdisk を使用して、DOS パーティションテーブルを作成します。これによ
          り、 FreeBSD ディスクラベルを保持するディスク全体のスライスを作成
          し、マスタブートレコードをインストールします。

     2.   disklabel を使用して、最初の FreeBSD ディスクラベルを初期化し、
          FreeBSD ブートブロックをインストールします。

     3.   disklabel を使用して、新規に作成したラベルを編集し、適切なパーティ
          ションを追加します。

     4.   最後に、ラベル中に作成したファイルシステムパーティションを newfs し
          ます。典型的なディスクラベルのパーティショニング方式では、 ``a'' パ
          ーティションは約 128MB でルートファイルシステムを、 ``b'' パーティ
          ションはスワップを、 ``d'' パーティションは /var を (通常 128MB)、
          ``e'' パーティションは /var/tmp を (通常 128MB)、 ``f'' パーティショ
          ンは /usr を (通常 2G くらい)、 ``g'' パーティションは /home を (通
          常、残り)、それぞれ割り当てます。これは、システムによって異なりま
          す。

     fdisk -BI da0

     disklabel -w -r -B da0s1 auto

     disklabel -e da0s1


関連ファイル

     /etc/disktab
     /boot/
     /boot/boot<n>


保存されたファイルの書式

     disklabel はディスクラベルを確認、編集、または復元する際に ASCII 形式のラ
     ベルを使用します。フォーマットは以下のとおりです。

         # /dev/da1c:
         headswitch: 0           # milliseconds
         track-to-track seek: 0  # milliseconds
         drivedata: 0

         8 partitions:
         #        size   offset    fstype   [fsize bsize bps/cpg]
           a:    81920        0    4.2BSD     1024  8192    16   # (Cyl.    0 - 84*)
           b:   160000    81920      swap                        # (Cyl.   84* - 218*)
           c:  1173930        0    unused        0     0         # (Cyl.    0 - 1211*)
           h:   962010   211920     vinum                        # (Cyl.  218*- 1211*)

     # で始まる行はコメントです。他の項目のほとんども既に使われていません。正
     しく設定されてなければならない項目は以下のとおりです:

     label                 オプションのラベルです。ラベルを書き込む際に packid
                           オプションにより設定されます。

     flags                 flags は removableecc もしくは badsect が指定可
                           能です。 removable はリムーバブルメディアドライブに
                           対して設定されますが、現在の FreeBSD のドライバはこ
                           のフラグを評価しません。 ecc はサポートされていませ
                           ん。 badsect はドライブが不良セクタの代替を行える場
                           合に指定します。

     sectors/unit          ディスクの全体の大きさを示します。この値は正しくな
                           ければなりません。

     B>パB>ーB>テB>ィB>シB>ョB>ンB>テB>ーB>ブB>ルこれは UNIX のパーティションテーブルであり、
                           fdisk(8) で述べられている Microsoft のパーティショ
                           ンテーブルではありません。

     パーティションテーブルは 8 つまでエントリを持つことができ、以下の情報を含
     みます:

     identifier  パーティションの識別子は ``a'' から ``h'' の 1 文字です。慣例
                 的な理由により、 ``c'' パーティションはディスク全体を表すため
                 に予約されています。

     size        セクタ単位でのパーティションの大きさです。 K (キロバイト -
                 1024), M (メガバイト - 1024*1024), G (ギガバイト -
                 1024*1024*1024), % ( ``c'' 以外の固定長のパーティションを取り
                 除いた後の空間に対するパーセントか、 * (固定長のパーティショ
                 ンとパーセント指定のパーティションを取り除いた後の空間すべ
                 て)。 ``c'' に対して * を指定すると、ディスク全体を意味します
                 小文字の K, M, G も許されます。大きさと型の間には空白を入れて
                 はなりません。

                 例: 2097152, 1g, 1024m, 1048576k はすべて同じ大きさです (512
                 バイトセクタを仮定)。

     offset      ドライブの先頭からのオフセットによるパーティションの開始位置
                 を、セクタ単位で指定します。 * は、使用すべき正しいオフセット

     fsize       4.2BSD と LFS のファイルシステムに対してのみ有効です。フラグ
                 メントの大きさを意味します。 1 GB 未満のパーティションに対す
                 るデフォルトは 1024 で、 1 GB 以上に対するデフォルトは 4096
                 です。

     bsize       4.2BSD と LFS のファイルシステムに対してのみ有効です。ブロッ
                 クの大きさを意味します。 1 GB 未満のパーティションに対するデ
                 フォルトは 8192 で、 1 GB 以上に対するデフォルトは 16384 で
                 す。

     bps/cpg     4.2BSD ファイルシステムに対しては、シリンダグループ中のリシン
                 ダ数を意味します。 LFS ファイルシステムに対しては、セグメント
                 シフト値を意味します。 1 GB 未満のパーティションに対するデ
                 フォルトは 16 で、 1 GB 以上に対するデフォルトは 64 です。

     行の残りの部分はコメントで、ドライブの一般的には使われていない (しかし多
     分正確な) ジオメトリ情報に基づいたシリンダの割り当て情報を示しています。
     アスタリスク (*) はパーティションがシリンダ境界で厳密にはじまっていない、
     もしくは終っていないことを意味します。


使用例

           disklabel da0s1

     da0s1 のラベルとしてカーネル内のコピーを /dev/da0s1 から得られたものとし
     て表示します。ラベルを読み込み時には、ラベルがスライス上に存在する場合で
     も、 FreeBSD はベースディスク名を指定することを許しています。しかしなが
     ら、厳密には、ベースディスク名を指定するのは ``危険な方法で専用化された''
     ラベルを使用する場合に限定してください。通常は、スライスを指定してくださ
     い。

           disklabel da0s1 > savedlabel

     da0s1 に対するカーネル内のコピーをファイルに savedlabel に保存します。こ
     のファイルは後で -R フラグを用いてラベルを復元する際に使用できます。

           disklabel -w -r /dev/da0s1 da2212 foo

     /etc/disktab に書かれている ``da2212'' の情報を da0s1 のラベルとして書き
     込みます。存在したブートストラップコードは使えなくなります。

           disklabel -e -r da0s1

     da0s1 のディスク上のラベルを読み込み、編集し、再び書き込みます。ディスク
     上のラベルとともにカーネル内コピーも書き換えられます。存在したブートスト
     ラップコードは影響を受けません。

           disklabel -e -r -n da0s1

     da0s1 のディスク上のラベルを読み、編集し、新規ラベルがどのようになるかを
     (セクタ単位で) 表示します。新規ラベルは、メモリにもディスクにもインストー
     ルしません。

     パーティションレイアウト label_layout を使用すると、 da0s1 のラベルがどの
     ようになるかを表示します。 %* に基くパーティションの大きさ指定を使用
     するラベル方式を使用した場合に、各パーティションにどれだけ割り当てられる
     かを判定するのに有用です。

           disklabel -B da0s1

     da0s1 に新たにブートストラップコードを書き込みます.  ブートストラップコー
     ドは /boot/boot1 、およびもし必要ならば /boot/boot2 です。ディスク上のラ
     ベルおよびカーネル内コピーは影響を受けません。

           disklabel -w -B /dev/da0s1 -b newboot1 -s newboot da2212

     新たなラベルとブートストラップコードを書き込みます。ラベルは disktab の
     ``da2212'' の情報を使用し、ディスク上のラベルとともにカーネル内コピーも書
     き換えられます。ブートストラップコードは /boot/newboot1/boot/newboot2
     です。

           dd if=/dev/zero of=/dev/da0 bs=512 count=32
           fdisk -BI da0
           dd if=/dev/zero of=/dev/da0s1 bs=512 count=32
           disklabel -w -r -B da0s1 auto
           disklabel -e da0s1

     ディスク上の既存の情報を完全に削除し、単一の ``ディスク全体'' スライスを
     含む DOS パーティションテーブル付きの、ブート可能ディスクを新規に作成しま
     す。次にスライスを初期化し、編集します。 dd はオプションですが、 BIOS に
     よっては正しくディスクを認識するために必要です。

     これは、 %, M, G, * といった新規パーティションサイズ型を使用する、ディス
     クラベルの例です。次のコマンドラインのソースファイルとして使用可能です:

           disklabel -R ad0s1c new_label_file

         # /dev/ad0s1c:
         type: ESDI
         disk: ad0s1
         label:
         flags:
         bytes/sector: 512
         sectors/track: 63
         tracks/cylinder: 16
         sectors/cylinder: 1008
         cylinders: 40633
         sectors/unit: 40959009
         rpm: 3600
         interleave: 1
         trackskew: 0
         cylinderskew: 0
         headswitch: 0           # milliseconds
         track-to-track seek: 0  # milliseconds


診断

     デバイスドライバは、オープンされているパーティションに関して、サイズが小
     さくなることおよびオフセットが変化することを許しません。デバイスドライバ
     の中には、ラベルを持たないディスクに対して 1 パーティションのみからなるラ
     ベルを作成するものがあります。そのため、オープンされているディスクのラベ
     ルは ``a'' パーティションに書く必要があります。このような理由で、次の 2
     ステップにより、所望のラベルを作成する必要がある場合があります。第 1 ス
     テップは少なくとももう 1 つのパーティションを作成することであり、第 2 ス
     テップは ``a'' パーティションを小さくしながら新たなパーティションのラベル
     を設定することです。

     ファイルシステムによっては、用意された領域にブートストラップコードが収ま
     り切らないようなマシンがあるかも知れませんその結果として、 ``ブート可能
     な'' ディスクのパーティションにファイルシステムを作成できない場合がありま
     す。ブートストラップコードを書き込む時に、 disklabel はこのようなケースを
     チェックします。 FS_UNUSED タイプのパーティションに重なるようにブートスト
     ラップコードが書き込まれる場合には、そのパーティションは FS_BOOT とマーク
     されます。 newfs(8) ユーティリティは、 FS_BOOT パーティションにファイルシ
     ステムを作成することを禁止します。また逆に、パーティションのタイプが
     FS_UNUSED もしくは FS_BOOT では無い場合、 disklabel はそのパーティション
     に重なるようなブートストラップコードを書き込みません。


バグ

     ディスク名がフルパスで指定されない場合には、デバイス名は ``c'' パーティ
     ションになります。

     i386 アーキテクチャでは、プライマリブートストラップセクタに、組み込みの
     fdisk テーブルを持ちます。 disklabel は、ブートストラップのみをインストー
     ルする時 (-B) もしくはラベルを編集する時 (-e) にこれを壊さないように気を
     付けます。しかし、 -w-R を指定した時には、無条件でプライマリブートス
     トラッププログラムをディスクに書き込みますので、 fdisk テーブルをブートス
     トラッププログラム内のダミーに置き換えます。これはディスク全体を専用に使
     う場合、すなわち BSD ディスクラベルがディスクの絶対ブロック 0 から始まる
     場合のみ関係あります。

     disklabel はすべての実施可能なエラーチェックは行いません。次の場合、警告
     が表示されます:パーティションが重なる場合、絶対的なオフセットが期待した
     オフセットと異る場合、 ``c'' パーティションが 0 から開始しないかディスク
     全体を覆わない場合、パーティションがデバイスの終端を越える場合、その他の
     エラー。ただし、未使用空間があっても警告は表示されません。

FreeBSD 4.4                      July 30, 1999                     FreeBSD 4.4

ABELNET VPSサービス