Opensuse 13.1M1 on UEFI – my experience
I decided to try installing 13.1M1 (that’s the prelease milestone1 test version) on my UEFI box. Broken stuff does not get fixed unless somebody tests and reports the problems. It was an interesting experience. The initial outcome was that it left my computer unbootable, though I eventually got it working.
Describing the install
I have previously described my UEFI box, and how I had set it up. I chose to install 13.1M1 to replace the second instance of opensuse 12.3 on that box. I had the 13.1M1 64-bit install DVD image written to a USB drive, so I booted that with the computer set for UEFI secure boot.
The install started well. I imported the partitioning from my earlier install (importing is an option in the install partitioner). After the partitioning section and the defining user accounts section, I was taken to the main install screen. I clicked on the boot section. It all looked pretty good. The “install secure boot” box was already checked by default.
I then went into the boot option screen. I first set the timeout to 15 seconds (the default is 8, as I recall). And then, remembering the problems I had when originally installing that second instance, I changed the “Distributor” from “openSUSE 13.1” to “openSUSE_alt 13.1”. This was to make sure that the UEFI boot entry would be called “opensuse_alt” and not “opensuse”. I wanted to avoid a conflict with the name used for my first install instance on that box.
After completing my boot settings, I next set the ssh daemon to run and to open the firewall port (near the bottom of the screen). And then I went into the software selection.
Everything looked to be working well in the installer, as smooth as any I have seen. So I clicked the buttons to proceed with the install.
It takes a little while to install all of those packages. I chose to install KDE, Gnome, XFCE and LXDE, with a few additional extras. I left the installation busily installing, and went to work on my normal desktop (running 12.3). A little later, I checked back, and there was a popup telling me that “mkinitrd” had failed.
Next, I used CTRL-ALT-F2 to get a terminal window. From there, I could see that the “initrd” appeared to have been properly built and installed. So it was likely the booting that was messed up. Running
showed that indeed, booting was a mess. There was no bootable system listed. There was a boot entry for Windows, but I had changed that to point to an opensuse boot instance. That was a mistake. I should have changed it back to the Windows boot manager before I started the install.
The effect was that the Windows boot manager entry pointed the boot loader for the opensuse instance that I had just overwritten. And there was no workable boot entry at all for opensuse. The entry for my first opensuse instance on that box had been deleted.
I then attempted to put that entry back, using the “-c” option of “efibootmgr”. For that, I used the exact command that I listed in an earlier post. The command was silently ignored. I still had no opensuse boot entry.
Using CTRL-ALT-F7 got me back to the installer. I told it to proceed in spite of the error. That got me to the reboot. I hit F12 to see what boot options the BIOS would give me. The only options were
- Windows boot manager (which would not work, as described above)
- Boot from hard drive 1 (would probably work to boot Windows)
- Boot from hard drive 2 (never tested)
- Boot from the USB
I tried booting from hard drive 2, which should have gotten me into opensuse 12.3. Alas, I had not set that up correctly so it failed. So I booted again from the install USB, went into rescue mode, and again tried to add the boot entry with “efibootmgr”. Again, that failed.
The next step was to boot from a 12.3 rescue USB. That worked. And I used “efibootmgr” in that to add a suitable boot entry. Fortunately, that worked.
I could now boot into my installed opensuse 12.3. The first thing that I did there was run “grub2-mkconfig” to rebuild the boot menu. That gave me a boot menu item for my 13.1 install. And that would allow me to boot the 13.1 system and look around to see what went wrong.
Once back in the system, I could investigate what went wrong.
The first check was the boot files in the EFI partition. And I found those in “/boot/efi/EFI/opensuse”. They should have been in “/boot/efi/EFI/opensuse_alt”. So my attempt to change the distributor from “openSUSE” to “openSUSE_alt” had been ignored.
I checked “/etc/default/grub”. And the distributor line there still said “openSUSE 13.1”. I manually edited that, adding the “_alt”.
Next, I started Yast, and went to the boot loader section. I attempted to install grub2-efi once again. It failed, in the same way that it had failed during the install. However, the needed files for booting were now in the correct place in the EFI partition.
The boot menu “/boot/grub2/grub.cfg” did not exist. I used “grub2-mkconfig” to boot that. With those changes, I should now be able to boot into the system in a reasonably normal way.
Checking the logs showed that the failure was when running “/usr/sbin/shim-install”. And that’s what I reported as bug 822770.
The problem is apparently a kernel bug. I’ll post separately about that. Enough people seem to be aware of the problem, that there’s a good chance it will be fixed in time for the 13.1 final release. Further testing showed that I could not add a UEFI boot entry while running kernel 3.9.0-1 (the installed kernel for 13.1M1), but I could add it running kernel 3.9.3-10 (tumbleweed on my 12.3 installed system on the same box).