At this point, I think this isn't possible without some real work in
the kernel. I'd like to get some feedback about whether this is a
correct deduction. To that end, here is my analysis.
1. The function mount_root() in "fs/super.c" specially detects floppy
devices and handles them differently than other devices that might
be specified by the "root=" parameter, such as "root=/dev/sda" in
this case. So handling a floppy drive that appears to be a SCSI
floppy looks like it can't be done without patching that code.
2. If that is worked around, there is a further problem: the USB
storage driver sets up the SCSI translator asynchronously. Prior
to this, the device "/dev/sda" doesn't exist, which means there's a
race condition between the USB-SCSI initialization and the boot
process accessing the root device. I discovered this by specifying
"root=/dev/sda", and seeing that the kernel didn't initialize the
USB floppy device before it tried to open "/dev/sda", and failed
with a "no such device" error. So fixing this would also requiring
synchronizing the race -- but it's not clear how you'd figure out
that synchronization would even be needed here.
Does this seem like a reasonably correct analysis of the situation?
Is it easier than I think? Is anyone else working on booting from USB
floppies?
Please CC me to any replies, since I don't read this list.
TIA,
Chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/