#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メモリが構築できました⌣
#br
苦労した〜。