USB booting :: dsl 2.0 / booting via ehci-hcd / toram and vfat
after successfully installing dsl 2.0 on my pen drive (hdd install) i was unable to boot cleanly from computers with intel-based usb 2.0 controllers (module ehci-hcd.o)
there are 2 simple workarounds:
1. temporarily disable the usb 2.0 controller in the bios (dsl will boot via the usb-uhci.o module)
2. use the boot option "expert"
not satisfied i tried to resolve the issue by editing the mini root image (minirt24.gz):
1. enable a pause of one second between modules (sleep 1) in linuxrc
2. changing the order of the three host controller modules in linuxrc
3. deleting the other two modules (/usb-[o,u]hci.o/)
nothing did the trick. finally i had to comment out the "for ... done" loop and manually load the needed modules (see below)
after that i realised that the copy to ramdisk process ("toram") bails out with a standard message (like: cannot change to /cdrom2) from the linuxrc-script.
the "vfat" filesystem driver of the linux kernel converts pure uppercase filenames ("KNOPPIX") to lowercase ("knoppix"). the copy rotine originally written by klaus knopper for the iso9660 driver is unable to handle this. i had to modify this too (rather crude, i know).
this is the patchfile showing my modifications:
--------------------------------------------------------------
--- linuxrc.orig Thu Dec 8 20:08:50 2005
+++ linuxrc Thu Dec 8 20:09:16 2005
@@ -216,9 +216,13 @@ echo -n "${CRE}${BLUE}Checking for for U
if test -f /modules/scsi/usbcore.o; then
$INSMOD /modules/scsi/usbcore.o >/dev/null 2>&1
FOUNDUSB=""
-for i in ehci-hdc.o usb-uhci.o usb-ohci.o ; do
-test -f /modules/scsi/$i && $INSMOD /modules/scsi/$i >/dev/null 2>&1 && FOUNDUSB="yes"
-done
+$INSMOD /modules/scsi/ehci-hcd.o >/dev/null 2>&1
+FOUNDUSB="yes"
+$INSMOD /modules/scsi/usb-uhci.o >/dev/null 2>&1
+FOUNDUSB="yes"
+#for i in ehci-hdc.o usb-uhci.o usb-ohci.o ; do
+#test -f /modules/scsi/$i && $INSMOD /modules/scsi/$i >/dev/null 2>&1 && FOUNDUSB="yes"
+#done
if test -n "$FOUNDUSB"; then
test -f /modules/scsi/usb-storage.o && $INSMOD /modules/scsi/usb-storage.o >/dev/null 2>&1
else
@@ -463,7 +467,8 @@ copy_to()
/usr/bin/rsync -a --progress --include="$KNOPPIX_DIR/$KNOPPIX_NAME" --include="$KNOPPIX_DIR/" --exclude="*" $COPY $TARGET # Copy Knoppix to $TARGET
#/usr/bin/rsync -avP $COPY $TARGET # Copy Knoppix to $TARGET
else
- /bin/cp -a -f $COPY $TARGET # Copy Knoppix to $TARGET
+ /bin/mkdir $TARGET/KNOPPIX
+ /bin/cp -a -f $COPY/knoppix $TARGET/KNOPPIX/KNOPPIX # Copy Knoppix to $TARGET
fi
if [ $? -ne 0 ]
then
--------------------------------------------------------------
Try 2.1RC1 there was a typo concerning USB 2.0 support in 2.0.
yes: "for i in ehci-hdc.o usb-uhci.o usb-ohci.o ; do"
should read "for i in ehci-hcd.o usb-uhci.o usb-ohci.o ; do"
the typo is fixed in 2.1rc1 - what really rocks is sata support - thumbs up!
original here.