Hide Forgot
Description of problem: When booting into rescue mode from CD/DVD, anaconda will load install.img twice from the install media, causing noticeable delay unnecessarily. Version-Release number of selected component (if applicable): anaconda-13.21.176 How reproducible: Every time. Steps to Reproduce: 1. Boot into rescue mode from CD/DVD 2. check /tmp/anaconda.log 3. Actual results: # cat /tmp/anaconda.log 14:42:27,548 INFO : kernel command line: initrd=initrd.img rescue BOOT_IMAGE=vmlinuz 14:42:27,548 DEBUG : readNetInfo /tmp/s390net not found, early return 14:42:27,548 INFO : anaconda version 13.21.176 on x86_64 starting 14:42:30,709 DEBUG : Saving module ipv6 14:42:30,709 DEBUG : Saving module iscsi_ibft 14:42:30,709 DEBUG : Saving module iscsi_boot_sysfs 14:42:30,709 DEBUG : Saving module pcspkr 14:42:30,709 DEBUG : Saving module edd 14:42:30,709 DEBUG : Saving module iscsi_tcp 14:42:30,709 DEBUG : Saving module libiscsi_tcp 14:42:30,709 DEBUG : Saving module libiscsi 14:42:30,709 DEBUG : Saving module scsi_transport_iscsi 14:42:30,709 DEBUG : Saving module squashfs 14:42:30,709 DEBUG : Saving module cramfs 14:42:30,710 DEBUG : probing buses 14:42:30,728 DEBUG : waiting for hardware to initialize 14:42:34,845 INFO : Trying to detect vendor driver discs 14:42:35,207 DEBUG : probing buses 14:42:35,226 DEBUG : waiting for hardware to initialize 14:42:38,611 INFO : trying to mount CD device /dev/sr0 on /mnt/stage2 14:42:38,614 INFO : drive status is CDS_DISC_OK 14:42:38,679 INFO : transferring /mnt/stage2/images/install.img to /tmp 14:43:25,451 INFO : mounted loopback device /mnt/runtime on /dev/loop0 as /tmp/install.img 14:43:25,451 INFO : Looking for updates in /mnt/stage2/images/updates.img 14:43:25,451 INFO : Looking for product in /mnt/stage2/images/product.img 14:43:25,769 INFO : mounted loopback device /tmp/product-disk on /dev/loop7 as /mnt/stage2/images/product.img 14:43:26,467 INFO : umounting loopback /tmp/product-disk /dev/loop7 14:43:26,526 DEBUG : This appears to be a boot.iso. 14:43:26,527 INFO : umounting loopback /mnt/runtime /dev/loop0 14:43:41,272 DEBUG : going to set language to en_US.UTF-8 14:43:41,272 INFO : setting language to en_US.UTF-8 14:43:41,280 INFO : 53 keymaps are available 14:43:44,551 INFO : starting STEP_METHOD 14:43:56,653 INFO : starting STEP_STAGE2 14:43:56,653 INFO : trying to mount CD device /dev/sr0 on /mnt/stage2 14:43:56,656 INFO : drive status is CDS_DISC_OK 14:43:56,861 INFO : transferring /mnt/stage2/images/install.img to /tmp 14:44:43,634 INFO : mounted loopback device /mnt/runtime on /dev/loop0 as /tmp/install.img 14:44:43,634 INFO : Looking for updates in /mnt/stage2/images/updates.img 14:44:43,634 INFO : Looking for product in /mnt/stage2/images/product.img 14:44:43,928 INFO : mounted loopback device /tmp/product-disk on /dev/loop7 as /mnt/stage2/images/product.img 14:44:44,613 INFO : umounting loopback /tmp/product-disk /dev/loop7 14:44:44,672 INFO : got stage2 at url cdrom:///dev/sr0:/mnt/stage2 14:44:44,723 INFO : Loading SELinux policy 14:44:45,188 INFO : getting ready to spawn shell now 14:44:45,492 INFO : Running anaconda script /usr/bin/anaconda 14:44:48,125 INFO : using only installclass Red Hat Enterprise Linux Server 14:44:48,132 INFO : created new libuser.conf at /tmp/libuser.v_4WVb with instPath="/mnt/sysimage" Expected results: Stage2 image (install.img) is only loaded once... Additional info: Problem would seem to be in loader.c, where the call to "findAnacondaCD("/mnt/stage2")" will unmount the CD before returning, if rescue mode is selected. So, the check for ".discinfo" file will fail causing unmount of the /mnt/runtime, and the install.img to get loaded again from the CD... ... /* Before anything else, see if there's a CD/DVD with a stage2 image on * it. However if stage2= was given, use that value as an override here. * That will also then bypass any method selection UI in loader. */ if (!FL_ASKMETHOD(flags)) { url = findAnacondaCD("/mnt/stage2"); if (url) { /* This is specific to RHEL, which does not have the mirror system * set up like Fedora does. If the CD/DVD doesn't have packages, * then it's a boot.iso and we still need to prompt for the * installation source. */ if (!access("/mnt/stage2/.discinfo", R_OK) || FL_RESCUE(flags)) { skipLangKbd = 1; flags |= LOADER_FLAGS_NOPASS; setStage2LocFromCmdline(url, loaderData); skipMethodDialog = 1; logMessage(INFO, "Detected stage 2 image on CD (url: %s)", url); winStatus(50, 3, _("Media Detected"), _("Found local installation media"), 0); sleep(3); newtPopWindow(); } else { logMessage(DEBUGLVL, "This appears to be a boot.iso."); umountStage2(); free(url); url = NULL; } } ...
Following patch to loader.c would seem to fix the issue (not sure if this is "correct" way to fix the problem though...) --- anaconda-13.21.176/loader/loader.c.orig 2012-06-12 12:40:09.000000000 -0700 +++ anaconda-13.21.176/loader/loader.c 2012-09-21 15:34:14.941896296 -0700 @@ -1309,7 +1309,7 @@ static char *doLoaderMain(struct loaderD * installation source. */ - if (!access("/mnt/stage2/.discinfo", R_OK)) { + if (!access("/mnt/stage2/.discinfo", R_OK) || FL_RESCUE(flags)) { skipLangKbd = 1; flags |= LOADER_FLAGS_NOPASS; When booting with initrd.img that contains the patched /sbin/loader, I get following log output: # cat /tmp/anaconda.log 17:13:15,550 INFO : kernel command line: initrd=initrd.img rescue BOOT_IMAGE=vmlinuz 17:13:15,550 DEBUG : readNetInfo /tmp/s390net not found, early return 17:13:15,550 INFO : anaconda version 13.21.176 on x86_64 starting 17:13:18,707 DEBUG : Saving module ipv6 17:13:18,707 DEBUG : Saving module iscsi_ibft 17:13:18,707 DEBUG : Saving module iscsi_boot_sysfs 17:13:18,707 DEBUG : Saving module pcspkr 17:13:18,707 DEBUG : Saving module edd 17:13:18,707 DEBUG : Saving module iscsi_tcp 17:13:18,707 DEBUG : Saving module libiscsi_tcp 17:13:18,707 DEBUG : Saving module libiscsi 17:13:18,707 DEBUG : Saving module scsi_transport_iscsi 17:13:18,707 DEBUG : Saving module squashfs 17:13:18,707 DEBUG : Saving module cramfs 17:13:18,708 DEBUG : probing buses 17:13:18,727 DEBUG : waiting for hardware to initialize 17:13:22,793 INFO : Trying to detect vendor driver discs 17:13:23,163 DEBUG : probing buses 17:13:23,179 DEBUG : waiting for hardware to initialize 17:13:26,563 INFO : trying to mount CD device /dev/sr0 on /mnt/stage2 17:13:26,566 INFO : drive status is CDS_DISC_OK 17:13:26,639 INFO : transferring /mnt/stage2/images/install.img to /tmp 17:14:13,417 INFO : mounted loopback device /mnt/runtime on /dev/loop0 as /tmp/install.img 17:14:13,417 INFO : Looking for updates in /mnt/stage2/images/updates.img 17:14:13,417 INFO : Looking for product in /mnt/stage2/images/product.img 17:14:13,734 INFO : mounted loopback device /tmp/product-disk on /dev/loop7 as /mnt/stage2/images/product.img 17:14:14,421 INFO : umounting loopback /tmp/product-disk /dev/loop7 17:14:14,480 INFO : Detected stage 2 image on CD (url: cdrom:///dev/sr0:/mnt/stage2) 17:14:21,128 DEBUG : going to set language to en_US.UTF-8 17:14:21,128 INFO : setting language to en_US.UTF-8 17:14:21,137 INFO : 53 keymaps are available 17:14:24,283 INFO : starting STEP_METHOD 17:14:24,283 DEBUG : loaderData->method is set, adding skipMethodDialog 17:14:24,283 DEBUG : skipMethodDialog is set 17:14:24,283 INFO : stage2 url is cdrom:///dev/sr0:/mnt/stage2 17:14:24,333 INFO : Loading SELinux policy 17:14:24,793 INFO : getting ready to spawn shell now 17:14:25,099 INFO : Running anaconda script /usr/bin/anaconda 17:14:27,742 INFO : using only installclass Red Hat Enterprise Linux Server 17:14:27,746 INFO : created new libuser.conf at /tmp/libuser.e8JvJD with instPath="/mnt/sysimage"
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux release for currently deployed products. This request is not yet committed for inclusion in a release.
Reproduced on RHEL6.4 GA, qa_ack+
Verified with anaconda-13.21.213-1.el6. install.img is transferred only once in rescue mode from CD/DVD.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2013-1588.html