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

名称

bsdlabelBSD ラベルの読み書きを行う

書式

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, ia64pc98 です。このオプションが省略されれば、 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, MG の小文字も許されます。サイズと接尾辞の間には空白を入れてはなりません。

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

offset
ドライブの先頭からパーティションの開始位置までのオフセット値 (セクタ単位) です。 * は、使用すべき正しいオフセット (パーティション‘ c’を無視して、直前のパーティションの終端に 1 を加えたもの) を、 bsdlabel に計算させます。ただしパーティションパーティション‘ c’に対しては、 * はオフセット 0 と解釈されます。最初の 16 セクタはメタデータのために予約されているので、最初のパーティションはオフセット 16 で開始するべきです。
fstype
パーティションの使用目的を表します。上記の例では現在使用されているパーティション型を示します。 UFS ファイルシステムおよび ccd(4) では 4.2BSD が使われます。 Vinum ドライブでは vinum が使われます。他の一般的な型は swapunused です。取り決めでは、パーティション‘ 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