FreeBSD QandA 797
Q. 2.2.x と 3.0 を、一台のディスクに共存させてインストールできますか?
A. 基本的にはできません。しかし、以下のようなテクニックを使えば不可能
ではありません。このテクニックは、非常に危険な操作ですので、以下の
操作が何をしているか、ちゃんと理解できる人「のみ」が行ってください。
また、fdisk の関連する部分のマニュアルを読んでからにしてください。
この設定を少しでも間違えれば、ディスクに入っている内容を「完全に失
わせる」可能性があります。潜在的な危険性を理解した上で、この手法を
使用してください。
基本ポリシとして、3.0 の /, /var, /usr の基本部分のみを別パーティショ
ンに起き、基本は 2.2.x を入れる例を示します (/usr/local や
/usr/home は共有します)。
以下に示すのは、あるラップトップでの例であり、FDISK スライス 1 がハ
イバネーション用のスライスになっています。そこで、スライス 1 に関し
ては気にしないようにしてください。
まずは、2.2.x をスライス 3 (スライス 1 がハイバネーションエリアなど
で使われていなければスライス 2) にインストールします。この際、スラ
イス 2 (前記の場合ならスライス 1、以下略) を、3.0 を入れる分だけ確
保しておきます。とりあえず FAT パーティションにでもしておけばよいで
しょう。サイズは 200MB 程度で足りるようです。
このインストールが終わったら、次は 3.0 をインストールします。この際、
スワップパーティションは、スライス 3 にある 2.2.x のスワップパーティ
ションがそのまま使用できるので、スライス 2 に確保する必要はありませ
ん。面倒なので、スライス 2 には一つだけパーティションを作れば良いで
しょう。配布ファイルは bin だけをインストールします。
ブートブロックは booteasy でも標準ブートブロックでも良いのですが、
安定稼働するまでは booteasy が良いかもしれません。
ここで、/etc/fstab を書き換えて、2.2.x のディスクが /22 に見えるよ
うにします (3.0 のインストール時に、ついでにディスクラベルエディタ
から行ってもかまいません)。
# rmdir /usr/local
# ln -s /22/usr/local /usr
# ln -s /22/usr/home /usr
# mkdir /22/usr/src30
# rmdir /usr/src
# ln -s /22/usr/src30 /usr/src
とでもすればよいでしょう。
この状態で fdisk を実行すると、
# fdisk
******* Working on device /dev/rwd0 *******
parameters extracted from in-core disklabel are:
cylinders=788 heads=128 sectors/track=63 (8064 blks/cyl)
parameters to be used for BIOS calculations are:
cylinders=788 heads=128 sectors/track=63 (8064 blks/cyl)
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 132,(unknown)
start 6144768, size 201600 (98 Meg), flag 0
beg: cyl 762/ sector 1/ head 0;
end: cyl 786/ sector 63/ head 127
The data for partition 2 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
start 63, size 403137 (196 Meg), flag 0
beg: cyl 0/ sector 1/ head 1;
end: cyl 49/ sector 63/ head 127
The data for partition 3 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
start 403200, size 5741568 (2803 Meg), flag 80 (active)
beg: cyl 50/ sector 1/ head 0;
end: cyl 761/ sector 63/ head 127
The data for partition 4 is:
<UNUSED>
となっています。ここで、スライス 2 を FreeBSD 以外の適当な ID を持
つスライスに見せかけて、スライス 3 のブートブロックを呼び出せば、
2.2.x が起動することになります。
この作業を行うために、まずスライス 2 に関するデータを調べます。上の
表示からスライス 2 は開始が 63 ブロックで、サイズが 403137 ブロック
であることがわかります。そこで、以下のファイルを作ります。
3.0 のルートディレクトリ (この例だと wd0s1a) に、22.fdisk というファ
イル名で、
p 2 65 63 403137
a 3
(一行目の 65 は 165 以外ならどんな適当な数字でも良いのですが、fat
を示す 6 や、unused に対応した 0 などにするのはあまりお勧めできませ
ん。また、ラップトップなどでハイバネーションにパーティションを使用
するタイプの BIOS では、そのパーティション ID にしてもいけません。
上の例では、132 がそれにあたります) というファイルを、また 22sw と
いうファイル名で、
#!/bin/sh
fdisk -f /22.fdisk wd0
というファイルを作ります。そして、/22sw に実行ビットを立てます。
そして、3.0 から見たディレクトリ /22 (つまり 2.2.x のルートディレク
トリ) に、30.fdisk というファイル名で、
p 2 165 63 403137
a 2
(一行目の 165 は、先ほどの例とは異なり、絶対に 165 でなければなりま
せん) というファイルを、また 30sw というファイル名で
#!/bin/sh
fdisk -f /30.fdisk wd0
というファイルをつくります。そして /22/30sw に実行ビットを立てます。
これで、3.0 が起動しているときに
# /22sw
と実行して再起動すると、2.2.x が起動してきます。また、2.2.x が起動
しているときに
# /30sw
と実行して再起動すると、3.0 が起動してきます。実際には、一発でうま
くこの設定ができるとは限らず、かつ失敗すると二度と起動しないという
可能性がありますので、とりあえず fdisk には -t オプションを同時につ
けて、デバッグを十分に行ってから実行してください。また、重要なデー
タがあれば、必ずバックアップを取ってからこの設定を行ってください。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。