Yet another night passed to fight with the machine. 💪
I was really happy to know that the latest version of ElementaryOS were out so I could not wait to install it on my latest laptop Acer Predator. 🤘 But... as usual, it was not without troubles...
But not really in fact... It might work for some brands but for my Acer Predator... not at all. Well it can work but will requires the steps explained below.
If you're in a hurry, jump to "Remove the buggy boot entries".
The only slight change you will have to do from your habits is to use the live
mode instead of the install
mode to process to the installation. This is required to fix the installed bootloader otherwise you will not be able to boot correctly.
Note: If you haven't got any issues using the normal install process and everything worked directly right after the first boot, then you can skip the whole gist and tell to yourself that you're from the lucky ones that didn't had any issues during their first installation. 👍
The first difficulty was to get enough time to capture the error message as it was disapearing almost right once displayed.
Apparently, when the installer failed to setup the bootloader and SecureBoot correctly, it creates a bootloop right after the next reboot required to finish the installation.
On each boot loops, it fails to detect the correct boot entry from the EFI NVRAM
, adds default entries, then force reboot to use the new added entries. But at the next reboot, it fails again to detect the correct boot entry and restart the process infinitely...
Some constructors like Acer, requires to
trust
the boot file when SecureBoot is enabled. This means you will need add the file that need to betrusted
manually in yourEFI
BIOS settings.
As you may see, two entries got created on each boot loops.
Before I could find a proper solution after some long researching and testing hours, I got multiple bootloops times and so, got a lot of buggy boot entries to remove...
I got around 50 buggy boot entries to remove and required to specify them one by one...
The process is not really handy but thanks to the live
mode to make it easier otherwise... I don't even imagine 😅.
- Boot in
live
mode by selecting option "Try ElementaryOS..." - Connect to your network (ethernet or wireless but Internet is required)
- Download and install
efibootmgr
package:sudo apt install efibootmgr
- List your current boot entries:
sudo efibootmgr -v
- Check the id you want to remove starting by
Boot[id in hex]
, example: Boot002A -> 002A is the id in hex to use - Remove the wanted entry by running:
sudo efibootmgr -b [id in hex] -B -v
(-v
is used to display more info)
If you have several entries to remove as I had, you might to need to use a loop to remove them all that way:
for ID in 000E 000F 0010 0011 0012 0013 0014 0015 0016 0017; do sudo efibootmgr -b $ID -B -v; done
Entries starting by
PciRoot(0x0)/Pci(0x17,0x0)/Sata(3,32768,1)/
will be removed from the BIOS.Dont't try to remove them manually because they'll be readded by the BIOS as the next boot...
I will explain the method later.
The following steps will help you to solve your boot issue.
Now that you have cleaned your EFI NVRAM
with the method above, you can start to breath a little as the following will fix your issue and let you enjoy your lovelly ElementaryOS Juno 😋.
Here, you will need to check the given file, in my case it is this one:
/File(\EFI\ubuntu\shimx64.efi)
.
In case the boot menu is not enabled already, you will need to enable it before continue.
I used
F12
as boot menu key. Might be different in your case.
If the trust
procedure worked correctly, you should have a new line in your boot menu as shown in the picture above. Now boot using this new entry.
Once done and you haven't got any displayed error message and having this result:
Only if you have selected
full disk encryption
option during the installation process.
I'm sure you love my camera privacy patch 😄
You can do anything you want but celebrate it! 🎉🍻😁. The worst is behind you 😉.
As said previously, the worst is behind you and I don't think you want to make all these steps again... So you'll need to make your changes permananent and not having to use the boot menu to boot correctly each times.
I assume here that everything worked correctly on your side and you get the same result as I have to proceed to the next steps. If not, I'm really sorry for you but you'll need some additionnal debugging times, write a comment and I'll try to help you.
Open your session using the login screen then open the terminal app and run these commands:
# List your boot entries.
#
# The faulty entry '0000' is the one added by the installer
# It should be defined as `BootCurrent` on top of the command output.
# Nothing wrong if it doesn't, continue anyway.
#
# sudo efibootmgr -v
# BootCurrent: 0000
sudo efibootmgr -v
# Define the boot order to include your added boot entry from BIOS
# Don't do it if it's already included in the previous command output.
# In my case '0002' was already added by the BIOS apparently.
sudo efibootmgr -o 0001,0002,2001,2002,2003
# Define the next entry to use for boot.
# Replace '0002' by your boot entry.
sudo efibootmgr -n 0002 -v
Now you should see something like
BootNext: [your given id]
in the last command output.
Now you can reboot using sudo reboot
and start to cross your fingers. If you see your login screen without having to use the boot menu, you have solved your boot issue! 🎊
In order to make sure that everything will now working correctly on each boots, just check a last time your boot settings.
$ sudo efibootmgr -v
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0001,0002,0007,0008,0009,2001,2002,2003
Boot0000* ubuntu HD(1,GPT,9bd24b9a-f584-4a14-919b-dd7878c2aff1,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* Command Linpus lite HD(1,GPT,9bd24b9a-f584-4a14-919b-dd7878c2aff1,0x800,0x100000)/File(\EFI\Boot\bootx64.efi)RC
Boot0002* Elementary PciRoot(0x0)/Pci(0x17,0x0)/Sata(3,32768,1)/HD(1,GPT,9bd24b9a-f584-4a14-919b-dd7878c2aff1,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)A01 ..
Lines starting by
PciRoot(0x0)/Pci(0x17,0x0)/
are lines added fromtrust
procedure.I guess lines finishing by
RC
are the default ones added dynamically by the BIOS itself.Other guess would be that
A01
is the slot id from thetrust
store... Which corresponding to the first entry I've added during my testing.
If the BootCurrent
is set to your defined id, then you've definitely fixed your issue! 😎 🤘
Final result:
Other
PciRoot(0x0)/Pci(0x17,0x0)/
lines will be removed with the procedure below and I will just keep the one named Elementary. They are the results from my several attempts to make it works...
Feel free to comment, I'd be pleased to know that my gist helped you to solve your issue. 😊
As said earlier in this gist, I will explain how to remove entries added from EFI BIOS but I'm not sure you will have the settings as I have.
Having this fact in mind, I won't be responsible if you damage your computer if you proceed without having the same settings as displayed.
Use the showed option to remove the entries you have added manually. Myself included, I can't select which entries I want to deleted so this will delete all entries... Make sure you want continue, otherwise don't do it!
If you really want to continue, then press [enter]
on both options to clear them all. Once done, add the entry used during the trust
procedure, otherwise I'm not sure you would be able to boot after that.
Save and restart to apply changes. Go back to the EFI BIOS
to re-add your custom entry again if you want to be able to boot ElementaryOS Juno. (proceed as explained in this gist)
At the time I'm writing this gist, there is an issue that impacting applications based on wxPython
. Applications like PlayOnLinux and BOINC Manager are impacted. See there for updates: elementary/gala#244
As usual, it was not easy to get a clear and concise way to fix the issue and it required long research times before finding a solution after several unsuccessful attempts...
For once, I'm not sure that I was able to save all the used reference as I was forced to run in live
mode to do research and testing on the computer having the issue and I used Telegram Web
to save the most usefull links, so I may miss some probably. Let me know in comments if you need more info.
- https://forums.linuxmint.com/viewtopic.php?t=269299
- https://ubuntuforums.org/showthread.php?t=2147295
- https://askubuntu.com/questions/852005/is-re-enabling-secure-boot-in-uefi-secure
- https://community.acer.com/en/discussion/476726/es1-132-cannot-install-other-os-than-windows-10-bios-options-missing
- https://community.acer.com/en/discussion/476726/es1-132-cannot-install-other-os-than-windows-10-bios-options-missing/p2
- https://superuser.com/questions/1247300/how-to-make-uefi-bios-start-grub-not-windows
- http://bernaerts.dyndns.org/linux/74-ubuntu/340-ubuntu-install-acer-aspire-cloudbook-431
- https://ubuntuforums.org/showthread.php?t=2291335&p=13341757#post13341757
- https://ubuntuforums.org/showthread.php?t=2342323
- rhboot/shim#52
- https://askubuntu.com/questions/1053961/system-bootorder-not-found-after-installation
- https://askubuntu.com/questions/1042747/system-bootorder-not-found