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 | comments (0) | trackbacks (0)

ループバックデバイス

相変わらずUSBをBIOSが認識しないマシンでのUSBメモリからの起動ができず
悩んでいるのですが、それはさておき。

その過程で、ループバックデバイスのマウントが便利なのにいまさらながら
気づきました。たとえば、フロッピーのイメージファイルbootfloppy-usb.img
があるとすると、
#mkdir /mnt/loop(マウントポイントはお好みですが)
#mount -o loop bootfloppy-usb.img /mnt/loop
とやると、あとは/mnt/loop以下にフロッピーイメージの中身が見えるん
です。このオプション-oですが、ほかとの類推でてっきり-t loopだと
思っていました。
Damn Small Linux | comments (0) | trackbacks (0)