The basic problem presented with headless (i.e. PXE boot) installation of RedHat 7.0 on any platform with multiple NICs is due to a design change in the Anaconda installer. The installer now checks for multiple network devices and, if more than one network device is found, it pops up a requestor (on the system being installed) asking which network device you would like to install through. Naturally, if this happens on a client system being installed with no keyboard, mouse or video, the install hangs with no clue to the user of what is happening. This check is done before the kickstart configuration file is obtained through the network connection, therfore there are no kickstart switches/options that would help overcome this problem. The offending code is located in the Anaconda source in the "loader.c" file. This code is compiled into the pxeboot/initrd image and causes this issue. Specifically, the function "ensureNetDevice" in the file "loader.c" has the following code which causes the problem: --------------------------------------------------------------------------- deviceNum = 0; rc = newtWinMenu(_("Networking Device"), _("You have multiple network devices on this system. " "Which would you like to install through?"), 40, 10, 10, deviceNums < 6 ? deviceNums : 6, devices, &deviceNum, _("OK"), _("Back"), NULL); if (rc == 2) return LOADER_BACK; ---------------------------------------------------------------------------
Assigning to developer.
You can pass ksdevice=eth0 (for example) as a kernel parameter (same place you pass "ks") to tell anaconda which device to use.
The suggested kernel parameter works fine. However, the proposed solution breaks the headless installation because it still requires a monitor and keyboard for the end-user to input kernel parameters for each PXE client(s). By definition, "headless" means no monitor, keyboard or mouse ... just plug in an RJ45 and power on the system and grab a cup of coffee. That's how headless works on Red Hat 6.1, Red Hat 6.2 and Red Hat 6.2 SBE2. Is there a way to pass the kernel paramter during PXE boot to accomplish a truly headless boot?
Put the ksdevice=eth0 bit in the same place you're putting the main 'ks' argument. You can specify this right in the syslinux.cfg file, or the pxe equivalent.