Install CentOS 8 on Microsoft Surface Go 2

2020-08-30 - This is going to be one of my favourite articles as it resulted in a very nice surprise for me. I generally have a linux tendency and I am running all my personal devices on Linux. Eventually I gave up to my inner self and decided that I would like a cheap tablet to browse the web or read some articles whilst in bed. iOS devices were ruled out by default as they were neither open in software nor hardware. Most Android devices were not really open in hardware. Leaving the PinePad. I decided that it was not powerful enough for me to do other things (no clue what) and the ARM processor might have given me some hassle in installing packages. Eventually I came across the Surface GO2 which almost fit all the criteria I was looking for in a tablet. It can run a stock Linux, fallback plan would be Android OS or Windows. Only downside was the price. The lowest version is not powerful enough (very laggy reactions) and the base OS took 40GB of the 64GB space (before Windows update). So I opted for the way too expensive middle version without LTE: Core M3, 8GB ram, 128GB HDD. I even got it for a nice 600 EUR deal incl. the (back then) unwanted keyboard.

Windows 10 first impression (after unboxing): You had to supply an e-mail address, answer 50 questions on privacy and sharing data, ending up with Windwos 10 Home (S or no S, doesn't matter...). The first usage of Windows on a tablet was really strange and confusing. Windows is no tablet OS. You can't compare it to Android or iOS. Things are just way too small. Even the original explorer stayed. You have to spend some time configuring it to make it user friendly as a tablet OS. I am not sure whether that is the point or not. Overall I would say: Windows 10 is not a tablet OS!

CentOS 8 first impression: I had little expectations of CentOS being tablet ready. Especially reading about failed previous Linux attempts. Coming out of the Windows 10 experience though and the keyboad only CentOS installation, I was greatly surprised. The tabled was a lot more usable than with Windows 10. Symbols were large enough, keyboard was more usable, rotation worked as expected. This is not at all what I was even hoping for. So I jumped around happily all day and glad that things worked out so great. So overall, I can so far only recommend the upgrade from Windows 10 to CentOS.

This article will collect the steps and overall comments to put CentOS 8 onto a Microsoft Surface Go 2. Let me know your feedback (wb2008 at bluhm-de dot com).

1. Create a USB drive with CentOS 8. I used the Netboot image (*boot.iso) and installed everything from the internet. You could use a full DVD image (*dvd1.iso) instead.

  • Download the image form http://isoredirect.centos.org/centos/8/isos/x86_64/
  • Place the image onto your pen drive (as root. Verify your pen drive location to be !!!!!!!!!!!sdX!!!!!!!):
     dd if=CentOS-8.2.2004-x86_64-boot.iso of=/dev/sdX

2. Unsecure the tablet and change boot order:

  • In Windows 10, decrypt the HDD using bitlocker (Start --> type bitlocker --> decrpyt).
  • Start into the tabled BIOS and remove Secure Boot, enable boot from USB (Shut down, Press Louder + Power on, Release Power on when logo appears).
    Note that the standby then hibernate functionality does not seem to be supported when secure boot is re-enabled.

3. Install CentOS 8

  • You need a keyboard connected. So make sure this works. The CentOS installation routine does not have an on-screen keyboard.
  • Insert the USB drive.
  • Back in Windows, go to Settings --> Recovery --> Advanced --> somewhere here you can chose boot from USB, select the first entry)
  • Follow the general installation flow. Install the Workstation environment. Admire the setup

4. Post-installation

  • Install "Gnome Tweaks" to easily configure the tablet. (here a nice article)
  • Install tlp for power management (otherwise battery drains too quickly. Overall Power Management needs more tuning as the tablet does not go into depe sleep mode.
    cat > /etc/systemd/sleep.conf << EOF
    [Sleep]
    HibernateDelaySec=1200
    EOF
    systemctl suspend-then-hibernate # test if hibernate works as expected
    
    
    Edit /etc/systemd/logind.conf
    HandleLidSwitch=suspend-then-hibernate

    systemctl restart systemd-logind.service # WARNING, logs you out.

    Note that suspend then hibernate will not work if secure boot is re-enabled.

  • Check out the Gnome Shell extensions to configure the system to your liking (title bar or not, maximise/minimise icons)
  • Change Firefox to run on tablet mode.
  • There is a Gnome extension that allows the windows to snap to a grid section. This might be useful.
99. Open items
  • Camera does not work.
  • On-screen keyboard is transparent and does not resize the window (items behind the keyboard cannot be accessed).

2020-12-27: Side note on Debian
I tried installing Debian on the tablet due to better expected power management. Installing Debian does not work due to missing WIFI drivers and quite a few adaptions needed. Overall, the Debian installation does not seem to be working as convenient as it does on CentOS. So I recomment to stick with CentOS.