Making my own tablet OS
Installing and modifying Debian GNU/Linux on Surface Go
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.
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.
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!
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.
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.
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.
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.
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.
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).
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.
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 wether you want a full "desktop environment" or just a "window manager".
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:
- GNOME: https://www.gnome.org and https://wiki.debian.org/Gnome
- Plasma by KDE: https://kde.org/plasma-desktop and https://wiki.debian.org/KDE
- XFCE: https://xfce.org and https://wiki.debian.org/Xfce
- LXDE: https://lxde.org and https://wiki.debian.org/LXDE
- MATE: https://mate-desktop.org and https://wiki.debian.org/MATE
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:
- awesome: https://awesomewm.org
- Openbox: http://openbox.org/
- i3wm: https://i3wm.org
- dwm: https://dwm.suckless.org
- xmonad: https://xmonad.org
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:
- Upgrade the standard 'stable' release of Debian to its more cutting edge 'unstable' branche. This means you'll get new software versions faster, but things might sometimes break. I like new software (as I am a developer), you might reconsider this.
- Install various non-free device drivers (firmware) to make all hardware components work, Debian has a detailed page on this: https://wiki.debian.org/Firmware. It might requires a little research, log file analyses, to figure out which firmware your computer requires.
- Use gnome-network-manager and its applet to see the status of the WiFi and to allow me to quickly connect to different wireless networks
- Install Sound on Debian to make the tablet's speaker work. Make sure to check the volume/mute options before you consider your audio system to be broken (by default, it is muted!)
- Install Blueman to enable me to connect to various Bluetooth devices
- Use tint2 as status bar, task bar and quick launch bar (offering shortcuts to frequently used apps)
- Create a script that auto rotates the screen contents if I rotate the tablet
- Install tlp to dramatically improve battery life
- Install Compton to greatly reduce 'jarring' (improving smoothness) when scrolling with the tablet display in portrait mode
- Install my favourite apps on Debian GNU/Linux: Firefox and Chromium web browsers, Evolution mail/calendar/contacts app, Thunar file browser, XFCE-terminal terminal emulator, GIMP image manipulation, Inkscape vector graphics editing, Filezilla SFTP client, Libre Office, Xournal pen/notes
- Install onboard, a virtual keyboard to allow text input when the hardware keyboard is disconnected.
- Manually applying a linux kernel fix to make the Surface Pen work with the newest Linux kernel, requiring my to compile my own patched kernel.
- Disable Secure Boot to make my custom Linux kernel bootable
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!
Did you enjoy this post?
If you found this content useful,
consider showing your appreciation
by buying me a coffee ❤️😋: