#floatcontents
 * USBでマルチブートしてみる [#t94564aa]
 「[[USBでKNOPPIX>../USBでKNOPPIX]]」を応用してUSBメモリを使ってマルチブートをしてみます。GRUBとEXTLINUXとの組み合わせではBoot errorとなりうまくいかなかったのでEXTLINUX起動領域を作成して実現しました。~
 
 ** 概要 [#k903a050]
 Linuxをインストールするとき、CDドライブが認識されない!とか、そもそもCDドライブがついてない!というときにインストール用のUSBメモリを作成するのが面倒くさいということが割とあるので、以下の組み合わせを作ってみました。PCのセットアップをよく行う人には便利かも。普段はデータ用USBメモリとして使用しておき、いざというときにはブータブルUSBとして利用できます。
 
 - FAT32データ領域
 - KNOPPIX 6.0.1
 - Vine Linux 4.2インストーラ
 - CentOS 5.2インストーラ
 
 ブートローダには同様にEXTLINUXを使い、もちろんWindowsからはLinuxのファイルが見えないようにします。ただ、今回は利便性を考えてVineおよびCentOSのインストールCDイメージはFAT32上に配置しました。CentOSのインストールイメージは4GBあるので大容量のUSBメモリがおすすめ。~
 [[USBでKNOPPIX>../USBでKNOPPIX]]の知識を前提とします。
 
 ** ブートの仕組み [#j14b1c3e]
 簡単にブートの仕組みを解説しておきます。
 + MBR読み込み
 + USBメモリ上のアクティブパーティションからEXTLINUX起動
 + ユーザーに選択された領域のEXTLINUXをチェーンローダでブート
 + それぞれのシステムへ
 
 このようにチェーンローダを使って次の段階のブートを行います。
 
 ** 手順概要 [#t9d26a08]
 大まかには「[[USBでKNOPPIX>../USBでKNOPPIX]]」と同じです。ところがマルチブートに案外手こずったのでメモとして残しておきます。
 
 + パーティションを切る
 + フォーマット
 + 起動領域の構築
 + 領域の構築
 -- CDから起動ファイルをコピー
 -- EXTLINUXのインストール
 + MBRの書き込み
 + インストールCDイメージをデータ領域にコピー
 
 以上です。
 
 ** 実際の手順 [#oc62e54c]
 *** パーティションを切る [#xd5b3f97]
 KNOPPIXの時と同様にLinuxのFDISKを使いUSBメモリのパーティションを切ります。使用したメモリはBUFFALOのRUF2-J8GSで今回は以下のようにしました。
 
 |デバイス |ブートフラグ|ID  |システム         |容量              |用途      |h
 |/dev/sdc1|            |0x05|拡張領域         |全部              |          |
 |/dev/sdc5|            |0x0c|Win95 FAT32 (LBA)|7GB               |データ用  |
 |/dev/sdc6|CENTER:''*''|0x83|Linux ext2       |&color(red){16MB};|起動領域  |
 |/dev/sdc7|            |0x83|Linux ext2       |&color(red){16MB};|Vine Linux|
 |/dev/sdc8|            |0x83|Linux ext2       |&color(red){16MB};|CentOS    |
 |/dev/sdc9|            |0x83|Linux ext3       |1GB               |KNOPPIX   |
 
 ポイントは起動領域(sdc6)です。最初に起動領域をブートして、選択画面を表示します。そこからSYSLINUXのチェーンローダで他の領域をブートします。なお、インストーラの領域は起動ファイルのみなので16MBもあれば大丈夫でした(私の環境では2シリンダ)。もちろん起動領域にはアクティブフラグを立てます。~
 パーティションを切ったらそれぞれの領域をフォーマットします。16MBの領域はext2、KNOPPIXの領域のみext3にしました。
 
 *** 起動領域の構築 [#he7b9323]
 必要なパーティションが作成できたらまず起動領域から作っていきます。起動領域といっても大げさな物ではなく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でファイルの場所が違うのでそれぞれ載せておきます。
 
 - Vine 4.2~
 - ''Vine 4.2''~
 ところがVine 4.2でインストールされるsyslinux-3.63パッケージのチェーンローダは論理パーティションからブートすることができません( http://syslinux.zytor.com/archives/2008-April/009848.html )。そのためVer.3.73のアーカイブからコピーしました。ついでに背景イメージファイルもコピーするといいでしょう。これは640x480サイズのJPEGまたはPNGなら使えるようです。なお、vesamenu.c32はEXTLINUXのバージョンに合わせないとメニューがうまく表示されませんでした。
  # cp /usr/lib/syslinux/vesamenu.c32 /mnt/disk
  # cp syslinux-3.73/com32/modules/chain.c32 /mnt/disk
  # cp syslinux-3.73/sample/m16-640x640-syslinux.jpg /mnt/disk/syslinux.jpg
 
 - Vine 5.0 -- 2009-12-22~
 Vine 5.0でも試してみましたのでちょっと修正。~
 - ''Vine 5.0'' -- 2009-12-22~
 Vine 5.0ではSYSLINUXが3.82になったのでVine 4.2時点での問題点は解決されています。ファイルの場所などが変更されているので追記しておきます。
  # cp /usr/share/syslinux/vesamenu.c32 /mnt/disk
  # cp /usr/share/syslinux/chain.c32 /mnt/disk
  # cp /usr/share/doc/syslinux-3.82/sample/m16-640x640-syslinux.jpg /mnt/disk/syslinux.jpg
 
 作業が終わると以下のファイルがそろっているはずです。
 
 - extlinux.conf -- 設定ファイル
 - extlinux.sys -- システムファイル
 - chain.c32 -- チェーンローダモジュール
 - vesamenu.c32 -- グラフィカルメニューモジュール
 - syslinux.jpg -- 背景画像(任意)
 
 以上で起動領域は完成です。マウントを解除しておきます。
  # umount /mnt/disk
 
 *** 各領域の作成 [#a4b40a50]
 続いて各領域に起動ファイルをコピーします。~
 KNOPPIX領域は[[USBで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の書き込み [#c465c662]
 SYSLINUXのMBRイメージを書き込みます。
  # cat /usr/lib/syslinux/mbr.bin > /dev/sdc
 
 *** CDイメージのコピー [#l69f104c]
 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;
 #br
 苦労した〜。