>-----Original Message----- >From: Ricky Chawla [mailto:ricky@xxxxxxxxxxxxxxxxxx] >Sent: Tuesday, November 15, 2005 03:02 PM >To: Kickstart-list@xxxxxxxxxx >Subject: Kickstart Redhat 9.0 and e1000 failure > >I am working on a DELL PE1850 which has the e1000 NICs. I am trying to >installed redhat 9.0 on this machine via kickstart and am seeing the >famous e1000 problem. In all the fixes that have been talked so far they >have been mainly for RHEL/FC etc. >Has anyone fixed this issue to work on RedHat 9.0 ? If so, it would be >nice to get a detailed work around. I tried adding the sleep 60 on the >init.c file but that did not help. > We had that problem w/ rhel3u4. Here's an internal memo describing the fix we used. I think it should be applicable to rh9. Stowe Davison The problem occurs because the anaconda installer will not wait long enough for a response when it is trying to NFS-mount the partition containing the Red Hat RPMs. The hardware combination of certain NICs and certain network switches means that the initial network connection after reboot can take over thirty seconds. Anaconda gives up before then. The part of anaconda you have to modify is buried in a file called isolinux/initrd.img on RHEL3u4 installation disk number 1. At a high level, what you have to do is edit a certain source file, rebuild a binary called loader which links that file in, and install the loader program in a new version of initrd.img. Once you know which source file to modify and what changes to make (which is covered in mailing list postings), rebuilding the loader program is easy. I could not find any information on getting that loader program into initrd.img. The procedure described below is the result of trial and error. The initrd.img file is a gzipped ext2 file system. If you uncompress initrd.img and mount the resulting uncompressed file (call it initrd.img.uncompressed) as a loopback device, you find it contains a directory (sbin) which in turn contains the loader executable. Delete that loader executable, copy your modified version into its place, unmount the file system, and re-compress (gzip) initrd.img.uncompressed. Call the compressed result initrd.img.newloader. That is your new initrd.img file. Do the following on a machine with RHEL3u4 installed. Set environment variable WORKSPACE to point to a scratch area. # ----- Put Source CD-ROM number 1 from the RHEL3u4 distro into # ----- the CD drive. % mount /mnt/cdrom % rm -rf $WORKSPACE % mkdir $WORKSPACE % cd $WORKSPACE % rpm2cpio /mnt/cdrom/SRPMS/anaconda-9.1.4.1-1.RHEL.src.rpm | cpio --extract % umount /mnt/cdrom % cat anaconda-9.1.4.1.tar.bz2 | bunzip > anaconda-9.1.4.1.tar % tar xf anaconda-9.1.4.1.tar # ----- Now edit the file $WORKSPACE/anaconda-9.1.4.1/isys/nfsmount.c # ----- See below for changes to make. % cd $WORKSPACE/anaconda-9.1.4.1 % make # ----- You get lots of out put from the make. % strip $WORKSPACE/anaconda-9.1.4.1/loader2/loader # ----- Take the source CD out of the drive and insert binary # ----- (install) CD number 1 from the rhel3u4 distribution. % mount /mnt/cdrom % cp /mnt/cdrom/isolinux/initrd.img $WORKSPACE % umount /mnt/cdrom # ----- Take the CD out of the drive. % cd $WORKSPACE % cat initrd.img | gunzip > initrd.img.uncompressed % mkdir $WORKSPACE/initrd % mount -o loop -t ext2 $WORKSPACE/initrd.img.uncompressed $WORKSPACE/initrd % rm $WORKSPACE/initrd/sbin/loader % cp $WORKSPACE/anaconda-9.1.4.1/loader2/loader $WORKSPACE/initrd/sbin/loader % umount $WORKSPACE/initrd % cat $WORKSPACE/initrd.img.uncompressed | gzip > $WORKSPACE/initrd.img.newloader The file $WORKSPACE/initrd.img.newloader is the new initrd.img file. Changes to make to anaconda-9.1.4.1/isys/nfsmount.c: Several people on various mailing lists have suggested patches. Most are quite similar to each other. I used the simplest. It was suggested by Jeroen Roodhart: https://www.redhat.com/archives/kickstart-list/2004-June/msg00045.html Search for the line pmap = pmap_getmaps(server_addr); in the file anaconda-9.1.4.1/isys/nfsmount.c. Immediately after that line, insert the following code: int retries = 0; while (!pmap && (retries < 30)) { sleep(2); pmap = pmap_getmaps(server_addr); retries++; } Save the file and make anaconda as indicated above. ~ ~ ~ ~ ~