OS13.1: Crash while updating online - Grub menu lost, incomplete

Hello,

Please let me request your help in the following situation. [Remark: I had images prepared to illustrate some of the things mentioned below. Unfortunately, I could not figure out how to include them in the post. Hints welcome!]

In short: The system is an Acer Aspire E1-572G laptop (purchased Jan. 2014) dual-booting Windows 8.1 64bit and Opensuse 13.1 64bit (released fall 2013). Booting the machine will not show a Grub menu. When using Super Grub2 disk, a Grub menu can be loaded, yet it does not show a Win8.1 entry.

The course of events (aka - ordeal):

Most recent successful online update of OS13.1 was about ten days ago. Then a week ago I launched another online update through Yast while continuing work. Suddenly the system stalled, rebooted, went through the Grub loader, and booted into OS13.1 only to stop the boot process at a point mentioning “kernel panic”, CPU not syncing, and file /lib64/libdbus-1.so.3 too short, see [pic1]. The OS13.1 system kept rebooting every 90 seconds. Win8.1 continued to work and to see the Linux partitions using Ext2Fsd. An OS13.1 64bit rescue CD worked and allowed me to back up data from there.

A messy process followed to unlock the InsydeH2O BIOS/UEFI which was locked by a forgotten password. Among other things, it involved paid help by the original computer store. Regarding the BIOS/UEFI, its version got updated to the most recent one offered by Acer (now 2.17, before was 2.13), boot order is “Optical drive first, next hard drive”, yet the the accessible options are minimal (essentially date and time only), e.g., no change of boot order possible. Most notably, there is no option concerning Secure Boot. It looks like there is only a kind of “user level” interface which hides respectively grays out some “supervisor level” options; see [pic2] (On the side, if anyone knows how to get this back, I would certainly appreciate the advice.) During boot process, change of boot source is possible.

At some point in the process, access to the Grub boot loader got lost. When booting, there was no Grub menu giving the typical options “OS13.1/ OS13.1 Safe Mode/ Windows 8.1”. Instead, the system boots directly into Win8.1. The OS13.1 64bit rescue CD did not succeed to get all the way to a login prompt, see [pic3]. I decided to reinstall OS13.1 64bit (it is foreseen for Evergreen) from a DVD “repository” and imported the mount points from the previous system. The installation did copy the basic system files, rebooted, yet did not get to the configuration stage. Rather, with the DVD removed from the drive, the system booted again directly into Win8.1.

I got a Rescatux & Super Grub2 disk. Only through the SuperGrub option “Detect any GRUB2 configuration file (grub.cfg)” was it possible to succeed in anything. On the hard drive was found the file /boot/grub2/grub.cfg which I selected. That got me a Grub menu (NB, without Win8.1 entry), booted into OS13.1 in failsafe mode (normal mode initially not possible due to graphics card issues) which then initiated the system configuration. First thing, I did an online update through Yast and got some additional data saved. Then I resolved the graphics card issue. Using the SuperGrub path allows now to launch the “usual” login.

The OS13.1 64bit rescue CD would not bring up a working graphical interface nor a TTY, at least pressing [Alt+F1/F2/…] does not bring up anything. Yet, the OS13.2 64bit rescue CD did bring up a graphical interface! All the hard drive partitions are seen, see [pic4]. I recognize that on the hard drive /boot/efi/ is empty. –

How can the Grub menu be brought back to appear after booting the machine with the option to boot into Win8.1?

I found http://forums.opensuse.org/showthread.php/494818-OpenSUSE-cannot-boot-after-BIOS-update-solved?p=2619825#post2619825 , yet I am unsure if it is okay to use the OS13.2 64bit rescue CD for such a process, and what exactly the correct command would be in my case. For reference, output from lsblk:


NAME    FSTYPE    SIZE MOUNTPOINT    LABEL
sda             465.8G               
├─sda1  ntfs      300M               Recovery
├─sda2  vfat      100M /boot/efi     
├─sda3            128M               
├─sda4  ntfs     54.8G /win/system   
├─sda5  ntfs       44G /win/userdata WinUserData
├─sda6  swap      8.2G [SWAP]        
├─sda7  ext4       20G /             
├─sda8  ext4       15G /usr/local    
├─sda9  ext4       10G /root         
└─sda10 ext4      300G /home         
sr0     iso9660 371.8M               ISOIMAGE

In your reply, please be specific in your instructions since I consider myself rather a top-level Linux user (although this whole story once again took me deep into the guts of it all…).

Thank you!

IMO
When you updated your BIOS, it ran as a “Windows aware” upgrade, re-flashing your EPROM, but of course Acer only expected Windows on your system.

Regardless how your system previously booted, you will need to re-configure your chain-loading, that means that either the Windows or Linux bootloader boots first, then if you want the other OS the first bootloader hands off to the other bootloader.

More than likely, every time you re-flash (upgrade) your BIOS, you’ll likely encounter the same thing (Windows bootloader first). So, probably the logical thing to do is to get one of those Windows Bootloader utilities and manually create a menu item pointing to your grub bootloader (you’ll likely need to use the arc path described by Windows, not the partition names used by Linux).

Another thing to consider is whether you might want to take this opportunity and just disable UEFI. Although you’re weakening your boot security, it’s something many people prefer believing that the extra security is not worth the extra complexity and potential issues it can cause. In fact, if your system previously booted first to grub instead of the Windows bootloader, UEFI was probably disabled then (and enabled now only because of your upgrade).

Others may differ from my recommendation…

TSU

Thank you, TSU, for your remarks. Only that I am at a loss of understanding how they may help me resolve my problem.

You need to set the boot order in the BIOS. TZU suggests that a BIOS update may and probably does set the default back to Windows you must change that manually back to boot openSUSE. How to do that is a function of the hardware. So if you don’t know you need to read the hardware manual.

I am not sure I understand. The boot menu in my BIOS shows the following information:

Boot Mode [Legacy]
Boot priority order:

  1. ATAPI CDROM : HL-DT-ST DVDRAM GU71N 
    
  2. HDD0 : ST500LT012-9WS142 
    
  3. Network Boot : BRCM MBA Slot 0100 v15.4.2 
    
  4. USB FDD : 
    
  5. USB CDROM : 
    
  6. USB HDD : 
    

Pressing F12 while booting shows the first three (1.-3.) entries to choose from. – As written in my original post, when I enter BIOS setup, I can not change the above order any more ever since the BIOS password mess.

While running the installed system after launching it through SuperGrub2, I tried (adapting instructions at this post)

efibootmgr -c -d /dev/sda -p 2 -L Opensuse -l '\EFI\opensuse\grubx64.efi'

which resulted in

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

$ modprobe efivars
$ 

i.e., no output from the last command.

so basically grub is broken but windows will boot, are they on the same or different hard disks, where was grub installed in the root partition or in mbr, how are you booting windows?
You want to know how to reinstall grub?
See this post
https://forums.opensuse.org/showthread.php/504643-How-do-I-recover-MBR

  1. OS13.1 and Win8.1 are on the same hard drive.
  2. I do not know where Grub is installed, I let the installation do its thing. How can I find the answer to this question?
  3. When booting up the laptop and the boot medium being the hard drive, Win8.1 starts.

Without understanding (yet) all that is said in the post you mentioned, does it matter if the rescue CD is OS13.2? I am asking this since, as written in my original post, the OS13.1 version does not work on this machine anymore.

Is this an EFI BIOS? In most cases the in an EFI (and if all was installed as EFI) the boot stuff is in the EFI/boot partition this is a small partition that is FAT formatted So there should be an openSUSE directory in that FAT partition. A BIOS update should not mess with that but a Windows update might. How ever a BIOS update may remove the openSUSE data from the BIOS memory. Follow the instruction in the thread referenced by I_A

AFAIK it is an EFI BIOS. Does the following information help:

linux-4zfm:/boot # /bin/ls -AF
System.map-3.11.10-25-desktop  symtypes-3.11.10-25-default.gz
System.map-3.11.6-4-desktop    symtypes-3.11.10-25-desktop.gz
boot@                          symtypes-3.11.10-25-xen.gz
boot.readme                    symvers-3.11.10-25-desktop.gz
config-3.11.10-25-desktop      symvers-3.11.6-4-desktop.gz
config-3.11.6-4-desktop        sysctl.conf-3.11.10-25-desktop
efi/                           sysctl.conf-3.11.6-4-desktop
grub/                          vmlinux-3.11.10-25-desktop.gz
grub2/                         vmlinux-3.11.6-4-desktop.gz
initrd@                        vmlinuz@
initrd-3.11.10-25-desktop      vmlinuz-3.11.10-25-desktop
initrd-3.11.6-4-desktop        vmlinuz-3.11.6-4-desktop
message
linux-4zfm:/boot # /bin/ls -AF efi/
EFI/
linux-4zfm:/boot # /bin/ls -AF efi/EFI/
Boot/  Microsoft/  opensuse/
linux-4zfm:/boot # /bin/ls -AF efi/EFI/opensuse/
grubx64.efi*

Doing a diff on the newly generated /boot/grub2/grub.cfg and the previous one showed they were identical.

Using a OS13.1 64bit rescue CD, I was able to get all the way to the desktop display. I opened an XTerm and did the following:

linux:~ # mount /dev/sda7 /mnt
linux:~ # mount -o bind /proc /mnt/proc
linux:~ # mount -o bind /sys /mnt/sys
linux:~ # mount -o bind /dev /mnt/dev
linux:~ # chroot /mnt
linux:/ # grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found theme: /boot/grub2/themes/openSUSE/theme.txt
Found linux image: /boot/vmlinuz-3.11.10-25-desktop
Found initrd image: /boot/initrd-3.11.10-25-desktop
Found linux image: /boot/vmlinuz-3.11.6-4-desktop
Found initrd image: /boot/initrd-3.11.6-4-desktop
  WARNING: Failed to connect to lvmetad: No such file or directory.
Falling back to internal scanning.
  No volume groups found
done

Booting from the hard drive still does not bring up a Grub menu, but still launches Win8.1 directly. Also unchanged is that when I use the SuperGrub2 CD to launch into the OS13.1 installation, the Grub menu shows no entry for Win8.1. In short, no change noticeable.

What is the next step to take? Thanks again for your help!

PS: I found the paste server of OS. Refering to the original post,

  • Pic1: The screen when rebooting the system after it had crashed
  • Pic2: The current BIOS options

you have a verry strange partition setup

├─sda6 swap 8.2G [SWAP]
├─sda7 ext4 20G /
├─sda8 ext4 15G /usr/local
├─sda9 ext4 10G /root
└─sda10 ext4 300G /home

I think the best thing to do is repartition your hard drive and re-install 13.1.
Why, well 2 partitions /usr/local and /root will never be used or better said /root only holds roots configuration files and those are a few MiB, and /usr/local will only be used for applications manually build with ./configure make etc.
use a live disk or what ever and delete/merge sda7 sda8 and sda9.
unfortunately I’ve never installed linux on efi and I have no idea where grub should go maybe sda7?

Grub does not go anywhere on an EFI. Well you have no choice it goes where it goes. The boot files go into the /boot/efi FAT format partition and is mounted as such in the file system. This is not your Mom’s MBR boot.

To start the Installer must be booted in EFI mode NOT legacy mode then you use grub2-efi mount the EFI boot as /boot/efi if secure boot is to be used the box must be checked (does not hurt event is secure boot is not used)

Might try to run fsck against the partitions. It may fix things but then again it may not. It is not really clear what went wrong.

It may be possible to fix this but the the fastest way to get back in operation is to reinstall.

Also you do have a odd setup is there a reason you did this?? It is not the default partition layout

I’m sorry, I’m afraid I don’t understand this whole paragraph (missing punctuation makes it even harder). Regarding legacy mode, does pic2] help? Which box must be checked where?

I booted with the OS13.2 64bit rescue CD. This renders the Linux partitions (and non-system Windows ones) mounted. I unmounted the Linux partitions and did

linux:~ # fsck /dev/sda7
fsck from util-linux 2.25.1
e2fsck 1.42.12 (29-Aug-2014)
/dev/sda7: clean, 398593/1313280 files, 2826268/5242880 blocks
linux:~ # fsck /dev/sda8
fsck from util-linux 2.25.1
e2fsck 1.42.12 (29-Aug-2014)
/dev/sda8: clean, 21631/983040 files, 470614/3931908 blocks
linux:~ # fsck /dev/sda9
fsck from util-linux 2.25.1
e2fsck 1.42.12 (29-Aug-2014)
/dev/sda9: clean, 1947/655360 files, 833497/2620160 blocks
linux:~ # fsck /dev/sda10
fsck from util-linux 2.25.1
e2fsck 1.42.12 (29-Aug-2014)
/dev/sda10: clean, 76728/19668992 files, 26436716/78644224 blocks

Boot behavior did not change, i.e., booting from hard drive takes directly to Win8.1.

Well, as I wrote in my initial post, I did reinstall (importing the existing mount points), yet it did not help the situation.

I do have quite a bunch of manually installed software (used for professional purposes) which resides in /usr/local and which I don’t want to reinstall each time I reinstall or upgrade the system. The /root partition holds things for system configuration. I can see that the latter could be done in a different way, but that’s the one I came up with. – The initial inspiration came from articles/ posts I read that talked exactly about the case where there is a lot of third-party software.

Ok good reason. Just wanted to make sure you did not get it from a random Web page.

1)To start the Installer must be booted in EFI mode NOT legacy mode
2)then you use grub2-efi mount the EFI boot as /boot/efi
3)if secure boot is to be used the box must be checked (does not hurt event is secure boot is not used)

The picture does not help. It is how you actually boot the install media that matters. These are basic instruction on how to install openSUSE on an EFI BIOS machine

You want to press the key that gets to your boot selector in the EFI BIOS. note it is often F12 but each manufacture may set things differently
This should allow booting to the DVD or install media via EFI NOT legacy. The installer must be booted that way to be sure you get the proper defaults.

If you install as MBR or legacy it can ruin your whole week. To know the installer will say it is installing “grub2-efi” (not grub2) then you are sure that the boot was in EFI mode If it says just grub2 then you are in legacy and things will go wrong.

Note that if you use the full DVD you can do the upgrade (yep upgrade to the same version) this will keep by default the home partition but may not by default keep the /usr/local you may have to tell it how to deal with that. It also keeps most if not all the config stuff. The main difference is that with a NEW install the root partition is formatted. In the upgrade it is not formatted.

Sorry it took me a while to respond, I spent a day trying out different things. Here is what I have observed.

  • As mentioned earlier and shown in the BIOS screens, “Boot Mode” is set to “Legacy” and cannot be changed because of the BIOS mess that happened.
  • The OS13.1 (and also OS13.2, for what it’s worth) Installer does install in “Grub-EFI” mode.
  • In the Installer, checking the box for “Secure Boot” seems to make things worse. Cheating my way to the Linux installation with the SuperGrub2 CD, I get the Grub menu, but selecting any of the OS launch modes (“normal” or “failsafe”) leads to a message saying something similar to “System not registered/ has wrong signature” (sorry, I didn’t write that one down) and the system stalls.
  • When I do a fresh install and launch into it with SuperGrub2 CD, the Grub menu does have an entry for Win8.1(!). I have not tried if selecting this option would actually launch into Win8.1. Instead, selecting one of the OS13.1 options starts the system configuration. Once that is done and I reboot, the entry for Win8.1 has disappeared(!).

I don’t know where it installs, but talk about a week - it’s been two now. I do hope we get this misery resolved.

Hello paschuller,

i am puzzled by some of the information you provided:

  1. The disc layout you presented in your first post suggests that your drive has a GPT partition scheme (verification might be necessary).
  2. Pic2 in post #9 tells us that your machine boots up in LEGACY mode (as far as i know this will expect valid boot code in the MBR).
  3. When you switch on your machine it boots straight into MS Windows 8.1 without any problems.

My knowledge of MS Windows is very limited and i do not own any MS Windows installation but my understanding so far was that the Windows installer only provides two options:

  1. Either you run your machine in Legacy mode and use MBR partitioning.
  2. Or you run your machine in EFI mode and use GPT partitioning.

The information you provide seams to suggest a third option:

  • Using a hybrid-MBR partition scheme as defined in the “EDD-4 Hybrid MBR boot code annex” of the “UEFI Specification”.

I am not aware that this is a valid option to MS Windows 8.1 nor do i know whether the openSUSE installer could handle such a setup or not.

So i see a far chance that something went wrong when your UEFI got updated. But before taking any further steps it would be good to know whether your disk has a GPT partitioning and whether it has a hybrid-MBR or not.

Could you please provide the output of “gdisk -l /dev/sda”.

Best regards

susejunky

Hi susejunky,

Thank you for chipping in.

Sure, here we go:

mylaptop:~ # gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.7

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): BACF5218-DC60-48A3-A358-67D2E8EE6100
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 27995477 sectors (13.3 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          616447   300.0 MiB   2700  Basic data partition
   2          616448          821247   100.0 MiB   EF00  EFI system partition
   3          821248         1083391   128.0 MiB   0C01  Microsoft reserved part
   4         1083392       115900415   54.7 GiB    0700  Basic data partition
   5       115900416       208060415   43.9 GiB    0700  Basic data partition
   6       208060416       225263615   8.2 GiB     0700  primary
   7       225263616       267209329   20.0 GiB    0700  primary
   8       277700608       309155877   15.0 GiB    0700  primary
   9       309157888       330119167   10.0 GiB    0700  primary
  10       330119168       959272959   300.0 GiB   0700  primary

Is there hope? :\

It appears that you have both MBR and EFI booting going on. This is a problem. Unless you live and breath OS’s you are best advised to install all OS’s to boot the same way. I gave the basic instructions above if for some reason you can’t do that ie the BIOS is not working as expected. It is an issue you must deal with the computer maker over. You MUST boot the install media as EFIE not legacy (MBR). The media is designed to boot either way so the you must have the BIOS set to the right method. I see no option but to reinstall (note again you can choose an upgrade this keeps the installed apps if that is an issue) Also note you may have to specify the partitions you want the OS to go to. The installer can’t read your mind so you have to tell it what to do. The openUSUE installer is very good at this and allows any number of possible configurations and partitioning schemes. But you have to actively make the choices

Hello paschuller,

thank you very much for providing the GPT result. Now let us look at the facts we know so far:

  1. Your machine has an EFI (no BIOS, because you got an option to choose Boot Mode: LEGACY)
  2. Your EFI is setup to boot in LEGACY mode (Pic2 tells us this)
  3. Your disk has a valid GPT partition scheme (the output of gdisk - l /dev/sda shows us this)
  4. One of your openSUSE installs ( i don’t know which one) did run in EFI-mode (because there is a file /boot/efi/EFI/opensuse/grubx64.efi BUT if you put this file there by hand, then this assumption could be wrong)
  5. MS Windows 8.1 boots up with no problems
  6. openSUSE does not boot but can be started by using SuperGRUB2-disc

To tell the truth: I do not understand that setup at all and consider it as an invalid, not working one.

But to do some more thinking the following information would be helpful:

  • Is your MS Windows 8.1 a 32bit or a 64bit version?
  • Was your MS Windows 8.1 re-installed after the EFI-update took place?

As i don’t know anything about MS Windows 8.1 the only advice i can provide at the moment is:

  • Try to get your EFI fixed, so that you have the possibility to switch boot mode to EFI.

OR

  • Wipe your disk (BUT THINK! You need to be able to re-install your MS Windows 8.1!), setup a MBR partition scheme on your disk and install openSUSE 13.2 (+ MS Windows 8.1 ?) in LEGACY boot mode.

BUT BE WARNED !!! I can not tell whether any of this will cause problems with your MS Windows 8.1.

Best regards

susejunky

He does have an EFI boot partition so at some point something was installed in EFI boot mode.

EFI is a Basic Input Output System ie a BIOS even tough it is a new advanced BIOS it still is one. So now we call it Extensible Firmware Interface or Universal Extensible Firmware Interface. But that is just market speak. But a rose buy another name is still a rose

If you want to follow up on my earlier post, IMO the following procedure almost certainly fixes your problem…

Download and run any of a variety of Windows Bootloader utilities as I suggested earlier. Starting with Vista, Windows bootloaders are now a compiled app and cannot be modified by editing a configuration file with a text editor. Probably one of the oldest utilities which has been used most often is EasyBCD

With EasyBCD, you can view and edit the Windows bootloader for any/all modern Windows OS. I highly recommend you play around with it a bit before you actually attempt to make any changes, and maybe your first edit should be a test config just to get used to it. EasyBCD may be highly popular for this type of thing, but it’s not going to be the easiest thing to understand at first unless you’re very experienced with these kinds of utilities (and there are a few for other technologies out there. Even our “update-alternatives” is this kind of thing which requires editing through commands and not simply a text file config).

The specific thing you need to understand is that once upon a time your system booted successfully to <some> boot manager, whether it was grub or BCD. If the OS you wanted to boot to was listed, then you would select that OS immediately. If you didn’t see the OS you wanted, then you selected another entry like “other” (could be any text) which instead of pointing to an OS immediately pointed to the other bootloader… and then you would select your OS from <that> bootloader. That is how chain-loading works.

So,
I’m saying that today your system naturally boots to Windows, but nothing else. Before, your system <might> have booted in the same order but who knows? In any case, if this is a result of a BIOS upgrade you can expect the same thing to happen again the next time there is another BIOS upgrade, so you may want to simply accept the current bootloader order (BCD first, grub second) because firstly, <maybe> your BCD edits will be preserved (probably unlikely unfortunately) but the steps to recover should be fewer (simply make the same edits using EasyBCD next time).

If you haven’t looked at the role a bootloader has when a system boots, it’s essential.
The bootloader must be in a location that is “first read” when a system boots.
A bootloader can “chain load” as I’ve described above which means it passes the boot process on to another bootloader and then that second bootloader will perform as though the system booted to it originally (but was actually passed to by the first bootloader).
If the system’s installation has not been damaged or seriously modified (in particularly paths to disks and partitions), then you can typically ignore what happens after you successfully configure the boot process to point to the proper bootloader and an OS is selected.

So,
Repeating myself a bit here but summarizing…
If your openSUSE (and any other OS) is undamaged on your system, then you only have to point the boot process to grub (but first going through the BCD).

If you do this and start running a utility like EasyBCD, probably the most important thing is to determine the disk and partition layout as how EasyBCD sees them, the method for identifying disks and partitions <is not the same> as in Linux. So run the command to display all partitions found on the system and if necessary print that out so you can analyze what that means, and how to build the path to your grub.

Using the existing BCD entries and properly configuring a new path to your grub should put you back in business. And, once you do it, you should be able to do it again in seconds if the need ever arises again.

And, don’t overlook there are probably many, many useful tutorials on the web for EasyBCD that should further make this very easy to do.

HTH,
TSU