I've been recently investigating booting Linux from USB drives.  From past
experience, this list is not the ideal place to pose USB related
questions, but I think at this stage my questions concern such fundamental
issues that I can pose some here just asking that others more
knowledgeable about Linux and computer operation offer corrections or
clarification of my understanding of what's involved.  Let me start by
pasting here an item on booting Linux from USB from the FAQ at
http://www.linux-usb.org/ :

"Q: Is it possible to boot off a USB Device?

A:There are (at least) three things you need for this to be able to
happen.

   1. BIOS Support to boot from USB
   2. Kernel support for USB Storage (including SCSI)
   3. A patch to delay boot process

The first of these is something outside your control, either your BIOS
supports it or not. However, you could put your kernel and initrd on a
floppy and then use a USB root file system to get around this.

In your boot kernel or initial RAM disk you need to include support for
all the needed items to support using a USB disk. These are documented in
the Linux USB User Guide.

You also need to patch this kernel to delay when it tries to open the root
file system, as the USB subsystem takes longer than is allowed to
initialise and make the device available to the kernel. You'll find a
patch suitable for 2.2 and 2.4 here (although the 2.4 patch could be put
in init/do_mounts.c:mount_block_root() instead of fs/super.c which would
be cleaner). A patch may be added to kernels later than 2.4.20 (latest
current released version as I type this) to remove the need for this
patch, but this hasn't happened yet." (hyperlinks removed in pasting)

First, the "three things . . . need(ed)" are not really all needed.  From
the explanation following the list, I understand that if you don't have
number 1, you might still be able to boot from USB with the aid of 2 and
3.  Am I correct in that understanding?  Doesn't the explanation seem to
imply this?

If so, then some further questions on that.  I can't understand from the
description whether the initrd is really necessary.  I think I understand
about the kernel patch: the kernel is written to give some error or
failure message if the root filesystem cannot be found within a certain
timeframe.  The time it takes for USB handling components to load or
initialize and for scsi emulation to start exceeds that built-in time
limit.  The patch causes the kernel to wait some longer period of time
before giving the error or failure message regarding the root filesystem.
Do I understand that part correctly?  If so, then the one remaining
unclarity concerns the initrd.  I know vaguely what an initrd is, and why
it could be helpful in booting from USB: it is some initial filesystem and
files that can be loaded into a ramdisk on bootup and that contains things
like loadable kernel modules that the kernel could use to get USB going.
Is that right?  In other words, there would be some USB module like
usb-storage there, so when the kernel began loading and found a USB mass
storage device, it could load the module in order to be able to use it.
Does this sound correct?  Assuming it is, I would just further like to ask
whether, given the right circumstances, the initrd is really necessary?
By "right circumstances" I mean the following: suppose I were to compile a
kernel for a particular system that I wanted to boot from USB, and that I
compiled it with all the necessary USB components (e.g., ohci,
usb-storage, usbcore - and whatever else might be relevant) *not* as
loadable modules, but as part of the kernel (i.e., select "y" instead of
"m" for those items in the kernel config).  Suppose I did that, as well as
applying the time-delay patch to the kernel.  Were I to do that, would I
really still need to have an initrd?  Feedback appreciated.

James
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

Reply via email to