boot from usb flash - wake boot process when disk is ready?

David N. Welton
2004-05-28T09:06:13Z

[ Please CC replies to me - thanks! ]

Hi,

We're toying around with the idea of booting an embedded system off of
USB flash (pros, cons, and advice about this would be appreciated, by
the way), and I had a look at several of the existing patches to do this
without going through the process of creating an initrd image. That
adds complexity and time to the boot process that we would prefer to
avoid, although it appears that the kernel folks in the first thread
cited are in favor of initrd....

http://www.uwsg.iu.edu/hypermail/linux/kernel/0301.3/1182.html

This mentions a couple of patches, both the "keep looping until it
works" one, which I couldn't get working with 2.6.6, and Willy Tarreu's
"wait a given period of time before continuing" patch:

http://www.uwsg.iu.edu/hypermail/linux/kernel/0405.0/0224.html

I don't think either of those approaches are particularly elegant...
although I'm sure my own efforts are good for a snort as well.

In genhd.c I wake up a waitqueue when the disk comes on line. The
init process waits on this before going on with prepare_namespace().
Ideally, this would look and make sure it's the right disk, that
selected for the root fs:-) Not being very familiar with the 'lay of
the land' in the kernel, I declared the wait queue as a global in
genhd.c. The thing I don't like about this approach is that it builds a
connection between two bits of the kernel that seem separate... maybe
(ok, quite probably) there is a better/cleaner way of doing this?

Patch is at: http://dedasys.com/freesoftware/files/usb-wakeup.patch

Thanks for comments/constructive criticism, and thanks for reading,
--
David N. Welton
davidw@eidetix.com