Pour palier au problème d’usure des cartes SD j’utilisais berryBoot pour installer linux sur un LUN iscsi. Mais cette solution quoi que pratique ne supporte pas très bien les mises à jour du noyau. Depuis quelques temps raspbian supporte de façon native le iscsi. voici comment installer raspbian avec iscsi.
Informations
Configuration
Client : Raspberry PI2 / Raspbian jessy lite V4.4 / 2016-05-27 sur Sdcard 4Go Samsung Serveur iscsi : QNAP TS-131 / adresse ip 192.168.0.10 Box Internet : serveur DHCP
Prérequis
La machine cliente sera l’initiateur et devra avoir un nom d’initiateur icsci dont le format est le suivant iqn.yyyy-mm.naming-authority:unique il doit être unique sur le réseau. dans cet exemple le nom sera iqn.2012-07.org.raspbian:raspberry:local.home.raspbian. Le nom de la cible sera définis au niveau du NAS dans cette exemple se sera iqn.2004-04.com.qnap:ts-131:iscsi.raspbian.e65bfb.
Installation
Préparer le disque iscsi
Il suffit de créer une cible(target) iscsi avec son volume (LUN) en suivant la Documentation QNAP
Installer raspbian lite
J’utilise une raspbian lite disponible ici documentation d’installation là Mettre la sdcard dans le raspberry pi et mettez le sous tension. connecter vous avec l’utilisateur pi mot de passe raspberry exécuter les commandes suivantes :
sudo aptitude update
sudo aptitude upgrade
sudo aptitude install rsync open-iscsi
sudo reboot
Finaliser l’installation iscsi
reconnecter vous avec l’utilisateur pi
sudo nano /etc/iscsi/initiatorname.iscsi
mettre la valeur iqn.2012-07.org.raspbian:raspberry:local.home.raspbiansudo /etc/init.d/open-iscsi start
sudo systemctl daemon-reload
sudo iscsiadm --mode discovery --type sendtargets --portal 192.168.0.10:3260
résultat : 192.168.0.10:3260,1 iqn.2004-04.com.qnap:ts-131:iscsi.raspbian.e65bfbsudo iscsiadm -m node --targetname "iqn.2004-04.com.qnap:ts-131:iscsi.raspbian.e65bfb" --portal "192.168.0.10:3260" --login
sudo mkfs.ext4 -m0 /dev/sda
sudo mkdir /mnt/iscsi && sudo mount /dev/sda /mnt/iscsi
sudo rsync -avhP --exclude /boot --exclude /proc --exclude /sys --exclude /mnt / /mnt/iscsi/
sudo mkdir /mnt/iscsi/{proc,sys,boot,initrd,mnt}
sudo touch /etc/iscsi/iscsi.initramfs
(nécessaire à update-initramfs)sudo touch /mnt/iscsi/etc/iscsi/iscsi.initramfs
sudo update-initramfs -c -k `uname -r`
résultat : update-initramfs: Generating /boot/initrd.img-4.4.13-v7sudo cp /boot/kernel7.img /boot/kernel7-4.4.13-v7+.img
sudo nano /boot/config.txt
ajouter : kernel=kernel7-4.4.13-v7+.img initramfs initrd.img-4.4.13-v7+ followkernelsudo blkid /dev/sda
résultat : /dev/sda: UUID=”b042d66d-ead3-4742-953a-61e2bf162aaf” TYPE=”ext4”sudo nano /boot/cmdline.txt
ip=::::raspberrypi:eth0:dhcp ISCSI_INITIATOR=iqn.2012-07.org.raspbian:raspberry:local.home.raspbian ISCSI_TARGET_NAME=iqn.2004-04.com.qnap:ts-131:iscsi.raspbian.e65bfb ISCSI_TARGET_IP=192.168.0.10 ISCSI_TARGET_PORT=3260 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=UUID=b042d66d-ead3-4742-953a-61e2bf162aaf rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Nota
Les étapes 7, 8 et 9 permettent de copier l’installation vers le fileSystem iscsi. Les étapes 10,11,12 et 13 assure que le noyau et les modules ne changent pas après une mise à jour. L’étape 15 configure la connexion vers la cible iscsi.
Conclusion
voilà vous n’avez plus qu’a faire rebooter, vous verrez votre pi récupérer une adresse ip puis monter le disque iscsi et continuer le démarrage. Vous pouvez donc cloner une installation complète comme ceci :
- sauvegarder le LUN de cette installation, le copier vers un nouveau LUN associé à une nouvelle cible
- copier le contenu de la sdcard sur une nouvelle éditer le fichier /boot/cmdline.txt
- changer les paramètres suivant pour qu’il corresponde à cette nouvelle cible n’oublier pas de changer le nom de l’initiateur : ISCSI_INITIATOR=iqn.2012-07.org.raspbian:raspberry:local.home.raspbian ISCSI_TARGET_NAME=iqn.2004-04.com.qnap:ts-131:iscsi.raspbian.e65bfb ISCSI_TARGET_IP=192.168.0.10 ISCSI_TARGET_PORT=3260
Bibliographie :
source :
- https://www.reddit.com/r/raspberry_pi/comments/49l25b/iscsi_booting_your_raspberry_pi/
- https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=151302
Changelog
2016-07-14 : correction de coquille dans les commandes.