私の持っているThinkPad iSeries Model 1620(2661-23J)(以降、i1620)はCPUがCeleron 500MHz、HDDが20GB、メモリが64MB、液晶ディスプレイがXGA12.1型という素敵なマシンです。
OSにはデフォルトでWindows Meが入っていますが、こんな素敵なマシンをWindows Meだけに使わせるのはもったいないので、FreeBSD 4.3RとNetBSD 1.5もインストールしてマルチブートな環境を作って遊ぼう!というのがこのコラムの真意です。
ちなみにWindowsを完全に削除しないのには理由があります。USBのCD-Rを持っているため、CD-R作成のためだけにWindowsを利用するからです。他には全く使い道はありません。
私の場合、以下の構成にしました。
1 基本領域 Windows Me
2 基本領域 FreeBSD 4.3R
3 基本領域 NetBSD i386 1.5
4 拡張領域
論理領域 ufs /home
論理領域 FAT32 /msdos
Windows Meで起動してfdiskし、各領域を作成します。論理領域の/homeはフォーマットしてはいけませんが論理領域の/msdosは再起動後にフォーマットしておきます。
ついでにここでNetBSDをインストールするCD-ROMのトップのディレクトリ(Windows的にはフォルダ)が何という名前なのかを確認しておきましょう。私の場合はBSD magazine No.9の付録のCD-ROMを使ったのですが、/NetBSD-1.5でした。
20GBもディスクがあってOSを3つも入れると8GBを超えた区画からブートする必要が出てきます。8GBを超えた区画からブートするためにはその機能を持ったMBRが必要となります。今回はMBRにはMBM(Multi Boot Manager)を使うことにしました。 MBMをインストールするには、フロッピーディスクにモジュールを書き込み、そこから起動し直します。起動後、以下のコマンドを入力してインストールします。
MBM INSTALL
ついでにMBMを使って領域をシリンダ単位で丸めておくと良いでしょう。
FreeBSDのインストールは結構(かなり?)はまりました。BIOSが工場出荷時の状態である場合は問題ないそうですが、独自にアップデートしている場合には問題があります。FreeBSDではpartiotion IDとして165を使用しているのですが、古いBIOSではFreeBSDのpartitionから起動することができないというバグがあり、最新のBIOSにアップデートする必要があります。 詳細は以下のスレッドが参考になります。
FreeBSDをインストールしたらfdiskを実行した結果をメモっておいて下さい。後で必要になります。特にstartとsizeの値が大事です。例えば、以下のようになります。
# fdisk
******* Working on device /dev/ad0 *******
parameters extracted from in-core disklabel are:
cylinders=2584 heads=240 sectors/track=63 (15120 blks/cyl)
Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=2584 heads=240 sectors/track=63 (15120 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 12,(DOS or Windows 95 with 32 bit FAT, LBA)
start 63, size 8194977 (4001 Meg), flag 0
beg: cyl 0/ sector 1/ head 1;
end: cyl 541/ sector 63/ head 239
The data for partition 2 is:
sysid 165,(FreeBSD/NetBSD/386BSD)
start 8195040, size 8195040 (4001 Meg), flag 80 (active)
beg: cyl 542/ sector 1/ head 0;
end: cyl 1023/ sector 63/ head 239
The data for partition 3 is:
sysid 169,(NetBSD)
start 16390080, size 8195040 (4001 Meg), flag 0
beg: cyl 1023/ sector 63/ head 255;
end: cyl 1023/ sector 63/ head 239
The data for partition 4 is:
sysid 15,(Extended DOS, LBA)
start 24585120, size 14484960 (7072 Meg), flag 0
beg: cyl 1023/ sector 63/ head 255;
end: cyl 1023/ sector 63/ head 239
とりあえずの手順は以下の通りになります。
# disklabel -B -w -r ad0s5 auto # disklabel -e ad0s5 # /dev/ad0s5c: type: ESDI disk: ad0s5 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 240 sectors/cylinder: 15120 cylinders: 478 sectors/unit: 7242417 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 7242417 0 unused 0 0 # (Cyl. 0 - 478*) e: 7242417 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 478*) <= ここを追加。 # cd /dev # ./MAKEDEV ad0s5a # newfs /dev/ad0s5eここまで問題なければ
/mntに/dev/ad0s5eをマウントしてみます。
# mount -t ufs /dev/ad0s5e /mntこれで問題なければ
/etc/fstabを編集して起動時に/homeにマウントするようにします。
次に、/msdosをマウントしてみます。上記の構成では/msdosのpartitionは/dev/ad0s6となるので、以下のようにコマンドを打ってみます。
# cd /dev # ./MAKEDEV /dev/ad0s6 # mkdir /msdos # mount -t msdos /dev/ad0s6問題なければ
/etc/fstabを編集してboot時にマウントするようにします。これでFreeBSDで/homeと/msdosを共有できるようになりました。
NetBSDのインストールには格別難しい点はないのですが、FreeBSDのインストーラに比べると、初心者にはまだまだ優しくないインストーラです。
とりあえず、partitionの設定までは普通にインストールします。partitionの設定ではNetBSDのpartitionの設定とともに、NetBSDからマウントするディスクの設定を行ってしまいます。この際、FreeBSDのfdiskの情報が役に立ちますが、後で修正できるのであまり厳密にやらなくていいです。私はここで失敗したのですが、あとでdisklabelを使って修正できるので、NetBSDのpartitionだけあっていれば問題ないと思います。
NetBSDのインストールについては、このページなどが参考になります。もし、インストール時にCD-ROMからデータが見つからないよというようなメッセージが出たら、上で調べたCD-ROMのトップのディレクトリの名前を使うように変更してみて下さい。
以下はdisklabel wd0の実行結果です。FreeBSDのfdiskの結果を元にこの情報をディスクに書き込みます。
# /dev/rwd0d: type: unknown disk: mydisk label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 15 sectors/cylinder: 945 cylinders: 16383 total sectors: 39070080 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize cpg] a: 7668675 16390080 4.2BSD 1024 8192 16 # (Cyl. 17344 - 25458) b: 526365 24058755 swap # (Cyl. 25459 - 26015) c: 8195040 16390080 unused 0 0 # (Cyl. 17344 - 26015) d: 39070080 0 unused 0 0 # (Cyl. 0 - 41343) e: 8195040 8195040 4.2BSD 1024 8192 16 # (Cyl. 8671 - 17343) f: 7242417 24585183 4.2BSD 1024 8192 16 # (Cyl. 26016 - 33678) g: 7242417 31827663 MSDOS # (Cyl. 33679 - 41343) h: 8194977 63 MSDOS # (Cyl. 1 - 8670)ミソは
f: 7242417 24585183 4.2BSD 1024 8192 16 # (Cyl. 26016 - 33678) g: 7242417 31827663 MSDOS # (Cyl. 33679 - 41343)です。拡張領域はFreeBSDの
fdiskの結果では
sysid 15,(Extended DOS, LBA)
start 24585120, size 14484960 (7072 Meg), flag 0
beg: cyl 1023/ sector 63/ head 255;
end: cyl 1023/ sector 63/ head 239
となっています。この拡張領域には同じサイズの論理領域が存在しています。ですから、本来は
f: 7242480 24585120 4.2BSD 1024 8192 16 # (Cyl. 26016 - 33678) g: 7242480 31827600 MSDOS # (Cyl. 33679 - 41343)となるのですが、論理領域の場合はstartは+63、sizeは-63するのだそうです。なぜそうなるのかは分かりませんが、他のOSのユーティリティで
fdiskするとこのようになるのだそうです。
具体的な話はここから始まるスレッドが参考になるでしょう。