Comment perdre la garantie de son NAS

Magazine
Marque
GNU/Linux Magazine
Numéro
156
Mois de parution
janvier 2013
Spécialité(s)


Résumé

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é.


Body

1. Introduction

Toutes les informations données dans cet article sont fournies « telles quelles », sans aucune garantie, et peuvent être aventureuses !

Photo 01-s

Figure 1

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...).

Photo 02-s

Figure 2

Photo 03-s

Figure 3

Spécifications matérielles
[13][14][15][16][17][18][23]

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 /  __/ | |                                       
        |_|  |_|\__,_|_|    \_/ \___|_|_|                                       
 _   _     ____              _                                                  
| | | |   | __ )  ___   ___ | |_                                                
| | | |___|  _ \ / _ \ / _ \| __|                                               
| |_| |___| |_) | (_) | (_) | |_                                                
 \___/    |____/ \___/ \___/ \__|
** MARVELL BOARD: DB-88F6281A-BP LE
                                                                                
U-Boot 1.1.4 (Oct 12 2009 - 13:41:53) Marvell version: 3.4.16
,,,                                                                                                                                                          
Soc: MV88F6281 Rev 3 (DDR2)                                                     
CPU running @ 1200Mhz L2 running @ 400Mhz                                       
SysClock = 400Mhz , TClock = 200Mhz                                             
,,,
Starting kernel ...                                                             
Uncompressing Linux... done, booting the kernel.                                
Linux version 2.6.35.4 (thom@11z) (gcc version 4.5.1 (GCC) ) #1 PREEMPT Sun Sep0
CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053177              
CPU: VIVT data cache, VIVT instruction cache                                    
Machine: Marvell DB-88F6281-BP Development Board                                
,,,
Memory: 256MB = 256MB total                                                     
Memory: 254360k/254360k available, 7784k reserved, 0K highmem                   
,,,
Kirkwood: MV88F6281-A1, TCLK=200000000.                                         
,,,
sata_mv sata_mv.0: version 1.28                                                 
sata_mv sata_mv.0: slots 32 ports 2                                             
scsi0 : sata_mv                                                                 
scsi1 : sata_mv                                                                 
ata1: SATA max UDMA/133 irq 21                                                  
ata2: SATA max UDMA/133 irq 21                                                  
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-b)
Scanning device for bad blocks                                                  
Bad eraseblock 1061 at 0x0000084a0000                                           
Bad eraseblock 1450 at 0x00000b540000                                           
Creating 3 MTD partitions on "orion_nand":                                      
0x000000000000-0x000000100000 : "u-boot"                                        
0x000000100000-0x000000700000 : "uImage"                                        
0x000000700000-0x000010000000 : "root"                                          
UBI: attaching mtd2 to ubi0                                                     
,,,
UBI: MTD device name:            "root"                                         
UBI: MTD device size:            249 MiB                                        
,,,
MV-643xx 10/100/1000 ethernet driver version 1.4                                
mv643xx_eth smi: probed                                                         
,,,
Welcome to Fedora
Press 'I' to enter interactive startup.
...

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

Photo 04-s

Figure 4

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>

Photo 05-s

Figure 5

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.

Photo 06

Figure 6

Le compte accédé est maintenant le compte « root ».

Photo 07-s

Figure 7

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 ».

Photo 08-s

Figure 8

Photo 09-s

Figure 9

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.

Photo 10-s 0

Figure 10

Photo 11-s 0

Figure 11

Photo 11bis-s

Figure 12

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.

Photo 12-s

Figure 13

Photo 13-s

Figure 14

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...

Photo 14

Figure 15

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/



Article rédigé par

Par le(s) même(s) auteur(s)

Maîtriser la sécurité de son accès Internet avec OpenWRT

Magazine
Marque
Linux Pratique
Numéro
117
Mois de parution
janvier 2020
Spécialité(s)
Résumé

Nous allons voir dans cet article comment installer le système GNU/Linux embarqué de type OpenWRT. OpenWRT est un système GNU/Linux pour les matériels embarqués et pour les matériels de types routeurs et box. Il constitue donc la part essentielle pour se libérer des GAFA. C’est un système léger, rapide et performant pour administrer et contrôler son accès Internet. Ce système est optimisé pour la gestion des ressources et supporte de nombreux routeurs.

Les derniers articles Premiums

Les derniers articles Premium

PostgreSQL au centre de votre SI avec PostgREST

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Dans un système d’information, il devient de plus en plus important d’avoir la possibilité d’échanger des données entre applications. Ce passage au stade de l’interopérabilité est généralement confié à des services web autorisant la mise en œuvre d’un couplage faible entre composants. C’est justement ce que permet de faire PostgREST pour les bases de données PostgreSQL.

La place de l’Intelligence Artificielle dans les entreprises

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’intelligence artificielle est en train de redéfinir le paysage professionnel. De l’automatisation des tâches répétitives à la cybersécurité, en passant par l’analyse des données, l’IA s’immisce dans tous les aspects de l’entreprise moderne. Toutefois, cette révolution technologique soulève des questions éthiques et sociétales, notamment sur l’avenir des emplois. Cet article se penche sur l’évolution de l’IA, ses applications variées, et les enjeux qu’elle engendre dans le monde du travail.

Petit guide d’outils open source pour le télétravail

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Ah le Covid ! Si en cette période de nombreux cas resurgissent, ce n’est rien comparé aux vagues que nous avons connues en 2020 et 2021. Ce fléau a contraint une large partie de la population à faire ce que tout le monde connaît sous le nom de télétravail. Nous avons dû changer nos habitudes et avons dû apprendre à utiliser de nombreux outils collaboratifs, de visioconférence, etc., dont tout le monde n’était pas habitué. Dans cet article, nous passons en revue quelques outils open source utiles pour le travail à la maison. En effet, pour les adeptes du costume en haut et du pyjama en bas, la communauté open source s’est démenée pour proposer des alternatives aux outils propriétaires et payants.

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Les listes de lecture

9 article(s) - ajoutée le 01/07/2020
Vous désirez apprendre le langage Python, mais ne savez pas trop par où commencer ? Cette liste de lecture vous permettra de faire vos premiers pas en découvrant l'écosystème de Python et en écrivant de petits scripts.
11 article(s) - ajoutée le 01/07/2020
La base de tout programme effectuant une tâche un tant soit peu complexe est un algorithme, une méthode permettant de manipuler des données pour obtenir un résultat attendu. Dans cette liste, vous pourrez découvrir quelques spécimens d'algorithmes.
10 article(s) - ajoutée le 01/07/2020
À quoi bon se targuer de posséder des pétaoctets de données si l'on est incapable d'analyser ces dernières ? Cette liste vous aidera à "faire parler" vos données.
Voir les 125 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous