I have a month old HP Z220 workstation on which I was running 12.1 with ELILO booting. I upgraded using the 12.2 x86_64 installation DVD. I booted the DVD in legacy/non EFI mode for the install which may have been a mistake. The upgrade installation failed near the end with a window titled
“Error Occurred while Installing ELILO” and text similar to the following.
## Using '/boot/efi/efi/SuSE'... ## filter '/etc/elilo.conf' to '/boot/efi/efi/SuSE/elilo.conf.tmp' > unlink( /boot/efi/efi/SuSE/elilo.conf) > rename( /boot/efi/efi/SuSE/elilo.conf.tmp, /boot/efi/efi/SuSE/elilo.conf) ## remove old files from '/boot/efi/efi/SuSE' > rm /boot/efi/efi/SuSE/initrd-3.4.6-2.10-desktop > rm /boot/efi/efi/SuSE/vmlinuz-3.4.6-2.10-desktop ## copy new files to '/boot/efi/efi/SuSE' > cp --preserve=timestamps /usr/lib64/efi/elilo.efi /boot/efi/efi/SuSE > cp --preserve=timestamps /boot/vmlinuz-3.4.6-2.10-desktop /boot/efi/efi/SuSE > cp --preserve=timestamps /boot/initrd-3.4.6-2.10-desktop /boot/efi/efi/SuSE Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. Try 'modprobe efivars' as root.
The system would not boot. The “modprobe efivars” hint is not something that can be worked with in the installation context, and I have not made use of it since. The booting error display was similar to:
near line 14: Option (null) expects an equal signal + value near line 4: Option expects an equal signal + (null) forcing interactive mode due to config file error(s) ELILO boot: ......
From experimentation, the system can be booted from the ELILO prompt by typing
vmlinuz-3.4.6-2.10-desktop initrd=initrd-3.4.6-2.10-desktop root=/dev/sda3
I was able to recover a booting system by mounting the /boot/efi partition in rescue mode and editing the efi/SuSE/elilo.conf. The elilo.conf written by the installation had syntax errors in the global section:
timeout = 80 ##YaST - boot_efilable = "openSUS 12.1 64bit" default = LinuxV2 prompt verbose delay append = "splash=silent quiet showopts" root fX message image = .... from here on the content is fine ...
With the system running, I did a lot of experimentation with the YaST BootLoader and editing the /etc/elilo.conf template. The BootLoader can run without error and update the elilo.conf file. I was able to get the elilo.conf global section to have what I believed to be proper syntax, similar to:
timeout = 80 ##YaST - boot_efilable = "openSUS 12.1 64bit" default = LinuxV2 prompt verbose = 1 delay = 0 append = "splash=silent quiet showopts" root = /dev/sda3 fX = "elilo.conf" message = " "
However, there would still be errors on booting. It seems my system does not like to see either unknown options or too many options. I cannot run the YaST BootLoader and create a working elilo.conf - this is a change from 12.1. The problem can be solved by changing the logic of the BootLoader so there is the ability to explicitly configure omitting selected global options, or having the logic not add any more options than it finds in the /etc/elilo.conf file.
My system will successfully boot with the simpler elilo.conf file, and this is a model for others to hand edit their own problematic files:
# Modified by YaST2. Last modification on Tue Sep 18 09:57:04 CDT 2012 # THIS FILE WILL BE PARTIALLY OVERWRITTEN by perl-Bootloader # For the new kernel it try to figure out old parameters. In case we are not able to recognize it (e.g. change of flavor or strange install order ) it it use as fallback installation parameters from /etc/sysconfig/bootloader timeout = 80 verbose = 0 ##YaST - boot_efilabel = "openSUSE 12.2 64bit" default = LinuxV2 prompt image = /boot/vmlinuz-3.4.6-2.10-desktop ###Don't change this comment - YaST2 identifier: Original name: linux### label = LinuxV2 append = "resume=/dev/disk/by-id/ata-ST2000DM001-9YN164_S1E0TL55-part2 splash=silent quiet showopts" description = Linux initrd = /boot/initrd-3.4.6-2.10-desktop root = /dev/disk/by-id/ata-ST2000DM001-9YN164_S1E0TL55-part3 image = /boot/vmlinuz-3.4.6-2.10-desktop ###Don't change this comment - YaST2 identifier: Original name: failsafe### label = FailsafeV1 append = "showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe" description = Failsafe initrd = /boot/initrd-3.4.6-2.10-desktop root = /dev/disk/by-id/ata-ST2000DM001-9YN164_S1E0TL55-part3
So hopefully the above will help others, and those responsible for the BootLoader can see that it does not work for everyone.