Linux と FreeBSD はハードディスクやパーティションにそれぞれ異なる方法 でラベルを付けます.この章では,両者の主な違いを解説します. FreeBSD のラベル付けは,今まで使われてきた BSD のラベル付けのスタイル を PC の fdisk によるパーティションに当てはまるよう移植したものです. 従って,この方法は NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS, Solaris 等,他の BSD ベースの UNIX システムとよく似ています.
FreeBSD はPCハードディスクのパーティションテーブルの4つのエントリーの
うち1つのエントリーを用います.FreeBSD の用語では,この基本パーティショ
ンを「スライス」と呼びます.そして,disklabel
というプログラ
ムを使って,この基本パーティション内に8つの論理パーティションを作成し
ます.FreeBSD の用語では,この論理パーティションを「パーティション」と呼びます.この概念は,Linux (や DOS) が拡張パーティション内で論理パー
ティションを扱うことと似ています.Linux (や DOS) で作成した拡張パーティ
ション内には,FreeBSD をインストールすることはできません.Linux の
fdisk
プログラムは,メインメニューではFreeBSD のスライス内の BSD
パーティションを表示しませんが,`b'コマンドを与えると BSD のディスクラ
ベル情報を表示します.fdisk
の出力は以下のようになります
(/dev/hda4
が FreeBSD のスライスです).
bash# fdisk /dev/hda Command (m for help): p Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 27 54400+ 83 Linux native /dev/hda2 28 28 55 56448 83 Linux native /dev/hda3 56 56 403 701568 83 Linux native /dev/hda4 404 404 621 439488 a5 BSD/386 Command (m for help): b Reading disklabel of /dev/hda4 at sector 1624897. BSD disklabel command (m for help): p 8 partitions: # size offset fstype [fsize bsize cpg] a: 64512 1624896 4.2BSD 0 0 0 # (Cyl. 404 - 419) b: 104832 1689408 swap # (Cyl. 420 - 445) c: 878976 1624896 unused 0 0 # (Cyl. 404 - 621) e: 64512 1794240 4.2BSD 0 0 0 # (Cyl. 446 - 461) f: 645120 1858752 4.2BSD 0 0 0 # (Cyl. 462 - 621) BSD disklabel command (m for help): q bash#
以下の例で示すように,最初の列の`a'から`f'までの文字は,1つの FreeBSD スライスでは同じラベルになります.BSD の用語では3つの特別なパーティショ ンがあります.`a' はルートパーティションを示し,`b'はスワップパーティ ションを示し,`c'はスライス全体を示します.これらの文字を異なる型のパー ティションに割り当てる「標準の」方法については FreeBSD のドキュメント を参照してください.
Linux と FreeBSD では,ハードディスクのラベルはそれぞれ以下のように付 けられます.
Linux FreeBSD 最初の IDE ドライブ /dev/hda /dev/wd0 2番目の IDE ドライブ /dev/hdb /dev/wd1 最初の SCSI ドライブ /dev/sda /dev/sd0 2番目の SCSI ドライブ /dev/sdb /dev/sd1
IDE のディスク上では,パーティション(FreeBSD のスライス)は以下のように
ラベルが付けがされます(/dev/hda
を例にしています).
Linux FreeBSD 最初の基本パーティション /dev/hda1 /dev/wd0s1 2番目の基本パーティション /dev/hda2 /dev/wd0s2 3番目の基本パーティション /dev/hda3 /dev/wd0s3 4番目の基本パーティション /dev/hda4 /dev/wd0s4
The partitions in a FreeBSD slice is labelled in the following way
(/dev/hda4
is the FreeBSD slice in the example): -->
筆者の FreeBSD のスライス内のパーティションは以下のようにラベル付けさ
れています.これはデフォルトの設定です.FreeBSD をカスタマイズしてイン
ストールした場合には,ラベルの付き方は変わるかもしれません.(例では
/dev/hda4
が FreeBSD のスライスです.)
Linux のラベル FreeBSDのラベル FreeBSD のマウントポイント /dev/hda5 /dev/wd0s4a / /dev/hda6 /dev/wd0s4b swap /dev/hda7 /dev/wd0s4e /var /dev/hda8 /dev/wd0s4f /usr
もし Linux で dmesg
を実行すると以下のような結果になります.
(Linux のカーネルは UFS ファイルシステム サポートを有効にして構築
しておく必要があります.詳しくは
Linux の インストールの章を見てください.)
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
FreeBSD が/dev/sd1s3
スライス(Linux 用語では
/dev/sdb2
)にインストールされていて,/dev/sdb2
が 2つ
の論理パーティション(/dev/sdb5
と/dev/sdb6
)を含む拡
張パーティションである場合には,先程の例は次のようになります.
Linux のラベル FreeBSDのラベル FreeBSD のマウントポイント /dev/sdb7 /dev/sd1s3a / /dev/sdb8 /dev/sd1s3b swap /dev/sdb9 /dev/sd1s3e /var /dev/sdb10 /dev/sd1s3f /usr
この場合には dmesg
の出力は次のようになります.
Partition check: sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >
FreeBSD のパーティションの後に Linux の拡張パーティションを置いて
いるとトラブルの元となります.Linux インストール用ブートフロッピーに入っ
ているほとんどのカーネルは UFS のサポートが有効になっていないため,
スライス内の FreeBSD パーティションを認識しません.例えば
/dev/hda3
を FreeBSD のスライス,/dev/hda4
を Linux
の拡張パーティションとした場合
Partition check: hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >のように見えるべきものが
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 >のように見えてしまいます.
このようなことが起こるとデバイスの割り当てが狂ってしまい,データを壊す こともあり得ます.ですから FreeBSD スライスは必ず Linux 拡張パーティ ションよりも後に置き,FreeBSD をインストールした後は Linux 拡張パーティ ション内の論理パーティションの構成は絶対に変えないことをお勧めします.