U-Boot Update
Nachdem der USB Stick mit mit dem Debian Grundsystem vorhanden ist, kommt nun der eigentliche Bootmanager anteil dran. Dazu gehen wir die Punkte von Doozan U-Boot Tutorial durch.
ACHTUNG dieser Anteil kann zum Defekt des NAS führen, wenn er falsch ausgeführt wird. Daher ganz genau die Anleitung von Doozan im Original lesen. Bei mir handelt es sich nur um einen begleitende Erklärung.
Download des für das Zyxel NAS325v2 passenden u-Boot Images von der Doozan Seite. Bei mir ist das aktuelle Image, dass "uboot.2017.07-tld-1.nsa325.bodhi.tar". Download des Skriptes "uboot.2016.05-tld-1.environment.scr" von der folgenden Doozan Seite im Anhang aus dem Post vom August 07, 2016 02:57PM. Die Dateien müssen jetzt als root auf den USB Stick kopiert werden.
sudo -i
cp /home/icke/Download/uboot.2017* /media/sdb/ [Image]
cp /home/icke/Download/uboot.2016* /media/sdb/boot/ [Skript]
cp /home/icke/Download/uboot.2017* /media/sdb/ [Image]
cp /home/icke/Download/uboot.2016* /media/sdb/boot/ [Skript]
Jetzt den USB Stick auf der NAS Platine in einen der hinterer Port stecken und mit Verbindung über das UART USB Kabel starten. Wenn man schon einen neueren Bootmanager z.B. U-Boot 2016.05 drauf hat kann man mit dem präparierten USB Stick alle gleich genanten Schritte durchgehen und Schritt 8 überspringen, da man sich schon in einem Debian System befindet und alle Befehle funktionieren. Anmeldung als root mit Passwort "root".
Wenn noch die Originalfirmware von Zyxel drauf ist klappen die folgenden Schritte nicht so ohne weiteres, da die Befehle nicht erkannt werden. Man muss den Bootvorgang unterbrechen und die Umgebungsvariablen temporär festgelegt bevor man im Debian System ist.
usb start
ext2load usb 0:1 0x800000 /boot/uboot.2016.05-tld-1.environment.scr
source 0x800000
printenv
setenv devices 'usb ide'
setenv ethaddr xx:xx:xx:xx:xx:xx (replaced with my adress)
setenv dtb_file '/boot/dts/kirkwood-nsa325.dtb'
boot
ext2load usb 0:1 0x800000 /boot/uboot.2016.05-tld-1.environment.scr
source 0x800000
printenv
setenv devices 'usb ide'
setenv ethaddr xx:xx:xx:xx:xx:xx (replaced with my adress)
setenv dtb_file '/boot/dts/kirkwood-nsa325.dtb'
boot
Anschließend kann man sich auch hier als root anmelden und falls notwendig mit apt-get install mtd-utils die Toolsammlung zum Schreiben des Speichers installieren. Der Schritt 8 ist dann unbedingt durchzuführen.
Nun gehen wir Schritt für Schritt die Punkte die A. Flashing Instruction ab:
1. Kontrolle bestimmter Konfigurationsdateien. Bei mir passten die Default Werte.
cat /etc/fw_env.config
cat /proc/mtd
cat /proc/mtd
2. Kontrolle ob die MAC Adresse gesetzt ist. Bei mir ist die Adress mit 00:50:43:00:02:02 gesetzt.
fw_printenv ethaddr
3. Sichern des aktuelle Bootmanagers und der Umgebungsvariablen
nanddump --noecc --omitoob -l 0x80000 -f mtd0 /dev/mtd0
fw_printenv > current_envs.txt
fw_printenv > current_envs.txt
4. Kontrolle, ob defekte Blöcke im 1 MB des Speichers sind. Es dürfen keine Fehler zwischen dem Block 0 und Block 7 sein. bei mir ist ein fehler in Block 100, daher kein Problem.
dmesg | grep -i 'bad'
[ 2.413231] Scanning device for bad blocks
[ 2.417731] Bad eraseblock 100 at 0x0000000c80000
5. Auspacken des neuen Bootmanagers
mv /uboot.2017.07-tld-1.nsa325.bodhi.tar /tmp/
cd /tmp
tar -xf uboot.2017.07-tld-1.nsa325.bodhi.tar
6. Löschen von mtd0 (Achtung hier kann das Gerät beschädigt werden)
flash_erase /dev/mtd0 0 4
Erase Total 4 Units
Performing Flash Erase of length 131072 at offset 0x60000 done
7. Neuen Bootmanager in Speicher schreiben (Achtung hier kann das Gerät beschädigt werden)
nandwrite /dev/mtd0 uboot.2017.07-tld-1.nsa325.mtd0.kwb
Writing data to block 0 at offset 0x0 Writing data to block 1 at offset 0x20000 Writing data to block 2 at offset 0x40000 Writing data to block 3 at offset 0x60000
8. Neue Umgebungsvariablen in den Speicher schreiben, wenn man ein Upgrade von u-Boot 2016.05 durchführt kann man diesen Schritt überspringen. X ersetzten durch die Werte aus der current_envs.txt.
fw_printenv > current_envs.txt
/usr/sbin/flash_erase /dev/mtd0 0xc0000 1
/usr/sbin/nandwrite -s 786432 /dev/mtd0 uboot.2017.07-tld-1.environment.img
fw_setenv arcNumber 4495
fw_setenv machid
fw_setenv mtdparts 'xxxxxxxxx'
fw_setenv ethaddr 'xx:xx:xx:xx:xx:xx'
fw_setenv dtb_file '/boot/dts/kirkwood-nsa325.dtb'
/usr/sbin/flash_erase /dev/mtd0 0xc0000 1
/usr/sbin/nandwrite -s 786432 /dev/mtd0 uboot.2017.07-tld-1.environment.img
fw_setenv arcNumber 4495
fw_setenv machid
fw_setenv mtdparts 'xxxxxxxxx'
fw_setenv ethaddr 'xx:xx:xx:xx:xx:xx'
fw_setenv dtb_file '/boot/dts/kirkwood-nsa325.dtb'
9. Umgebungsvariablen prüfen
fw_printenv
10. Überspringen, da eine UART USB Verbindung besteht
11. Neustart der Platine und Kontrolle der Ausgabe
reboot
U-Boot 2017.07-tld-1 (….)
Der Bootmanager ist nun aktualisiert auf U-Boot 2017.07 und das Debian System vom USB-Stick sollte starten. Wenn alles geklappt hat könnt ihr euch per SSH als root Nutzer mit dem Passwort "root" unter dem Hostnamen "debian" einloggen.