この章では Linux と FreeBSD でスワップパーティションを共有する方法を述 べます。同様のことを実現する他の方法もあるかもしれません。ここで述べる 方法は Red Hat Linux 4.1 と 4.2 (Linux カーネル 2.0.29 と 2.0.30) と FreeBSD 2.2.2 を想定しています。Linux より先に FreeBSD をインストール することもできますが、FreeBSD のスライス内のパーティションの順番には注 意してください。
最初に、Linux を普通にインストールします。ハードディスクには FreeBSD のスライスに割り当てる分は残しておかなければなりません。Linux のスワッ プパーティションは作る必要はありません。もし必要な場合には、FreeBSD に 割り当てる予定のパーティションを指定しておます。こうしておけば、後で Linux のスワップパーティションを削除して、 FreeBSD で用いることができ ます。
Linux のインストールが終ったら、次はカーネルを再構築します。カーネル再 構築が初めてならば、The Linux Kernel HOWTOを読むといいでしょう。 カーネルは、UFS ファイルシステム と BSD ディスクラベル (FreeBSD のパーティションテーブル)をサポートするようにしておかな ければなりません。
UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y
BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
(NEW) y
新しいカーネルをインストールして、コンピュータを再起動します。Linux ス
ワップパーティションを作った場合には、/etc/fstab
ファイルから
swapを含む行を削除します。新しいカーネルが入っていて Linux の
ブートディスクがあることを確認してください。以上で FreeBSD をインストー
ルする準備ができました。
FreeBSD の文書に従って、FreeBSD をインストールします。Linux のスワップ
パーティションを作った場合には、これを消去します(FreeBSD のfdisk
を使ってかまいません)。FreeBSD スライスでの、パーティションの順番には
注意してください。デフォルトのラベル指定を行った場合には、2番目のパー
ティションがスワップになります。FreeBSD を全てインストールし、
Linux のブートディスクを使ってLinux をブートします。
Linux が起動したらdmesg
を実行します。出力は次のようになります。
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
この出力は /dev/hda4
がFreeBSDのスライスであり、
/dev/hda5
, /dev/hda6
, /dev/hda7
,
/dev/hda8
が FreeBSD のパーティショであることを表しています。
スワップがスライス内の2番目のパーティションであれば、
/dev/hda6
がスワップということになります。
スワップパーティションを有効にするため、/etc/fstab
に次の行を
追加します。
/dev/hda6 none swap sw 0 0
FreeBSD ではどんなパーティションでもスワップとして使うことができますが、
Linux のスワップパーティションには特別な印(signature)が書かれていなけ
ればなりません。この印はmkswap
が作成します。スワップパーティショ
ンを共有すると、FreeBSD がこの印を壊してしまいますから、Linux を起動す
るたびに毎回mkswap
を実行しなければなりません。これを自動的に行う
ために、起動時にswapon
を実行するスクリプトを見つけて変更します。
Red Hat Linux の場合には/etc/rc.d/rc.sysinit
です。以下の行を
swapon -a
の前に挿入します。
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
これによって、起動時に毎回/etc/fstab
に記述されている全てのス
ワップパーティションに対して、mkswap
が実行されるようになります。
これはコメントアウトされている(行の先頭の文字が``#''である)場合に
は実行されません。
Linux を再起動した後、free
コマンドでスワップの大きさを確認します。
また、FreeBSD を起動して、きちんと動作しているかどうかを確認します。う
まく動作しない場合には、たぶん間違ったパーティションをスワップとして使っ
ていると思われます。こうなってしまった場合には、FreeBSD を再インストー
ルするしか方法はありません。経験は偉大な教師です。 :-)