|
Bugzilla – Full Text Bug Listing |
| Summary: | Installation on external usbdrive fails | ||
|---|---|---|---|
| Product: | [openSUSE] SUSE Linux 10.1 | Reporter: | Richard S <webmaster> |
| Component: | Installation | Assignee: | Hannes Reinecke <hare> |
| Status: | RESOLVED INVALID | QA Contact: | Klaus Kämpf <kkaempf> |
| Severity: | Major | ||
| Priority: | P5 - None | ||
| Version: | Beta 3 | ||
| Target Milestone: | --- | ||
| Hardware: | x86-64 | ||
| OS: | SUSE Other | ||
| Whiteboard: | |||
| Found By: | Beta-Customer | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
| Attachments: | Improved mkinitrd | ||
|
Description
Richard S
2006-02-05 14:00:01 UTC
Correcting my statement above, of course the boot process stops after loading the usb host und storage modules, but the problem is, that the initialization of the drive takes some seconds. As a workaround I thought I mount the initrd and modify the linuxrc script adding some delay(sleep5 after loading usb_storage), unfortunately it looks like the initrd has changed in 10 and 10.1 and it seems like I cannot decrompress and mount the initrd. I tried with: gunzip -c initrd-KERNELVERSION > initrd.ext2 mount -t ext2 -o loop initrd.ext2 /tmp/img mount tells me that there is no valid fs specified. Created attachment 66644 [details]
Improved mkinitrd
Since I had some time today I took a closer look at the problem and fixed it.
I modified mkinitrd of Suse 10.1 Beta 3 so mkinitrd can add some delay to the init script. It introduces a new commandline switch "-U" , if mkinitrd is called with "-U" flag the script will add sleep 10 after modprobe usb_storage. This fixes the problem that usbdrives aren't initialized before the init process tries to continue from root device.
To make this convenient for the user it would be a good idea to add a checkbox to grub installer dialog that switches on -U for mkinitrd.
Well, actually you can already pass the kernel commandline option 'udev_timeout=XX' to the initrd; this will set the internal timeout for the root device to the specified value. |