willem.com
share this on: Facebook Twitter Pinterest Share

Making my own tablet OS

Installing and modifying Debian GNU/Linux on Surface Go

Mar. 9, 2020 -

For some years now I use a tablet as main computer, I like its versatility. But, most tablets come with a locked down operating system, like iPadOS, Windows 10S or Android. As I like things my own (weird) way, I wondered if I could escape these "software jails" by installing a free operating system on a tablet. It's possible, read along to find out how I escaped!

Hardware: Surface Go

If you're considering installing another operating system on a tablet, you should definitely do some research on tablet hardware. Not all tablet computers can be reinstalled with a custom operating system, some have locked bootloaders, proprietary chips or other hurdles.

Microsoft Surface Go - an ultra portable 10
Microsoft Surface Go - an ultra portable 10" touch screen tablet computer (with type cover, pen and USB-C to ethernet and USB 3.0 adapter)

Meet Surface Go, it's a relatively small tablet (10" screen size). It has a "normal" 64-bit Intel processor, it has a bootloader that can be unlocked and its hardware is well known as it is similar to the older "Surface Pro 6". Older hardware is a good thing if you're thinking about free operating systems. The older hardware becomes, the greater the chance that people have found ways to make it work with free software, such as Debian GNU/Linux.

Update first!

Before you erase the proprietary operating system from the tablet, you should use it to update the firmware. Updating firmware from anything other than Windows is virtually impossible. The new firmware for the Surface fixed many bugs and improved the tablet's performance - you don't want to miss out on this!

Check for updates manually using Windows Update
Check for updates manually using Windows Update
Note the many firmware updates, you can only install them from Windows
Note the many firmware updates, you can only install them from Windows
It might take some time, be patient or take photos :-)
It might take some time, be patient or take photos :-)

Choosing an operating system

Once you have selected the tablet hardware, you should choose an operating system. For various reasons, I recommend that you consider choosing a free operating system. With free software you are - quite literally - free to make it work as you like. I like Debian, a GNU/Linux distribution.

Debian GNU/Linux - The universal operating system
Debian GNU/Linux - The universal operating system

The Debian GNU/Linux distribution is among the oldest distributions available. It is special because its maintainers have ratified a social contract, a document providing guarantees that Debian is open and free. It can be installed on almost any hardware, hence their slogan "the universal operating system".

Creating a bootable USB stick

Installation of Debian is done using a bootable USB stick. I used another computer to download the installation files from https://debian.org. You must create an installation medium to get these installation files to the tablet computer.

You can use another computer to create a bootable USB stick, I used my ThinkPad X1
You can use another computer to create a bootable USB stick, I used my ThinkPad X1

On another laptop I used some terminal commands to create the bootable USB drive. If you're on Windows or Mac you can use other tools to get this job done, like Disk Utilities, Rufus or unetbootin.

Starting the installer

Connect the bootable USB drive to the Surface tablet, I used a USB-C to ethernet and USB 3.0 adapter. The wired network connection comes in handy during installation because Debian often cannot load firmware/drivers for the proprietary WiFi chips.

Connecting the bootable USB drive to the Surface tablet using the USB-C to USB 3.0 and ethernet dongle
Connecting the bootable USB drive to the Surface tablet using the USB-C to USB 3.0 and ethernet dongle

The easiest way to boot the Surface tablet from the USB drive is through "Advanced Startup Options" in Windows Settings, it will restart your computer offering you different boot and recovery options.

"Advanced Startup Options" from Windows Settings allows you to use a USB drive as boot medium
Choose
Choose "Linpus Lite" to boot the installer

Choose "Use a device" and then select "Linpus lite". With a bit of luck you'll be greeted with the Debian GNU/Linux installer menu.

Debian GNU/Linux Installer Menu on Surface Go - happy me
Debian GNU/Linux Installer Menu on Surface Go - happy me

Proceed with the installation by answering questions like what language you wish to use and what keyboard layout you have. The installer will attempt to recognise your network hardware. Unfortunately many vendors keep their device drivers (firmware) closed, making it impossible for Debian to include them with their standard collection of software (which is required to be free software).

Missing firmware renders hardware unusable during installation
Missing firmware renders hardware unusable during installation

Although it is possible to load these non-free device drivers from (another) USB drive, it's my experience that it is difficult to exactly preload those device drivers that you'll need. My strategy is to connect the computer to a wired network connection during installation and worry about missing drivers afterwards. It's easier to add them later if your system is online.

Installation in progress - note the connected network cable
Installation in progress - note the connected network cable

Graphical user interface

Many apps (web browsing, photo editing, drawing) only work well through a graphical user interface. You can choose from many different options if you use free software. The first choice you need to make is whether you want a full "desktop environment" or just a "window manager".

Desktop Environment

A desktop environment gives you an overall user experience, including panels, system menu's and status applets. It comes with its own set of (system) applications and look+feel. While most desktop environments offer a complete standard configuration, many of them offer advanced options for customisation. Check out their websites, read about their design principles, and choose something you like. Common desktop environments for Debian are:

Window Manager

Unlike a full blown desktop environment, a window manager only provides a way to manage application windows. Window managers are chosen because they are extremely minimal, requiring all extras to be manually added by the user. If you like to make your own decisions, choosing a window manager might be a good starting point for your graphical user interface. Common ones are:

You should really take your time to make your own decision, as choosing the foundation for the graphical user interface greatly impacts the overal experience. It's a personal choice, driven by preferences and your willingness to manually adjust it. My choice, because I have years of experience with it, is to use the Openbox window manager in combination some extra tools that optimise my experience.

Optimising the experience

This is an essential step when you're installing a free operating system on a computer. After installation, the default settings are often not tailored to your specific hardware, preferences and use cases.

These where some of things I did on top of the Openbox window manager:

Compiling my customised Linux kernel
Compiling my customised Linux kernel
Compiling the Linux kernel on a Surface Go takes some hours
Compiling the Linux kernel on a Surface Go takes some hours
The 'onboard' virtual keyboard
The 'onboard' virtual keyboard
Pen input works using my custom linux kernel and the Xournal app
Pen input works using my custom linux kernel and the Xournal app
Using the customised operating system on tablet to create content for this blog
Using the customised operating system on tablet to create content for this blog
Reading an article on my tablet in portrait mode
Reading an article on my tablet in portrait mode
Using the customised Surface Go (right) for programming, similar to how I work using an iPad Pro (left)
Using the customised Surface Go (right) for programming, similar to how I work using an iPad Pro (left)

Conclusion

After many hours of experimenting and finetuning I created a tablet operating system experience that works. I can use it to read, draw, program and design.

The sense of understanding you'll develop during the whole "build your own OS"-thing is incredible, both from a technical and user interaction perspective. It's a great opportunity to learn and hone your skills!

Update:

Read my follow up posts on:

Did you enjoy this post?

If you found this content useful,
consider showing your appreciation
by buying me a coffee ❤️😋:

Or help me by sharing this post with your friends:

Other stories

all DesignExperimentHackingLinuxMinimalTablet