Sommaire:
- Mon idée
- Comment procéder?
- Contraintes
- Solutions
- Préparer le PC pour la compilation d’un kernel ARM
- Connaitre le pilote utilisé par la carte son USB
- Construire, configurer et compiler le kernel
- Acceder à la console série du NAS
- Installer le serveur TFTP
- Test du kernel
- Lancement du nouveau kernel avec l’installeur Debian
- Installation de Debian
- Création du uInitramfs
- Ecriture des changements dans la NAND
- Changements de u-boot
- Installation de Openmediavault
-
Mon idée
Je part d’une constatation simple: j’ai depuis toujours besoin d’avoir de la musique où que je sois, quoi que je fasse.
Quoi de mieux que pouvoir contrôler sa musique depuis n’importe quel endroit de la maison?
Jusqu’à peu, toute ma musique était stockée sur un PC, avec un câble jack-RCA pour envoyer ça dans mon ampli.
Maintenant que j’ai acheté mon Netgear ReadyNas Duo v2, c’est lui qui stocke ma playlist.. Mais ça me gêne de devoir laisser allumé le NAS + le PC pour avoir de la musique.
Donc, je cherche un moyen de contrôler la diffusion musicale de l’appartement par application mobile, et que ça soit ce gentil NAS qui s’occupe de jouer les musiques, et pourquoi pas, aussi streamer des radios.
-
Comment procéder?
J’ai déjà un système de diffusion musicale avec des haut-parleurs répartis dans l’appartement, tous reliés à l’ampli via le réseau de prises téléphonique (ces prises comportent 8 fils, seulement 2 sont utilisés pour le téléphones ou l’ADSL.)
Je compte trouvé un moyen d’ajouté une sortie audio (carte son USB possible?) sur le ReadyNas, afin qu’il s’occupe dirrectement d’envoyer le son à l’ampli, et chercher un moyen de le contrôler à distance (client MPD?)
-
Contraintes
Ce nas étant d’entrée de gamme, plusieurs problèmes se posent:
- Pas de sortie audio
- Le kernel d’origine ne prend pas en charge les cartes son USB
- Le ReadyNas Duo v2 dispose d’une système d’exploitation Debian trop ancien ce qui ne permet pas d’installer OpenMediaVault ou un client MPD via les dépots
-
Solutions
L’ajout d’une sortie audio se fera par une carte son USB avec sortie S/PDIF (pour profiter d’une liaison numérique entre le NAS et l’ampli).
Afin qu’elle soit reconnue, il faudra compiler sois-même un noyaux en y intégrant les modules audio USB.
Coté système d’exploitation, je choisis d’installer Debian 7.11 avec OpenMediaVault 2.0 (OMV n’est pas encore installable proprement sur Debian 8)
-
Préparer le PC pour la compilation d’un kernel ARM
Afin de pouvoir compiler un noyaux ARM, je met à jour mon système et j’installe l’environnement de Compilation Croisé (Cross-compilation). Etant sous ArchLinux voilà coùmment je prossède :
[kroogy@melon ~]$ yaourt -Syu Mot de passe de kroogy : Mot de passe : :: Synchronisation des bases de données de paquets... core 120,8 KiB 549K/s 00:00 [######################] 100% extra 1755,8 KiB 1203K/s 00:01 [######################] 100% community 3,7 MiB 1123K/s 00:03 [######################] 100% multilib 184,4 KiB 991K/s 00:00 [######################] 100% [kroogy@melon]$ yaourt -S arm-linux-gnueabihf-binutils arm-linux-gnueabihf-gcc arm-linux-gnueabihf-glibc arm-linux-gnueabihf-linux-api-headers
-
Connaitre le pilote utilisé par la carte son USB
Je branche la carte son USB à mon PC de tous les jours et j’exécute :
[kroogy@melon ~]$ usb-devices [...] T: Bus=02 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=040d ProdID=3408 Rev=00.61 S: Manufacturer=VIA Technologies Inc. S: Product=VIA USB Dongle C: #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio I: If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio I: If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio I: If#= 3 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid [...]
Le module utilisé par la carte son, à ajouter au noyau, sera SND_USB_AUDIO.
-
Construire, configurer et compiler le kernel
Téléchargement du dernier noyaux disponible (4.8.6) et extraction:
[kroogy@melon ~]$ mkdir kernel_nas && cd kernel_nas [kroogy@melon ~]$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.6.tar.gz [kroogy@melon ~]$ tar -xzvf linux-4.8.6.tar [kroogy@melon ~]$ cd linux-4.8.6
Pour la configuration du noyaux, je me base sur le travail effectué par l’excellent http://natisbad.org en récupérant le fichier config-4.4.1.duo_v2 qu’il à déjà optimisé en faisant une analyse physique complète de ce NAS.
Si vous souhaitez avoir la même configuration que moi, voici mon fichier de conf pour le kernel 4.8.6. Vous pouvez alors sauter l’étape de configuration.
[kroogy@melon ~]$ wget http://natisbad.org/nas-kernels/config-4.4.1.duo_v2 [kroogy@melon ~]$ mv config-4.4.1.duo_v2 .config [kroogy@melon ~]$ export ARCH=arm [kroogy@melon ~]$ export CROSS_COMPILE=arm-linux_gnueabihf-
Comme son fichier de configuration est conçue pour une version de noyaux plus ancienne, le fichier doit être mis à jour. Cela se fait avec make oldconfig qui pose interactivement des questions portants sur les nouvelles options. N’ayant pas besoin des nouveautés, j’utilise make oldnoconfig qui va répondre négativement à toutes les questions.
[kroogy@melon ~]$ make oldnoconfig scripts/kconfig/conf --olddefconfig Kconfig # # configuration written to .config # [kroogy@melon ~]$ make menuconfig
Là, il s’agit d’integrer le module SND_USB_AUDIO au Kernel.
Il se situe dans Device Drivers / Sound card support / Advanced Linux Sound Architecture / USB sound devices (NEW) / USB Audio/MIDI driver
Ne pas oublier de sauvegarder, puis on peut quitter.
Si ce n’est pas déjà fait, cherchez-vous un café.. Le long travail commence: la compilation!
Il s’agit de contruire une première image du kernel (zImage). Il faudra ensuite y intégrer le fichier .dtb (Device Tree Blob), compiler à partir du .dts (Device Tree Source), qui contient toutes les informations sur la connections des GPIO du processeur comme les boutons, les led, les capteurs ou encore la structure de la mémoire nand. Et enfin, compilation du kernel uImage servant au boot du système sur le périphérique.
Le paramètre LOADADDR=0x00008000 indique l’endroit de la NAND où il sera (plus tard) écrit.
Tout comme avant, pour vous fair gagner de temps et dans un élan de générosité incroyable, je vous propose:
de gagner environ 22min en téléchargent zImage compilé par mes soins, et de sauter l’étapede gagner environ 27min en téléchargent uImage compilé par mes soins, et de sauter l’étapede gagner environ 50min en téléchargent zImage ET zImage compilés par mes soins, et de sauter les deux étapes
Il n’est pas gentil le kroogy?
Voici par exemple le fichier « kirkwood-netgear_readynas_duo_v2.dts »:
/* * Device Tree file for NETGEAR ReadyNAS Duo v2 * * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ /dts-v1/; #include "kirkwood.dtsi" #include "kirkwood-6282.dtsi" / { model = "NETGEAR ReadyNAS Duo v2"; compatible = "netgear,readynas-duo-v2", "netgear,readynas", "marvell,kirkwood-88f6282", "marvell,kirkwood"; memory { /* 256 MB */ device_type = "memory"; reg = <0x00000000 0x10000000>; }; chosen { bootargs = "console=ttyS0,115200n8 earlyprintk"; stdout-path = &uart0; }; ocp@f1000000 { pinctrl: pin-controller@10000 { pmx_button_power: pmx-button-power { marvell,pins = "mpp47"; marvell,function = "gpio"; }; pmx_button_backup: pmx-button-backup { marvell,pins = "mpp45"; marvell,function = "gpio"; }; pmx_button_reset: pmx-button-reset { marvell,pins = "mpp13"; marvell,function = "gpio"; }; pmx_led_blue_power: pmx-led-blue-power { marvell,pins = "mpp31"; marvell,function = "gpio"; }; pmx_led_blue_activity: pmx-led-blue-activity { marvell,pins = "mpp38"; marvell,function = "gpio"; }; pmx_led_blue_disk1: pmx-led-blue-disk1 { marvell,pins = "mpp23"; marvell,function = "gpio"; }; pmx_led_blue_disk2: pmx-led-blue-disk2 { marvell,pins = "mpp22"; marvell,function = "gpio"; }; pmx_led_blue_backup: pmx-led-blue-backup { marvell,pins = "mpp29"; marvell,function = "gpio"; }; pmx_poweroff: pmx-poweroff { marvell,pins = "mpp30"; marvell,function = "gpio"; }; }; clocks { g762_clk: g762-oscillator { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <8192>; }; }; i2c@11000 { status = "okay"; rs5c372a: rs5c372a@32 { compatible = "ricoh,rs5c372a"; reg = <0x32>; }; g762: g762@3e { compatible = "gmt,g762"; reg = <0x3e>; clocks = <&g762_clk>; /* input clock */ fan_gear_mode = <0>; fan_startv = <1>; pwm_polarity = <0>; }; }; serial@12000 { status = "okay"; }; sata@80000 { status = "okay"; nr-ports = <2>; }; }; gpio-leds { compatible = "gpio-leds"; pinctrl-0 = < &pmx_led_blue_power &pmx_led_blue_activity &pmx_led_blue_disk1 &pmx_led_blue_disk2 &pmx_led_blue_backup >; pinctrl-names = "default"; power_led { label = "status:blue:power_led"; gpios = <&gpio0 31 GPIO_ACTIVE_LOW>; default-state = "keep"; }; activity_led { label = "status:blue:activity_led"; gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; }; disk1_led { label = "status:blue:disk1_led"; gpios = <&gpio0 23 GPIO_ACTIVE_LOW>; }; disk2_led { label = "status:blue:disk2_led"; gpios = <&gpio0 22 GPIO_ACTIVE_LOW>; }; backup_led { label = "status:blue:backup_led"; gpios = <&gpio0 29 GPIO_ACTIVE_LOW>; }; }; gpio-keys { compatible = "gpio-keys"; pinctrl-0 = <&pmx_button_power &pmx_button_backup &pmx_button_reset>; pinctrl-names = "default"; power-button { label = "Power Button"; linux,code = <KEY_POWER>; gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; }; reset-button { label = "Reset Button"; linux,code = <KEY_RESTART>; gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; }; backup-button { label = "Backup Button"; linux,code = <KEY_COPY>; gpios = <&gpio1 13 GPIO_ACTIVE_LOW>; }; }; gpio-poweroff { compatible = "gpio-poweroff"; pinctrl-0 = <&pmx_poweroff>; pinctrl-names = "default"; gpios = <&gpio0 30 GPIO_ACTIVE_LOW>; }; regulators { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <0>; usb3_regulator: usb3-regulator@1 { compatible = "regulator-fixed"; reg = <1>; regulator-name = "USB 3.0 Power"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-active-high; regulator-always-on; regulator-boot-on; gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>; }; }; }; &nand { status = "okay"; partition@0 { label = "u-boot"; reg = <0x0000000 0x180000>; read-only; }; partition@180000 { label = "u-boot-env"; reg = <0x180000 0x20000>; }; partition@200000 { label = "uImage"; reg = <0x0200000 0x600000>; }; partition@800000 { label = "minirootfs"; reg = <0x0800000 0x1000000>; }; partition@1800000 { label = "jffs2"; reg = <0x1800000 0x6800000>; }; }; &mdio { status = "okay"; ethphy0: ethernet-phy@0 { /* Marvell 88E1318 */ reg = <0>; }; }; ð0 { status = "okay"; ethernet0-port@0 { phy-handle = <ðphy0>; }; }; &pciec { status = "okay"; }; &pcie0 { status = "okay"; };
[kroogy@melon linux-4.8.6]$ time LOADADDR=0x00008000 make -j 16 scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release WRAP arch/arm/include/generated/asm/clkdev.h WRAP arch/arm/include/generated/asm/bitsperlong.h WRAP arch/arm/include/generated/asm/cputime.h WRAP arch/arm/include/generated/asm/current.h UPD include/config/kernel.release [...] OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready real 3m40,187s user 18m48,753s sys 1m16,253s [kroogy@melon linux-4.8.6]$ cat arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dtb >> arch/arm/boot/zImage
[kroogy@melon linux-4.8.6]$ time LOADADDR=0x00008000 make uImage CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h […] Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImage Image Name: Linux-4.8.6.duov2 Created: Thu Nov 24 11:29:37 2016 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4419984 Bytes = 4316.39 kB = 4.22 MB Load Address: 00008000 Entry Point: 00008000 Kernel: arch/arm/boot/uImage is ready real 13m50,535s user 13m15,967s sys 1m8,950s
Le fichier uImage peut être copié dans le dossier tftp du serveur ainsi que sur une clef USB.
[kroogy@melon ~]$ sudo cp arch/arm/boot/uImage /srv/tftp/ [kroogy@melon ~]$ sudo cp arch/arm/boot/uImage /run/media/kroogy/cle_usb/
-
Acceder à la console série du NAS
L’accès série est absolument nécessaire. Il représente la seul façon de communiquer avec le NAS, car la connexion SSH ne sera pas encore active pendant la phase de boot, et il ne dispose pas de sortie graphique (en tout cas pas encore.. tout se rajoute 😀 )
J’utilise un petit module chinois USB vers rs232 qui se trouve à 1€ sur ebay. Veillez bien à croiser RX et TX (ce que le PC envoi, le NAS le reçoit, et vice versa..).
Pas besoin de connecter le +3.3V ou le GND. Le module est alimenté par USB.
La connection se fait à un débit de 115200b/s.
[kroogy@melon ~]$ yaourt -S minicom
Le ReadyNas Duo est éteint et débranché, lancement de la console d’administration:
[kroogy@melon ~]$ sudo minicom Bienvenue avec minicom 2.7 OPTIONS: I18n Compilé le Dec 8 2016, 18:45:36. Port /dev/ttyUSB0, 18:58:58 Tapez CTRL-A Z pour voir l'aide concernant les touches spéciales
Au branchement de l’alimentation électrique du NAS et sans aucune action sur le bouton Power, voilà ce qu’on obtiens:
__ __ _ _ | \/ | __ _ _ ____ _____| | | | |\/| |/ _` | '__\ \ / / _ \ | | | | | | (_| | | \ V / __/ | | |_| |_|\__,_|_| \_/ \___|_|_| _ _ ____ _ | | | | | __ ) ___ ___ | |_ | | | |___| _ \ / _ \ / _ \| __| | |_| |___| |_) | (_) | (_) | |_ \___/ |____/ \___/ \___/ \__| ** MARVELL BOARD: DB-88F6282A-BP LE U-Boot 1.1.4 (Feb 6 2012 - 14:40:46) Marvell version: 3.4.27 Netgear version: Uboot-1_1_4-NetgearDUOV3-V1008 U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006D0120 Soc: MV88F1155 Rev 1 (DDR3) CPU running @ 1600Mhz L2 running @ 533Mhz SysClock = 533Mhz , TClock = 200Mhz DRAM unknown CAL tRP = 8 tRAS = 20 tRCD=8 DRAM CS[0] base 0x00000000 size 256MB DRAM Total size 256MB 16bit width Addresses 8M - 0M are saved for the U-Boot usage. Mem malloc Initialization (8M - 7M): Done NAND:128 MB Flash: 0 kB CPU : Marvell Feroceon (Rev 1) Streaming disabled Write allocate disabled USB 0: host mode PEX 0: PCI Express Root Complex Interface PEX interface detected Link X1 Plug On and Power down, Please Switch On !
Il nous invite donc à « Power On » la bête, mais attention, il va falloir appuyer sur n’importe quelle touche lors du BootWait:
Switch On ! Net: egiga0 [PRIME] Hit any key to stop autoboot: 2 <<-- BootWait de 3secondes
Si vous voyez apparaître ceci, félicitation, je vous présente la console d’administration de uBoot!
Net: egiga0 [PRIME] Hit any key to stop autoboot: 0 Marvell>>
-
Installer le serveur TFTP
Si depuis 10minutes vous vous demandez si le noyaux précédemment créé va fonctionner, réponse dans 30secondes. Notre nouveau kernel ayant déjà été déplacer dans /var/tftp/uImage, nous pouvons lancer la réception de celui-ci par TFTP, sur le NAS, et le tester:
Marvell>> tftpboot 1200000 uImage Using egiga0 device TFTP from server 192.168.5.116; our IP address is 192.168.5.102 Filename 'uImage'. Load address: 0x1200000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################## done Bytes transferred = 4530180 (452004 hex)
Marvell>> set bootargs console=ttyS0,115200 earlyprintk Marvell>> bootm 0x1200000 ## Booting image at 01200000 ... Image Name: Linux-4.8.6.duov2 Created: 2016-11-24 15:09:39 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4530116 Bytes = 4.3 MB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.8.6.duov2 (kroogy@melon) (gcc version 6.1.1 20166 [ 0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=000539f [...] [ 3.808476] Kernel panic - not syncing: VFS: Unable to mount root fs on unkn) [ 3.816779] ---[ end Kernel panic - not syncing: VFS: Unable to mount root f)
Je ne pensais jamais pouvoir dire ça un jour, mais le Kernel Panic signifie que le noyaux est fonctionnel! Il n’arrive juste pas à trouver le système. Normal, on ne l’installe que dans la prochaine partie.
-
Lancement du nouveau kernel avec l’installeur Debian
Voulant installer Debian 7, je télécharge la net install de Wheezy, et la copie dans le répertoire du serveur TFTP.
[kroogy@melon linux-4.8.6]$ wget ftp://ftp.fr.debian.org/debian/dists/wheezy/main/installer-armel/current/images/kirkwood/netboot/marvell/guruplug/uInitrd [kroogy@melon linux-4.8.6]$ sudo mv uInitrd /srv/tftp/
A partir de là, tout se fera dans la console série du ReadyNas Duo v2.
Réception du Kernel testé et de l’installeur Debian Wheezy:
Marvell>> tftpboot 1200000 uImage Using egiga0 device TFTP from server 192.168.5.116; our IP address is 192.168.5.102 Filename 'uImage'. Load address: 0x1200000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################## done Bytes transferred = 4530180 (452004 hex) Marvell>> tftpboot 2000000 uInitrd Using egiga0 device TFTP from server 192.168.5.116; our IP address is 192.168.5.102 Filename 'uInitrd'. Load address: 0x2000000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################### done Bytes transferred = 4835978 (49ca8a hex)
Le kernel et l’install étants chargés en mémoire, respectivement à 0x1200000 et 0x2000000, on peut démarrer l’installation avec le nouveau kernel:
Marvell>> set bootargs console=ttyS0,115200 earlyprintk Marvell>> bootm 0x1200000 0x2000000 ## Booting image at 01200000 ... Image Name: Linux-4.8.6.duov2 Created: 2016-11-24 15:09:39 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4530116 Bytes = 4.3 MB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK ## Loading Ramdisk Image at 02000000 ... Image Name: debian-installer ramdisk Created: 2016-05-30 22:26:50 UTC Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 4835914 Bytes = 4.6 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Starting kernel ... Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.8.6.duov2 (kroogy@melon) (gcc version 6.1.1 20166 [ 0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=000539f [...]
-
Installation de Debian
[…]
-
Création du uInitramfs
uInitramfs est lanceé par le noyaux, une fois que ce dernier a préparé tous les pilotes nécessaires, et s’occupe de fournir un système fonctionnel à l’utilisateur.
Pour générer l’uInitramfs, il nous faut chrooter Debian…Pas le choix, on recommence le lancement du nouveau kernel avec l’installeur Debian et l’installation de Debian en stoppant l’installation à Partition disks pour exécuter un shell.
~ # mount /dev/sdb1 /mnt ~ # mount -o bind /proc /mnt/proc/ ~ # mount -o bind /dev /mnt/dev ~ # mount -o bind /dev/pts /mnt/dev/pts/ ~ # mount -o bind /sys /mnt/proc/sys ~ # chroot mnt /bin/bash root@NAS:/# root@NAS:/# apt-get update root@NAS:/# apt-get upgrade root@NAS:/# apt-get install initramfs-tools u-boot-tools root@NAS:/# mkinitramfs -o /tmp/initramfs-4.4.1 -r /dev/mapper/mvg-slash -v […] Building cpio /tmp/initramfs-4.4.1 initramfs root@NAS:/# mkimage -A arm -O linux -T ramdisk -C none -a 0x00000000 -e 0x00000000 -n initramfs -d /tmp/initramfs-4.4.1 /boot/uInitramfs Image Name: initramfs Created: Thu Nov 24 21:40:40 2016 Image Type: ARM Linux RAMDisk Image (uncompressed) Data Size: 2768478 Bytes = 2703.59 kB = 2.64 MB Load Address: 00000000 Entry Point: 00000000
-
Ecriture des changements dans la NAND
💡 A cette étape, il faut avoir copier le uImage (kernel) de la clef USB (celle de la 6e partie) vers /boot/uImage
Installation du logiciel permettant la gestion de la NAND et vérification de partitions:
root@NAS# apt-get install mtd-utils root@NAS:# cat /proc/mtd dev: size erasesize name mtd0: 00180000 00020000 "u-boot" mtd1: 00020000 00020000 "u-boot-env" mtd2: 00600000 00020000 "uImage" mtd3: 01000000 00020000 "minirootfs" mtd4: 06800000 00020000 "jffs2"
Ecriture du noyaux, du uInitramfs en mémoire et contrôle par contrôle de somme sha256 l’intégrité des données.
root@NAS# flash_erase /dev/mtd2 0 0 root@NAS# nandwrite -p /dev/mtd2 /boot/uImage root@NAS# dd if=/dev/mtd2 of=/tmp/o bs=`wc -c /boot/uImage | cut -d' ' -f1` count=1 1+0 records in 1+0 records out 3664035 bytes (3.7 MB) copied, 0.736338 s, 5.0 MB/s root@NAS# sha256sum /tmp/o /boot/uImage c1e844c09bbf39bb09ff25c024379ae935fd088f0d1ae221fef276845ee38e1d /tmp/o c1e844c09bbf39bb09ff25c024379ae935fd088f0d1ae221fef276845ee38e1d /boot/uImage root@NAS# flash_erase /dev/mtd3 0 0 root@NAS# nandwrite -p /dev/mtd3 /boot/uInitramfs root@NAS# dd if=/dev/mtd3 of=/tmp/o bs=`wc -c /boot/uInitramfs | cut -d' ' -f1` count=1 1+0 records in 1+0 records out 2768752 bytes (2.8 MB) copied, 0.596774 s, 4.6 MB/s root@hal# sha256sum /tmp/o /boot/uInitramfs 365d726d4d098d370b65f6d3295c3f08360939213bc4884c83d1c849ae6113ab /tmp/o 365d726d4d098d370b65f6d3295c3f08360939213bc4884c83d1c849ae6113ab /boot/uInitramfs
-
Changements de u-boot
La fin est proche !
Il ne reste plus qu’à redémarrer le NAS, ouvrir la console de uBoot via le BootWait, et l’informer de la partition sur laquel est le système. Dans mon ca, /dev/mapper/mvg-slash.
Marvell>> setenv bootargs root=/dev/mapper/mvg-slash console=ttyS0,115200 earlyprintk rootdelay=10 Marvell>> saveenv Marvell>> boot
Voilà, l’environnement Debian est installé sur un kernel 4.6.8!
-
Installation de Openmediavault
L’installation du système d’administration du NAS est simple, et très bien décrite là http://forum.openmediavault.org/index.php/Thread/5302-Howto-install-OpenMediaVault-on-Debian-7-x-Wheezy/
echo "deb http://packages.openmediavault.org/public stoneburner main" > /etc/apt/sources.list.d/openmediavault.list apt-get update # Note: You will get a warning that the PGP Key can't be found. Thats fine. apt-get install openmediavault-keyring postfix # Note: You will get a warning that the package 'openmediavault-keyring' can't be authenticated. You're fine to ignore that warning and install it anyways. apt-get update apt-get install openmediavault omv-initsystem shutdown -r now
Une fois fait, écrivez l’IP du nas dans votre naviguateur.
Utilisateur: admin
Password: openmediavault
Pour le reste, je vous laisse la lourde tâche de choisir parmis les nombreux tutos expliquants la configuration d’OMV.
It is possible to run Debian on ReadyNAS V2 without compiling the kernel. It is possible to use stock debian images. Example for Buster:
wget http://cdn-fastly.deb.debian.org/debian/dists/buster/main/installer-armel/current/images/kirkwood/netboot/marvell/guruplug/uInitrd
wget http://cdn-fastly.deb.debian.org/debian/dists/buster/main/installer-armel/current/images/kirkwood/device-tree/kirkwood-netgear_readynas_duo_v2.dtb
wget http://cdn-fastly.deb.debian.org/debian/dists/buster/main/installer-armel/current/images/kirkwood/netboot/vmlinuz-4.19.0-11-marvell
cat kirkwood-netgear_readynas_duo_v2.dtb >> vmlinuz-4.19.0-11-marvell
mkimage -A arm -T kernel -C none -a 8000 -e 00008000 -n « Debian kernel » -d vmlinuz-4.19.0-11-marvell uImage
Salut, merci pour l’article une petite question cependant penses tu que c’est applicable pour un debian 9 et omv 4?
hi have found your genius way to start a debian kernel on the readynas can you send my new links to the files ?
Sorry, but I do not use my Readynas anymore, so I have nothing newer to send you.
However, you can compile a new kernel yourself by following the article.
Könnten Sie mir helfen bei mein readynas duo v2?
How can I help you?