At least 3 customers have reported issues with reading the kickstart
file from a USB device (hard drive, flash thumb drive, and CD-ROM). It
appears the problem is simply some devices are slow to initialize after
loading the usb-storage.ko driver, and anaconda doesn't wait long enough
before trying to read from them. See
https://bugzilla.redhat.com/show_bug.cgi?id=460566
The attached patch adds a kssleep=N command line option to sleep for N
seconds before attempting to read the kickstart file.
This was reported earlier for Fedora 8 in bug 452865, however, the code
has changed quite drastically between RHEL5 and Fedora 8, so a RHEL 5
solution will not apply to Fedora and vice-versa.
The problem is easy to duplicate -- just put the kickstart file on a USB
device -- but it requires hardware that exhibits the problem. We've
duplicated it on an IBM x3650, and it's also been reported on an IBM
BladeCenter HS21 and a Sun Fire X4450.
Jeff Bastian
--- anaconda-11.1.2.178.ORIG/loader2/loader.c 2009-05-26 09:59:56.000000000 -0500
+++ anaconda-11.1.2.178/loader2/loader.c 2009-05-26 17:48:49.000000000 -0500
@@ -114,6 +114,7 @@ uint64_t flags = LOADER_FLAGS_SELINUX |
int num_link_checks = 5;
int post_link_sleep = 0;
+int kickstart_sleep = 0;
static struct installMethod installMethods[] = {
{ N_("Local CDROM"), "cdrom", 0, CLASS_CDROM, mountCdromImage },
@@ -802,6 +803,8 @@ static void parseCmdLineFlags(struct loa
num_link_checks = atoi(argv[i] + 10);
else if (!strncasecmp(argv[i], "nicdelay=", 9))
post_link_sleep = atoi(argv[i] + 9);
+ else if (!strncasecmp(argv[i], "kssleep=", 8))
+ kickstart_sleep = atoi(argv[i] + 8);
else if (!strncasecmp(argv[i], "dhcptimeout=", 12))
loaderData->dhcpTimeout = atoi(argv[i] + 12);
else if (!strncasecmp(argv[i], "selinux=0", 9))
@@ -1657,8 +1660,15 @@ int main(int argc, char ** argv) {
if (loaderData.ksFile || ksFile) {
logMessage(INFO, "getting kickstart file");
- if (!ksFile)
+ if (!ksFile) {
+ if (kickstart_sleep > 0) {
+ logMessage(DEBUGLVL, "sleeping %d seconds before "
+ "getting kickstart file",
+ kickstart_sleep);
+ sleep(kickstart_sleep);
+ }
getKickstartFile(&loaderData);
+ }
if (FL_KICKSTART(flags) &&
(ksReadCommands((ksFile)?ksFile:loaderData.ksFile)!=LOADER_ERROR)) {
runKickstart(&loaderData);
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list