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 :
Version | Installation | Carte graphique | Son | Casque audio | Wifi | Bluetooth | Webcam | Touchpad | Raccourcis multimédia | Autres |
---|---|---|---|---|---|---|---|---|---|---|
18.04 | - | - | - | - | - | - | - | |||
Debian armhf 32 bits | - | - | - | - | - | - | - | - | 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 | Modèle : Microsoft Surface GO 3 | |||||||||
23.04 | 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.
Évidemment commencer par sauvegarder vos données si vous en avez.
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.
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 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.
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
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).
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).
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 !
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 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).
Avant de personnaliser l'installation pour pouvoir utiliser au mieux la tablette, mettre à jour la distribution
sudo apt update && sudo apt upgrade
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.
sudo apt install extrepo extrepo-data
sudo apt install extrepo
Activer le dépôt et mettre à jour les sources.list
sudo extrepo enable surface-linux && sudo apt update
Installation classique des paquets
sudo apt install linux-image-surface linux-headers-surface libwacom-surface iptsd
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.
À 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
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.
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
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.
$ 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
$ git clone https://git.libcamera.org/libcamera/libcamera.git $ cd libcamera
$ 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
$ 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).
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.
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
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.
$ 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
$ sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./OBS.priv ./OBS.der $(modinfo -n v4l2loopback)
$ 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)
À 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
$ 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)
#!/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 !
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.
Voir la page dédiée aux écrans tactile.
Reportez-vous à la partie configuration de la page Onboard.