Installation de Kodi sur Lubuntu avec chiffrement

J’avais installé un mediacenter Kodi sur une très vieille machine, en 2014. L’appareil fonctionne toujours (malgré ses 10 ans d’âge), mais l’OS (basé sur Ubuntu 14.04) ne sera bientôt plus supporté, et je voulais ajouter le chiffrement du filesystem.

Sommaire

Choix de la distribution

J’aurais bien utilisé Kodibuntu (dérivé d’Ubuntu avec Kodi pré-packagé), mais ils ont arrêté cette distribution.

Je suis parti sur la famille Ubuntu, parce qu’elle permet d’utiliser le PPA que je connais bien. Cf https://kodi.wiki/view/HOW-TO:Install_Kodi_for_Linux.

J’ai choisi la version la plus légère d’Ubuntu Desktop : Lubuntu (avec la nouvelle « minimal install »).

Chiffrement LUKS

Via l’installeur

C’est très facile à faire depuis l’installeur Ubuntu (sauf qu’il impose d’écraser le disque entier).

Mais, dans mon cas particulier, ma vieille machine a un très vieux processeur (Pentium Core 2 duo T5550), qui n’a pas le jeu d’instructions AES-NI. Autrement dit, l’algorithme de chiffrement utilisé par défaut (AES) ne bénéficie pas d’accélération matérielle.

J’ai donc testé dessus quel algorithme est le plus rapide. En démarrant en live-USB, et en lançant :

cryptsetup benchmark

Résultat : c’est l’algorithme serpent-xts qui est le plus rapide (autour de 120Mo/s pour 256bits, en encryption comme en décryption, contre 95Mo/s pour aes-xts).

A la mano pour choisir l’algo de chiffrement

L’installeur d’Ubuntu ne permet pas de choisir l’algo de chiffrement. Donc il faut démarrer en live-USB, puis configurer les partitions en ligne de commande :

sudo cryptsetup luksFormat /dev/sda2 --cipher=serpent-xts-plain64
sudo cryptsetup luksOpen /dev/sda2 sda2_crypt
sudo pvcreate /dev/mapper/sda2_crypt
sudo vgcreate ubuntu-vg /dev/mapper/sda2_crypt
sudo lvcreate -L50G -n root ubuntu-vg
sudo lvcreate -l100%FREE -n swap_1 ubuntu-vg

(adapter la taille des deux partitions en fonction de vos besoins)

Puis lancer l’installation en utilisant ces partitions.

Ensuite, il ne faut pas redémarrer tout de suite, et configurer les partitions chiffrées et GRUB, en passant par un chroot :

sudo mount /dev/mapper/sda2_crypt /target
for d in dev proc run sys; do sudo mount --bind /$d /target/$d; done
sudo mount /dev/sda1 /target/boot
sudo chroot /target

Mettre dans /etc/crypttab :

sda2_crypt UUID=xxx non luks,discard

(en utilisant l’UUID fourni par cryptsetup luksUUID /dev/sda2)

Puis :

sudo update-initramfs -u
sudo update-grub
exit
for d in dev proc run sys boot; do sudo umount /target/$d; done

Source : https://askubuntu.com/questions/882159/specify-encryption-cipher-to-use-during-install

Et comment entrer le mot de passe depuis son canapé?

Avant j’utilisais une wiimote comme télécommande, mais ça ne fonctionne plus depuis quelques versions de Kodi. J’ai bien une solution de bricolage pour la refaire marcher, mais ça ne permet de toutes façons pas de saisir un mot de passe au démarrage.

La solution que j’ai adoptée, c’est d’utiliser une télécommande Minix A2 Lite (https://kodi.wiki/view/MINIX_A2) qui a un clavier matériel.

J’ai utilisé le keymap ci-dessous, à mettre dans un fichier /var/lib/kodi/.kodi/userdata/keymaps/MinixA2.xml (quand ce répertoire sera créé, voir plus bas) :

<keymap>
<global>
<keyboard>
<F2>NextSubtitle</F2>
<home>AudioNextLanguage</home>
<F1>Stop</F1>
</keyboard>
</global>
</keymap>

Problème de lenteur au démarrage

Le démarrage prenait plus d’une minute, bien plus qu’avant. Après recherche, c’était un bug spécifique à mon matériel :

Dans kernel.log, on trouvait des messages :

[drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:41:pipe B] flip_done timed out

C’est ces timeouts qui ralentissaient le démarrage.

J’ai pu le contourner en ajoutant « video=SVIDEO-1:d » dans /etc/default/grub. Source : https://askubuntu.com/questions/893817/boot-very-slow-because-of-drm-kms-helper-errors.

Installation de Kodi

Là, c’est du classique : on ajoute le PPA https://launchpad.net/~team-xbmc/+archive/ubuntu/ppa et on installe le paquet kodi (+ certains paquets kodi-* si besoin). J’installe aussi openssh pour l’accès distant, et rsync pour les backups.

Lancement de Kodi au démarrage

Il y a des éléments dans la doc officielle : https://kodi.wiki/view/HOW-TO:HOW-TO:Autostart_Kodi_for_Linux, mais ce n’est pas toujours très clair.

Il y a plusieurs méthodes, notamment configurer un service avec systemd (sans passer par un Windows Manager), ou passer par un Window Manager (LXDE dans le cas de Lubuntu), dans lequel on le configure en autostart.

J’avais au départ une préférence pour le service systemd, mais il s’est avéré poser des problèmes de performance (affichage saccadé) et de tearing (trait horizontal visible lors des travellings) sur mon matériel. J’ai donc plutôt opté pour la solution qui passe par LXDE.

J’ai créé un user kodi avec son home dans /var/lib/kodi :

sudo apt install xinit
sudo groupadd kodi
sudo useradd -c 'kodi user' -g kodi -G audio,video -d /var/lib/kodi -s /usr/bin/nologin kodi
sudo passwd -l kodi > /dev/null
sudo mkdir -p /var/lib/kodi/.kodi
sudo chown -R kodi:kodi /var/lib/kodi/

Et configuré lightdm pour se connecter automatiquement avec ce login, en créant un fichier /etc/lightdm/lightdm.conf.d/50-autologin-kodi.conf avec le contenu suivant :

[SeatDefaults]
autologin-user=kodi

Puis on configure LXDE pour qu’il démarre Kodi dès la connexion, en créant un fichier /var/lib/kodi/.config/lxsession/Lubuntu/autostart avec le contenu suivant :

@/usr/bin/kodi

On voit brièvement passer le bureau lxde lors du démarrage : il y a peut-être moyen d’éviter ça mais j’ai pas creusé.

Réglages son et raccourcis clavier

Pour que le son sorte sur le port HDMI, il faut se connecter dans l’interface graphique de lubuntu, et choisir le profil HDMI dans la configuration du son.

Pour que les touches de réglage du son (de la télécommande ou du clavier) fonctionnent, il faut indiquer à Lubuntu de ne pas capturer ces événements. Pour cela, il faut modifier le fichier /var/lib/kodi/.config/openbox/lubuntu-rc.xml, pour y commenter les lignes de « Keybinding for Volume management » :

<!-- Keybinding for Volume management -->
<!-- Désactivé pour que ces touches soient interprétées par Kodi
<keybind key="XF86AudioRaiseVolume">
<action name="Execute">
<command>amixer -q sset Master 3%+ unmute</command>
</action>
</keybind>
<keybind key="XF86AudioLowerVolume">
<action name="Execute">
<command>amixer -q sset Master 3%- unmute</command>
</action>
</keybind>
<keybind key="XF86AudioMute">
<action name="Execute">
<command>amixer -q sset Master toggle</command>
</action>
</keybind>
-->

Réglages de l’écran

Dans le cas de mon matériel, j’ai un écran 720p, et une machine peu puissante donc il vaut mieux régler l’écran en 720p. D’autre part, il faut désactiver la sortie sur l’écran de la machine (puisqu’il n’y en a plus), et activer la sortie HDMI à la place.

Il suffit pour cela de créer un fichier /var/lib/kodi/.xprofile avec le contenu ci-dessous :

xrandr --output LVDS-1 --off
xrandr --output HDMI-1 --mode 1280x720

Désactivation des actions par défaut de LXDE

Si on branche une clé USB ou qu’on insère un CD/DVD, LXDE affiche une fenêtre pour proposer des actions possibles sur ce media. Cette fenêtre s’affiche par-dessus Kodi, ce qui surprend et est inutile (Kodi se charge du nécessaire).

On peut désactiver ce comportement, en lançant l’explorateur de fichiers, et dans le menu Edition->Préférences, il y a un onglet « Gestion des supports amovibles » : il faut y décocher l’option « Afficher les options disponibles pour les supports amovibles quand ils sont insérés »

Activation automatique d’une enceinte bluetooth

Il faut d’abord installer le module qui permet d’utiliser la sortie son en bluetooth :

sudo apt install pulseaudio-module-bluetooth

Ensuite il faut appairer l’enceinte dans le gestionnaire de bluetooth de LXDE.

Je suis tombé sur un petit piège, qui faisait que mon appareil ne détectait jamais mon enceinte : j’avais lancé au démarrage le processus qui active une wiimote comme télécommande, et qui occupait le scan bluetooth.

Autre souci : même en configurant le bluetooth pour qu’il fasse confiance à l’appareil (« trust »), il ne se reconnectait pas automatiquement après un reboot. Et c’était très contraignant de le faire manuellement à chaque fois.

Après avoir pas mal tâtonné, j’ai fini par utiliser une méthode de bourrin. J’en suis pas très fier (j’aurais aimé trouver mieux), mais ça fonctionne : lancer programmatiquement une tentative de connexion à mon enceinte toutes les 15 secondes. Pour cela, j’ai créé un script shell connecter_enceinte_bluetooth.sh qui fait la connexion :

#!/bin/bash
# Ce script essaie de connecter l'enceinte bluetooth
# Il doit etre lance en tant que root
bluetoothctl <<EOF
connect xx:xx:xx:xx:xx:xx
EOF

(il faut remplacer les xx par l’identifiant de l’appareil concerné)

Et j’ai ajouté un fichier /etc/cron.d/connecter-enceinte-bluetooth qui le lance toute les 15 secondes :

* * * * * root /var/lib/kodi/connecter_enceinte_bluetooth.sh
* * * * * root sleep 15; /var/lib/kodi/connecter_enceinte_bluetooth.sh
* * * * * root sleep 30; /var/lib/kodi/connecter_enceinte_bluetooth.sh
* * * * * root sleep 45; /var/lib/kodi/connecter_enceinte_bluetooth.sh

Configuration pour la lecture des DVDs

C’est du classique :

sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg

Source : https://doc.ubuntu-fr.org/lire_un_dvd

Une réflexion sur « Installation de Kodi sur Lubuntu avec chiffrement »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *