J'ai récemment acheté un NAS Synology Diskstation DS213j. Le NAS propose plusieurs applications et services, auxquels peuvent être ajoutées des applications tierce parties. Malgré tout la distribution Synology utilise son propre système de paquets et je ne suis pas prêt à investir du temps dans la préparation et la maintenance de paquet pour Synology. J'ai choisi à la place de faire un chroot d'une distribution Debian sur ce NAS basé sur l'architecture ARMv7 en utilisant debootstrap.

Création du système de base

Debootstrap est un outil aui permet d'installer un système Debian dans un sous-répertoire d'un autre système. La première étape est de déterminer l'architecture à utiliser. Le NAS DS213j est équipé d'un CPU ARMv7 MARVELL Armada 370. Pour les autres modèle, consulter What_kind_of_CPU_does_my_NAS_have. Debian supporte 2 architectures ARM de manière officielle : armel and armhf. Armhf fourni le support pour les opérations en virgule flottante en hardware, ce qui peut être utilisé sur les CPUs ARMv7.

Depuis un système Debian existant, créer un système Debian stable avec l'architecture armhf :

 

~$ apt-get install debootstrap
~$ mkdir synodebian
~$ sudo debootstrap --foreign --arch armhf wheezy synodebian

Une fois terminé, envoyer l'archive sur le NAS Synology

~$ sudo tar cvzpf synodebian.tar.gz synodebian
~$ scp synodebian.tar.gz root@mysynologyhostname:/volume1/

Déploiement sur le NAS

A partir du NAS, extraire l'archive dans un dossier sur le premier volume :

~$ cd /volume1/
~$ tar xvzpf synodebian.tar.gz

La prochaine étape est de monter les partitions nécessaire pour disposer d'un système Debian fonctionnel après avoir exécuté le chroot. En addition, quelques fichiers de configuration doiven être recopiés depuis le système de base. Ces actions devant être executée après chaque reboot du NAS, il est recommandé de les placer dans un script au démarrage :

~$ cat > /usr/local/etc/rc.d/S99chrootDebian.sh << EOF
~$ CHROOT=/volume1/synodebian
~$ mount -o bind /dev \$CHROOT/dev
~$ mount -o bind /proc \$CHROOT/proc
~$ mount -o bind /dev/pts \$CHROOT/dev/pts
~$ mount -o bind /sys \$CHROOT/sys
~$ cp /etc/resolv.conf \$CHROOT/etc/resolv.conf
~$ cp /etc/hosts \$CHROOT/etc/hosts
~$ EOF

Mettre à jour les permissions, lancer le script et executer un shell bash en chroot d'où l'installation sera finalisée.

~$ chmod 755 /usr/local/etc/rc.d/S99chrootDebian.sh
~$ /usr/local/etc/rc.d/S99chrootDebian.sh
~$ chroot /volume1/synodebian /bin/bash

Finaliser l'installation avec debootstrap et mettre à jour les packages

~$ /debootstrap/debootstrap --second-stage
~$ cat > /etc/apt/sources.list << EOF
~$ deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
~$ deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
~$
~$ deb http://security.debian.org/ wheezy/updates main contrib non-free
~$ deb-src http://security.debian.org/ wheezy/updates main contrib non-free
~$ EOF
~$
~$ aptitude update
~$ aptitude upgrade

Le système Debian est maintenant opérationel. Quitter le shell chroot et ajouter quelques services pour qu'ils s'executent automatiquement au démarrage du système. Noter que puisque Debian n'est pas responsable de la séquence de boot, les scripts placés dans /etc/init.d ne seront pas exécutés automatiquement.

~$ cat >> /usr/local/etc/rc.d/S99chrootDebian.sh << EOF
~$ # Start some services
~$ chroot \$CHROOT /etc/init.d/rsyslog start
~$ chroot \$CHROOT /etc/init.d/mtab.sh start
~$ EOF
~$
~$ chmod 755 /usr/local/etc/rc.d/S99chrootDebian.sh

Terminé ! Lors de l'installation de nouveaux services sur le système Debian, le script S99chrootDebian.sh doit éventuellement être mis à jour afin d'automatiser leur démarrage.

Source: http://pellelatarte.fr/2011/06/nas-synology-debian-en-chroot-apache-et-mysql/