次のページ 前のページ 目次へ

2. FreeBSD のハードディスクのラベル付け

Linux と FreeBSD はハードディスクやパーティションにそれぞれ異なる方法 でラベルを付けます.この章では,両者の主な違いを解説します. FreeBSD のラベル付けは,今まで使われてきた BSD のラベル付けのスタイル を PC の fdisk によるパーティションに当てはまるよう移植したものです. 従って,この方法は NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS, Solaris 等,他の BSD ベースの UNIX システムとよく似ています.

2.1 FreeBSD の「スライス」と「パーティション」

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 のドキュメント を参照してください.

2.2 Linux と 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 拡張パーティ ション内の論理パーティションの構成は絶対に変えないことをお勧めします.


次のページ 前のページ 目次へ