Installer Ubuntu sur un Surface

Ce tutoriel a pour but de vous aider à installer Ubuntu sur une tablette Surface.

Le tableau suivant récapitule la prise en charge du matériel de portable par les différentes versions d'Ubuntu. Il utilise les notations suivantes :

  • OK 64 bits Fonctionne immédiatement en 64 bits.
  • 32 et 64 bits Fonctionne immédiatement en 32 et 64 bits.
  • Fonctionne après config Fonctionne après quelques manipulations
  • Ne fonctionne pas Ne fonctionne pas
  • |Pas testé Pas d'informations disponibles
  • Information obsolète Information de support trop ancienne, si possible mettez là à jour.
Version Installation Carte graphique Son Casque audio Wifi Bluetooth Webcam Touchpad Raccourcis multimédia Autres
18.04 Fonctionne après config - - - Fonctionne après config - Ne fonctionne pas - - -
Debian armhf 32 bits Ne fonctionne pas - - - - - - - - Modèle 1516 32 GB, CPU ARM 32 bits - impossible d'accéder au BIOS, ne boote que sur sa clé de réinstallation Windows, pas sur les clé USB Linux
22.10 Fonctionne après config OK 64 bits OK 64 bits OK 64 bits OK 64 bits OK 64 bits Fonctionne après config OK 64 bits OK 64 bits Modèle : Microsoft Surface GO 3
23.04 Fonctionne après config OK 64 bits OK 64 bits OK 64 bits OK 64 bits OK 64 bits Fonctionne après config OK 64 bits OK 64 bits Modèle : Microsoft Surface GO 3

Pour cette opération sur un Surface il vous sera nécessaire d'avoir au moins une clé usb de Type-C. Il est fortement recommandé de faire une clé de sauvegarde de votre Windows et cela même si vous souhaitez supprimer complètement Windows.

Si l'installation n'est pas si compliquée, elle suppose toutefois de savoir à peu près se servir de la ligne de commande (ALT+CTRL+T) pour installer des paquets, réaliser de petits réglages et procéder à la compilation guidée du paquet libcamera.

Sauvegarder ses données

Évidemment commencer par sauvegarder vos données si vous en avez.

Mettre à jour W11

Mettre à jour W11, y compris si vous n'envisagez pas de conserver ce système d'exploitation sur votre tablette, certaines mises à jour pourraient se révéler critiques.

Désactiver bitlocker

Si votre disque est chiffré, désactiver bitlocker, le chiffreur natif de W11 (Système → Chiffrement de l'appareil → désactiver) Si vous ne savez pas si bitlocker est activé, il suffit d'aller voir dans les paramètres de W11 tel qu'indiqué ci-dessus.

Désactiver Secure Boot

Désactiver le secure boot, pour cela réinitialiser en maintenant enfoncé le bouton marche / arrêt et le bouton + jusqu'à disparition du logo W11. Ensuite, dans le Boot UEFI descendre à Security (cliquer avec le doigt suffit) et disable Secure Boot. C'est aussi l'occasion de saisir un mot de passe UEFI. Puis Exit et Restart.

Créer un lecteur de récupération

Pour facilement pouvoir réinstaller W11 sur votre appareil (par exemple pour le revendre), il est conseillé de créer une clé USB de récupération. Pré-requis : disposer d'une clé USB de 16 GO au moins formatée en FAT32

Les tutoriels, y compris ceux du constructeur, invitent à commencer par télécharger le zip de récupération (image de récupération ou de recovery) sur la page suivante (nécessité de saisir le numéro de série de l'appareil situé à l'arrière sous le pied escamotable, en dessous du logo W) : https://support.microsoft.com/fr-fr/surface-recovery-image. Ensuite l'utilisateur est invité à déplacer sur la clé créée avec W les fichiers du zip, cela afin d’adapter la clé aux caractéristiques de l'appareil, dans le cas où la clé est créée à partir d'un autre appareil. Cependant si la clé de récupération est créée à partir de la tablette, ce n'est peut être pas nécessaire. C'est à vérifier. Mais comme mon objectif est d'installer Ubuntu, je n'ai pas cherché à vérifier.

Saisir dans la zone de recherche de W11 "Créer un lecteur de récupération" puis accepter d'apporter des modifications à l'appareil. Cliquer sur "suivant" puis soyez patient insérer la clé USB dans l'appareil (attention son contenu sera totalement et irrémédiablement effacé) sélectionner le lecteur USB (votre clé) → suivant → créer puis patienter (un temps certain).

ça irait peut être beaucoup plus vite avec Ventoy sous Ubuntu mais je n'ai pas testé non plus.

Créer une clé d'installation bootable d'Ubuntu

La tablette Surface Go 3 comporte uniquement une prise USB C mais avec un adaptateur il est possible d'utiliser une clé classique (prise USB A). Privilégier une distribution récente, c'est conseillé pour l'installation du kernel spécifique, qu'il convient donc de commencer par télécharger au format ISO (https://www.ubuntu-fr.org/download/:ici).

Il y a plusieurs solutions, l'auteur de ces lignes a testé avec ventoy (ici) et ubuntu 22.04, l'installation fonctionne très bien (installation sans dual boot). Mise à niveau vers 23.04 avec do-release-upgrade.

Créer une clé Boot Repair

En cas de difficulté d'initialisation, notamment en cas de dual boot, vous pourriez avoir l'utilité de Boot repair. Dans tous les cas il est utile de conserver cet outil sur une clé dans un tiroir. Avec Ventoy l'iso peut se trouver sur la même clé que l'iso de la distribution en cours : pratique !

Installer la distribution

L'installation est classique à partir de la clé USB. La taille du disque disponible implique d'en consacrer à peu prés l'ensemble à la racine (50 GO conseillés pour 22.04 et ultérieure), il est possible d'installer une carte SD de bonne taille sur la tablette pour les fichiers personnels. L'installation de rencontre pas de difficulté particulière, en tout cas si le choix est fait de ne pas conserver W11 en dual boot et de consacrer la majeure partie du disque à Ubuntu. Se référer donc à la documentation standard ici et ici. Une fois l’installation terminée, redémarrer Ne pas s’inquiéter si le clavier virtuel assez laid clignote pendant que Grub s'exécute.

Si le redémarrage est problématique

Si lors du redémarrage l'appareil ne redémarre pas avec Ubuntu, utiliser Boot Repair pour obliger le chargeur W à accepter la nouvelle OS (ce qui signifie "réparer le chargeur d'amorçage" pour Boot repair).

Mettre à jour la distribution

Avant de personnaliser l'installation pour pouvoir utiliser au mieux la tablette, mettre à jour la distribution

sudo apt update && sudo apt upgrade

Installer le Kernel spécifique

Afin de contourner les particularités Microsoft et de jouir au mieux de toutes les potentialités de la tablette, la communauté met à disposition un kernel spécifique qui s'installe facilement.

La communauté invite les utilisateurs à utiliser une version récente d'Ubuntu pour améliorer la compatibilté du système avec le matériel.

Autoriser les dépôts external (non maintenu par Canonical ni Debian)

sudo apt install extrepo extrepo-data
À la date du 07/07/2023 le dépôt extrepo-data ne semble plus actif, ce qui ne fait pas obstacle à l'installation d'Ubuntu sur la tablette. Par conséquent pas de panique en cas d'erreur, il suffit d'activer uniquement extrepo.
sudo apt install extrepo

Activer le dépôt surface

Activer le dépôt et mettre à jour les sources.list

sudo extrepo enable surface-linux && sudo apt update

Installer le kernel Surface

Installation classique des paquets

sudo apt install linux-image-surface linux-headers-surface libwacom-surface iptsd
Pour les distributions antérieures à Ubuntu 22.04, particularités ipsd. Voir le site (https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup#manually-installing-the-repository)

Installer les clés pour le secure boot

puis installation des clés permettant de démarrer en secure boot

sudo apt install linux-surface-secureboot-mok

L'installation du paquet conduit à l'affichage d'instructions dans le terminal. L'utilisateur est invité à redémarrer, ce qu'il doit accepter, puis lors du redémarrage un menu "pop up" bleu va demander l'autorisation d'enrôler une clé, à accepter également. En cas d'erreur de manipulation, désinstaller puis réinstallez le paquet avant de réinitialiser à nouveau etc.

Le cas échéant, le mot de passe à saisir est "surface". Voir ici
Pas certain que la manipulation fonctionne toujours. À défaut la tablette fonctionne très bien sans secure boot.

Mettre à jour grub

À ce stade de l'installation, le nouveau kernel est bien présent mais pas utilisé : update-grub va permettre de le faire.

sudo update-grub

Pour terminer, redémarrer

En ligne de commande :

sudo reboot

Ou bien en mode graphique, bien entendu. Après redémarrage, vérifier que le kernel est bien utilisé en utilisant la commande uname

uname -a

Si le retour de la commande contient le mot "surface", tout va bien : le nouveau kernel est en fonction !

La tablette est désormais fonctionnelle, le wi-fi est actif mais quelques améliorations sont souhaitables, notamment pour pouvoir utiliser la caméra.

Vérifier que les paquets complémentaires sont bien installés

Le site des développeurs du kernel (ici) évoque l'intsllation complémentaire de certains pauqtes qui semblent présents par défaut sous Ubuntu. Vérifier la présence des paquets intel-microcode, linux-firmware et libwacom-surface

 dpkg -l | grep intel-microcode
 dpkg -l | grep linux-firmware
 dpkg -l | grep libwacom-surface

Si l'un de ces paquets se révélait absent (aucune réponse à dpkg -l), alors l'installer avec apt install

Afin d'améliorer la qualité sonore, il est aussi possible de paramétrer pulse audio et Mozilla Firefox (si utilisé avec Wayland)

 sudo echo "set speex-float-5" >> etc/pulse/daemon.conf
 sudo echo "MOZ_ENABLE_WAYLAND=1" >> /etc/environment
Le paramétrage de l'écran tactile serait aussi possible mais je n'y suis pas parvenu : ici

Installer libcamera

La partie la plus délicate de la procédure est à venir : compiler manuellement le paquet libcamera. Heureusement, en suivant les instructions pas à pas, ce n'est pas si difficile.

Commencer par télécharger les paquets utiles à la compilation

 $ sudo apt install build-essential meson ninja-build pkg-config libgnutls28-dev openssl python3-pip python3-yaml python3-ply python3-jinja2 qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5 qttools5-dev-tools libtiff-dev libevent-dev libyaml-dev gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev git

Récupérer les sources avec git

$ git clone https://git.libcamera.org/libcamera/libcamera.git
$ cd libcamera

Compiler les sources

Pour la suite de la compilation, l'utilisateur est suposé se trouver à l'intérieur du répertoire libcamera cloné avec git.
$ meson build -Dpipelines=uvcvideo,vimc,ipu3 -Dipas=vimc,ipu3 -Dprefix=/usr -Dgstreamer=enabled -Dv4l2=true -Dbuildtype=release
$ ninja -C build
$ sudo ninja -C build install
En cas de souci (par exemple compilation bloquée), cette manœuvre a réussi avec Ubuntu 23.04 : 1 effacer le répertoire :
    $ cd ..
    $ rm libcamera/*
    $ rm libcamera/*.*
    $ rm libcamera/.*
    $ rmdir libcamera
    $ sudo ldconfig
 

2 puis recommencer la séquence à partir de git clone etc…

Tester le bon fonctionnement de la caméra avec Cheese (NB : attention, un bon éclairage est requis).

Rendre la caméra accessible aux applications n'utilisant pas Gstreamer

Si vous souhaitez utiliser la caméra à partir d'applications n'utilisant pas Gstreamer, par exemple participer à une visioconférence depuis votre navigateur, il faut créer une redirection vers Gstreamer. Cette redirection se réalise grâce à une caméra virtuelle. Celle-ci s'active en deux étapes.

Activer le module dans le noyau

L'activation du module n'est à réaliser qu'une seule fois par session

$ sudo modprobe v4l2loopback video_nr=42 card_label="camera_virtuelle" exclusive_caps=1
Le nom de card_label est libre, éviter toutefois front camera et back camera déjà utilisés par le système
Dans un système protégé par secure boot, le chargement d'un module non signé peut être refusé. Se produit alors l'erreur suivante :
 modprobe: ERROR: could not insert 'v4l2loopback': Operation not permitted Lockdown: modprobe: unsigned module loading is restricted; see man kernel_lockdown.7

La solution à ce problème est expliquée ici. Elle nécessite elle aussi deux étapes, la première n'est à réaliser qu'une seule fois, la seconde à chaque mise à jour du noyau (kernel module) ou du module v4l2loopback. à noter que les valeurs OBS.priv, OBS.der, et /CN=OBS/ sont librement choisies par l'utilisateur et peuvent être modifiées.

  • Les opérations à réaliser une seule fois :
 $ openssl req -new -x509 -newkey rsa:2048 -keyout OBS.priv -outform DER -out OBS.der -nodes -days 36500 -subj "/CN=OBS/"
 $ sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./OBS.priv ./OBS.der $(modinfo -n v4l2loopback)
 $ tail $(modinfo -n v4l2loopback) | grep "Module signature appended"

(La commande tail permet de confirmer que le module est désormais signé)

 $ sudo mokutil --import OBS.der 

À cette étape, il est nécessaire de saisir un mot de passe ET DE S'EN SOUVENIR car il va être demandé après redémarrage (reboot). Redémarrer (en mode graphique ou en ligne de commande avec reboot). Une procédure d’enrôlement de clé (MOK) s'enclenche alors dans le BIOS, c'est à ce moment que le mot de passe précédemment créé doit être utilisé. Après redémarrage, saisir la commande suivante pour confirmer l’enrôlement :

 $ mokutil --test-key OBS.der
  • La commande à réaliser à chaque mise à jour du noyau (kernel module) ou du module v4l2loopback :
 $ sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./OBS.priv ./OBS.der $(modinfo -n v4l2loopback)
Si vous souhaitez utiliser régulièrement la caméra, il peut être utile d'activer automatiquement le chargement du module dans le noyau. Dès lors seule l'étape d'activation de la caméra virtuelle (Cf. ci dessous) sera nécessaire. L'activation automatique du module (voir ici) s'obtient ainsi :
 $ sudo echo "v4l2loopback" | sudo tee -a /etc/modules-load.d/v4l2loopback.conf
 $ sudo echo "options v4l2loopback video_nr=42 card_label="virtualcam" exclusive_caps=1" | sudo tee -a /etc/modprobe.d/v4l2loopback.conf
 $ sudo update-initramfs -c -k $(uname -r)
Créer la caméra virtuelle

À chaque utilisation de la caméra, activer la caméra virtuelle ainsi (la led de fonctionnement s'éclaire):

$ gst-launch-1.0 libcamerasrc camera-name='\\_SB_.PCI0.I2C4.CAMF' ! video/x-raw,width=1280,height=720,framerate=30/1,format=NV12 ! videoconvert ! video/x-raw,format=YUY2 ! videoconvert ! v4l2sink device=/dev/video42
Camera-name varie suivant les matériels. Ce nom peut être identifié par la commande :
 $ cam --list
 [10:50:45.217147468] [6610]  INFO Camera camera_manager.cpp:297 libcamera v0.0.5+78-7802471a
 [10:50:45.250245417] [6611]  INFO IPU3 ipu3.cpp:1141 Registered Camera[0] "\_SB_.PCI0.I2C2.CAMR" connected to CSI-2 receiver 0
 [10:50:45.251672361] [6611]  INFO IPU3 ipu3.cpp:1141 Registered Camera[1] "\_SB_.PCI0.I2C4.CAMF" connected to CSI-2 receiver 1
 Available cameras:
 1: Internal back camera (\_SB_.PCI0.I2C2.CAMR)
 2: Internal front camera (\_SB_.PCI0.I2C4.CAMF)
 
v4l2sink peut également varier selon les modèles. Si le numéro 42 (Cf. modprobe) ne fonctionne pas, en tester d'autres.
Un script shell peut permettre de simplifier les opérations. En voici une proposition, à sauver par exemple dans un fichier webcam.sh :
 #!/bin/bash
 LA_CAMERA='\\_SB_.PCI0.I2C4.CAMF'
 echo "Camera active : $LA_CAMERA"
 sudo modprobe v4l2loopback video_nr=42 card_label="camera_virtuelle" exclusive_caps=1
 gst-launch-1.0 libcamerasrc camera-name=$LA_CAMERA ! video/x-raw,width=1280,height=720,framerate=30/1,format=NV12 ! videoconvert ! video/x-raw,format=YUY2 ! videoconvert ! v4l2sink device=/dev/video42
 exit 0;
 

La tablette est désormais fonctionnelle. Enjoy !

Activer le Wifi

Après installation le wifi ne fonctionnera pas. Il faudra donc télécharger manuellement les noyaux empaquetés spécialement pour ce type de matériel. Télécharger les 3 paquets deb à cette adresse copiez-le sur votre clé USB de Type-C, et installez-les sur votre Surface. Une fois installé il faudra encore télécharger ce binaire, le copier sur votre tablette puis exécutez les commandes suivantes en supposant que votre binaire a été copié dans votre Dossier Personnel :

sudo mv /lib/firmware/ath10k/QCA6174/hw2.1/board.bin /lib/firmware/ath10k/QCA6174/hw2.1/board.bin.orig
sudo cp board.bin /lib/firmware/ath10k/QCA6174/hw2.1
sudo mv /lib/firmware/ath10k/QCA6174/hw3.0/board.bin /lib/firmware/ath10k/QCA6174/hw3.0/board.bin.orig
sudo cp board.bin /lib/firmware/ath10k/QCA6174/hw3.0

Après quoi il ne vous restera plus qu'à mettre à jour votre système.

Améliorer l’utilisation de l'écran tactile

Activer le clavier virtuel

Reportez-vous à la partie configuration de la page Onboard.


Contributeurs : L'Africain Le 20/05/2019, 15:46

  • microsoft_surface.txt
  • Dernière modification: Le 15/09/2023, 15:32
  • par spnux