Pour se monter un mediacenter aujourd’hui, on a l’embarras du choix des solutions clé en main (aka je sais pas ce que je fais mais ça marche) avec des trucs comme open-elec sur Raspberry, Plex etc.

Mais justement si on veut comprendre un peu ce qui se passe et comment ça marche, je trouve ça plutôt cool de se l’installer soit même son mediacenter.

La base

Pour ce faire on partira sur la stack suivante:

  • hardware : Un Raspberry Pi2 et un disque dur usb2 externe (gros stockage pour pas cher et pas de besoin de perfs)
  • Distribution Linux : Archlinux ARMv7 (la version qui va bien pour le Pi2)
  • Mediacenter : Kodi 17

Make it

1 On flash une carte micro SD

Pour préparer la carte micro SD (de préférences une classe 10, 8Go suffisent mais à on est large et à l’aise à partir de 16), on peut le faire en ligne de commande mais moi j’ai usé de GParted (j’use beaucoup de GParted dans ma vie).

Il faut créer deux partitions, une première en FAT32 (oué oué en FAT32) de 512 Mo, et la deuxième en EXT4 (\o/) qui prend toute la place qui reste. On tag la première boot et la seconde root (si si ca simplifie la vie ensuite).

On se retrouve donc ainsi:

  • /dev/mmcblk1p1 - FAT32 - boot - 512Mo
  • /dev/mmcblk1p2 - EXT4 - root - le reste des Mo

Maintenant on va créer les points de montage /mnt/boot et /mnt/root (faudra passer en root à ce moment là)

cd /mnt
mkdir boot root

Puis on y monte les deux partitions dans le carte

mount /dev/mmcblk1p1 boot
mount /dev/mmcblk1p2 root

On récupère la dernière version d’Archlinux ARMv7 disponible et on l’extrait dans le dossier root

bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root
sync

Il faut bien penser au sync car les cartes micro SD sont taquines. Il faut d’ailleurs pas hésiter à répeter cette opération dès qu’on écrit dessus.

On déplace le contenur du dossier ./root/boot dans ./boot

mv root/boot/* boot
sync

Et voilà on est prêt à faire booter le Pi2 sur notre carte micro SD avec Archlinux dessus ;) Tout cette première étape est en fait détaillée ici avec les lignes de commandes pour créer les partitions.

Mais avant de démonter nos deux partitions pour récupérer la carte, on peut profiter du moment pour apporter nos premières modifs au système :

  • On size comme il faut la mémoire vidéo du Pi2 en lui allouant 512Mo (on peut faire avec moins aussi) en modifiant le fichier ./boot/config.txt comme ceci : gpu_mem=512
  • On peut également déjà mettre à jour le fichier /etc/fstab pour automatiser le montage de notre disque usb externe en rajoutant des lignes du style :
# /dev/sdaX LABEL=Media
UUID=UUID-DE-LA-PARTITION /mon/chemin/de/montage ext4 rw,relatime,data=ordered 0 2

On oublie pas le petit sync des familles et on peut maintenant démonter notre carte micro SD.

sync && umount boot root

2 on fait booter le Pi2 sur la carte micro SD

On insère donc la carte dans le Pi2 et on démarre dessus. On a un système Archlinux vierge, on peut s’y connecter avec les users par défaut alarm (mot de passe alarm) et root (mot de passe root).

Alors on s’y connecte, en root tant qu’on y est, et on se dépêche de changer le mot de passe!

passwd

Là c’est le moment on fait quelques bidouilles pour se mettre bien :

  • on choisit notre hostname, pour moi c’est arch-pi2
echo arch-pi2 > /etc/hostname
  • on cale le fuseau horaire
#rm /etc/localtime avant si conflit
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
  • On va décommenter notre petite ligne fr_FR.UTF-8 UTF-8 dans le fichier /etc/locale.gen puis on balance les locales et la keymap
locale-gen
echo LANG="fr_FR.UTF-8" > /etc/locale.conf
echo KEYMAP=fr > /etc/vconsole.conf
  • On init NTP, parce que c’est comme ça (en vrai ca va servir ensuite quand on voudra partager nos films et notre musique sur notre réseau local)
timedatectl set-ntp true

(on peut retrouver tout ça plus en détail sur le wiki Archlinux)

Là on peut rebooter pour bien checker que tout démarre sans erreur et que nos modifs sont bien prises en compte (un petit sync avant le reboot ça mange pas de pain)

sync && sync && sync && reboot

On se reconnecte en root avec notre nouveau mot de passe et on balance un mise à jour globale du système :

pacman -Syu

Déjà on va faire le ménage en supprimant le user par défaut alarm et en créant le notre :

useradd -g users -G wheel -m moi
passwd moi
userdel alarm
rm -rf /home/alarm

Puis on se fait plaisir en donnant à son user un shell qui roxx de la licorne (étape très facultative)

pacman -Sy fish
chsh -s /usr/bin/fish moi

3 Voilà le mediacenter!

Toujours connecté en root, on peut enfin installer Kodi, notre mediacenter (le deuxième paquet libcec-rpi sert à ce que la télécommande native de votre télé puisse piloter le mediacenter)

pacman -Sy kodi-rbp libcec-rpi

Là on se déconnecte de root pour se reconnecter avec son user, et on peut lancer kodi, le tour est joué! Il ne vous reste plus qu’à définir dedans vos sources de fichiers pour construire votre médiathèque.

4 Et si on partageait nos dossiers média à nos autres devices?

Easy, on va installer nfs!

pacman -Sy nfs-utils

De là on édite le fichier /etc/exports en ajoutant nos partages, avec des lignes dans ce genre :

/mon/chemin/de/montage/local 192.168.1.1/24(rw,insecure,anonuid=1000,anongid=100,no_subtree_check)

On démarre maintenant le démon nfs et on l’active au boot

systemctl enable nfs-server

Si votre démon run déjà, vous pouvez charger votre nouvelle conf avec

exportfs -rav

Vos filesystems partagés sont désormais accesibles via vos autres devices clients nfs :) Notez que sur android il faut avoir rooté son matos pour pouvoir lire les partages nfs :/

La config nfs est assez obscure, vous trouverez des infos ici.

5 Et après?

Kodi tourne sans installer xorg-server explicitement, mais n’éhsitez pas à le faire si vous voulez approfondir les bidouilles (doc ici).

à bientôt :)