Rooot.net

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille
The first step to getting the things you want out of life is this: Decide what you want.
Home Geek stuff Synology Chroot Debian sur Synology avec debootstrap

Chroot Debian sur Synology avec debootstrap

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/

Commentaires
Ajouter un nouveau Rechercher
Laurent   |61.219.36.xxx |2014-06-13 05:04:30
Super ! Merci beaucoup pour ce tutoriel !
Allan Hansen  - Fantastic guide!!   |95.154.16.xxx |2014-07-16 21:12:16
Hello!

Thank you so much for this guide! As a unix noob this helped me ALOT!
Minor thing, the command "tar xvzfp synodebian.tar.gz" failed, because
the f parameter should be specified last, whenever present, eg xvzpf.

Kind
Regards
neo73   |88.178.190.xxx |2014-08-24 17:38:20
Thank you, I just fixed this.
Erik Johansson   |2.248.163.xxx |2014-09-06 18:36:05
Hi and thanks for the guide. I have some truoble thou. On the part where
you are suppose to chroot into debian: chroot /volume1/synodebian /bin/bash

When running this command, I get a segmentation fault error, and nothing
more happens. Do you know how to fix this?

Thanks!

/E
Gaetan Bouquet   |93.2.239.xxx |2014-11-14 21:44:48
Hi,

Choosing the wrong architecture (armhf instead of armel) caused me the
segmentation fault. Switching from armhf to armel fixed the problem. The link to
the Synology processors doesn't give the information, so try both. For the
record, I have a DS212j and needed to use the armel architecture, not armhf.
matu   |217.162.122.xxx |2014-12-29 22:55:14
thank you for the cat trick ^^
pocket  - Add service   |89.180.237.xxx |2015-02-12 16:18:10
Citer:
The Debian system is now ready to use, now exit the crhroot and add some
services to automatically run at system startup. Please note since Debian
is not responsible for boot sequence, scripts in /etc/init.d won't be
executed automatically.


any one can help me to put a service to boot wen i start my synology

the
bin are in /volume1/synodebian/usr/local/bin and i have put the
startup in /etc/rc.local but the service dont start

tanks
neo73   |88.178.190.xxx |2015-02-25 08:30:34
Hi,

Since Debian isn't responsible for boot sequence, you should place your
scripts in the Synology /usr/syno/etc/rc.d/ folder.
Whenever you want to add
some Debian services or custom scripts to your boot sequence, I recommend you
add them to /usr/syno/etc/rc.d/S99chrootDebian.sh as suggested in the very last
part of the post.

Should you have a script
/volume1/synodebian/usr/local/bin/script.sh, you can run it at boot by
adding:
~$ cat >> /usr/syno/etc/rc.d/S99chrootDebian.sh << EOF
~$ chroot
\$CHROOT /usr/local/bin/script.sh
~$ EOF
(there is no line break on the
chroot line)
Ecrire un commentaire
Nom:
Email:
 
Website:
Titre:
BBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Saisissez le code que vous voyez.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."