Ubuntu Setup on Surface Book 2

Ubuntu Setup on Surface Book 2

These are my notes for installing and polishing Ubuntu/Xubuntu on a Surface Book 2. The exact package names and kernel projects may change over time, so check the linked project pages before copying commands on a current system.

0. Install Xubuntu

Install Xubuntu first. It is lighter than the default Ubuntu desktop and works well as a base system on the Surface Book 2.

After installation, update the system:

sudo apt update
sudo apt upgrade

1. Adjust fonts and icons

The Surface Book 2 has a high-DPI display, so the default desktop scaling can be too small.

Open:

Settings -> Appearance -> Fonts -> DPI

Set the DPI to:

256

Then adjust these desktop areas until the display feels consistent:

  • Panel
  • Window Manager
  • Desktop
  • Icons

2. Change the GRUB bootloader font

The GRUB boot menu can also look too small on a high-DPI screen. Edit the GRUB configuration in:

/etc/default/grub

After changing GRUB settings, regenerate the bootloader configuration:

sudo update-grub

3. Change the apt source list

If the default Ubuntu mirror is slow, change the apt source list from the China Ubuntu mirror to the Aliyun mirror.

The source list is usually here:

/etc/apt/sources.list

For example, replace:

cn.ubuntu.com

with:

mirrors.aliyun.com

Then update and upgrade again:

sudo apt update
sudo apt upgrade

4. Kernel

Use jakeday’s Surface kernel. It includes Surface-specific patches that were useful for the Surface Book 2 at the time of this setup.

More information and installation instructions are here:

https://github.com/jakeday/linux-surface#instructions

Follow the project instructions carefully, then reboot and confirm the active kernel:

uname -a

5. Enable third-party boot support in UEFI

To allow third-party boot components, reboot into UEFI.

Hold the power button and volume-down button at the same time. Release the power button once the machine starts booting, and continue into the UEFI menu.

In the UEFI settings, open the boot/security settings and choose:

Microsoft & 3rd party

Then save and reboot.

6. Signing

If Secure Boot is enabled, kernel signing may be required. Follow the signing instructions from the Surface kernel project:

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md

After signing, verify that the system boots into the expected kernel and that Secure Boot settings are consistent with the instructions you followed.

7. Repair and beautify the boot menu

If the boot menu is broken or Ubuntu does not appear correctly, use Boot-Repair:

boot-repair

For a customized Surface-style boot theme, follow this project:

https://github.com/timobaehr/Surface-Boot-Themes/tree/surface_book

After changing GRUB themes, regenerate the GRUB configuration:

sudo update-grub

8. Language support and input method

Install language support and configure the input method. I used fcitx.

Typical packages include:

sudo apt install fcitx

Then open the language/input settings, choose fcitx as the input method framework, log out, and log back in.

9. Additional drivers

Open the additional drivers tool and check whether proprietary or recommended drivers are available.

Try to enable GPU support if the driver is listed and suitable for the installed kernel.

You can also check graphics devices from the terminal:

lspci | grep -Ei 'vga|3d|display'

10. Synchronize settings with Windows

Adjust touchpad and scrolling behavior so it feels closer to the Windows setup.

The main settings I changed were:

  • Horizontal scrolling
  • Reverse scrolling direction
  • Panel dock behavior

Depending on the desktop environment, these settings may be under Mouse and Touchpad, Window Manager, or Panel preferences.

11. Install ubuntu-desktop

If you want the standard Ubuntu desktop in addition to Xubuntu, install it with:

sudo apt install ubuntu-desktop

This gives the option to choose between desktop sessions on the login screen.

12. Install SS

Install and configure SS if it is part of your network setup. Keep credentials and server configuration outside the repository or any public notes.

Leave a Reply