Compare commits

...

1 commit

Author SHA1 Message Date
48927e73da Add UEFI article 2023-12-19 18:10:34 +01:00
3 changed files with 76 additions and 5 deletions

View file

@ -89,11 +89,11 @@ logoText = "Hello there!"
logoHomeLink = "/fr/" logoHomeLink = "/fr/"
[menu] [menu]
# [[menu.main]] [[menu.main]]
# identifier = "blog" identifier = "blog"
# name = "Blog" name = "Blog"
# url = "/posts" url = "/posts"
# weight = 1 weight = 1
[[menu.main]] [[menu.main]]
identifier = "about_me" identifier = "about_me"

View file

@ -0,0 +1,10 @@
---
title: "Uefi Http Boot"
date: 2023-09-30T22:24:06+02:00
draft: true
toc: false
images:
tags:
- untagged
---

View file

@ -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 >}}