USBでKNOPPIX  

緊急用にKNOPPIXを用意しておこうとUSBメモリにKNOPPIX 6.0.1を導入してみました。
通常のやり方はネットを探せばいくらでも情報が手に入りますので、今回はちょっと変わった方法を試してみました。

目的は?  

この方法の目的は「Windowsから見えないようにする」ことです。
最近のUSBメモリは大容量でも安いため、KNOPPIXを導入しても余裕で容量が余ります。そんなわけでKNOPPIXを導入したUSBを通常のデータ用USBとして使用している人も多いと思いますが、KNOPPIXのブート用ファイルなどが散らかってて(若干)見苦しいと感じませんか?
しかも、間違って消してしまうと肝心の時に起動しない、ということになりかねません。そんなわけでWindowsからインストールされた領域を隠してしまおうというのが今回の方法です。
なお、この方法を試すにはLinux環境が必要です。

概念  

概念は簡単です。通常、WindowsはUSBメモリのはじめのパーティションしか認識しませんので第二パーティション以降にKNOPPIXを導入してしまえばいいわけです。

構築するUSBメモリのパーティション
|<--第一パーティション-->|<--第二パーティション-->|
|データ用(FAT32)         |KNOPPIX用(ext3)         |
|Windowsから見える       |Windowsからは見えない   |
こうすることでWindowsからはデータ用のパーティションしか見えないので、誤ってKNOPPIXを消してしまう危険性が少なくなります。

手順概要  

大まかな流れは以下の通りです。

  1. LinuxのFDISKコマンドでパーティションを切る
  2. フォーマットする
  3. CDの内容をコピー
  4. EXTLINUXでブート可能にする

当然のことながら使用するUSBメモリの内容は全て消えますし、手順を間違えると元のシステムが簡単に破壊されますので自己責任にて慎重に行って下さい。また、私の環境ではうまく行きましたがBIOSによってはうまく行かない場合もあるかもしれません。作業はVine 4.2にaptでsyslinuxパッケージをインストールして行いました。

確認した環境  

実際の手順 : EXTLINUX編  

パーティションを切る  

パーティションは1番目をFAT32、2番目をext2とします。私のPC(Shuttle SG31G2; Award BIOS v6.00PG)ではプライマリパーティションで切るとうまく認識しなかったため拡張パーティションにしてみました。BIOSによってはプライマリパーティションで問題ないかもしれません。
切り方は以下の通り(デバイスは/dev/sdcとします)。

デバイスブートフラグIDシステム容量
/dev/sdc15拡張領域全部
/dev/sdc5cWin95 FAT32 (LBA)7GB
/dev/sdc6*83Linux1GB

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
  • fileminirt-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の方が便利だと思います。

添付ファイル: fileminirt-6.0.1_mod.gz 5003件 [詳細]