floppy->usbブートに成功

ハードディスク容量の制限を回避するために、USBブートできないマシンでPENDRIVEのDSLを起動できないかといろいろ試しました。

DSLにはbootfloppy-usb.imgというディスクイメージがあり、これをフロッピーに書き込んでそれで起動した後USB接続のフラッシュメモリに制御を移せるのですが、その中のスクリプトにバグがありました。

bootfloppy-usb.imgの中にあるlinuxrcの変なところは、

255,256c255,256
< echo -n "{CRE}${BLUE}Looking for DSL image
in: ${MAGENTA}$i${NORMAL} "
< if mountit $i /cdrom "-t vfat -o rw" >/dev/null 2>&1
---
> echo -n "${CRE}${BLUE}Looking for DSL image
in: ${MAGENTA}$i${NORMAL} "
> if mountit $i /cdrom "-o rw" >/dev/null 2>&1
286,287c286
< echo -n "${CRE} ${GREEN}Accessing DSL Linux
at ${MAGENTA}/dev/sda1${GREEN}...${NORMAL}"
< FOUND_KNOPPIX="/dev/sda1"
---
> echo -n "${CRE} ${GREEN}Accessing DSL Linux
at ${MAGENTA}${FOUND_KNOPPIX}${GREEN}...${NORMAL}"


というところでした。ところが、これを修正して試したのですが、結局/lib/modules/2.4.31/modules.depが要求されるのに対し1CDイメージでは/lib/modules/2.4.26/modules.depなのでうまくいかないのでした。

バージョンをあわせればいいのでしょうがとりあえずこのプロジェクトはここで中断。



と思ったら、bootfloppy-2.1-usb.imgであっさり起動。カーネルは2.4.31。ただし、linuxrcは手直しが必要。linuxrcはminirt24.gzの中にあるため、

$sudo mkdir/mnt/loop ;minirt24用にマウントポイントを作る
$mount /dev/fd0 ;フロッピーをマウント
$cp /mnt/floppy/minirt24.gz ~ ;これから操作するファイルをコピー
$gunzip minirt24.gz ;ルートファイル?を展開
$sudo mount -o loop minirt24 /mnt/loop ;展開したファイルを先ほどの
マウントポイントへループバックマウント
$sudo vi /mnt/loop/linuxrc
...ここで修正...
$sudo umount /mnt/loop ;ファイルをアンマウント
$gzip minirt24 ;ファイルを圧縮
$cp minirt24.gz /mnt/floppy ;フロッピーへ書き戻す


とやっておく。また、svgaのノートパソコンなので、syslinux.cfgのデフォルトをlinux24からfb800x600に変更する。

というわけで、やっとひと段落です。
Damn Small Linux | - | -