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.
|
|
|
|
|
2023-09-08 02:40:40 +02:00
|
|
|
<x-post-card model="/blog/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/" />
|
2023-09-05 23:47:36 +02:00
|
|
|
|
|
|
|
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...
|