(Voir la page principale sur le Raspberry Pi 3 B)
Raspberry Pi OS (anciennement "Raspbian")
Raspberry Pi OS est une dérivée de Debian adaptée au Raspberry. C'est un environnement de bureau traditionnel (navigateur, suite bureautique (LibreOffice), lecteur multimédia (VLC)…). Elle peut aussi être utilisée en ligne de commande seule (par exemple pour faire un serveur).
Note: Je n'utilise plus Raspberry Pi OS. La distribution
DietPi est bien plus optimisée et rapide.
Checklist
Voici ma checklist quand je ré-install mon Raspberry. Notez qu'une majeur partie des éléments de cette checklist a pour but de réduire les écritures sur la microSD afin d'allonger sa durée de vie.
Ne prendre que des microSD classe 10. Pas la peine de s'embêter avec des catégories inférieures: l'économie ne vaut pas les problème que vous aurez après (lenteur, corruptions prématurées de microSD, etc.). Personnellement, j'évite la marque SanDisk et les noname, je préfère Samsung ou à défaut Kingston.
Note: D'après
cet article, il est recommandé d'utiliser les microSD estampillés "
A1" car elles ont de meilleures performances en accès aléatoire que les autres, ce qui est particulièrement utile pour un Raspberry. (A2 n'est actuellement pas supporté par le Raspberry.)
Reformater la microSD en FAT32.
Note: Attention, si votre MicroSD fait plus de 32 Go, la plupart des systèmes d'exploitation la formatteront en exFAT. Le Raspberry ne sait booter que sur du FAT32, pas sur exFAT. Vous devrez forcer le formattage en FAT32 (prenez par exemple GParted).
Télécharger
NOOBS Lite (ou PINN) et le dézipper à la racine de la microSD.
Pourquoi NOOBS Lite et pas NOOBS ? NOOBS contient une image d'environ 1,7 Go de Raspberry Pi OS qui prend de la place sur la microSD. NOOBS Lite la télécharge et l'installe à la volée. Utiliser NOOBS Lite permet de libérer 1,7 Go sur la microSD, au prix d'une installation plus lente (à travers internet).
Booter le Raspberry dessus, et installer Raspberry Pi OS.
Laisser Raspberry Pi OS faire ses mises à jour (Et de temps en temps pour faire les mises à jour: sudo apt update && sudo apt full-upgrade
)
J'ajoute fsck.mode=force
à la ligne de commande /boot/cmdline.txt
pour forcer une vérif du système de fichier à chaque démarrage. Je perd quelques secondes, mais ça évite de démarrer sur un système de fichier corrompu (le Raspberry étant à fort risque d'être éteint brutalement).
Ne pas oublier de mettre un mot de passe à l'utilisateur
pi. Cela vous sera en principe proposé a l'installation. Sinon faites
passwd
. Voir aussi la section
sécurisation.
Changez le mot de passe de root: sudo passwd root
Par défaut l'utilisateur pi peut faire des sudo sans taper de mot de passe (le fichier /etc/sudoers.d/010_pi-nopasswd
contient pi ALL=(ALL) NOPASSWD: ALL
. Pour obliger à taper un mot de passe, supprimez ce fichier.
Si vous voulez ajouter un utilisateur: sudo useradd toto
Le faire appartenir aux même groupes que pi: sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi toto
Répertoires en ram pour réduire les écritures sur la microSD:
sudo leafpad /etc/fstab
et ajouter à fin du fichier:
tmpfs /tmp tmpfs defaults,size=256m 0 0
tmpfs /var/tmp tmpfs defaults,size=256m 0 0
Rassurez-vous, tmpfs ne consomme pas directement 256 Mo de RAM. Il ne consomme que quand on stock des fichiers dedans, ce qui reste très limité concernant ces deux répertoires. Vide, il ne consomme pratiquement rien. Et si tmpfs n'a plus de place en RAM, il utilisera le swap.
Faire de la place (en particulier si vous n'avez qu'une microsd de 8 Go):
sudo apt purge wolfram-engine wolframscript bluej greenfoot nodered smartsim sonic-pi sense-*
sudo apt autoremove --purge
sudo apt clean
Mise a jour du firmware: sudo rpi-update
puis redémarrer.
Allongement du commit:
Par défaut, quand une application veut écrire sur disque, le système attendra au plus 5 secondes avant d'écrire. On peut allonger à 60 secondes pour réduire les écritures. Modifiez votre fichier /etc/fstab
(sudo leadpad /etc/fstab
):
Repérez la ligne où
/
est monté:
/dev/mmcblk0p7 / ext4 defaults,noatime 0 1
Ajoutez
commit=60
dans les options de montage:
/dev/mmcblk0p7 / ext4 defaults,noatime,commit=60 0 1
Redémarrez pour prise en compte.
Si ponctuellement vous voulez vous assurer que tout est bien écrit sur la microSD, tapez sync
.
Activation de zram (cela va réduire à néant le swapping sur microSD):
Réduction du swapping:
sudo bash -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'
et redémarrer. (Vérification cat /proc/sys/vm/swappiness
doit renvoyer 10
).
-
Cela va mettre /var/log
en RAM (en tmpfs). Les fichiers seront réellement recopiés sur microSD que toutes les heures ou au prochain reboot/halt.
Cela permet d'éviter les écritures très fréquentes sur la microsd.
Mise en place:
curl -Lo log2ram.tar.gz https://github.com/azlux/log2ram/archive/master.tar.gz
tar xf log2ram.tar.gz
cd log2ram-master
chmod +x install.sh && sudo ./install.sh
Puis rebootez avant d'installer quoi que ce soit d'autre.
Vérification: En faisant df -h
vous devriez voir votre /var/log
géré par log2ram.
Les fichiers sont écrits sur microSD toutes les heures dans /var/hdd.log
.
Vous pouvez changer la configuration de log2ram dans /etc/log2ram.conf
Si vous avez beaucoup de logs, vous pouvez changer la taille allouée à /var/log
en changeant le paramètre SIZE
. Il est par défaut à 40M. Faite un df -h /var/log
pour savoir où vous en êtes.
N'activez pas l'option ZL2R
de log2ram : Elle entre en conflit avec le swap zram et désactive ce dernier.
Mise en place liste de blocage DNS:
-
Raison: Contourner la censure du gouvernement français. Je met Quad9 en priorité, et CloudFlare en fallback si soucis sur Quad9.
sudo leafpad /etc/dhcpcd.conf
: À la fin du fichier, j'ajoute: static domain_name_servers=9.9.9.9 1.1.1.1 2620:fe::fe 2606:4700:4700::1111
, puis:
sudo service dhcpcd restart
Vérification: cat /etc/resolv.conf
doit montrer les nouveaux serveurs DNS.
Le problème avec Chromium est qu'il écrit comme un
goret sur disque (et donc sur microSD) et que contrairement à Firefox, il n'existe aucune option pour désactiver le cache sur disque. J'ajoute donc la ligne suivante dans le fichier
/etc/fstab
pour mettre le cache de Chromium en mémoire seulement.
tmpfs /home/pi/.cache/chromium tmpfs defaults,size=64m 0 0
Activer le serveur ssh et VNC: menu > Préférences > Configuration du Raspberry Pi > Onglet Interface > Activer ssh et VNC.
Kodi et Netflix
Il est possible de lire Netflix depuis Kodi. (Testé avec Kodi 18.2 (Leia) sur un Raspberry Pi 3B sous Raspbian GNU/Linux 9 (stretch)). Et oui, on arrive à lire les vidéos sans frameskip. Démonstration.
Prévoyez d'avoir une carte microsd avec plusieurs giga-octets de libre (>3 Go) afin de pouvoir réaliser cette installation.
Dans Raspberry Pi OS, faites:
sudo apt install python-pip python-crypto build-essential -y
sudo apt install python-all-dev python-setuptools python-wheel -y
sudo apt install python-crypto-dbg python-crypto-doc python-pip-whl -y
pip install pycryptodomex
sudo ln -s /usr/lib/python2.7/dist-packages/Crypto /usr/lib/python2.7/dist-packages/Cryptodome
sudo apt install kodi kodi-inputstream-adaptive kodi-inputstream-rtmp
-
Lancez Kodi.
Dans les extensions > installer depuis zip > choisir ce fichier zip.
Une fois installé: Dans les extensions > installer depuis dépôt > choisir castagnait > installer l'extension Netflix.
Au premier lancement de l'extension Netflix, vous devrez saisir login et mot de passe Netflix.
Au moment de lire une vidéo (essayez plusieurs fois), il va vous proposer d'activer l'addon inputsteam.adaptive (acceptez) puis il va vous proposer de télécharger Widevine, le DRM de Google. Pour cela, il va télécharger l'image ISO de ChromeOS (2 Go) pour en extraire la lib, ce qui va durer un certain temps.
Après ça, vous pourrez lire les vidéos.
(Si j'ai le courage, un de ces quatres, j'irai extraire les libs du répertoire de Kodi pour vous le mettre à disposition afin d'éviter ce téléchargement de 2 Go.)
Astuces
Faire un backup de la MicroSD:
Vous êtes en headless et vous voulez retrouver l'adresse IP de votre Raspi dans le réseau local ?
nmap -sP 192.168.0.1-255
Le RaspberryPi ne possédant pas de BIOS, la configuration du matériel passe par le fichier
/boot/config.txt
. Voir
cet article et
cette page. Par exemple, vous pouvez forcer l'adresse MAC:
smsc95xx.macaddr=B8:AA:BC:DE:F0:12
L'outils de configuration du Raspberry (menu > Préférences > Configuration du Raspberry Pi) est également accessible en terminal: sudo raspi-config
Si vous n'avez pas de son en HDMI:
Modifiez le fichier
/boot/config.txt
(
source):
#Always force HDMI output and enable HDMI sound
hdmi_force_hotplug=1
hdmi_drive=2
Explications:
Si aucun moniteur HDMI n'est branché avant le démarrage du Raspberry, HDMI sera désactivé. hdmi_force_hotplug=1
permet de brancher à chaud des écrans HDMI pour qu'ils soient pris en compte.
Si l'écran HDMI n'est pas censé supporter le son (exemple: écran d'ordinateur), le Raspberry n'enverra pas le son sur le connecteur HDMI. hdmi_drive=2
permet de forcer la sortie du son sur l'HDMI.
Accès à distance: Vous avez plusieurs possibilités:
ssh: Une fois le serveur ssh activé, vous pouvez lancer des applications graphiques à distance (aucun besoin de VNC).
VNC: Raspberry Pi OS est fourni avec un serveur VNC (mais pas activé par défaut).
Pour l'activer: Menu > Préférences > Configuration du Raspberry Pi > onglet "Interfaces" > activer "VNC".
Note: Par défaut, le serveur VNC utilise une authentification UNIX (utilisateurs système) qui nécessite un client spécial:
RealVNC Viewer.
Si vous voulez y accéder depuis les clients VNC traditionnels (Remmina, etc.) vous devez changer la configuration du serveur VNC de Raspberry Pi OS et utiliser l'authentification VNC. (Voir la configuration en cliquant sur l'icône de VNC dans la barre des tâches).
DWService: L'excellent
DWservice (équivalent de TeamViewer) fournit un
service pour Raspberry Pi OS. Une fois installé, vous pouvez donc piloter votre Raspberry Pi OS depuis votre compte DWService.
TeamViewer offre également une version pour Raspberry (cherchez 'armv7' dans
cette page).
Le navigateur par défaut de Raspberry Pi OS est Chromium. Notez que:
Ce Chromium est customisé pour Raspberry Pi OS (voir le paquet rpi-chromium-mods
)
Le navigateur est fourni par défaut avec 2 extensions: uBlock-origin et h264lify. Ce dernier permet de forcer YouTube en h264.
Malgré cela, sachez que Chromium n'utilise pas l'accélération matérielle. Donc les vidéos YouTube lues dans le navigateur ne seront pas décodées matériellement, mais par logiciel, d'où une importante consommation CPU quand vous lisez des vidéos YouTube.
Envoyer des SMS: Si vous êtes chez FreeMobile et que vous voulez que votre Raspberry vous envoie des SMS pour certains évènement, c'est facile et ça ne coûte rien. Voir
cet article.
Le fichier /boot/cmdline.txt
permet de passer des paramètres au noyau.
Voir pour installer un cache dns local léger ? (dnsmasq ? autre ? systemd a sans doute déjà son propre résolveur ?)
Fiabilisation
Si votre intention est de laisser tourner un Raspberry 24h/24, voici quelques pistes:
La microSD est la principale source de problèmes sur les RaspberryPis, à cause des cycles limités d'écriture qu'elle supporte. Sans précautions, la durée de vie d'une microSD est de 6 à 10 mois en production. Veillez donc à bien appliquer les recommandations de cette page:
Avec tout cela, vous ne devriez plus voir la diode de la microSD clignoter de manière frénétique. Pour trouver les applications qui font des lectures/écritures disque, faites: sudo iotop -b -o | grep \%
Notez que d'après
cet article, certaines cartes microSD passent en mode lecture seule si elles ont dépassé un certain nombre de cycles d'écriture.
Watchdog: Le Raspberry possède un système qui permet de le rebooter automatiquement s'il ne répond plus. Très pratique pour ne pas avoir à intervenir sur place en cas de problème. Voir
cet article.
Surveillez la température du Raspberry:
Température du GPU : vcgencmd measure_temp
Température du CPU : cat /sys/class/thermal/thermal_zone0/temp
et divisez par 1000 pour obtenir la valeur en °C.
Vu que les valeurs sont accessibles, on peut même imaginer que le Raspberry vous prévienne.
Exemple.
Mais rassurez-vous, aucun risque de le "cramer":
Il va automatiquement ralentir ses performances (throttling) s'il est trop chaud pour ne pas s'endommager.
S'il l'air extérieur est trop chaud et que le throttling ne suffit pas, il s'arrêtera.
Donc si vous avez des problèmes de performances, regardez du côté de la température et prévoyez peut-être d'ouvrir le boîtier ou mettre une ventilation. (En dehors de ça, une ventilation n'est pas utile, le Raspberry se limite de lui-même.)
L'alimentation est la seconde source majeur de problèmes. : Trop faible, vous aurez des problèmes de fiabilité (plantages, mauvaises écritures sur la microsd…). N'utilisez pas des alimentations 2A, c'est insuffisant. Même avec les 2,5A, avec un mauvais câble cela peut poser problème, surtout si vous connectez des périphériques au Raspberry. Donc: Alim 2,5A, avec un bon câble.
Si vous voulez forcer un fsck à chaque redémarrage, dans le fichier /boot/cmdline.txt
ajoutez le paramètre: fsck.mode=force
Pour palier aux coupures de courant, il existe des solutions d'UPS intégrables au Raspberry:
Exemple.
Dans tous les cas: Faites des backups. Que ce soit une image complète de la microsd (pour une remise en route rapide), soit un backup régulier avec rsync.
Il existe une bidouille pour permettre au Raspberry de booter sans microSD, directement sur USB. Le Raspberry Pi 3B+ est capable de démarrer nativement sur des supports USB.
Sécurisation
Je ne vais pas détailler ici les opérations, mais je donne juste quelques infos:
Mettez un mot de passe aux utilisateurs pi et root.
Faites un visudo pour exiger un mot de passe pour faire un sudo (car par défaut, aucun mot de passe n'est demandé !)
Lancer raspi-config
pour désactiver l'auto-login.
Idéalement, créez un autre utilisateur et supprimez l'utilisateur par défaut pi.
Si vous lancez le serveur ssh:
Activez le firewall (ufw fera très bien l'affaire).
Désactivez les logiciels qui ne sont pas utiles pour réduire la surface d'attaque.
N'oubliez pas que si quelqu'un accède physiquement au Raspberry, c'est game over pour sa sécurité.
Liens:
Pistes / liens en vrac