<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Debian on xioxoz</title>
        <link>https://www.xioxoz.fr/tags/debian/</link>
        <description>Recent content in Debian on xioxoz</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr-fr</language>
        <lastBuildDate>Thu, 01 Jun 2023 22:42:54 +0200</lastBuildDate><atom:link href="https://www.xioxoz.fr/tags/debian/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Installer Debian sur un portable Asus X73SL</title>
            <link>https://www.xioxoz.fr/posts/debian-asus-x73sl/</link>
            <pubDate>Thu, 01 Jun 2023 22:42:54 +0200</pubDate>
            <guid>https://www.xioxoz.fr/posts/debian-asus-x73sl/</guid>
            <description>&lt;p&gt;En voulant installer une distribution Linux sur un ordinateur portable de marque Asus, modèle X73SL je me suis heurté à plusieurs problèmes. ll m&amp;rsquo;a semblé intéressant de les consigner ici, avec les sources que j&amp;rsquo;ai utilisé pour les résoudres./gc&lt;/p&gt;&#xA;&lt;p&gt;Les solutions que je vais donner ici peuvent probablement être appliquées à d&amp;rsquo;autres distributions Linux (Ubuntu, Fedora, etc) mais nécessiteront peut être un peu d&amp;rsquo;adaptation. Par ailleurs, il semblerait qu&amp;rsquo;Asus ai basé plusieurs modèle de portables sur la même carte mère, il se pourrait donc que ces solutions fonctionnent aussi pour les modèles X70, X71, X72, X73 (avec des lettres derrière cette dénomination, voir &lt;a class=&#34;link&#34; href=&#34;https://doc.ubuntu-fr.org/liste_portables_asus#x&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&#xA;&lt;/h1&gt;&lt;p&gt;Pour les lecteurs (expérimentés ou non qui voudraient un solution rapide) voici les ajustements que j&amp;rsquo;ai fait :/gc&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;La carte mère ne supporte pas le interruptions MSI, il faut les désactiver pour le noyau dans son ensemble et le driver nouveau en ajoutant les paramètres &lt;code&gt;pci=nomsi&lt;/code&gt; et &lt;code&gt;nouveau.config=NvMSI=0&lt;/code&gt; à la ligne de commande du noyau. Soit en live au moment du boot, soit de manière permanente les ajoutant à la variable &lt;code&gt;GRUB_CMD_LINUX&lt;/code&gt; en éditant &lt;code&gt;/etc/default/grub&lt;/code&gt;, puis en lançant update-grub.&lt;/li&gt;&#xA;&lt;li&gt;Le chipset ethernet SiS191 ne supporte pas un MTU supérieur à 1496, il faut donc éditer votre configuration réseau (par un menu ou une configuration NetworkManager) pour définir sa valeur à 1496&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;point-de-départ&#34;&gt;Point de départ&#xA;&lt;/h1&gt;&lt;p&gt;Mon objectif était d&amp;rsquo;installer une distribution Linux sur un vieux portable Asus (de 2009) histoire de lui donner une seconde jeunesse. Le PC est un Asus X73SL-TY024C avec la configuration suivante :/gc&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Intel Pentium Dual CPU T3400 @ 2.16GHz (1Mo de cache, bus à 667Mhz)&lt;/li&gt;&#xA;&lt;li&gt;Carte mère avec un chipset SiS 671MX&lt;/li&gt;&#xA;&lt;li&gt;4 Go de DDR2 à 667Mhz&lt;/li&gt;&#xA;&lt;li&gt;2 disques dur SATA de 250 Go, 5400 t/min&lt;/li&gt;&#xA;&lt;li&gt;GeForce 9300M GS&lt;/li&gt;&#xA;&lt;li&gt;Controleur ethernet SiS191&lt;/li&gt;&#xA;&lt;li&gt;Carte Wi-Fi AR5B91 (chipset Atheros AR928X) mini PCI-E&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Je souhaitais au départ installer Ubuntu car elle a une joli interface qui aurait été facile d&amp;rsquo;usage pour un néophyte, mais il était impossible de démarrer l&amp;rsquo;installateur, l&amp;rsquo;écran restait noir après le passage de Grub (22.04 ou 23.04 même combat). J&amp;rsquo;ai donc décidé de me rabattre sur une Debian Bullseye (la version stable à l&amp;rsquo;heure où j&amp;rsquo;écris ces lignes). Cette fois-ci, l&amp;rsquo;installation se passe correctement. Je redémarre, passe Grub, je vois les premières lignes de logs du noyau, et ensuite plus rien, écran noir. C&amp;rsquo;est là que les problèmes commencent.&lt;/p&gt;&#xA;&lt;p&gt;Dans les sections qui suivent, je vais détailler la méthode que j&amp;rsquo;ai utilisé pour isoler les problèmes, et les solutions que j&amp;rsquo;ai trouvé. Dans la suite de cet article je vais partir. du principe qu&amp;rsquo;une distribution (Debian) est installée et qu&amp;rsquo;elle ne démarre pas.&lt;/p&gt;&#xA;&lt;h1 id=&#34;ça-démarre-pas-je-fais-quoi-&#34;&gt;Ça démarre pas, je fais quoi ?&#xA;&lt;/h1&gt;&lt;p&gt;La première étape c&amp;rsquo;est d&amp;rsquo;arriver à cerner à quel moment le boot est bloqué. Dans mon cas, Grub s&amp;rsquo;affiche, je peux lancer Debian, il me dit :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Loading Linux 5.10.0-23-amd64 ...&#xA;Loading initial ramdisk ...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;puis l&amp;rsquo;écran devient noir avec qui un curseur clignote en haut à gauche de l&amp;rsquo;écran. Plus tard un changement semble se produire sur l&amp;rsquo;écran, puis plus rien, tout reste noir. C&amp;rsquo;est donc à un moment, après le démarrage de Linux, que quelque chose coince.&lt;/p&gt;&#xA;&lt;p&gt;Dans ce cas, la première étape c&amp;rsquo;est de désactiver un maximum de périphériques dans le BIOS.  Sur ce modèle il faut redémarrer, aller dans le BIOS avec &lt;code&gt;F2&lt;/code&gt;, puis &lt;code&gt;Advanced&lt;/code&gt; et &lt;code&gt;I/O interface security&lt;/code&gt;. On peut alors désactiver un maximum de périphériques en les passant de &lt;code&gt;UNLOCKED&lt;/code&gt; à &lt;code&gt;LOCKED&lt;/code&gt;. Ensuite on enregistre avec &lt;code&gt;F10&lt;/code&gt; et on redémarre.&lt;/p&gt;&#xA;&lt;p&gt;Ensuite, il faut modifier (temporairement) la ligne de commande du noyau passée par Grub, de manière à laisser le noyau afficher des traces à l&amp;rsquo;écran, on saura alors ce qui se passe. Pour ça, au moment où Grub s&amp;rsquo;affiche et propose des options, il faut presser &lt;code&gt;Control+X&lt;/code&gt; pour obtenir l&amp;rsquo;éditeur et retirer le paramètre &lt;code&gt;quiet&lt;/code&gt; de la ligne :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;linux&#x9;/boot/vmlinuz-5.10.0-23-amd64 root=UUID=... ro quiet&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ensuite Linux démarre, affiche des traces dans la console. Puis au moment de passer la console en mode frame buffer (console de haute résolution), l&amp;rsquo;image disparait de nouveau, et j&amp;rsquo;ai un écran noir. Il y a donc sans doute un problème avec la carte graphique ou son driver &lt;code&gt;nouveau&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;geforce-9300m-et-nouveau&#34;&gt;GeForce 9300M et Nouveau&#xA;&lt;/h1&gt;&lt;p&gt;Pour en avoir le coeur net, je redémarre, j&amp;rsquo;édite de nouveau la ligne de commande du noyau pour retirer &lt;code&gt;quiet&lt;/code&gt; et j&amp;rsquo;ajoute &lt;code&gt;nouveau.modeset=0&lt;/code&gt; pour désactiver le remplacement de la console :/gc&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;linux&#x9;/boot/vmlinuz-5.10.0-23-amd64 root=UUID=... ro quietnouveau.modeset=0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je redémarre et &amp;hellip; miracle, j&amp;rsquo;obtiens une invite de login et je peux me connecter en tant qu&amp;rsquo;utilisateur root. Je décide de démarrer le serveur d&amp;rsquo;affichage (serveur X) pour voir ce qui se passe et dans le logs je trouve :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(EE) NVIDIA(GPU-0): The NVIDIA kernel module does not appear to be receiving&#xA;(EE) NVIDIA(GPU-0):     interrupts generated by the NVIDIA GPU at PCI:1:0:0. &#xA;(EE) NVIDIA(GPU-0):     Please see Chapter 8: Common Problems in the README for additional information.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le driver ne reçoit pas les interruptions ? En regardant &lt;a class=&#34;link&#34; href=&#34;https://nouveau.freedesktop.org/KernelModuleParameters.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;la liste des options du driver nouveau&lt;/a&gt; j&amp;rsquo;ai remarqué un paramètres &lt;code&gt;NvMSI&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NvMSI: Use MSI interrupts, on by default on the chipsets that support it&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;C&amp;rsquo;est exactement ce qu&amp;rsquo;il nous faut. En effet Un périphérique PCI-E n&amp;rsquo;est pas obligé d&amp;rsquo;utiliser les interruptions matériels (reliées directement au contrôleur d&amp;rsquo;interruptions du processeur) mais peut envoyer un message à travers le bus PCI-E pour faire générer un interruption par le contrôleur de bus. C&amp;rsquo;est ce qu&amp;rsquo;on appelle les &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Message_Signaled_Interrupts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Message Signaled Interrupts ou MSI&lt;/a&gt;. Or cette fonctionnalité n&amp;rsquo;a pas été introduite immédiatement dans PCI-Express, l&amp;rsquo;ordinateur étant un peu âgé, il se peut qu&amp;rsquo;il ne les supporte pas.&lt;/p&gt;&#xA;&lt;p&gt;On peut donc modifier de nouveau ligne de commande du noyau depuis Grub pour voir si ça fonctionne :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;linux&#x9;/boot/vmlinuz-5.10.0-23-amd64 root=UUID=... ro quiet nouveau.config=NvMSI=0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Un petit reboot et hop ça fonctionne, le gestionnaire de login graphique s&amp;rsquo;affiche ! Il suffit maintenant de rendre cette option permanente. Pour ça j&amp;rsquo;ai ajouté le paramètre à la configuration de Grub :/gc&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# vim /etc/default/grub&#xA;[...]&#xA;GRUB_DEFAULT=0&#xA;GRUB_TIMEOUT=5&#xA;GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&#xA;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet&amp;#34;&#xA;GRUB_CMDLINE_LINUX=&amp;#34;&amp;lt;strong&amp;gt;nouveau.config=NvMSI=0&amp;lt;/strong&amp;gt;&amp;#34;&#xA;[...]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;puis mise à jour de Grub :/gc&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# /sbin/update-grub&#xA;Generating grub configuration file ...&#xA;Found background image: /usr/share/images/desktop-base/desktop-grub.png&#xA;Found linux image: /boot/vmlinuz-5.10.0-23-amd64&#xA;Found initrd image: /boot/initrd.img-5.10.0-23-amd64&#xA;Found linux image: /boot/vmlinuz-5.10.0-21-amd64&#xA;Found initrd image: /boot/initrd.img-5.10.0-21-amd64&#xA;Warning: os-prober will be executed to detect other bootable partitions.&#xA;Its output will be used to detect bootable binaries on them and create new boot entries.&#xA;Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi&#xA;Adding boot menu entry for UEFI Firmware Settings ...&#xA;done&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Après redémarrage tout va bien./gc&lt;/p&gt;&#xA;&lt;h1 id=&#34;un-peu-de-réseau-&#34;&gt;Un peu de réseau ?&#xA;&lt;/h1&gt;&lt;h2 id=&#34;ethernet---sis191&#34;&gt;Ethernet - SiS191&#xA;&lt;/h2&gt;&lt;p&gt;J&amp;rsquo;ai réactivé un par un les périphériques dans le BIOS et le problème suivant est apparu avec la carte ethernet SiS191. En effet, au bout d&amp;rsquo;un moment la connexion au réseau cesse de fonctionner, toutes les requêtes font des timeouts et le réseau devient inaccessible.&lt;/p&gt;&#xA;&lt;p&gt;En cherchant des informations sur le support de ce chip dans Linux, j&amp;rsquo;ai découvert que ce chip a une taille maximum de &lt;a class=&#34;link&#34; href=&#34;https://fr.wikipedia.org/wiki/Maximum_transmission_unit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;MTU (Maximum Transmission Unit&lt;/a&gt;) de 1496 octets là ou Linux configure cette taille à 1500 octets par défaut. Ce qui fait que lorsqu&amp;rsquo;un paquet dépasse 1496 octets, la fin du paquet est tronquée, et le paquet envoyé sur le réseau est invalide. Le problème est documenté dans un &lt;a class=&#34;link&#34; href=&#34;https://bugzilla.kernel.org/show_bug.cgi?id=10895&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;bug sur le bug tracker du noyau Linux&lt;/a&gt;. On peut vérifier le MTU défini pour une interface avec la commande :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# ip link show&#xA;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000&#xA;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&#xA;2: enp0s4: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000&#xA;    link/ether 00:e8:4c:68:44:71 brd ff:ff:ff:ff:ff:ff&#xA;3: wlp2s0: &amp;lt;BROADCAST,ALLMULTI,PROMISC,NOTRAILERS,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000&#xA;    link/ether 48:45:20:e1:0e:e7 brd ff:ff:ff:ff:ff:ff&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour corriger le problème, il suffit de dire à &lt;code&gt;NetworkManager&lt;/code&gt; (le gestionnaire de connexions) que toutes les connexions qui utilisent cette interface doivent définir un MTU à 1496. Pour cela on va créer un fichier de configuration :/gc&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# vim /etc/NetworkManager/conf.d/enp0s4-mtu.conf&#xA;[connection-enp0s4-mtu]&#xA;match-device=interface-name:enp0s4&#xA;ethernet.mtu=1496&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans le fichier ci-dessus, n&amp;rsquo;oubliez pas de changer &lt;code&gt;enp0s4&lt;/code&gt; par le nom de votre interface ethernet. Puis on relance &lt;code&gt;NetworkManager&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# systemctl restart NetworkManager&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;wi-fi&#34;&gt;Wi-Fi&#xA;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;étape suivante c&amp;rsquo;est de ré-activer la carte Wi-Fi depuis le BIOS, et là c&amp;rsquo;est le drame. Lors du reboot, le système gèle pendant le démarrage, et impossible d&amp;rsquo;en sortir autrement que par un redémarrage à la dure.&lt;/p&gt;&#xA;&lt;p&gt;La carte Wi-Fi installée dans le PC est une AR5B91 mini PCI-Express munie d&amp;rsquo;un chip Atheros qui est en théorie bien supportée par le driver &lt;code&gt;ath9k&lt;/code&gt;. Le problème se situe donc sans doute ailleurs. Et en effet, la carte est elle aussi sur le bus PCI-Express, elle est donc soumise au même problème que la carte graphique : il faut désactiver le support des MSIs pour que cela fonctionne.&lt;/p&gt;&#xA;&lt;p&gt;Il suffit de rajouter l&amp;rsquo;option &lt;code&gt;pci=nomsi&lt;/code&gt; à la ligne de commande du noyau de la même manière qu&amp;rsquo;on l&amp;rsquo;a fait pour la carte graphique :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# vim /etc/default/grub&#xA;[...]&#xA;GRUB_DEFAULT=0&#xA;GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s &amp;gt; /dev/null || echo Debian`&#xA;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet&amp;#34; GRUB_CMDLINE_LINUX=&amp;#34;nouveau.config=NvMSI=0 pci=nomsi&amp;#34;&#xA;[...]&#xA;&#xA;# /sbin/update-grub&#xA;Generating grub configuration file ...&#xA;Found background image: /usr/share/images/desktop-base/desktop-grub.png&#xA;Found linux image: /boot/vmlinuz-5.10.0-23-amd64&#xA;Found initrd image: /boot/initrd.img-5.10.0-23-amd64&#xA;Found linux image: /boot/vmlinuz-5.10.0-21-amd64&#xA;Found initrd image: /boot/initrd.img-5.10.0-21-amd64&#xA;Warning: os-prober will be executed to detect other bootable partitions.&#xA;Its output will be used to detect bootable binaries on them and create new boot entries.&#xA;Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi&#xA;Adding boot menu entry for UEFI Firmware Settings ...&#xA;done&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Un reboot, et le tour est joué !&lt;/p&gt;&#xA;&lt;h1 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h1&gt;&lt;p&gt;Après cet ensemble de changements, le système fonctionne plutôt très bien. En revanche, on peut pas dire que l&amp;rsquo;installation soit aisée./gc&lt;/p&gt;&#xA;&lt;h1 id=&#34;références&#34;&gt;Références&#xA;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nouveau.freedesktop.org/KernelModuleParameters.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Nouveau Kernel Module Parameters&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Message_Signaled_Interrupts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Message Signaling Interrupts - Wikipédia&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bugzilla.kernel.org/show_bug.cgi?id=10895&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Bug 10895 - sis 191 mtu bug&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://doc.ubuntu-fr.org/liste_portables_asus#x&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Ubuntu - Liste des portables Asus - X&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/fr/NvidiaGraphicsDrivers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Debian - Pilote propriétaire Nvidia&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item><item>
            <title>Debian 10 - Boot EFI direct</title>
            <link>https://www.xioxoz.fr/posts/debian-10-direct-efi-boot/</link>
            <pubDate>Tue, 12 Feb 2019 21:43:51 +0200</pubDate>
            <guid>https://www.xioxoz.fr/posts/debian-10-direct-efi-boot/</guid>
            <description>&lt;h2 id=&#34;contexte&#34;&gt;Contexte&#xA;&lt;/h2&gt;&lt;p&gt;Unified Extensible Firmware Interface (UEFI) est une spécification qui décrit une interface entre le firmware d&amp;rsquo;une carte mère et un système d&amp;rsquo;exploitation (OS). Il fait suite à l&amp;rsquo;Extensible Firmware Interface (EFI), originalement créée par Intel. Elle remplace progressivement le Basic Input Output System (BIOS) fourni à l&amp;rsquo;origine par les ordinateurs compatibles IBM PC.&lt;/p&gt;&#xA;&lt;p&gt;Depuis quelques années, le fabricants de cartes mères fournissent des firmware compatibles à la fois avec UEFI et BIOS. Le noyau Linux, quant à lui, fourni les interfaces nécessaires pour être lancé directement par un firmware UEFI. Ce qui fait disparaître le besoin de boot loaders intermédiaires tel que GRUB.&lt;/p&gt;&#xA;&lt;p&gt;Si vous n&amp;rsquo;avez pas besoin de ce fameux loader intermédiaire, parce que vous n&amp;rsquo;avez qu&amp;rsquo;un seul système d&amp;rsquo;exploitation par exemple, vous pouvez mettre en place le boot direct par UEFI. Dans ce qui va suivre, je vais décrire comment mettre en place cette configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&lt;h3 id=&#34;partition-de-boot-efi&#34;&gt;Partition de boot EFI&#xA;&lt;/h3&gt;&lt;p&gt;La première étape à réaliser est de s&amp;rsquo;assurer que votre système est installé avec une partition de boot EFI lisible par votre firmware. Habituellement c&amp;rsquo;est une petite partition du disque située au début et formatée avec un système de fichier simple tel que FAT ou EXT2. Cette partition serra utilisée pour stocker le binaires compatibles avec EFI : soit votre GRUB ou le noyau Linux. Durant la phase de boot, l&amp;rsquo;UEFI va parcourir la partition à la recherche d&amp;rsquo;un binaire compatible. Voici un exemple du partitionnement sur ma machine :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# lsblk&#xA;NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT&#xA;sda           8:0    0 119.2G  0 disk&#xA;├─sda1        8:1    0   953M  0 part /boot/efi&#xA;└─sda2        8:2    0 118.3G  0 part /&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si vous n&amp;rsquo;avez pas ce genre de partition, vous devez en créer une, peut être en réinstallant votre système. Mais ceci est en dehors du cadre de cet article, vous pouvez trouver plus d&amp;rsquo;information à ce sujet &lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/UEFI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;ici&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;synchronisation-des-images&#34;&gt;Synchronisation des images&#xA;&lt;/h3&gt;&lt;p&gt;Pour pouvoir démarrer, l&amp;rsquo;UEFI doit pouvoir accéder à l&amp;rsquo;exécutable du noyau Linux et à l&amp;rsquo;image du ramdisk. Ce n&amp;rsquo;est possible que si ces deux éléments sont présents dans la partition que nous avons mentionné précédemment. Sur une distribution Debian, ces fichiers sont disponibles à la racine du système de fichiers ; nous aurons donc besoin d&amp;rsquo;un système pour les copier sur la partition EFI à chaque fois qu&amp;rsquo;ils sont mis à jour. Ainsi, après chaque mise à jour du système, le noyau et son ramdisk seront également mis à jour sur cette partition spéciale.&lt;/p&gt;&#xA;&lt;p&gt;Sur le wiki de Debian &lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/EFIStub&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;EFI Stubs&lt;/a&gt;, la méthode proposée repose sur des scripts post installation pour le noyau et le ramdisk. Malheureusement, cela ne fonctionne plus sur la version Buster car le script post install pour &lt;code&gt;initramfs&lt;/code&gt; (ramdisk) n&amp;rsquo;est plus disponible. Nous ferons donc cette mise à jour en utilisant les services &lt;code&gt;systemd&lt;/code&gt; et ses déclencheurs basés sur la surveillance de fichiers. L&amp;rsquo;idée est de créer un service à exécution unique qui copiera le fichier. Néanmoins, au lieu de lancer le service au démarrage (ou autre évènement régulier), il sera déclenché par un changement sur le fichier que l&amp;rsquo;on surveille. En l&amp;rsquo;occurence le noyau et son ramdisk. Nous avons juste à le déclarer, et &lt;code&gt;systemd&lt;/code&gt; fera le travail.&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-noyau&#34;&gt;Le noyau&#xA;&lt;/h3&gt;&lt;p&gt;Allons-y : on commence par créer le service avec le fichier &lt;code&gt;/etc/systemd/system/uefi-kernel-update.service&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# cat /etc/systemd/system/uefi-kernel-update.service&#xA;[Unit]&#xA;Description=UEFI Kernel update&#xA;After=network.target&#xA;&#xA;[Service]&#xA;Type=oneshot&#xA;ExecStart=/bin/cp /vmlinuz /boot/efi/EFI/debian/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ensuite on créé le déclencheur avec &lt;code&gt;/etc/systemd/system/uefi-kernel-update.path&lt;/code&gt; :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# cat /etc/systemd/system/uefi-kernel-update.path&#xA;[Path]&#xA;PathChanged=/vmlinuz&#xA;&#xA;[Install]&#xA;WantedBy=multi-user.target&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Enfin on active le déclencheur :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# systemctl enable uefi-kernel-update.path&#xA;Created symlink /etc/systemd/system/multi-user.target.wants/uefi-kernel-update.path → /etc/systemd/system/uefi-kernel-update.path.&#xA;# systemctl start uefi-kernel-update.path&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut tester que cela fonctionne correctement en faisant un  &lt;code&gt;touch /vmlinuz&lt;/code&gt; et en vérifiant dans les logs de &lt;code&gt;systemd&lt;/code&gt; que le service a été lancé :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# touch /vmlinuz&#xA;# journalctl -xn&#xA;Dec 14 18:14:18 fixe-damien systemd[1]: Starting UEFI Kernel update…&#xA;-- Subject: A start job for unit uefi-kernel-update.service has begun execution&#xA;-- Defined-By: systemd&#xA;-- Support: https://www.debian.org/support&#xA;-- A start job for unit uefi-kernel-update.service has begun execution.&#xA;-- The job identifier is 2611.&#xA;Dec 14 18:14:18 fixe-damien systemd[1]: uefi-kernel-update.service: Succeeded.&#xA;-- Subject: Unit succeeded&#xA;-- Defined-By: systemd&#xA;-- Support: https://www.debian.org/support&#xA;-- The unit uefi-kernel-update.service has successfully entered the &amp;#39;dead&amp;#39; state.&#xA;Dec 14 18:14:18 fixe-damien systemd[1]: Started UEFI Kernel update.&#xA;-- Subject: A start job for unit uefi-kernel-update.service has finished successfully&#xA;-- Defined-By: systemd&#xA;-- Support: https://www.debian.org/support&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;le-ramdisk-initrd&#34;&gt;Le ramdisk (initrd)&#xA;&lt;/h3&gt;&lt;p&gt;Répétons l&amp;rsquo;opération en créant un service et un déclencheur pour copier le fichier  &lt;code&gt;/initrd.img&lt;/code&gt;. Les fichiers sont fournis ci-dessous.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# cat /etc/systemd/system/uefi-initrd-update.service&#xA;[Unit]&#xA;Description=UEFI ignited update&#xA;After=network.target&#xA;&#xA;[Service]&#xA;Type=oneshot&#xA;ExecStart=/bin/cp /initrd.img /boot/efi/EFI/debian/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# cat /etc/systemd/system/uefi-initrd-update.path&#xA;[Path]&#xA;PathChanged=/initrd.img&#xA;&#xA;[Install]&#xA;WantedBy=multi-user.target&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Enfin, on active le service et son déclencheur.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# systemctl enable uefi-initrd-update.path&#xA;Created symlink /etc/systemd/system/multi-user.target.wants/uefi-initrd-update.path → /etc/systemd/system/uefi-initrd-update.path.&#xA;# systemctl start uefi-initrd-update.path&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;N&amp;rsquo;oubliez pas de tester que cela fonctionne avec &lt;code&gt;touch&lt;/code&gt; et &lt;code&gt;journalctl&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ajouter-une-entrée-dans-luefi&#34;&gt;Ajouter une entrée dans l&amp;rsquo;UEFI&#xA;&lt;/h2&gt;&lt;p&gt;Maintenant que nous sommes sur que le noyau et le ramdisk seront correctement mis à jour, il faut ajouter une entrée dans l&amp;rsquo;UEFI pour qu&amp;rsquo;il sache quel noyau lancer et comment.&lt;/p&gt;&#xA;&lt;p&gt;Premièrement, il faut obtenir la ligne de commande du noyau (les paramètres qui lui sont passés) à partir de la configuration de GRUB. Dans le fichier &lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt;, cherchez le bloc &lt;code&gt;menuentry ... { ... }&lt;/code&gt; qui correspond à l&amp;rsquo;entrée que GRUB utilise pour démarrer. Ensuite lisez ce bloc et cherchez la ligne &lt;code&gt;linux /boot/vmlinuz...&lt;/code&gt;, elle nous indique les arguments passés au noyau au démarrage. Sur ma machine elle ressemble à ceci :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;menuentry &amp;#39;Debian GNU/Linux&amp;#39; ... {&#xA;  ...&#xA;  echo   &amp;#39;Loading Linux 4.19.0-6-amd64 ...&amp;#39;&#xA;  linux  /boot/vmlinuz-4.19.0-6-amd64 root=UUID=3c51b884-79b9-46f5-aff9-a2d8f68cd308 ro quiet&#xA;  echo   &amp;#39;Loading initial ramdisk ...&amp;#39;&#xA;  initrd /boot/initrd.img-4.19.0-6-amd64&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Les arguments du noyau sont &lt;code&gt;root=UUID=3c51b884-79b9-46f5-aff9-a2d8f68cd308 ro quiet&lt;/code&gt;. On peut maintenant utiliser &lt;code&gt;efibootmgr&lt;/code&gt; pour ajouter une entrée dans l&amp;rsquo;UEFI, n&amp;rsquo;oubliez pas de mettre à jour la commande avec vos paramètres :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# efibootmgr -c -g -L &amp;#34;Debian (EFI stubs)&amp;#34; -l &amp;#39;\EFI\debian\vmlinuz&amp;#39; -u &amp;#34;root=UUID=3c51b884-79b9-46f5-aff9-a2d8f68cd308 ro quiet rootfstype=ext4 add_efi_memmap initrd=\\EFI\\debian\\initrd.img&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si la commande échoue, vous aurez peut être besoin d&amp;rsquo;ajouter une option telle que : &lt;code&gt;--disk /dev/nvme0n1&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Vous pouvez maintenant vérifier qu&amp;rsquo;elle a été ajoutée correctement :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# efibootmgr&#xA;BootCurrent: 0008&#xA;Timeout: 1 seconds&#xA;BootOrder: 0008,0000,0009,0003,0001,0002,0004,0005&#xA;Boot0000* debian&#xA;Boot0001* Hard Drive&#xA;Boot0002* UEFI:CD/DVD Drive&#xA;Boot0003* CD/DVD Drive&#xA;Boot0004* UEFI:Removable Device&#xA;Boot0005* UEFI:Network Device&#xA;Boot0008* Debian (EFI stubs)&#xA;Boot0009* debian&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La prochaine étape est le redémarrage ! Si tout s&amp;rsquo;est bien passé, votre machine devrait redémarrer et sauter le boot avec GRUB. Dans le cas où la configuration ne serait pas correcte, vous pourriez ne pas être capable de terminer le démarrage. Si cela arrive, vous pouvez toujours choisir manuellement l&amp;rsquo;entrée UEFI &lt;code&gt;debian&lt;/code&gt; entry. Ainsi vous pourrez résoudre le problème.&lt;/p&gt;&#xA;&lt;h1 id=&#34;conclusion&#34;&gt;Conclusion&#xA;&lt;/h1&gt;&lt;p&gt;Évidemment c&amp;rsquo;est essentiellement une réussite technique, car le temps passé dans GRUB lors du boot n&amp;rsquo;est pas excessif. Mais il était important pour moi de consigner cette procédure quelque part car j&amp;rsquo;utilise cette configuration tous les jours. J&amp;rsquo;espère qu&amp;rsquo;elle pourra servir à d&amp;rsquo;autres.&lt;/p&gt;&#xA;&lt;p&gt;Par ailleurs, il y a des améliorations possibles. Par exemple, il serait pertinent de régénérer l&amp;rsquo;entrée dans l&amp;rsquo;UEFI lorsque la ligne de commande du noyau est mise à jour.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sources&#34;&gt;Sources&#xA;&lt;/h1&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Wikipédia - UEFi&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/EFIStub&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Debian - EFIStub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/UEFI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Debian - UEFI&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zerokspot.com/weblog/2018/09/15/executing-jobs-on-filechanges-with-systemd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Zerokspot - Executing a job on filechanges with systemd&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
