USBでマルチブートしてみる  

USBでKNOPPIX」を応用してUSBメモリを使ってマルチブートをしてみます。GRUBとEXTLINUXとの組み合わせではBoot errorとなりうまくいかなかったのでEXTLINUX起動領域を作成して実現しました。

概要  

Linuxをインストールするとき、CDドライブが認識されない!とか、そもそもCDドライブがついてない!というときにインストール用のUSBメモリを作成するのが面倒くさいということが割とあるので、以下の組み合わせを作ってみました。PCのセットアップをよく行う人には便利かも。普段はデータ用USBメモリとして使用しておき、いざというときにはブータブルUSBとして利用できます。

ブートローダには同様にEXTLINUXを使い、もちろんWindowsからはLinuxのファイルが見えないようにします。ただ、今回は利便性を考えてVineおよびCentOSのインストールCDイメージはFAT32上に配置しました。CentOSのインストールイメージは4GBあるので大容量のUSBメモリがおすすめ。
USBでKNOPPIXの知識を前提とします。

ブートの仕組み  

簡単にブートの仕組みを解説しておきます。

  1. MBR読み込み
  2. USBメモリ上のアクティブパーティションからEXTLINUX起動
  3. ユーザーに選択された領域のEXTLINUXをチェーンローダでブート
  4. それぞれのシステムへ

このようにチェーンローダを使って次の段階のブートを行います。

手順概要  

大まかには「USBでKNOPPIX」と同じです。ところがマルチブートに案外手こずったのでメモとして残しておきます。

  1. パーティションを切る
  2. フォーマット
  3. 起動領域の構築
  4. 領域の構築
    • CDから起動ファイルをコピー
    • EXTLINUXのインストール
  5. MBRの書き込み
  6. インストールCDイメージをデータ領域にコピー

以上です。

実際の手順  

パーティションを切る  

KNOPPIXの時と同様にLinuxのFDISKを使いUSBメモリのパーティションを切ります。使用したメモリはBUFFALOのRUF2-J8GSで今回は以下のようにしました。

デバイスブートフラグIDシステム容量用途
/dev/sdc10x05拡張領域全部
/dev/sdc50x0cWin95 FAT32 (LBA)7GBデータ用
/dev/sdc6*0x83Linux ext216MB起動領域
/dev/sdc70x83Linux ext216MBVine Linux
/dev/sdc80x83Linux ext216MBCentOS
/dev/sdc90x83Linux ext31GBKNOPPIX

ポイントは起動領域(sdc6)です。最初に起動領域をブートして、選択画面を表示します。そこからSYSLINUXのチェーンローダで他の領域をブートします。なお、インストーラの領域は起動ファイルのみなので16MBもあれば大丈夫でした(私の環境では2シリンダ)。もちろん起動領域にはアクティブフラグを立てます。
パーティションを切ったらそれぞれの領域をフォーマットします。16MBの領域はext2、KNOPPIXの領域のみext3にしました。

起動領域の構築  

必要なパーティションが作成できたらまず起動領域から作っていきます。起動領域といっても大げさな物ではなくEXTLINUXをセットアップするだけです。

# mount /dev/sdc6 /mnt/disk
# extlinux -i /mnt/disk

続いて/mnt/diskにextlinux.confを作成します。KNOPPIXの時はisolinux.cfgの名前を変更するだけでしたが、選択メニューを表示させるので自分で書きます。以下は私が作成した例です。

extlinux.conf
DEFAULT vesamenu.c32         <-- グラフィカルメニューの表示
PROMPT 0
MENU TITLE Multiple Linux Loader
MENU BACKGROUND syslinux.jpg <-- バックグラウンドイメージを読み込む
TIMEOUT 600

LABEL knoppix
  MENU LABEL KNOPPIX 6.0.1
  MENU DEFAULT
  KERNEL chain.c32           <-- チェーンローダでブート
  APPEND hd0 9               <-- /dev/sdc9に相当

LABEL vine
  MENU LABEL Vine Linux 4.2 Installer (image in Part#5)
  KERNEL chain.c32
  APPEND hd0 7

LABEL centos
  MENU LABEL CentOS 5.2 Installer (image in Part#5)
  KERNEL chain.c32
  APPEND hd0 8

また、グラフィカルメニューモジュールであるvesamenu.c32、およびチェーンローダモジュールchain.c32が必要になるのでコピーします。Vine 4.2と5.0でファイルの場所が違うのでそれぞれ載せておきます。

作業が終わると以下のファイルがそろっているはずです。

以上で起動領域は完成です。マウントを解除しておきます。

# umount /mnt/disk

各領域の作成  

続いて各領域に起動ファイルをコピーします。
KNOPPIX領域はUSBでKNOPPIXを参照してください。インストーラはisolinux以下のみをコピーします。Vine、CentOSでそれぞれ行います。

# mount /dev/sdc7 /mnt/disk
# cp -av /mnt/cdrom/isolinux/* /mnt/disk
# extlinux -i /mnt/disk
# mv /mnt/disk/isolinux.cfg /mnt/disk/extlinux.conf
# umount /mnt/disk

MBRの書き込み  

SYSLINUXのMBRイメージを書き込みます。

# cat /usr/lib/syslinux/mbr.bin > /dev/sdc

CDイメージのコピー  

Vine、CentOSインストーラが使用するCDイメージをFAT32領域にコピーします。

# mount /dev/sdc5 /mnt/disk
# cp Vine42-i386.iso /mnt/disk
# cp CentOS-5.2-i386-bin-DVD.iso /mnt/disk

以上でKNOPPIX、Vineインストーラ、CentOSインストーラが使用できるUSBメモリが構築できました [smile]

 

苦労した〜。