12.2 upgrade - Error Occurred while Installing ELILO - YaST BootLoader problems

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.

Regards,
Ed

Think I’d go for GRUB2-efi instead of LILO. LILO in 12.1 was sort of a stop gap until GRUB2 became more stable.