Initial commit
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
---
|
||||
date: '2021-11-17'
|
||||
title: Installer NixOS sur une tablette Asus T100TA
|
||||
---
|
||||
|
||||
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.
|
||||
|
||||
<details class="read-more"><summary>Voir aussi</summary>
|
||||
|
||||
- [/interets/informatique/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/](/interets/informatique/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/)
|
||||
|
||||
</details>
|
||||
|
||||
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...
|
||||
Reference in New Issue
Block a user