
Je me demandais ce que j’allais bien pouvoir faire de mon odroid-hc2, « décommissionné » comme NAS car architecture armv7l (32 bits), et donc plus mis à jour que ce soit par Armbian ou même les containers Docker. Je l’avais donc remplacé par un Beelink mini dont je suis très satisfait.
J’ai tout de même un HD de 2 To dessus, alors pourquoi ne pas l’utiliser en espace de stockage pour des sauvegardes ? Je sauvegarde certains dossiers de mon NAS sur le PC (via rsync), ce qui m’oblige à avoir le PC allumé à ce moment là, alors autant le faire sur cette machine.
C’est parti !
Il s’agit donc d’installer un simple serveur Linux, sans autre surcouche comme OMV ou même une interface graphique. Encore faut-il trouver une distribution qui supporte encore cette architecture.
Une recherche me liste : Ubuntu 22.04 LTS, Arch Linux, Alpine Linux et OMV. J’élimine OMV d’entrée, ainsi que Alpine Linux qui me paraît compliqué (version ultra minimaliste basée sur la sécurité). Reste donc Arch Linux et Ubuntu…
Archlinux ARM
Comme j’utilise EndeavourOS sur le PC depuis quelques mois (eOS est basé sur Archlinux, mais avec pas mal d’outils préinstallés pour en faciliter la prise en main), je me suis dit qu’un Archlinux était une bonne idée. C’est un Linux avec juste le minimum, mais comme mon utilisation prévue était assez minimale aussi, c’était une bonne occasion de tester un vrai Archlinux.
Je suis donc allé sur le site d’Archlinux ARM et j’ai vite trouvé une page décrivant les étapes pour créer la carte SD. Sauf qu’il s’est avéré impossible de démarrer dessus, l’image semble ne pas fonctionner (j’ai essayé deux fois), et j’ai trouvé plusieurs posts sur leur forum confirmant le problème, mais sans fournir de solution.
J’ai alors voulu me créer un compte sur leur forum pour poser la question, mais impossible de s’enregistrer : il y a captcha censée tourner sur le formulaire d’inscription, mais elle ne marche pas. Impossible de s’enregistrer, et donc impossible de poser une question.
Je suis alors allé sur le forum Archlinux (x86), où j’avais un compte, pour poser la question. Une première personne m’a répondu que les deux architectures d’Archlinux étaient très différentes, et gérées par des équipes différentes. J’ai vu brièvement cette réponse, mais j’étais occupé à autre chose. Le lendemain, j’ai voulu y répondre pour insister sur le problème de captcha, et de comment les contacter d’une manière ou d’une autre. Mais entre-temps, quelqu’un avait purement et simplement effacer mon message. 🙁
Bon, je comprends le truc, mais il y a vraiment des mecs qui sont un peu psycho-rigides, d’autant que j’expliquais bien mon impossibilité d’accéder au bon forum ARM… Bref !
Ubuntu
Restait alors Ubuntu, un retour pour moi puisque je l’ai longtemps utilisé et c’est comme ça que j’ai découvert et pratiqué Linux pendant de nombreuses années. Il s’agit donc ici de la version serveur 22.04 LTS (5 ans de mise à jour), et je suis donc tranquille pour un an (au moins). Je ne sais pas ce qu’il en sera par la suite… peut-être passerai-je à Alpine Linux ?
J’ai récupéré l’image disque ici, créé la carte micro SD, et avant de démarrer dessus, je suis allé lui attribuer une adresse IP fixe pour gagner du temps. Il suffit d’accéder à la carte micro SD une fois préparée, et de créer un fichier /etc/netplan/00-netcfg.yaml pour y spécifier les paramètres réseau que l’on souhaite configurer :
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [192.168.1.x/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
Puis démarrage sur la carte SD et connexion via ssh avec le user root (mdp odroid). Tout baigne ! 😎
Réseau
J’ai voulu initialement installer NFS pour accéder à la machine, mais je n’ai pas pu l’installer. J’avais un problème lors de l’installation, lié apparemment à la version du noyau et au module rpcbind, et j’ai fini par laisser tomber après quelques tentatives de correction.
nfs-kernel-server échoue à démarrer pour un probleme de dependence : Dependency failed for rpc_pipefs.target
Je me suis donc orienté donc vers SSHFS et rsync.
sudo apt-get install openssh-server rsync
Ensuite j’initialise le HD pour faire une seule partition de 2 To (fdisk, mkfs.ext4). Je le monte sur un dossier /satadisk, et crée deux répertoires : PC-RYZEN (pour les sauvegardes qui viendront du PC) et NAS-N150 (pour les sauvegardes qui viendront du NAS.
Il reste à configurer rsync en créant un utilisateur rsync, puis un fichier de configuration /etc/rsyncd.conf pour un premier essai de copie depuis mon PC :
root@odroid:~# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 2
log file = /var/log/rsyncd.log
timeout = 300
[pcryzen]
path = /satadisk/PC-RYZEN
comment = Sauvegarde fichiers PC RYZEN
read only = false
hosts allow = 192.168.1.20
hosts deny = *
Côté PC, voilà le script :
$ cat rsync_sample_odroid.sh
#!/bin/bash
# Définir les variables
LOCAL_DIR="/home/pascal/Bureau"
REMOTE_HOST="rsync@192.168.1.x"
REMOTE_MODULE="pcryzen" # Le nom du module défini dans /etc/rsyncd.conf sur la machine distante
# Options rsync courantes
RSYNC_OPTS="-avz --progress --delete"
# Exécuter rsync
rsync $RSYNC_OPTS "$LOCAL_DIR" "$REMOTE_HOST::$REMOTE_MODULE"
# Vérifier le code de retour
if [ $? -eq 0 ]; then
echo "Synchronisation terminée avec succès."
else
echo "Erreur lors de la synchronisation."
fi
Et voilà, ça tourne !! Côté NAS, j’ai déjà des scripts rsync qui tournent via OMV et qui font des sauvegardes sur le PC : je n’ai qu’à changer l’adresse IP avec celle de l’odroid, et configurer le fichier /etc/rsynd.conf ci-dessus pour les modules, créer les dossiers correspondants, et c’est parti !
Voilà, j’ai 2 To de sauvegardes disponibles sur mon réseau ! 😎
Configuration – Personnalisation
Il me faudra tout de même configurer les locales en FR UTF-8 pour que les dossiers comportant des caractères accentués s’affichent correctement sur l’odroid. J’ai suivi les instructions de cette page (en adaptant pour fr_FR bien sûr) et tout s’est alors affiché correctement.