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

2. Linux と FreeBSD でスワップを共有する

この章では Linux と FreeBSD でスワップパーティションを共有する方法を述 べます。同様のことを実現する他の方法もあるかもしれません。ここで述べる 方法は Red Hat Linux 4.1 と FreeBSD 2.2.2 を想定しています。

2.1 Linux のインストール

最初に、Linux を普通にインストールします。ハードディスクには FreeBSD のパーティションに割り当てる分は残しておかなければなりません。(パーティ ションは1つだけです。FreeBSD では「スライス」と呼ばれる拡張パーティショ ンの一種を使います。)スワップパーティションは作る必要はありません。も し必要な場合には、FreeBSD に割り当てる予定のパーティションを指定してお きます。こうしておけば、後で Linux のスワップパーティションを削除して FreeBSD で用いることができます。

Linux のインストールが終ったら、次はカーネルを再構築します。カーネル再 構築が初めてならば、The Linux Kernel HOWTOを読むといいでしょう。 カーネルは、UFS ファイルシステム と BSD ディスクラベル (FreeBSD のパーティションテーブル)をサポートするようにしておかな ければなりません。

UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] m
BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?]
(NEW) y

新しいカーネルをインストールして、コンピュータを再起動します。Linux ス ワップパーティションを作った場合には、/etc/fstabファイルから swapを含む行を削除します。新しいカーネルが入っていて Linux の ブートディスクがあることを確認してください。以上で FreeBSD をインストー ルする準備ができました。

2.2 FreeBSD のインストール

FreeBSD の文書に書いてあるように FreeBSD をインストールします。Linux のスワップパーティションがある場合には消去します(FreeBSD のfdisk を使ってかまいません)。FreeBSD パーティションのどのスライスがスワップ になっているか覚えておきます。デフォルトでは2番目のスライスとなります。 FreeBSD を全部インストールし、Linux のブートディスクを使ってLinux をブートします。

2.3 Linux で FreeBSD のスワップパーティションを使う設定をする

Linux が起動したらdmesgを実行します。出力は次のようになります。

Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 >

この出力は /dev/hda4 がFreeBSDのパーティションであり、 /dev/hda5, /dev/hda6,/dev/hda7 がパーティショ ン内のスライスであることを表しています。スワップが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 を再インストールす るしか方法はありません。経験は偉大な教師です。 :-)


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