From 48927e73dab6d9eeb63730862e39de547cf2f729 Mon Sep 17 00:00:00 2001 From: Melora Hugues Date: Tue, 19 Dec 2023 18:10:34 +0100 Subject: [PATCH] Add UEFI article --- config.toml | 10 ++--- content/en/posts/uefi-http-boot.md | 10 +++++ content/fr/posts/uefi-http-boot.md | 61 ++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 5 deletions(-) create mode 100644 content/en/posts/uefi-http-boot.md create mode 100644 content/fr/posts/uefi-http-boot.md diff --git a/config.toml b/config.toml index 4b4c414..96894c3 100644 --- a/config.toml +++ b/config.toml @@ -89,11 +89,11 @@ logoText = "Hello there!" logoHomeLink = "/fr/" [menu] - # [[menu.main]] - # identifier = "blog" - # name = "Blog" - # url = "/posts" - # weight = 1 +[[menu.main]] +identifier = "blog" +name = "Blog" +url = "/posts" +weight = 1 [[menu.main]] identifier = "about_me" diff --git a/content/en/posts/uefi-http-boot.md b/content/en/posts/uefi-http-boot.md new file mode 100644 index 0000000..2c2764a --- /dev/null +++ b/content/en/posts/uefi-http-boot.md @@ -0,0 +1,10 @@ +--- +title: "Uefi Http Boot" +date: 2023-09-30T22:24:06+02:00 +draft: true +toc: false +images: +tags: + - untagged +--- + diff --git a/content/fr/posts/uefi-http-boot.md b/content/fr/posts/uefi-http-boot.md new file mode 100644 index 0000000..526ae56 --- /dev/null +++ b/content/fr/posts/uefi-http-boot.md @@ -0,0 +1,61 @@ +--- +title: "Uefi Http Boot" +date: 2023-09-30T22:24:06+02:00 +draft: true +toc: false +images: +tags: + - uefi + - linux +--- + +## Des difficultés d'utiliser un clavier bluetooth + +Il y a quelques mois, j'ai remplacé mon ancien clavier filaire par un tout nouveau clavier bluetooth. Mais je me suis rapidement heurtée à un léger obstacle : il s'avère que mon ordinateur principal est un dual boot Linux/Windows. + +Typiquement, un dualboot est installé de la façon suivante : un disque est partitionné en deux (ou plus) partitions séparées, une pour Windows et une pour Linux. Lors du boot, le firmware UEFI (ou BIOS pour les machines en mode legacy) boot sur le bootloader de Linux qui est généralement grub ou systemd-boot, ce dernier permettant de choisir entre continuer sur Linux, ou utiliser le bootloader de Windows à la place. + +Un setup typique de dual boot ressemble donc à ceci. + +```mermaid +flowchart LR + +start + +subgraph UEFI + fw[UEFI firmware] + grub + windows_loader[Windows bootloader] +end + +subgraph OS + windows[Windows] + windows_safe["Windows (safe mode)"] + linux[Linux] + linux_safe["Linux (safe mode)"] +end + +start --> fw --> grub +windows_loader --> windows & windows_safe +grub --> windows_loader & linux & linux_safe +``` + +Le choix du système d'exploitation s'effectue donc au niveau de `grub`, c'est-à-dire avant le démarrage du système d'exploitation et de la majorité de sa stack, autrement dit avant le démarrage du bluetooth, donc clairement impossible pour moi d'utiliser ce nouveau clavier bluetooth pour effectuer une sélection à ce niveau là (en tout cas sans le brancher) + +À partir de là, trois solutions sont possibles : +- brancher le câble au besoin (après tout les seuls moments où c'était nécessaire sont les moments où je souhaite booter sur un système différent du précédent, ça n'arrive pas si souvent que cela) +- patcher l'initrd pour avoir un accès bluetooth, et y ajouter mon propre bootloader +- agir encore plus tôt et choisir sur quel système booter au niveau de l'UEFI directement (par un switch physique ou logiciel) + +{{< callout type="info" >}} +Pour résumer très brièvement, le process de boot (au moins si on considère un système Linux) se déroule de la façon suivante + 1. Sélection d'une appli Linux EFI bootable + 2. Chargement du kernel et de l'initrd (image minimale Linux) + 3. Chargement du système Linux lui-même +{{< /callout >}} + +Évidemment, je n'allais pas choisir une solution relativement simple et légèrement contraignante, qui m'obligerait à brancher mon clavier de temps en temps au boot pour passer de Windows à Linux et inversement. Non, j'allais bien-sûr choisir la solution la plus oven-engineered possible. + +{{< callout type="quote" >}} +En pratique, il n'aurait même pas été toujours nécessaire de brancher le clavier pour passer de Linux à Windows, la commande `grub-reboot` [man](https://manpages.ubuntu.com/manpages/trusty/man8/grub-reboot.8.html) permet de choisir un système d'exploitation différent pour le prochain boot uniquement. +{{< /callout >}} \ No newline at end of file