USBでKNOPPIX
緊急用にKNOPPIXを用意しておこうとUSBメモリにKNOPPIX 6.0.1を導入してみました。
通常のやり方はネットを探せばいくらでも情報が手に入りますので、今回はちょっと変わった方法を試してみました。
- インストーラとのマルチブートも試してみました -- USBでマルチブート
目的は?
この方法の目的は「Windowsから見えないようにする」ことです。
最近のUSBメモリは大容量でも安いため、KNOPPIXを導入しても余裕で容量が余ります。そんなわけでKNOPPIXを導入したUSBを通常のデータ用USBとして使用している人も多いと思いますが、KNOPPIXのブート用ファイルなどが散らかってて(若干)見苦しいと感じませんか?
しかも、間違って消してしまうと肝心の時に起動しない、ということになりかねません。そんなわけでWindowsからインストールされた領域を隠してしまおうというのが今回の方法です。
なお、この方法を試すにはLinux環境が必要です。
概念
概念は簡単です。通常、WindowsはUSBメモリのはじめのパーティションしか認識しませんので第二パーティション以降にKNOPPIXを導入してしまえばいいわけです。
- 構築するUSBメモリのパーティション
|<--第一パーティション-->|<--第二パーティション-->| |データ用(FAT32) |KNOPPIX用(ext3) | |Windowsから見える |Windowsからは見えない |
こうすることでWindowsからはデータ用のパーティションしか見えないので、誤ってKNOPPIXを消してしまう危険性が少なくなります。
手順概要
大まかな流れは以下の通りです。
- LinuxのFDISKコマンドでパーティションを切る
- フォーマットする
- CDの内容をコピー
- EXTLINUXでブート可能にする
当然のことながら使用するUSBメモリの内容は全て消えますし、手順を間違えると元のシステムが簡単に破壊されますので自己責任にて慎重に行って下さい。また、私の環境ではうまく行きましたがBIOSによってはうまく行かない場合もあるかもしれません。作業はVine 4.2にaptでsyslinuxパッケージをインストールして行いました。
確認した環境
- PC
- Shuttle SG31G2 (Award BIOS v6.00PG)
- Eee PC 901-X
- USB
- BUFFALO RUF2-J8GS-SV 8GB
- pqi i810 2GB
実際の手順 : EXTLINUX編
パーティションを切る
パーティションは1番目をFAT32、2番目をext2とします。私のPC(Shuttle SG31G2; Award BIOS v6.00PG)ではプライマリパーティションで切るとうまく認識しなかったため拡張パーティションにしてみました。BIOSによってはプライマリパーティションで問題ないかもしれません。
切り方は以下の通り(デバイスは/dev/sdcとします)。
デバイス | ブートフラグ | ID | システム | 容量 |
/dev/sdc1 | 5 | 拡張領域 | 全部 | |
/dev/sdc5 | c | Win95 FAT32 (LBA) | 7GB | |
/dev/sdc6 | * | 83 | Linux | 1GB |
Windowsがアクセスするのは先頭のパーティションなのでFAT32とLinuxの順は上記のようにして下さい。また、/dev/sdc6にブートフラグを立てないとブートできません。
使ったUSBメモリはBUFFALOのRUF2-J8GSで容量は8GB。そのうち約1GBをKNOPPIX用に割り当てています。最低限必要なのは700MB程ですが、残りの200MBをKNOPPIXのユーザーデータ領域にします。
フォーマットする
パーティションを切ったらそれぞれをフォーマットします。
# mkdosfs /dev/sdc5 <-- -F32オプションが必要なときもあります # mke2fs -j /dev/sdc6
CDの内容をコピーとminirt.gzの修正
Linux領域にCDの内容をコピーします。KNOPPIX 6.0.1のCDは/mnt/cdromにマウントされているとします。
# mount /dev/sdc6 /mnt/sdc6 # cp /mnt/cdrom/boot/isolinux/* /mnt/sdc6 # cp -r /mnt/cdrom/KNOPPIX /mnt/sdc6
また、isolinux.cfgの名前を変更します。
# mv /mnt/sdc6/isolinux.cfg /mnt/sdc6/extlinux.conf
オリジナルのままだとKNOPPIX起動時に以下のようなメッセージが出てext2/3パーティションのマウントに失敗するのでminirt.gz中のinitスクリプトを修正します。どうやらmountコマンドの-oが抜けているのが問題だと思われます。通常のinitrdの修正と手順は同じです。
- KNOPPIXブート時にシェルに落ちる(シェルでmountすれば復帰可能なのですが・・・)
Could not mount disk to /mnt-system. Starting debugging Shell. can't access tty: job control turned off
- minirt-6.0.1_mod.gz -- 修正したもの(もちろん無保証)
これをコピーされているminirt.gzの代わりにすればOKです。上の続きの作業例を載せます。# cd /mnt/sdc6 # mv minirt.gz minirt.org.gz <-- オリジナルの名前を変える # ln -s minirt-6.0.1_mod.gz minirt.gz <-- シンボリックリンクを張る(直接名前を変えてもいいです)
以上で起動するはずです。
- 自分で修正する場合の手順
# cd /root # cp /mnt/sdc6/minirt.gz . # mkdir minirt # cd minirt # gunzip ../minirt.gz | cpio -idmv # vi init <-- initスクリプトを修正する
- initの修正点
122 mount -t ext3 -o "$RW",noatime "$1" "$2" || \ <-- "-o"を追加 123 mount -t ext2 -o "$RW",noatime "$1" "$2" <-- "-o"を追加
# find | cpio -H newc -o | gzip -9 > ../minirt-mod.gz # cp ../minirt-mod.gz /mnt/sdc6/minirt.gz
EXTLINUXの実行
EXTLINUXを実行してブート可能にし、MBRを書き込みます。
# extlinux -i /mnt/sdc6 # umount /mnt/sdc6 # cat /usr/lib/syslinux/mbr.bin > /dev/sdc
SYSLINUXでは?
同じようなパーティション配置にしたところ(LinuxパーティションをFAT32にしました)、SYSLINUXではBoot errorというメッセージが出て起動しませんでした。仕方がないので、GRUBをMBRにインストールしてmenu.lst(grub.conf)にisolinux.cfgのknoppixのカーネルパラメータ設定を書き込むことで起動できましたが、手間を考えるとEXTLINUXの方が便利だと思います。