Le Raspberry Pi. Ce petit ordinateur annoncé en 2011 a été vendu à plus d'un million d'exemplaires depuis le début de sa commercialisation il y a un an. Nous vous l'avions présenté en juin 2012, nous vous proposons aujourd'hui une série d'articles qui va vous permettre d'intégrer facilement un Raspberry Pi dans un environnement Apple.
Installer et configurer un Raspberry Pi
La première chose à faire est d'acheter un Raspberry Pi. Nous avons besoin de la version B de l'appareil, qui est doté d'une prise RJ45 et vaut environ 35 €.
En plus de la carte elle-même, il nous faudra une carte SD pour le système (nous vous recommandons une carte SDHC Class 6 de 4 Go), une alimentation USB capable de fournir 700 mA au minimum (un chargeur d'iPhone est parfait pour cet usage), un câble microUSB et un câble RJ45 pour relier le Raspberry Pi au réseau. Dans notre cas, nous avons aussi investi dans un boîtier, mais un simple morceau de carton suffit amplement.
Pour l'installation initiale, il faudra aussi un clavier USB, un câble HDMI et un écran compatible, n'importe quel téléviseur LCD devrait suffire. Un Mac avec un lecteur de cartes SD est aussi indispensable pour l'installation.
L'installation initiale
Nos explications ont été écrites pour des personnes qui n'ont jamais utilisé de distribution Linux et n'importe quel néophyte devrait pouvoir mettre en place un serveur Time Machine. La première chose à faire est d'aller télécharger une image du système du Raspberry Pi. Nous avons utilisé la distribution Raspbian qui est proposée par la fondation à l'origine du projet. Il s'agit d'une variante de la distribution GNU/Linux Debian optimisée pour le processeur ARM du Raspberry Pi.
Une fois l'image téléchargée, nous allons utiliser un petit outil qui va installer le système sur la carte SD. Attention, cette dernière sera totalement effacée. Téléchargez RPi-sd card builder, un utilitaire qui va préparer la carte. Le fonctionnement est simple : vous choisissez l'image téléchargée précédemment, vous choisissez la carte SD et vous attendez. Avec une carte de 4 Go Class 6, l'installation prend moins de 5 minutes.
Maintenant, il faut placer la carte dans l'emplacement SD du Raspberry Pi, brancher un clavier USB, le câble HDMI et la prise microUSB. Après quelques secondes, le système devrait démarrer et vous allez arriver sur l'écran de configuration du Raspberry Pi.
La première chose à faire est d'utiliser tout l'espace de la carte SD, en utilisant le menu expand_rootfs
. Il faut ensuite changer le mot de passe de l'utilisateur dans le menu change_pass
, configurer le clavier dans configure_keyboard
et activer l'accès SSH dans ssh
.
Pour les amateurs, il est aussi possible d'overclocker le Raspberry Pi, mais nous n'en avons pas besoin dans notre cas.
Petite subtilité ici, il existe en fait plusieurs modèles de Raspberry Pi : la version A et la version B originales disposent de 256 Mo de RAM, partagée entre le système et le contrôleur vidéo, alors que la version B actuelle dispose de 512 Mo de RAM. Si vous avez un Raspberry Pi récent doté de 512 Mo de RAM, il n'y a rien à faire ici, alors que si vous avez un modèle doté de 256 Mo de RAM, il faut se rendre dans memory_split
et définir une mémoire vidéo de 16 Mo. Comme nous n'allons pas utiliser la partie vidéo du Raspberry Pi, nous allons allouer le maximum de mémoire au système.
sudo reboot
Une fois le Raspberry Pi redémarré, il faut vous connecter avec le nom d'utilisateur pi
et votre mot de passe. Nous allons ensuite taper une commande qui va nous permettre d'obtenir l'adresse IP du Raspberry Pi.
ifconfig
Une fois l'adresse obtenue, vous pouvez ranger le clavier et l'écran, la suite se fera sur votre Mac.
Détection du Raspberry Pi
Nous allons maintenant profiter d'une technologie intégrée à Mac OS X depuis Jaguar, Bonjour. Cette technologie permet à un périphérique de s'annoncer directement sur le réseau, ce qui va permettre d'éviter d'utiliser l'adresse IP du Raspberry Pi.
Première chose à faire, lancer le Terminal sur votre Mac et taper la commande suivante, en utilisant l'adresse IP obtenue précédemment.
ssh pi@adresse_ip
Entrez votre mot de passe et tapez ensuite la commande suivante. Elle va installer Avahi, une implémentation libre du protocole Bonjour, et les programmes nécessaires à son fonctionnement.
sudo apt-get update
sudo apt-get install libdb5.1-dev db5.1-util libgcrypt11-dev avahi-daemon libavahi-client-dev
Une fois Avahi installé, la commande suivante va permettre de lancer le programme à chaque démarrage.
sudo update-rc.d avahi-daemon defaults
Maintenant, nous allons utiliser Avahi pour que le Raspberry Pi soit accessible sur une adresse compréhensible et pas sur son adresse IP. La commande va créer un service qui va permettre au Raspberry Pi de s'annoncer pour un accès SSH. Pour ceux qui ne connaissent pas Nano, il suffit d'utiliser les commandes ^O
pour sauver et ^X
pour quitter.
sudo nano /etc/avahi/services/ssh.service
Dans ce fichier, il faut copier les données suivantes :
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h SSH</name>
<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group>
On va aussi en profiter pour changer le nom utilisé pour identifier le Raspberry Pi sur le réseau. Par défaut, il utilise le hostname raspberrypi
, nous allons utiliser MacberryPi
.
sudo nano /etc/hosts
Dans ce fichier, il faut changer la valeur qui suit 127.0.1.1
par le nom voulu.
sudo nano /etc/hostname
Ici, il faut mettre en début de fichier le nom voulu.
Une fois que c'est fait, il faut redémarrer et vérifier que le Raspberry Pi est accessible. La commande suivante permet de redémarrer le périphérique.
sudo reboot
Si tout s'est bien passé, l'accès SSH va être fermé et vous pourrez ensuite vous connecter après environ une minute avec la commande qui suit.
ssh [email protected]
Le Raspbbery Pi est donc accessible en SSH via l'adresse MacberryPi.local
, ce qui évite de devoir déterminer l'adresse IP de l'appareil : c'est le Raspberry Pi lui-même qui va effectuer la correspondance et vous simplifier la vie.
Nous pourrions éteindre le Raspberry Pi avec la commande suivante, mais nous allons plutôt nous attaquer à le transformer en serveur Time Machine.
sudo halt
Un Raspberry Pi comme serveur de fichiers et serveur Time Machine
S'il est possible de partager le contenu de la carte SD du Raspberry Pi, nous vous conseillons tout de même d'utiliser une clef USB ou un disque dur dédié à cet usage, en fonction de vos besoins. Pour créer un espace accessible depuis tous vos appareils, une simple clef USB suffira, pour effectuer des sauvegardes Time Machine, un disque dur est évidemment requis, pour des questions de capacité.
Le Raspberry Pi, spécialement dans ses premières versions, souffre d'un souci : des ports USB incapables de fournir les 500 mA de la norme. Concrètement, les disques durs 2,5" alimentés par le bus USB ne fonctionnent pas directement sur le Raspberry Pi, il est nécessaire d'utiliser une source d'alimentation externe comme un chargeur de smartphone ou un hub USB alimenté. Le meilleur choix reste bien évidemment un modèle 3,5", qui dispose de sa propre alimentation. Ne vous encombrez pas d'un modèle USB 3.0 : le Raspberry Pi se limite à l'USB 2.0.
La gestion du stockage
Avant d'installer les logiciels nécessaires, nous allons d'abord nous occuper du stockage. Il existe trois solutions : utiliser un disque dur formaté dans un système de fichiers adapté à Linux (ext4), utiliser le système de fichier HFS+ d'Apple ou utiliser un disque dur formaté en NTFS (via NTFS3G, comme sur Mac). Nous n'allons aborder que la seconde solution.
Branchez le disque dur au Raspberry Pi et connectez-vous, via une commande dans le Terminal. Pour simplifier les choses, nous supposons que vous avez formaté le disque dur en HFS+ depuis un Mac.
ssh [email protected]
Maintenant, nous allons installer les outils permettant de lire et écrire sur une partition en HFS+ depuis Linux.
sudo apt-get install hfsplus hfsutils hfsprogs
Une fois l'installation effectuée, nous allons monter la partition et modifier le système pour qu'elle soit chargée à chaque démarrage. Attention, le système cherchera le disque dur à chaque démarrage, ce qui peut poser des soucis s'il est débranché, en arrêtant le processus de démarrage. Dans ce cas, le plus simple est d'éteindre le Raspberry Pi et de le rallumer en branchant le disque dur.
sudo blkid
Cette commande va lister les périphériques et vous devriez obtenir un résultat de ce type. Il faut copier la valeur UUID, que nous allons utiliser pour identifier le disque dur.
/dev/sda1: UUID="2b629aaa-74c8-348b-b78a-6c11e2b9ca90" LABEL="Time Machine" TYPE="hfsplus"
Maintenant, créez un point de montage dans le dossier media
, que nous allons appeler ici timemachine
.
sudo mkdir /media/timemachine
Dans ce dossier, nous allons monter automatiquement notre disque dur, en allant modifier le fichier /etc/fstab
. Attention, alors que la commande blkid
donne l'UUID entre guillemets, il ne faut pas en mettre dans le fichier fstab. Il faut donc ajouter la seconde ligne de code à la fin du fichier fstab pour monter automatiquement le disque dur.
sudo nano /etc/fstab
UUID=votre_UUID /media/timemachine hfsplus rw,force,exec,auto,users 0 3
Maintenant, nous allons redémarrer le Raspberry Pi, nous reconnecter et vérifier que le disque dur est bien monté. Si tout se passe bien, les données déjà présentes sur le disque dur devraient apparaître.
sudo reboot
ssh [email protected]
cd /media/timemachine
ls
L'installation de Netatalk
Apple, pour le partage de fichiers, utilise son propre protocole, l'AFP. Une implémentation libre de ce dernier existe, elle est d'ailleurs utilisée dans beaucoup de NAS : il s'agit de Netatalk. Pour une prise en charge fonctionnelle de Time Machine sous Lion et Mountain Lion, il est nécessaire d'installer une version récente du logiciel, nous allons donc télécharger et compiler la dernière version de Netatalk (la 3.0.2 à l'heure où nous écrivons ces lignes). Le processus peut être long, le Raspberry Pi, rappelons-le, n'est pas un foudre de guerre.
cd ~/
wget http://sourceforge.net/projects/netatalk/files/netatalk/3.0.2/netatalk-3.0.2.tar.gz
tar xvzf netatalk-3.0.2.tar.gz
cd netatalk-3.0.2
./configure --with-init-style=debian --with-zeroconf
make
sudo make install
Une fois Netatalk compilé et installé, nous allons lancer le logiciel automatiquement au démarrage, avec la commande suivante.
sudo update-rc.d netatalk defaults
Partager un dossier via AFP
Nous allons maintenant partager un dossier du disque dur via AFP sur le réseau. Nous allons donc créer un utilisateur dédié (pour plus de sécurité) et un dossier, auquel nous allons lier le compte. C'est ce compte utilisateur qu'il faudra utiliser (avec son mot de passe associé) pour accéder au partage à travers le Finder.
cd /media/timemachine
mkdir AFP
sudo adduser afp
sudo chown afp /media/timemachine/AFP
La seconde étape consiste à configurer Netatalk pour que le dossier soit partagé.
sudo nano /usr/local/etc/afp.conf
Nous allons modifier le fichier pour qu'il ressemble à celui qui suit. La variable mimic model
indique que le Raspberry Pi se fera ici passer pour un boîtier Time Capsule.
[Global]
vol preset = default_for_all_vol
log file = /var/log/netatalk.log
uam list = uams_dhx.so,uams_dhx2_passwd.so
save password = yes
mimic model = TimeCapsule
[default_for_all_vol]
cnid scheme = dbd
À la fin de notre fichier, nous allons ensuite ajouter notre partage. Vous devez entrer le nom du partage entre crochets et ajouter le chemin. Vous pouvez insérer plusieurs utilisateurs en modifiant la variable valid users
et en en ajoutant d'autres : il suffit de les séparer par une espace. Puis il faut sauver (^O
) et quitter (^X
).
[Mon Premier partage AFP]
path = /media/timemachine/AFP
valid users = afp
Maintenant, vous pouvez redémarrer Netatalk et attendre que le partage apparaisse dans le Finder.
/etc/init.d/netatalk restart
Effectuer des sauvegardes Time Machine
Pour effectuer des sauvegardes Time Machine en réseau, le fonctionnement est totalement identique. Il faut créer un utilisateur (pour plus de sûreté), choisir ce que l'on veut partager et l'activer dans Netatalk.
cd /media/timemachine
mkdir timemachine
sudo adduser timemachine
sudo chown afp /media/timemachine/timemachine
sudo nano /usr/local/etc/afp.conf
La seule différence vient d'une variable à ajouter : time machine = yes
.
[Mon Time Machine]
path = /media/USBstorage/timemachine
valid users = timemachine
time machine = yes
Comme auparavant, il faut redémarrer Netatalk pour que le partage apparaisse.
/etc/init.d/netatalk restart
Une fois que c'est fait, OS X devrait vous proposer votre Raspberry Pi dans la liste des disques durs disponibles pour une sauvegarde Time Machine.
Un point sur les performances
Avant de terminer, un point sur les performances. Le Raspberry Pi n'est pas un appareil très rapide, et son sous-système USB est lent : l'Ethernet et les prises USB 2.0 se partagent le même bus en interne et les performances sont donc limitées. Dans le meilleur des cas, vous atteindrez donc les limites de l'Ethernet à 100 mégabits/s de l'appareil (12,5 Mo/s) mais vous serez parfois en dessous, notamment dès qu'il faudra traiter des petits fichiers. Pour information, les performances sont généralement supérieures quand le disque dur est formaté en ext4 et nettement inférieures quand le disque dur est formaté en NTFS. Dans notre cas, le côté pratique du HFS+ est toutefois plus avantageux que le faible gain dû au passage en ext4.
Le Raspberry Pi n'est donc pas totalement viable pour effectuer des sauvegardes Time Machine, spécialement si vous avez beaucoup de données à sauver. Mais pour sauvegarder une machine comme un MacBook Air doté d'un SSD de 64 Go, les performances sont suffisantes. Il faut simplement bien prendre en compte que la sauvegarde initiale sera bien plus lente qu'avec un véritable boîtier Time Capsule ou avec un disque dur en local.
Dans un prochain article, nous verrons comment utiliser le Raspberry Pi pour partager une imprimante via AirPrint, pour l'utiliser avec un iPad, un iPhone ou même un Mac OS X récent.