BSDLABEL(8) | FreeBSD System Manager's Manual | BSDLABEL(8) |
名称
bsdlabel — BSD ラベルの読み書きを行う書式
bsdlabel | [ -A] disk | -f file |
bsdlabel | -w [ -An][ -B [ -b boot]][ -m machine] disk | -f file [ type] |
bsdlabel | -e [ -An][ -B [ -b boot]][ -m machine] disk | -f file |
bsdlabel | -R [ -An][ -B [ -b boot]][ -m machine][ -f] disk | -f file protofile |
解説
bsdlabel ユーティリティは、ディスクパーティションやパーティションイメージを含むファイル上に BSD ラベルを書き込んだり、確認したり、修正したりするために使われます。また bsdlabel は同時にブートストラップコードをインストールすることもできます。ディスクデバイス名
デバイス指定時 (すなわち -f オプションが使われていない場合) には、 /dev/ のパスプレフィックスは省略可能です。 bsdlabel ユーティリティは自動的にこれを前に付けます。一般的なオプション
-A オプションをつけると、 BSD ラベルの中で歴史的な理由で残っている部分を処理できるようになります。このオプションを与えない場合、これらのフィールドには適切な値が設定されます。-f オプションは、ディスクパーティションの代わりにファイルに対して操作を行なうよう bsdlabel に指示します。
-n オプションは、ディスクが変更される直前で bsdlabel の実行を止め、実行結果をディスクに書き込まずに表示します。
-m machine 引数は、強制的に bsdlabel に異なるアーキテクチャに合ったレイアウトを使わせます。現在有効な値は i386, amd64, ia64 と pc98 です。このオプションが省略されれば、 bsdlabel は今のマシンに合ったレイアウトを使います。
ディスクラベルの読み込み
ディスクドライブ上のラベルを確認するためには次の形式を使用します。bsdlabel [ -A][ -m machine] disk
disk は対象とするディスクを示します。また da0 や /dev/da0 のような書式でも指定することができます。これによってパーティションのレイアウトを表示します。
標準的なラベルの書き込み
標準的なラベルを書き込むには、以下の書式を使います。bsdlabel -w [ -An][ -m machine] disk [ type]
ドライブの type が指定されているなら、 disktab(5) ファイル内の同名のエントリが使用され、そうでないか、または、タイプが 'auto' として指定されるなら、デフォルトのレイアウトが使われます。
既存のディスクラベルの編集
既存のディスクラベルを編集するには、以下の書式を使います。bsdlabel -e [ -An][ -m machine] disk
このコマンドは、デフォルトのエディタでディスクラベルをオープンし、エディタ終了時にディスクラベルを検証し、正しければそれをディスクに書き込みます。
ファイルからのディスクラベルの復元
ファイルからディスクラベルを復元するには、以下の書式を使います。bsdlabel -R [ -An][ -m machine] disk protofile
bsdlabel ユーティリティは、以前の操作により ASCII 形式のファイルに保存されたディスクラベルを復元することができます。ラベルを作成するときに使われるプロトタイプファイルは、ラベルを読み込んだり編集したりするときのものと同じフォーマットである必要があります。コメントは‘ #
’と改行で区切られます。
ブートストラップのインストール
-B オプションが指定されるなら、ブートストラップコードが /boot/boot から読み込まれ、それがディスクに書き込まれます。 -b boot オプションによって、別のファイルを使用することができます。関連ファイル
- /boot/boot
- デフォルトのブートイメージ
- /etc/disktab
- ディスクを説明したファイル
保存されたファイルの書式
bsdlabel ユーティリティは、ディスクラベルを確認、編集、または復元する際に ASCII 形式のラベルを使用します。フォーマットは以下のとおりです。
8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 16 4.2BSD 2048 16384 5128 b: 1091994 81936 swap c: 1173930 0 unused 0 0 # "raw" part, don't edit
-A オプションが指定されている場合、フォーマットは次のようになります:
# /dev/da1c: type: SCSI disk: da0s1 label: flags: bytes/sector: 512 sectors/track: 51 tracks/cylinder: 19 sectors/cylinder: 969 cylinders: 1211 sectors/unit: 1173930 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 16 4.2BSD 1024 8192 16 b: 160000 81936 swap c: 1173930 0 unused 0 0 # "raw" part, don't edit
‘ #
’で始まる行はコメントです。
パーティションテーブルは 8 つまでエントリを持つことができ、以下の情報を含みます:
- #
-
パーティションの識別子は‘
a
’から‘h
’の 1 文字です。慣例的な理由により、‘c
’パーティションはディスク全体を表すために予約されています。 - size
-
セクタ、
K (キロバイト - 1024)、 t.Cm M (メガバイト - 1024*1024)、
G (ギガバイト - 1024*1024*1024)、
% (‘
c
’以外の固定長のパーティションを取り除いた 後の 空間に対するパーセント) か、 * (固定長のパーティションとパーセント指定のパーティションを取り除いた 後の 空間すべて) 単位でのパーティションの大きさです。パーティション‘c
’に対して * を指定すると、ディスク全体を意味します。接尾辞 K, M と G の小文字も許されます。サイズと接尾辞の間には空白を入れてはなりません。例: 2097152, 1G, 1024M, 1048576K はすべて同じ大きさです (512 バイトセクタを仮定)。
- offset
-
ドライブの先頭からパーティションの開始位置までのオフセット値 (セクタ単位) です。
* は、使用すべき正しいオフセット (パーティション‘
c
’を無視して、直前のパーティションの終端に 1 を加えたもの) を、 bsdlabel に計算させます。ただしパーティションパーティション‘c
’に対しては、 * はオフセット 0 と解釈されます。最初の 16 セクタはメタデータのために予約されているので、最初のパーティションはオフセット 16 で開始するべきです。 - fstype
-
パーティションの使用目的を表します。上記の例では現在使用されているパーティション型を示します。 UFS ファイルシステムおよび
ccd(4) では
4.2BSD が使われます。 Vinum ドライブでは
vinum が使われます。他の一般的な型は
swap と
unused です。取り決めでは、パーティション‘
c
’はスライス全体を表し、型 unused であるべきですが、 bsdlabel はこの取り決めを強制しません。 bsdlabel ユーティリティは多くの他のパーティション型を知っていますが、それらは現在使用されていません (詳細は、 < sys/disklabel.h> ファイルで FS_UNUSED で始まっている定義を参照してください)。 - fsize
- 4.2BSD ファイルシステムに対してのみ、フラグメントのサイズです。 newfs(8) を参照してください。
- bsize
- 4.2BSD ファイルシステムに対してのみ、ブロックのサイズです。 newfs(8) を参照してください。
- bps/cpg
- 4.2BSD ファイルシステムに対してのみ、シリンダグループ中のシリンダ数です。 newfs(8) を参照してください。
使用例
da0 の最初のスライス用に、 /dev/da0s1 から得たものとしてラベルを表示します:
bsdlabel da0s1
da0s1 に対するカーネル内のコピーをファイルに savedlabel に保存します。このファイルは後で -R オプションを用いてラベルを復元する際に使用できます:
bsdlabel da0s1 > savedlabel
da0s1 のラベルを作成します:
bsdlabel -w /dev/da0s1
da0s1 のラベルを読み込み、編集し、その結果を書き込みます:
bsdlabel -e da0s1
da0s1 のディスク上のラベルを読み込み、編集し、新規ラベルがどのようになるかを (セクタ単位で) 表示します。新規ラベルは、メモリにもディスクにもインストール しません:
bsdlabel -e -n da0s1
da0s1 にデフォルトのラベルを書き込みます。パーティション情報やファイルシステム情報を編集するには、この後で bsdlabel -e コマンドを使って下さい:
bsdlabel -w da0s1
savedlabel に書かれている情報を da0s1 のラベルとして書き込みます。ディスク上のラベルとともにカーネル内コピーも書き換えられます:
bsdlabel -R da0s1 savedlabel
パーティションレイアウト label_layout を使用すると、 da0s1 のラベルがどのようになるかを表示します。 % と * に基づくパーティションの大きさ指定を使用するラベル方式を使用した場合に、各パーティションにどれだけ割り当てられるかを判定するのに有用です:
bsdlabel -R -n da0s1 label_layout
da0s1 に新たにブートストラップコードを書き込みます。ブートストラップコードは /boot/boot です:
bsdlabel -B da0s1
新たなラベルとブートストラップコードを書き込みます。ブートストラップコードは、カレントワーキングディレクトリのファイル newboot からもたらされます:
bsdlabel -w -B -b newboot /dev/da0s1
ディスク上の既存の情報を完全に削除し、ディスク全体を覆う 1 つのスライスを含んだ DOS パーティションテーブル付きのブート可能ディスクを新規に作成します。次にスライスを初期化し、編集します。 dd(1) はオプションですが、 BIOS によっては正しくディスクを認識するために必要です:
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 bsdlabel -w -B da0s1 bsdlabel -e da0s1
これは、 %, M, G と * といった新規パーティションサイズ型を使用する、ディスクラベルの例です。“ bsdlabel -R ada0s1 new_label_file
”のコマンドラインのソースファイルとして使用可能です:
# /dev/ada0s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 400M 16 4.2BSD 4096 16384 75 # (Cyl. 0 - 812*) b: 1G * swap c: * * unused e: 204800 * 4.2BSD f: 5g * 4.2BSD g: * * 4.2BSD
診断
デバイスドライバは、オープンされているパーティションに関して、サイズが小さくなることおよびオフセットが変化することを許しません。互換性
uint32_t を用いてセクタ数を格納しているため、 BSD ラベルは最大 2^32-1 セクタに制限されます。これは通常 2TB のディスク容量を意味します。これより大きなディスクをパーティションに分けるには、例えば gpart(8) などの別の方法を使う必要があります。各々の BSD は、少しずつ異なったバージョンの BSD ラベルを使用しており、一般的に互換性はありません。
October 1, 2013 | FreeBSD |