1
0
contenu/blog/2021/11/17/installer-nixos-sur-une-tablette-asus-t100ta/index.md

176 lines
6.3 KiB
Markdown
Raw Normal View History

2023-09-05 23:47:36 +02:00
---
title: "Installer NixOS sur une tablette Asus T100TA"
date: 2021-11-17
tags: [
"Administration",
"NixOS",
"Asus T100TA",
"debian",
"Système d'exploitation",
"Tablette"
]
---
Je dispose d'une honorable tablette
[Asus T100TA](https://www.asus.com/fr/Commercial-Laptops/ASUS_Transformer_Book_T100TA/)
que j'utilise depuis deux ans maintenant comme tableau de bord pour ma domotique
via [Home Assistant](https://www.home-assistant.io/). C'est simplement un
navigateur (en substance, [qutebrowser](https://qutebrowser.org/)) en mode
kiosk, qui tournait jusqu'à présent sous debian. Le remplacement par
[NixOS](https://nixos.org/) fait partie de
mon plan pour divorcer de debian,
mais certaines spécificités de la tablette rendent la tâche plus complexe que ce
qu'il faudrait.
<x-shortcodes.post-card model="/blog/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/" />
Principalement, son EFI est en 32bits alors que le système tourne en 64bits. Je
me suis naïvement dit que, qu'à cela ne tienne, j'installe un système 100%
32bits. Sauf que ce faisant, NixOS ne fournit pas de paquets pré-compilés
32bits. Obligé, donc, de faire des manips, mais franchement, je ne regrette pas.
À moins que compiler l'ensemble des paquets ne vous fasse pas peur, si vous
maitrisez assez NixOS pour faire du cross-compiling, ce qui n'est pas - encore -
mon cas.
## Téléchargements
Il faut commencer par télécharger les versions 32bits et 64bits de NixOS :
- https://channels.nixos.org/nixos-21.05/latest-nixos-minimal-x86_64-linux.iso
- https://channels.nixos.org/nixos-21.05/latest-nixos-minimal-i686-linux.iso
## Système 32bits
Flashez l'ISO 32bits sur une clé USB, et démarrez-la. Procédez à l'installation
du système comme indiqué dans la
[documentation officielle](https://nixos.org/manual/nixos/stable/), en
n'oubliant pas d'activer *wpa_supplicant*. Arrêtez-vous à la modification du
fichier _configuration.nix_.
Par défaut, NixOS utilise _systemd-boot_ à la place de grub, ce qui nous empêche
de modifier la commande de démarrage. Il faut modifier le fichier
_configuration.nix_ pour pouvoir utiliser grub. En outre, cette installation
n'est que temporaire, on ne va donc pas modifier les variables EFI pour le
moment.
```nix
boot.loader = {
systemd-boot.enable = false;
efi = {
canTouchEfiVariables = false;
};
grub = {
enable = true;
efiSupport = true;
efiInstallAsRemovable = true;
device = "nodev";
};
};
```
Enregistrez puis continuez l'installation en suivant à nouveau la documentation
officielle. Après un redémarrage, vous devez disposer d'un système 32bits
minimal mais fonctionnel. Ne modifiez encore rien dans votre configuration, tout
va être remplacé sous peu (pas besoin non plus d'installer quoi que ce soit).
Si tout fonctionne bien (si vous avez pu démarrer et aller jusqu'au prompt),
il est temps de passer au système 64bits.
## Système 64bits
Flashez ensuite la clé USB avec l'ISO 64bits, mais ne démarrez pas dessus : il
faut démarrer le grub qu'on vient d'installer en 32bits. La clé USB doit
toutefois être branchée quand vous démarrez. Une fois sur l'écran de grub,
appuyez sur la touche `c` pour entrer dans le shell de grub.
Lancez la commande suivante :
```
cat (hd0)/isolinux/isolinux.cfg
```
Vous verrez alors les options de démarrage disponibles. Ce qui nous intéresse,
c'est la partie suivante :
```
init=/nix/store/qf8blw6g07xi9248m83ngn6h1rfwkn69-nixos-system-asus-t100ta-21.05.4114.195d5816cdd/init
```
À recopier dans une nouvelle commande à lancer :
```
linux (hd0)/boot/bzImage init=/nix/store/qf8blw6g07xi9248m83ngn6h1rfwkn69-nixos-system-asus-t100ta-21.05.4114.195d5816cdd/init intel_idle.max_cstate=1
```
> Vous ne pouvez pas recopier telle quelle cette commande : vous devez l'ajuster
> en fonction de la sortie de `cat (hd0)/isolinux/isolinux.cfg`. Le chemin
> d'_init_ peut changer. Par contre, vous pouvez/devez rajouter
> `intel_idle.max_cstate=1` à la fin de la ligne : cela désactivera la mise en
> veille du CPU quand il idle, et évitera certain freezes connus sur cette
> plateforme.
Charger ensuite l'initrd :
```
initrd (hd0)/boot/initrd
```
Et démarrer :
```
boot
```
Vous devriez alors pouvoir démarrer sur la version 64bits de NixOS depuis votre
clé USB. Reste encore à procéder à l'installation : là encore suivez la
procédure officielle jusqu'à la modification du fichier _configuration.nix_, où
l'on va préciser qu'on veut forcer le mode 32bits du bootloader :
```nix
boot.loader = {
systemd-boot.enable = false;
efi.canTouchEfiVariables = false;
grub = {
enable = true;
efiSupport = true;
efiInstallAsRemovable = true;
device = "nodev";
forcei686 = true;
};
};
```
On peut enfin terminer l'installation et redémarrer sans clé USB.
## Problèmes
Les dernières mises à jour de debian me permettaient de régler le
rétro-éclairage de l'écran via _sysfs_ (dans _/sys/class/backlight/_).
Malheureusement, je n'ai pas encore trouvé comment procéder sous NixOS. J'ignore
s'il me manque un module noyau. J'ai essayé quelques trucs, sans succès pour le
moment.
Autre soucis déjà rencontré sous debian : le module réseau pour le wifi provoque
quotidiennement la déconnexion de la tablette, sans que quoique ce soit puisse y
remédier, à l'exception d'un reboot complet. Ce n'est pas un problème spécifique
à NixOS, c'est le module noyau _brcmcfm_ qui semble incriminé, et il y a peu de
chances que ce problème soit corrigé un jour...
Mis à part ça, le système tourne très bien, bien mieux que sous debian. La
charge CPU est inférieure à 1, quand elle pouvait atteindre 2 voire 3 dans les
mêmes conditions.
## Conclusion
Pas simple. Pas à cause de NixOS, mais à cause d'Asus, intel, broadcom, et
Microsoft évidemment (la tablette était livrée avec Windows 8). Mais j'ai la
certitude, maintenant que le système est installé, qu'il ne bougera plus, à
moins que je bidouille (et il y a des chances que je le fasse, ne serait-ce que
pour le rétro-éclairage que j'aimerais vraiment corriger). Je la remplacerai
sans doute pour une tablette plus adaptée à GNU-Linux (pour ne plus avoir les
problèmes avec le module wifi), mais pour l'instant, elle me convient bien, et
encore plus depuis que je l'ai passés sous NixOS. Un pas de plus vers le divorce
complet de debian...