ThinkPad i1620にマルチブート環境を作ろう!

私の持っている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. 基本領域/拡張領域/論理領域の作成

    私の場合、以下の構成にしました。

    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でした。

  2. MBRのインストール

    20GBもディスクがあってOSを3つも入れると8GBを超えた区画からブートする必要が出てきます。8GBを超えた区画からブートするためにはその機能を持ったMBRが必要となります。今回はMBRにはMBM(Multi Boot Manager)を使うことにしました。 MBMをインストールするには、フロッピーディスクにモジュールを書き込み、そこから起動し直します。起動後、以下のコマンドを入力してインストールします。

    MBM INSTALL
    

    ついでにMBMを使って領域をシリンダ単位で丸めておくと良いでしょう。

  3. FreeBSDのインストール

    FreeBSDのインストールは結構(かなり?)はまりました。BIOSが工場出荷時の状態である場合は問題ないそうですが、独自にアップデートしている場合には問題があります。FreeBSDではpartiotion IDとして165を使用しているのですが、古いBIOSではFreeBSDのpartitionから起動することができないというバグがあり、最新のBIOSにアップデートする必要があります。 詳細は以下のスレッドが参考になります。

  4. FreeBSDでの共有パーティションの設定

    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を共有できるようになりました。
  5. NetBSDのインストール

    NetBSDのインストールには格別難しい点はないのですが、FreeBSDのインストーラに比べると、初心者にはまだまだ優しくないインストーラです。

    とりあえず、partitionの設定までは普通にインストールします。partitionの設定ではNetBSDのpartitionの設定とともに、NetBSDからマウントするディスクの設定を行ってしまいます。この際、FreeBSDのfdiskの情報が役に立ちますが、後で修正できるのであまり厳密にやらなくていいです。私はここで失敗したのですが、あとでdisklabelを使って修正できるので、NetBSDのpartitionだけあっていれば問題ないと思います。

    NetBSDのインストールについては、このページなどが参考になります。もし、インストール時にCD-ROMからデータが見つからないよというようなメッセージが出たら、上で調べたCD-ROMのトップのディレクトリの名前を使うように変更してみて下さい。

  6. NetBSDでの共有パーティションの設定

    以下は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するとこのようになるのだそうです。

    具体的な話はここから始まるスレッドが参考になるでしょう。


Copyright(C) 2001-2008 ykondou.org
webmaster@ykondou.org
Key fingerprint = 7721 FB0E 42CC 2BD3 DB09 5868 3EC7 B5D2 B75C 5DAA

Valid CSS! Valid HTML 4.01!