Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
How to install Ubuntu Linux on an Acer Spin 1 SP111-32N

How to install Ubuntu Linux on an Acer Spin 1 SP111-32N

BIOS Key

The first thing you encounter is how to get into the BIOS. Hold down the little blue Fn key, and press F2. If you do this as soon as you press the power button, then keep pressing F2 a lot, it gets into the BIOS reliably.

In the BIOS, you don’t need to change the Secure Boot settings (yet). Just remember that you have to hold down the little blue Fn key to change the boot order with F5 and F6.

The live USB should boot up just fine. Do not select “Install ubuntu” from the GRUB menu. Let the default option start up, “Try ubuntu without installing.”

Live USB

The next thing is that the screen rotation very unhelpfully gets it wrong and everything is sideways, unless you rotate the device sideways.

Hold down the Windows key and press O, after you’ve rotated the device sideways. That engages the rotation lock. (For some reason I couldn’t get the lock to engage using the little icon in the sound/battery/restart menu in the corner of the screen. But Windows + O works.)

Display sleep

If the device sits idle in the Ubuntu live environment, it goes to sleep. Ubuntu wakes up just fine but won’t let you log in.

Change the Display sleep setting to never go to sleep, or just keep pressing buttons / using the mouse.

If the device does go to sleep, or you get stuck anywhere, you can force a reboot with Alt + PrtSc + B. But if the mouse stops moving for up to 3 minutes, don’t panic and force that reboot. Just wait, the Live USB environment is just very, very slow to respond.

Installation problems

Because the Acer Insyde H2O BIOS is broken, grub-install will fail. Frustratingly, this happens after it has spent 15 minutes copying files to your hard drive. Even more frustratingly, it makes it look like it simply failed to install grub-efi-amd64-signed and shim-signed, when what really happened was:

  1. grub-efi-amd64-signed installed fine
  2. The post-install script runs grub-install
  3. The Acer Insyde H2O BIOS is broken, so as soon as it runs efibootmgr to create a boot entry,
  4. The Acer Insyde H2O BIOS tries to write to random memory
  5. The linux kernel catches it red-handed
  6. There’s a kernel panic in the logs - https://bugs.launchpad.net/kernel/+bug/1835664 or https://bugzilla.kernel.org/show_bug.cgi?id=204289
  7. The kernel decides to stop all BIOS EFI activity (basically an “EFI safe mode”)
  8. If you try to manually run grub-install or efibootmgr to diagnose the issue, you get a cryptic “Interrupted System Call” error
  9. If you reboot, you’re back to the same problem (if you looked in /var/log/syslog the very first time you tried it)
  10. The solution is: pass --no-nvram to grub-install so it doesn’t touch the EFI boot selection
  11. But... any time in the future that an update helpfully re-runs grub-install (like after you’ve installed) your kernel goes into “EFI safe mode” again
  12. You can permanently tell the system to always use --no-nvram with the debconf “grub2/update_nvram” by following the weird steps I outline below.

Install - but do not install the bootloader

First do the system install without installing a bootloader.

  1. Just to be clear, UEFI Secure Boot is turned on in the BIOS right now.
  2. If you ran into trouble such as what’s described above, reset your BIOS by setting a supervisor password, choosing “Erase all Secure Boot Settings” then “Restore Secure Boot to Factory Default”, then clear the supervisor password, then go to the exit screen and choose “Load Setup Defaults.” Then Exit Saving Changes. Then press Fn+F2 to get back in the BIOS and start from there.
  3. Boot the Live USB “Try ubuntu without installing,” stop the screen from rotating with Windows+O, turn off display sleep
  4. Open a terminal by pressing the Windows key on its own, then type “terminal” then press Enter
  5. Start the installer from the command line, because you want to tell it to NOT install a bootloader. Type “ubiquity --no-bootloader”

Installing in Ubiquity

  1. Select your language, keyboard layout, and do NOT connect to the internet (it’s not needed, and downloading updates may break grub, below)
  2. Select a minimal installation, do NOT install third-party drivers
  3. You may get a prompt “The installer has detected that the following disks have mounted partitions” - click Yes. (This should only happen if you already have a Linux install on the disk.)
  4. Choose “Erase disk and install Ubuntu.” Heed the warning: this is going to WIPE ALL YOUR DATA on this disk. The reason for using this is to be sure mmcblk1p1 and mmcblk1p2 are correct below.
  5. Leave all check-boxes unchecked on the “Erase disk” page. Just click “Install Now”
  6. You then get another warning, because this is going to WIPE ALL YOUR DATA on this disk. You are fully responsible for any data you lose at this point, and so click Continue when you are sure.
  7. Set your location, your name, username, computer name, password, and whether to log in automatically
  8. Wait about 20 minutes while it copies files from the USB to the device
  9. It pops up “Installation Complete” - VERY IMPORTANT: click “Continue Testing.” We have more work to do.

Install The Bootloader

The bootloader is not yet installed. To do it, go to the terminal.

  1. sudo -s
  2. mkdir /target/media/cdrom
  3. mount /dev/mmcblk1p1 /target/boot/efi
  4. for i in /dev /dev/pts /proc /sys /run /media/cdrom; do mount -B $i /target$i; done
  5. chroot /target
  6. sed -i -e 's/^#deb cdrom/deb cdrom/' /etc/apt/sources.list
  7. apt-get install grub-efi-amd64-bin efibootmgr
  8. apt-get download grub-efi-amd64-signed # ignore the scary “permission denied” error
  9. dpkg --unpack grub-<press TAB>
  10. rm /var/lib/dpkg/info/grub-efi-amd64-signed.postinst
  11. dpkg --configure grub-efi-amd64-signed
  12. grub-install --no-nvram /dev/mmcblk1
  13. update-grub
  14. sed -i -e 's/^deb cdrom/#deb cdrom/' /etc/apt/sources.list
  15. exit # exit chroot
  16. for i in /media/cdrom /run /sys /proc /dev/pts /dev /boot/efi; do umount /target$i; done
  17. exit # exit sudo
  18. exit # exit terminal

And reboot

Conclusions

That fix doesn’t persist, but fortunately if grub-install tries to set the boot variables, because of some package updates, the Acer Insyde H2O BIOS fails, and... everything just keeps on working.

Although, it will complain that grub-efi-amd64-signed is broken. You’ll just need to:

  1. sudo rm /var/lib/dpkg/info/grub-efi-amd64-signed.postinst
  2. sudo apt-get install -f # fix installed packages

Notes

There are answers out there that claim if you do: echo “grub-pc grub2/update_nvram boolean false” > t.txt debconf-set-selections t.txt

The claim is it will magically pass --no-nvram to grub-install. It won’t - try dumping the contents of /var/lib/dpkg/info/grub-efi-amd64-signed.postinst before you rm it. It doesn’t care about debconf at all. It just runs grub-install. (That’s probably a bug for the debian guys, if you want to pursue it.)

Or, don’t buy a laptop with Insyde. Their BIOS is just plain full of bugs and spyware.

@Zeit08

This comment has been minimized.

Copy link

@Zeit08 Zeit08 commented Jul 10, 2020

Yes it somehow useful, eventually I installed linux normally, I saw the grub error, managed to boot it using rEFInd and then tried a few times the instructions here and succeded. Glad to know there are multiple ways to achieve the same result

@PrimulaX

This comment has been minimized.

Copy link

@PrimulaX PrimulaX commented Nov 13, 2020

Nice one mate. Cheers!

@Vikoxx

This comment has been minimized.

Copy link

@Vikoxx Vikoxx commented Jan 12, 2021

Man... I really love you!

@connected

This comment has been minimized.

Copy link

@connected connected commented Mar 14, 2021

Manual grub installation with --no-nvram flag definitely does the trick, but that was not the only problem I had with my Acer SP111-31.
After installing grub, I still had "No bootable device found" error while trying to boot the system.
Additionally I had to add "Trusted efi files" and turn off secure boot option in BIOS settings. I've added all *.efi files I found on EFI partition. After that I was able to boot into newly installed Ubuntu OS on my Acer laptop.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment