diff -urN linux-2.4.20/arch/alpha/defconfig linux-2.4.20-usbboot/arch/alpha/defconfig --- linux-2.4.20/arch/alpha/defconfig 2001-11-19 18:19:42.000000000 -0500 +++ linux-2.4.20-usbboot/arch/alpha/defconfig 2003-01-30 12:18:13.000000000 -0500 @@ -690,6 +690,7 @@ # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_BOOT is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set diff -urN linux-2.4.20/arch/i386/defconfig linux-2.4.20-usbboot/arch/i386/defconfig --- linux-2.4.20/arch/i386/defconfig 2002-11-28 18:53:09.000000000 -0500 +++ linux-2.4.20-usbboot/arch/i386/defconfig 2003-01-30 12:18:13.000000000 -0500 @@ -776,6 +776,7 @@ # CONFIG_USB_BLUETOOTH is not set CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_BOOT is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set diff -urN linux-2.4.20/arch/ia64/defconfig linux-2.4.20-usbboot/arch/ia64/defconfig --- linux-2.4.20/arch/ia64/defconfig 2002-11-28 18:53:09.000000000 -0500 +++ linux-2.4.20-usbboot/arch/ia64/defconfig 2003-01-30 12:18:13.000000000 -0500 @@ -848,6 +848,7 @@ # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_BOOT is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set diff -urN linux-2.4.20/arch/parisc/defconfig linux-2.4.20-usbboot/arch/parisc/defconfig --- linux-2.4.20/arch/parisc/defconfig 2002-11-28 18:53:10.000000000 -0500 +++ linux-2.4.20-usbboot/arch/parisc/defconfig 2003-01-30 12:18:13.000000000 -0500 @@ -772,6 +772,7 @@ # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_BOOT is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set diff -urN linux-2.4.20/arch/ppc/defconfig linux-2.4.20-usbboot/arch/ppc/defconfig --- linux-2.4.20/arch/ppc/defconfig 2002-11-28 18:53:11.000000000 -0500 +++ linux-2.4.20-usbboot/arch/ppc/defconfig 2003-01-30 12:18:13.000000000 -0500 @@ -934,6 +934,7 @@ # CONFIG_USB_MIDI is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_BOOT is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set diff -urN linux-2.4.20/arch/sparc64/defconfig linux-2.4.20-usbboot/arch/sparc64/defconfig --- linux-2.4.20/arch/sparc64/defconfig 2002-11-28 18:53:12.000000000 -0500 +++ linux-2.4.20-usbboot/arch/sparc64/defconfig 2003-01-30 12:18:13.000000000 -0500 @@ -779,6 +779,7 @@ CONFIG_USB_MIDI=m CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_BOOT is not set # CONFIG_USB_STORAGE_DATAFAB is not set CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=y diff -urN linux-2.4.20/Documentation/Configure.help linux-2.4.20-usbboot/Documentation/Configure.help --- linux-2.4.20/Documentation/Configure.help 2002-11-28 18:53:08.000000000 -0500 +++ linux-2.4.20-usbboot/Documentation/Configure.help 2003-01-30 12:18:13.000000000 -0500 @@ -24374,6 +24374,13 @@ brave people. System crashes and other bad things are likely to occur if you use this driver. If in doubt, select N. +USB Boot Device Support +CONFIG_USB_STORAGE_BOOT + This option will load the USB controller and USB storage device drivers + earlier in the boot process. This enables systems which want to boot + off of a USB device (like a USB HardDisk) to detect the device before + trying to mount root, thus avoiding a kernel panic. + Winbond W83977AF IrDA Device Driver CONFIG_WINBOND_FIR Say Y here if you want to build IrDA support for the Winbond diff -urN linux-2.4.20/drivers/usb/Config.in linux-2.4.20-usbboot/drivers/usb/Config.in --- linux-2.4.20/drivers/usb/Config.in 2002-11-28 18:53:14.000000000 -0500 +++ linux-2.4.20-usbboot/drivers/usb/Config.in 2003-01-30 12:18:13.000000000 -0500 @@ -39,6 +39,9 @@ fi dep_tristate ' USB Mass Storage support' CONFIG_USB_STORAGE $CONFIG_USB $CONFIG_SCSI dep_mbool ' USB Mass Storage verbose debug' CONFIG_USB_STORAGE_DEBUG $CONFIG_USB_STORAGE + if [ "$CONFIG_USB_STORAGE" = "y" ] ; then + dep_mbool ' USB Boot Device Support' CONFIG_USB_STORAGE_BOOT $CONFIG_USB_STORAGE + fi dep_mbool ' Datafab MDCFE-B Compact Flash Reader support' CONFIG_USB_STORAGE_DATAFAB $CONFIG_USB_STORAGE $CONFIG_EXPERIMENTAL dep_mbool ' Freecom USB/ATAPI Bridge support' CONFIG_USB_STORAGE_FREECOM $CONFIG_USB_STORAGE dep_mbool ' ISD-200 USB/ATA Bridge support' CONFIG_USB_STORAGE_ISD200 $CONFIG_USB_STORAGE diff -urN linux-2.4.20/drivers/usb/storage/usb.c linux-2.4.20-usbboot/drivers/usb/storage/usb.c --- linux-2.4.20/drivers/usb/storage/usb.c 2002-11-28 18:53:15.000000000 -0500 +++ linux-2.4.20-usbboot/drivers/usb/storage/usb.c 2003-01-30 12:18:13.000000000 -0500 @@ -1164,5 +1164,10 @@ } } -module_init(usb_stor_init); -module_exit(usb_stor_exit); +#ifdef CONFIG_USB_STORAGE_BOOT + __initcall(usb_stor_init); +#else + module_init(usb_stor_init); + module_exit(usb_stor_exit); +#endif + diff -urN linux-2.4.20/drivers/usb/usb.c linux-2.4.20-usbboot/drivers/usb/usb.c --- linux-2.4.20/drivers/usb/usb.c 2002-11-28 18:53:15.000000000 -0500 +++ linux-2.4.20-usbboot/drivers/usb/usb.c 2003-01-30 12:18:13.000000000 -0500 @@ -2373,8 +2373,12 @@ usb_hub_cleanup(); } -module_init(usb_init); -module_exit(usb_exit); +#ifdef CONFIG_USB_STORAGE_BOOT + __initcall(usb_init); +#else + module_init(usb_init); + module_exit(usb_exit); +#endif /* * USB may be built into the kernel or be built as modules.