Les serveurs de stockage externe, ou NAS (« Network Attached Storage ») sont devenus une partie importante des réseaux personnels et des petites entreprises. Les innovations matérielles et logicielles permettent une utilisation toujours plus simple et intuitive. Mais il faut parfois torturer ces petits boîtiers si l'on veut seulement profiter des fonctions de base : sauvegarde et confidentialité.
1. Introduction
Toutes les informations données dans cet article sont fournies « telles quelles », sans aucune garantie, et peuvent être aventureuses !
Les matériels embarqués à base d'ARM™ deviennent de plus en plus répandus, que ce soient les SheevaPlugs, GuruPlugs de GlobalScale Technologies, les DockStar de Seagate, les SmartTops et SmartBooks de Genesi...
Le Raidsonic, avec son processeur Kirkwood Marvell à 1.2Ghz, très proche des SheevaPlugs et autres plug-computers, est pour moi un choix évident. Je connais et possède déjà plusieurs SheevaPlugs qui fonctionnent en 24/7 depuis des années. À part quelques problèmes connus d'alimentations défectueuses sur les premiers modèles, ils sont robustes. Ils sont conçus comme des matériels de développement et les possibilités sont nombreuses. Le support de Debian est complet et j'ai déjà contribué en réalisant un patch pour le support des cartes SD dans uBoot. Les modèles de SheevaPlugs avec eSata de NewIT et les GuruPlugs font aussi partie de mon installation.
Tous mes serveurs sont des SheevaPlugs et certains accèdent à des NAS, des Thecus N2100 qui fonctionnent sous Debian, pour la sauvegarde et l'accès aux données. J'ai commandé mes premiers SheevaPlugs, chez le fabricant GlobalScale Technologies, en précommande.
Le choix était pour moi évident de tester un NAS à base de processeur Marvell Kirkwood. Le côté développement, la robustesse et les supports uBoot et Debian étant des critères importants.
Mais...
2. Le NAS Raidsonic
L'achat effectué, la livraison réceptionnée, le boîtier démarré, j'ai découvert qu'un tunnel VPN se faisait vers la Chine dès le démarrage ! La découverte des liaisons avec workssys.com et des certificats workssys.com.cn est une surprise déconcertante.
Un peu de « social engineering » à partir des sites myakitio.com, isharing.workssys.com et workssys.com m'a permis de faire une corrélation entre les fonctionnalités « nuage » et le protocole TR-609 (voir analyse ci-dessous).
Je ne suis pas d'accord avec cette « avancée technologique » et je décide donc de modifier le système pour une Debian (plus sécurisé, plus ouvert, plus stable...).
Spécifications matérielles |
Spécifications logicielles |
Marvell Kirkwood SOC 1,2GHz (88F6281) |
Fedora |
256 Mo RAM |
Mode RAID 0 & 1 |
256 Mo Flash (uBoot, Kernel, UBIFS) |
Ext4 |
2 x Serial ATA 3Gb/s (SATA II) |
Interface web |
1 x Gigabit Ethernet 10/100/1000 - RJ45 Femelle |
Serveur SSH actif |
3 x USB 2.0 |
FTP, SAMBA, DLNA Server |
Ventilateur Format de disque 3"1/2 |
Accès à partir d'Internet (VPN et communication avec les serveurs workssys.com) |
3. Résumé
3.1 Inconvénients
- Ce NAS doit héberger des données personnelles et sensibles. Même si l'interface originale est jolie et que le tunnel peut être désactivé en cherchant un peu, je ne veux pas d'un agent incontrôlable sur le stockage de mes données personnelles !
- L'agent workssys utilise des techniques dont la définition des fonctions est identique à celle des « portes dérobées » et « chevaux de Troie ».
- Les quelques recherches sur les connexions réseau réalisées montrent qu'elles aboutissent vers des serveurs hébergés dans le « cloud » d'Amazon.
- Les services d'accessibilité par isharing sont gratuits mais pourraient devenir payants.
- Le mot de passe root défaut, non sécurisé, peut donner accès avec des privilèges complets sur les NAS de ce type par les serveurs isharing.
- Les défauts de sécurité de l'interface web ainsi que les difficultés à formater les disques par cette interface et la nécessité de redémmarer après chaque modification.
- Le document « Sources - Coming soon » n'apporte aucun intérêt. [4] Il semblerait y avoir violation de la licence GPL par les fournisseurs.
3.2 Avantages
- Le boîtier ICYBOX NAS 6220 B est fabriqué avec un SoC Marvell Kirkwood 88F6281 cadencé à 1,2 GHz.
- L'interface web conviviale de configuration utilisateur (interface qui reste un grand manque pour ce type d'installation sous Debian).
- La mécanique est robuste et simple.
- Le montage des disques se fait sans vis.
- Il est silencieux et peut fonctionner discrètement en 24/7.
- Il consomme peu :
- 0,5 W à l'arrêt ;
- 6 W en moyenne, sans disque (7 W maximum).
- Il est modifiable... et bientôt supporté officiellement par Linux, uboot et Debian.
3.3 Conclusion
Trop de points négatifs pour rester avec l'installation originale et ne pas profiter d'une mise à jour vers un autre système.
Je décide donc de lui offrir ma distribution GNU/Linux préférée, une Debian.
Le plus sûr est de réinstaller un système Debian, même sans interface web, car entre les nouveautés attrayantes et d'utilisation facile ou la sécurité de mes données, moi j'ai choisi : la sécurité est plus importante que la poudre aux yeux !
Qui m'aime me suive...
4. Le matériel nécessaire
Des connaissances techniques des systèmes GNU/Linux, d'administration Debian et de cross-toolchain compilation peuvent être utiles.
Le minimum nécessaire sera :
- un tournevis ;
- un fer à souder (facultatif) ;
- quelques fils électriques (facultatif) ;
- une clé USB ;
- un ordinateur (testé avec Debian, mais un système possédant moins de privilèges pourra aussi fonctionner) [1] ;
- une connexion Internet (non censurée) [2] ;
- un ICYBOX RaidSonic 62x0 [18].
5. Pourquoi ?
Le support officiel de RaidSonic refuse de donner une solution pour désactiver la fonctionnalité « cloud personnel » qui fait partie de l'offre. Elle permet l'accès aux données de votre NAS de n'importe où dans le monde par Internet. [3]
5.1 Système original
| \/ | __ _ _ ____ _____| | |
| |\/| |/ _` | '__\ \ / / _ \ | |
| | | | (_| | | \ V / __/ | |
|_| |_|\__,_|_| \_/ \___|_|_|
_ _ ____ _
| | | | | __ ) ___ ___ | |_
| | | |___| _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
\___/ |____/ \___/ \___/ \__|
5.2 Sortir du « nuage »
IB-NAS6210 - Elimination communication
Question: Will it be possible to disconnect the connection between your main server and the IB-NAS6210 without losing functionality?
Answer: No, because you are losing the connectivity via Internet and this is the main idea behind the IB-NAS6210. If you want to use your NAS device in your home environment only, you should choose a “traditional” NAS device
5.2.1 L'analyse
$ ls /etc/nas/
Un fichier sqlite contient les paramètres du NAS pour communiquer avec les serveurs de workssys, transférer et récupérer les fichiers de logs et de configuration et mettre à jour le firmware.
Il est possible d'approfondir l'analyse des communications avec les serveurs workssys en sniffant le réseau avec un outil comme wireshark, mais ce n'est pas le but recherché ici.
Pour surveiller les événements système.
$ dmesg
Pour détecter les communications avec l'extérieur.
$ netstat -t
Pour afficher les processus actifs.
$ ps aux
La création du tunnel VPN avec les serveurs workssys.com, hébergés chez Amazon, se fait automatiquement lors de chaque démarrage du NAS.
Les fichiers de configuration se trouvent dans /etc/openvpn/ après la première communication avec les serveurs workssys.
$ ls /etc/openvpn/
$ cat /etc/openvpn/client.conf
client
dev tun
proto udp
remote isharing.workssys.com 53
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
verb 3
J'ai limité mon analyse de ces communications avec les serveurs workssys à l'analyse du tunnel VPN.
Un fichier de journalisation peut être ajouté en modifiant le fichier /etc/openvpn/client.conf [12].
$ nano /etc/openvpn/client.conf
# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the "\Program Files\OpenVPN\log" directory).
# Use log or log-append to override this default.
# "log" will truncate the log file on OpenVPN startup,
# while "log-append" will append to it. Use one
# or the other (but not both).
log openvpn.log
log-append openvpn.log# Set the appropriate level of log
# file verbosity.
#
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 9
Après redémarrage complet du NAS ou juste du service openvpn, ce fichier /etc/openvpn/openvpn.log de journalisation sera généré et pourra être analysé.
Je ne recherche que ce qui est lié avec le mot-clé « workssys ».
$ cat /etc/openvpn/openvpn.log | grep workssys
Sat Jul 28 09:13:16 2012 us=772723 remote = 'isharing.workssys.com'
Sat Jul 28 09:13:18 2012 us=745070 VERIFY OK: depth=1, /
C=CN/ST=Tianjin/L=Tianjin/O=WorkssysCorporation/CN=Workssys-CA/emailAddress=isharing_wks@workssys.com.cn
Sat Jul 28 09:13:18 2012 us=746463 VERIFY OK: depth=0, /
C=CN/ST=Tianjin/O=WorkssysCorporation/CN=WorkssysServer/emailAddress=isharing_wks@workssys.com.cn
5.2.2 Le nuage
Le « cloud » est un néologisme pour définir la décentralisation des données personnelles. Si Internet est représenté par le ciel, le nuage est un fragment qui vous est réservé.
Mais tout comme la pluie et le soleil sont opposés, le cloud et le respect de la vie privée sont incompatibles.
Il faut comprendre que cette idée de vous libérer de vos données est une autre manière de vous priver de la propriété et de la confidentialité. Tous les softwares as service ou SaS ne sont que des tentatives pour réinventer le minitel 2.0.
La principale particularité du cloud personnel provient de l'économie de l'espace de stockage puisque c'est vous qui hébergez vos données, investissez dans le support physique, louez la bande passante et réglez la facture d'électricité.
Normal pour un stockage personnel maîtrisé. Étrange pour un service commercial.
Vous n'avez pas à vous soucier des mises à jour logicielles puisque le contrôle se fait à distance par un protocole normalisé (le TR-069 [19][20][21][22]).
Tout comme votre box internet.
Le hic c'est que si vous pouvez accéder à vos données privées depuis n'importe où, vous risquez de ne pas être le seul. Qui détient l'information peut tenter d'en déformer le sens.
Ne cherchez pas plus loin : ce sont les mêmes techniques utilisées par les botnets et chevaux de Troie.
5.2.3 Le protocole TR-069
6. Comment ?
6.1 Le Menu
6.1.1 Sans « tournevis »
La FAQ RaidSonic stipule que le compte root est désactivé. [3]
IB-NAS6210 - Root Password
Question: What is the root password?
Answer: The Manufacturers Forum (developer company) says the following:
The root account on all IB-NAS6210 units is disabled. There is no way to log in as root (System Administrator), either by SSH or at the console. Although there is a prompt for a password, there is no password in the password keyspace that will work.
Since you are technical, here's how it's done:
/etc/shadows/ contains a "*" in the root password keyspace. This is why you see a prompt, yet at the same time, will never be able to login via root.
Et pourtant...
Le mot de passe root par défaut est toor.
Le mot de passe adminpar défaut est admin.
L'accès est possible en ssh, contrairement à ce qui est dit dans les documentations officielles et les FAQ.
$ ssh root@192.168.1.104
The authenticity of host '192.168.1.104 (192.168.1.104)' can't be established.
RSA key fingerprint is 94:a1:ba:a3:22:e6:be:36:a5:ef:30:a4:4a:2f:a0:88.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.104' (RSA) to the list of known hosts.
root@192.168.1.104's password:
Last login: Sat Jul 28 09:24:58 2012
[root@isharing ~]#
Une autre méthode est possible avec l'interface web.
Il est assez simple de modifier le compte root, en modifiant le mot de passe.
L'accès par la console web avec le compte admin se fait par l'url suivante :
http://<IP>
Une URL est générée du type :
http://192.168.1.104/Applications/System/os.html?lang=fr&id=fdd50e367443c4f4c07760b8c1fe6f7d8451dea5&remoteDataUrl=http://192.168.1.104/&user=admin&privilege=0&modulus=23d55d9c2f40e3d2d69e3b8be5345a9d0958f3fcb6ad95efe374b&public=10001&
En modifiant l'url pour remplacer « admin » par « root », on se retrouve connecté dans l'environnement de l'utilisateur root.
http://192.168.1.104/Applications/System/os.html?lang=fr&id=fdd50e367443c4f4c07760b8c1fe6f7d8451dea5&remoteDataUrl=http://192.168.1.104/&user=root&privilege=0&modulus=23d55d9c2f40e3d2d69e3b8be5345a9d0958f3fcb6ad95efe374b&public=10001&
Il est alors possible de modifier le mot de passe avec l'interface web dans les préférences de l'utilisateur.
Le compte accédé est maintenant le compte « root ».
Il est possible de modifier le mot de passe de l'utilisateur « root » sans vérification de correspondance avec l'ancien mot de passe. Il suffit de saisir une chaîne quelconque dans la partie « Old Password » et de saisir le mot de passe voulu dans « Password » et « Confirm ».
6.1.2 Sans « fer à souder »
Le boîtier RaidSonic possède un accès possible en terminal (mode TTY/console) par une interface TTL.
Elle se trouve près du bouton « Reset », « J5 » avec un triangle marquant la broche 1 (3.3V).
IB62x0 (J5)
Pin 1 3.3V
Pin 2 RXD
Pin 3 TXD
Pin 4 GND
Les signaux RXD et TXD sont (LV) TTL de (0V/3.3V), ne sont pas des signaux RS-232 (+/-12V). Ce qui signifie qu'ils ne peuvent pas être connectés directement sur un port série de PC. Il faut utiliser un convertisseur.
Il est possible d'utiliser plusieurs types de convertisseurs TTL, mais j'ai découvert un nouveau modèle qui permet de se brancher très facilement.
Le « Raspberry Pi Cable, TTL-232R-RPI » [5][6] (Future Technology Devices International Ltd).
IB62x0 TTL-232R-RPI
Pin 1 3.3V N/A
Pin 2 RXD Orange TXD
Pin 3 TXD Jaune RXD
Pin 4 GND Noir GND
Il est possible de passer le câble par le trou destiné à recevoir un câble anti-vol, sur la façade arrière du NAS.
Il peut rester connecté en permanence pour faciliter les besoins d'accès en mode console.
Dès le chargement de l'uBoot, les accès par le terminal sont possibles pour interrompre et/ou modifier le comportement du système.
On utilisera picocom à une vitesse de 115200 bauds sur le port ttyUSBx.
Le port ttyUSBx est détecté dès le branchement du convertisseur et avant la mise sous-tension du NAS.
$ picocom -b 115200 /dev/ttyUSB0
Attention !
Il peut être nécessaire d'installer picocom et de le configurer :
$ sudo apt-get install picocom
$ sudo adduser $USER dialout
Ensuite, il faut fermer la session pour la prise en compte des modifications.
Il est aussi possible de charger un binaire uBoot spécifique, uniquement valide pour un démarrage, par ce même port console avec l'outil kwuartboot.
6.1.3 Sans « garantie »
Dans le cas où vous auriez le besoin, ou le désir, de connecter une interface JTAG, il est possible de souder les broches 2x10 directement sur la carte mère du NAS.
L'interface JTAG est utilisable avec, par exemple, un Open JTAG [8] et les outils openocd [9].
7. La « mise à jour »
Nous allons voir les différentes étapes pour remplacer les composants logiciels du NAS.
Les binaires mis à disposition sur mon site [24] sont des compilations proposées pour simplifier la procédure.
Les patchs qui ont été appliqués sont eux aussi disponibles et fournis avec les binaires proposés.
Il est possible de les générer à partir des sources disponibles, tous en licence GPL.
7.1 Remplacer l'uBoot
Utilisation de l'accès en console pour modifier l'uboot avec uboot-custom.
Il faut une clé USB, formatée en ext2, contenant le fichier u-boot.kwb disponible dans l'archive uboot-custom.tgz sur doukki.net. [24]
https://www.doukki.net/ib62x0/uboot-custom.tgz
Marvell>> version
U-Boot 1.1.4 (Oct 12 2009 - 13:41:53) Marvell version: 3.4.16
Il faut noter l'adresse matérielle ethernet, qui va être remplacée et devra être reconfigurée manuellement.
La commande uBoot suivante permet d'afficher votre adresse matérielle réseau, ou adresse MAC.
Marvell>> printenv ethaddr
ethaddr=00:11:22:33:44:55
Après avoir connecté la clé USB, on interrompt le démarrage de l'uBoot par une frappe de touche quelconque.
Les commandes suivantes permettront la mise à jour de l'uBoot en remplaçant celui d'origine.
Marvell>> usb start
Marvell>> ext2load usb 0:1 0x00800000 u-boot.kwb
Marvell>> nand erase 0x0 0x00080000
Marvell>> nand write 0x00800000 0x0 0x00080000
La commande reset permet de redémarrer l'uBoot du NAS et de profiter de son nouvel uBoot.
Marvell>> reset
Il est possible de vérifier la version de l'uBoot avec la même commande que précédemment.
ib62x0 => version
U-Boot 2012.07-00123-g4d3c95f-dirty (Aug 12 2012 - 16:26:48) RaidSonic ICY BOX IB-NAS62x0
arm-linux-gnueabi-gcc (Debian 4.4.5-8) 4.4.5
GNU ld (GNU Binutils for Debian) 2.20.1.20100303
Il faut remettre l'adresse MAC originale dans l'environnement uBoot, sauvegarder et redémarrer.
ib62x0 => setenv ethaddr 00:11:22:33:44:55
ib62x0 => save
ib62x0 => reset
7.2 Installer Debian 7.0 (wheezy)
Utilisation de l'accès en console pour installer Debian wheezy à l'aide de debian-installer-custom.
Il faut une clé USB, formatée en ext2, contenant les fichiers uImage et uInitrd disponibles dans l'archive debian-installer-custom.tgz sur doukki.net. [24]
https://www.doukki.net/ib62x0/debian-installer-custom.tgz
Attention !
Il est nécessaire de forcer le type de machine (machid), pour que le kernel Debian reconnaisse le type de machine.
Cette étape peut être inutile si le support uBoot, Linux et Debian sont terminés.
ib62x0 => setenv machid 0x690
ib62x0 => save
Après le redémarrage, on peut exécuter l'installeur Debian dans la console uBoot.
Il faut connecter la clé USB, interrompre le démarrage de l'uBoot par une frappe de touche quelconque.
Les commandes suivantes permettent le chargement et le démarrage de l'installeur Debian.
ib62x0 => usb start
ib62x0 => ext2load usb 0:1 0x00800000 /uImage
ib62x0 => ext2load usb 0:1 0x01000000 /uInitrd
ib62x0 => setenv bootargs console=ttyS0,115200
ib62x0 => bootm 0x00800000 0x01000000
Vous pouvez faire l'installation à partir de la console TTY avec les images netboot, mais vous pouvez aussi utiliser les images network-console pour faire l'installation par ssh, l'accès se fait sur l'adresse IP attribuée par votre serveur dhcp ou par l'adresse défaut 192.168.1.77.
┌───────────┤ [!!] Continue installation remotely using SSH ├───────────┐
│ │
│ Start SSH │
│ To continue the installation, please use an SSH client to connect to │
│ the IP address 192.168.0.144 and log in as the "installer" user. For │
│ example: │
│ │
│ ssh installer@192.168.0.144 │
│ │
│ The fingerprint of this SSH server's host key is: │
│ 5d:0a:eb:3d:a4:1f:b5:9f:4b:17:2e:8a:8c:cc:42:14 │
│ │
│ Please check this carefully against the fingerprint reported by your │
│ SSH client. │
│ │
│ <Continue> │
│ │
└───────────────────────────────────────────────────────────────────────┘
$ ssh installer@192.168.1.77
Le mot de passe est « installer ».
┌───────────────────────┤ [!] Software selection ├────────────────────────┐
│ │
│ At the moment, only the core of the system is installed. To tune the │
│ system to your needs, you can choose to install one or more of the │
│ following predefined collections of software. │
│ │
│ Choose software to install: │
│ │
│ [ ] Debian desktop environment │
│ [ ] Web server │
│ [ ] Print server ▒ │
│ [ ] SQL database ▒ │
│ [ ] DNS Server ▒ │
│ [*] File server ▒ │
│ [ ] Mail server ▒ │
│ [*] SSH server ▒ │
│ [ ] Laptop │
│ │
│ <Continue> │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Attention !
Le clavier de l'installeur Debian est en qwerty ! Il est préférable de saisir des mots de passe simples et de les modifier au premier redémarrage.
Il faut connecter le NAS au réseau et suivre ensuite les étapes de l'installation de Debian.
┌─────────────────┤ [!!] Make the system bootable ├─────────────────┐
│ │
│ Installation step failed │
│ An installation step failed. You can try to run the failing item │
│ again from the menu, or skip it and choose something else. The │
│ failing step is: Make the system bootable │
│ │
│ <Continue> │
│ │
└───────────────────────────────────────────────────────────────────┘
Sortir temporairement de l'installeur avec : « Execute a shell ».
┌─────────┤ [?] Debian installer main menu ├─────────┐
│ │
│ Choose the next step in the install process: │
│ │
│ Download installer components │
│ Set up users and passwords ▒ │
│ Configure the clock ▒ │
│ Detect disks ▒ │
│ Partition disks ▒ │
│ Install the base system ▒ │
│ Configure the package manager ▒ │
│ Select and install software ▒ │
│ Make the system bootable ▒ │
│ Continue without boot loader ▒ │
│ Finish the installation ▒ │
│ Change debconf priority ▒ │
│ Save debug logs │
│ Execute a shell ▒ │
│ Abort the installation │
│ │
└────────────────────────────────────────────────────┘
Attention !
Il est préférable, pour simplifier la procédure de démarrage, de ne pas placer la partition /boot dans un conteneur raid, mais de la laisser en ext2 défaut. L'uBoot ne peut pas accéder aux partitions autres que fat, ext2 ou ubifs (NAND). En nommant la partition root « rootfs », le système de démarrage automatique (bootstraper) détectera la partition principale. Une autre possibilité est d'utiliser un bootscript (un exemple de script est présent sur mon site [24]).
┌────────────────────────┤ [!] Execute a shell ├────────────────────────┐
│ │
│ Interactive shell │
│ After this message, you will be running "ash", a Bourne-shell clone. │
│ │
│ The root file system is a RAM disk. The hard disk file systems are │
│ mounted on "/target". The editor available to you is nano. It's very │
│ small and easy to figure out. To get an idea of what Unix utilities │
│ are available to you, use the "help" command. │
│ │
│ Use the "exit" command to return to the installation menu. │
│ │
│ <Go Back> <Continue> │
│ │
└───────────────────────────────────────────────────────────────────────┘
7.3 Finalisation de l'installation
Il faut, à la fin de l'installation, quitter sans redémarrer. Choisir l'option « Execute a shell ». Grâce à ce shell minimaliste, on va accéder au système cible nouvellement installé par la commande chroot.
~# chroot /target/
On lance un shell bash, pour avoir un peu plus de souplesse dans la saisie des commandes.
# bash
root@unassigned-hostname:/#
Il faut monter la partition /root du système cible.
Attention !
/dev/sdb1 est donné à titre d'exemple, il faut faire correspondre à son installation. Cette étape peut ne pas être nécessaire si la partition /boot est déjà montée.
# mount /dev/sdb1 /boot
Il est maintenant possible de faire les modifications nécessaires pour finir l'installation de Debian.
$ cat /proc/cpuinfo
Hardware : Marvell DB-88F6281-BP Development Board
La modification du fichier de configuration de flash-kernel est maintenant possible pour y ajouter notre Raidsonic.
$ nano /usr/share/flash-kernel/db/all.db
Machine: Marvell DB-88F6281-BP Development BoardKernel-Flavors: kirkwoodU-Boot-Kernel-Address: 0x00008000U-Boot-Initrd-Address: 0x0Boot-Kernel-Path: /boot/uImageBoot-Initrd-Path: /boot/uInitrdRequired-Packages: u-boot-toolsBootloader-sets-root: no
Attention !
Cette étape peut être inutile si le support uBoot, Linux et Debian sont terminés.
Dans le cas d'une installation raid, il faut préparer le chargement des modules spécifiques dans le ramdisk.
$ nano /etc/initramfs-tools/modules
mv_sata
raid1
Si vous avez utilisé des partitions de types lvm, pensez à ajouter le module spécifique :
lvm
Le paquet u-boot-envtools est nécessaire est doit être installé manuellement.
$ apt-get install u-boot-tools
Il faut mettre un label rootfs sur la partition / pour que le démarrage automatique la détecte.
$ mount
/dev/sdb2 on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
Attention !
/dev/sdb2 est donné à titre d'exemple, il faut faire correspondre à son installation (/dev/md0 ou autre possibilité).
$ e2label /dev/sdb2 rootfs
On peut quitter le chroot de l'installeur Debian et retourner dans l'installeur Debian pour finaliser l'installation.
$ exit
# exit
~# exit
┌─────────┤ [?] Debian installer main menu ├─────────┐
│ │
│ Choose the next step in the install process: │
│ │
│ Choose language │
│ Detect network hardware ▒ │
│ Configure the network ▒ │
┌──────────│ Choose a mirror of the Debian archive ▒ │ ────────┐
│ │ Download installer components ▒ │ │
│ │ Set up users and passwords ▒ │ │
│ │ Configure the clock ▒ │ │
│ │ Detect disks ▒ │ │
│ │ Partition disks ▒ │ │
└──────────│ Install the base system │ ────────┘
│ Configure the package manager ▒ │
│ Select and install software ▒ │
│ Make the system bootable ▒ │
│ Continue without boot loader ▒ │
│ Finish the installation │
│ │
└────────────────────────────────────────────────────┘
Reprendre à l'étape « Make the system bootable »
┌──────────────────────┤ [!!] Configuring man-db ├──────────────────────┐
│ │
┌│ Installation complete │
││ Installation is complete, so it is time to boot into your new system. │
││ Make sure to remove the installation media (CD-ROM, floppies), so │
││ that you boot into the new system rather than restarting the │
││ installation. │
││ │
└│ <Go Back> <Continue> │
│ │
└───────────────────────────────────────────────────────────────────────┘
Attention !
Après le premier redémarrage, les mots de passe (root et l'utilisateur administrateur) doivent être modifiés.
Using machid 0x690 from environment
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.2.0-3-kirkwood (Debian 3.2.21-3) (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-7) ) #1 Wed Jul 4 09:59:20 UTC 2012
[ 0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] Machine: Marvell DB-88F6281-BP Development Board
...
[ 14.577909] 7 cmdlinepart partitions found on MTD device orion_nand
[ 14.584211] Creating 7 MTD partitions on "orion_nand":
[ 14.589382] 0x000000000000-0x000000080000 : "uboot"
[ 14.595123] 0x000000080000-0x0000000a0000 : "uboot_env"
[ 14.601155] 0x0000000a0000-0x0000000c0000 : "uboot_strap"
[ 14.607387] 0x0000000c0000-0x000000140000 : "kernel"
[ 14.613202] 0x000000140000-0x0000001c0000 : "ramdisk"
[ 14.619089] 0x0000001c0000-0x0000001e0000 : "fdt"
[ 14.624683] 0x0000001e0000-0x000010000000 : "rootfs"
...
Debian GNU/Linux wheezy/sid unassigned-hostname ttyS0
unassigned-hostname login:
ssh root@192.168.0.144
root@192.168.0.144's password:
7.4 Particularités de l'uBoot
La version de l'uBoot disponible sur mon site [24] est patchée avec les commandes de boot automatique.
Il intègre un « bootstrapper » général qui a pour résultat de tenter les démarrages sur plusieurs supports :
- démarrer sur une clé usb si elle contient un fichier boot.scr ou les fichiers uImage et uInitrd ;
- démarrer sur un disque sata avec les mêmes besoins ;
- démarrer un bootscript, s'il est présent dans la partition uboot_strap ;
- démarrer à partir d'un serveur TFTP en cas d'échec des autres supports.
Attention !
L'utilisation de la partition uboot_strap pour y placer un bootscript peut servir à modifier la méthode de démarrage, sans avoir à recompiler un nouvel uBoot.
8. Les évolutions
8.1 Aujourd'hui
Après avoir passé plus d'une semaine à bidouiller mon premier NAS 6220, bien aidé par un Sheevaplug, le support officiel u-Boot a été réalisé en adaptant mes premiers travaux [10].
Le support officiel dans Linux des RaidSonic IB-NAS6210/6220 a été réalisé récemment lui aussi [11].
8.2 Demain
La bonne nouvelle est que depuis le début de l'écriture de cet article, des évolutions majeures pour un support officiel dans uBoot, Linux et Debian sont en cours.
D'autres distributions GNU/Linux telles que OpenWrt sont aussi en pleine intégration.
J'espère pour ma part trouver un peu de temps pour finaliser le support officiel dans Debian, si vous êtes intéressé pour contribuer, rendez-vous sur la liste debian-arm pour y échanger les idées d'améliorations.
9. Le générique de fin
Merci à tous ceux qui supportent mes trouvailles, bidouilles et astuces.
Merci à la famille qui supporte mes gadgets et l'encombrement des recherches.
Merci aux relecteurs et correcteurs.
Et à vous qui avez réussi à me lire jusqu'au bout...
Les références
[1] GNU.ORG : http://www.debian.org/intro/about
[2] La Quadrature Du Net : https://www.laquadrature.net/
[3] FAQ RaidSonic : http://www.raidsonic.de/en/faq.php?cid=5_4_3
[4] Sources - Coming soon :
http://www.raidsonic.de/data/Downloads/Sources/IB-NAS6220_Temporary%20Source%20code%20information.pdf
[5] Raspberry Pi Cable, TTL-232R-RPI : http://www.ftdichip.com/Products/Cables/RPi.htm
[6] Raspberry Pi Cable, TTL-232R-RPI Datasheet :
http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_RPi.pdf
[7] kwuartboot : http://www.solinno.co.uk/public/kwuartboot/
[8] OpenOCD JTAG : http://shop.kernelconcepts.de/product_info.php?products_id=132
[9] openocd project : http://openocd.sourceforge.net/
[10] kirkwood: add NAS62x0 board support :
http://git.denx.de/?p=u-boot/u-boot-marvell.git;a=commit;h=bbdbe3108da28dcd14dbff77473e6d5730ef5fc0
[11] ARM: kirkwood: Add support for RaidSonic IB-NAS6210/6220 using devicetree :
https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commit;h=f5520363532690f56e12126029864d9383d5203f
[12] HOWTO – OpenVPN : http://openvpn.net/index.php/open-source/documentation/howto.html
[13] Marvell Kirkwood : http://www.marvell.com/embedded-processors/kirkwood/
[14] Product Brief : http://www.marvell.com/embedded-processors/kirkwood/assets/88F6281-004_ver1.pdf
[15] Hardware Spec : http://www.marvell.com/embedded-processors/kirkwood/assets/HW_88F6281_OpenSource.pdf
[16] Functional Spec : http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf
[17] Applications type kirkwood : http://www.marvell.com/embedded-processors/kirkwood/applications.jsp
[18] Datasheets NAS6220 : http://www.raidsonic.de/data/products/icybox/IB-NAS6220/datasheet_ib-nas6220_e.pdf
[19] FAQ myakitio : http://wiki.myakitio.com/faq
[20] iSharing : http://www.workssys.com/iSharing.html
[21] agent workssys : http://www.workssys.com/agent.html
[22] Le protocol TR609 : https://fr.wikipedia.org/wiki/TR-069
[23] http://www.abertek.com.tw/en/page/enclosure/nas-system-ibnas6220.htm
[24] binaires précompilés uboot-custom, debian-installer-custom, et linux-kernel-custom disponibles sur mon site personnel (hébergé sur un SheevaPlug) : https://www.doukki.net/ib62x0/