A1 Image selber bauen Anbei eine Skript-Sammlung, mit der man ein normales Debian 11 von einem USB-Stick oder einer SD-Karte auf der NAS booten kann. Die Firmware der NAS wird dabei nicht verändert. Ohne den Stick/die Karte kann man die NAS also jederzeit wieder normal starten. Bei mir läuft das Debian mit SD-Karte auf einer NAS540. Grundsätzlich sollte es aber auch mit anderen Modellen gehen, die Firmware 5.xx haben und von der universal usb_key_func.sh unterstützt werden. Benutzung auf eigene Gefahr. Zum Bauen des Debian-NAS Images wird ein PC oder eine VM mit Debian/Ubuntu benötigt. Wer auf dem PC ein anderes Betriebssystem hat, kann z.B. VirtualBox (https://www.virtualbox.org/) eine VM erstellen und Ubuntu 20.04 (https://www.ubuntu.com/download/desktop) installieren. Es sollten etwa 3GB auf der Festplatte frei sein. Danach einen leeren Ordner erstellen, die Zip-Datei entpacken und das Skript starten: mkdir debian-nas cd debian-nas df -h . sudo apt-get install unzip wget wget -N https://seafile.servator.de/nas/zyxel/build/debian-nas-20230910.zip unzip debian-nas-20230910.zip mkdir kernel cd kernel wget -N https://seafile.servator.de/nas/zyxel/kernel/gcc-4.9-4.9.2-10_deb8u1-armhf.zip wget -N https://seafile.servator.de/nas/zyxel/kernel/linux-image-3.2.102-1-nas5xx-armhf.zip cd .. sudo bash -e ./build-debian.sh Das Skript läuft dann etwa 30 min. Am Ende werden noch verschiedene Daten abgefragt, mit denen das Image konfiguriert wird: - Hostname - IP-Adressen - admin-Passwort - Benutzername und Passwort für den Zugriff auf die Shares Das fertige Image wird dann im Unterordner "images" abgelegt. Wenn das Bauen abbricht kann man bei einfachen Fehlern (z.B. Internetzugang war unterbrochen) das Skript einfach nochmal starten. Will man aber komplett von vorne beginnen, muss man dafür sorgen das alle relevanten Prozesse und mounts beendet sind und der Ordner armhf gelöscht wird: sudo bash drushut-armhf.sh sudo bash drushut-armhf.sh sudo rm -rf armhf/ df -h . Vor dem entpacken einer neuen Version der debian-nas ZIP-Datei den Unterordner archives löschen mit: rm -rf archives/ unzip debian-nas-20230910.zip sudo bash -e ./build-debian.sh A2 Fertiges Image herunterladen Fertige Images gibt es hier: https://seafile.servator.de/nas/zyxel/images/ B Image verwenden Danach kann man das Image auf den USB-Stick/die SD-Karte schreiben, z.B.: dmesg | grep -A8 usb-storage | grep -E 'usb-storage|logical' ls -l images/ sudo umount /dev/sdx? gunzip -c images/debian-nas-bullseye-23.254-armhf.img.gz | sudo dd of=/dev/sdx bs=8M Den Namen "debian-nas-bullseye-23.254-armhf.img.gz" muss man dabei mit dem aktuellen Image-Namen ersetzen Außerdem muss "sdx" geändert werden auf den Geräte-Namen des USB Sticks/der SD-Karte. Als SD-Karte sollte man eine mit guter Qualität nehmen, ein Indiz hierfür kann die Bezeichnung "Class 10" sein. Im Zweifel wählt man eine, die z.B. auch für den Raspberry Pi geeignet ist. Der Stick/die Karte wird komplett gelöscht und mit dem Image überschrieben! Man sollte also zweimal nachschauen, ob man das richtige Gerät als Ziel angibt und keine Festplatte erwischt. Danach kann man den Stick/die Karte in die NAS einstecken und diese neu starten. Wenn man die NAS vorher schomal mit Debian lief sollte man die neu SD-Karte beim ersten mal mit dem alten Kernel booten. Dazu entweder per serieller Konsole den Bootloader unterbrechen und den Befehl b1 ausführen oder vor dem Wechsel der SD-Karte folgendes eingeben: sudo /firmware/sbin/info_setenv next_bootfrom 1 Der erste Boot dauert ca. 5 Minuten. Erst fängt die System-LED (bei NAS540 die 2. von oben) an zu blinken, wenn Debian gebootet ist geht die System-LED aus. Zugriff bekommt man per ssh mit Login als admin. :!: :!: :!: Der nächste Schritt ist gefährlich, da ein Fehler die NAS dauerhaft am Booten hindern kann :!: :!: :!: Es kann nicht schaden, wenn man ein passendes Kabel für den Zugriff auf die serielle Schnittstelle hat. Zum schreiben des Kernel und der Barebox-Skripte kann man folgendes Skript starten: sudo cp -p /boot/vmlinuz-3.2.0-6-nas5xx /boot/uImage sudo md5sum /boot/vmlinuz-3.2.0-6-nas5xx /boot/uImage sudo bash /usr/local/bin/zy-kernel2-write Wie der Name schon verrät, wird nur der zweite Kernel überschrieben, der erste bleibt unverändert. Die geschriebenen Boot-Skripte sind unter /boot/bareboxenv zu finden. In diesem Ordner gibt es auch eine Datei "config", diese sollte man nicht verändern, da hier hardwarespezifische Daten drin sind. Ich habe da nur im Skript /boot/bareboxenv/bin/boot zwei Zeilen für die Kernel-Parameter eingefügt. Wenn man nach dem Flashen doch noch nicht in den neuen Kernel booten möchte, kann man auch erstmal beim verbleibenden alten bleiben: sudo /firmware/sbin/info_setenv next_bootfrom 1 Manchmal dauert das Booten ein bißchen länger, weil systemd einen filesystem check durchführt. Wenn die NAS nicht bootet und man hat ein serielles Kabel angeschlossen, dann kann man sich von einem anderen Linux-System (das per USB angeschlossen ist) aus verbinden: cu -s 115200 -l /dev/ttyUSB0 Dann kann man nach dem Einschalten das booten durch drücken einer Taste unterbrechen. Ich habe die Barebox-Skripte so erweitert, das man durch einfaches eingeben von: b1 ...wieder mit dem alten Kernel booten kann. Hinweise: - Während der Erstellung des Images gehen evtl. zwei neue Ordner mit dem Namen boot und mount auf. Diese einfach ignorieren und erst schließen, wenn das Skript mit "OK" beendet. - Der USB Stick/SD Karte sollte mind. 2GB groß sein, bei SD-Karten sollte man Class 10 verwenden. - Sollte Debian aus irgendeinem Grund nicht booten, kommt man trotzdem per Telnet auf die NAS, zumindest bei statisch vergebener IP. Sobald Debian gebootet ist, wird der Telnet-Dienst aber beendet. - Bei den anderen Modellen sind die Chancen, das es auf Anhieb klappt am größten, wenn es der gleiche Chip ist, wenn also "Comcerto 2000 EVM" bei "cat /proc/cpuinfo" steht. Hintegrund: Da pivot_root nicht funktioniert und chroot zu eingeschränkt ist, habe ich mich für eine dritte Variante entschieden: Auf dem Stick ist eine FAT-Partition mit der usb_key_func.sh und eine EXT-Partition mit dem Debian. Die usb_key_func.sh wird ziemlich früh beim Starten der NAS aufgerufen, dadurch wir der Start des Zyxel Linux verhindert. Anschließend wird die EXT-Partion nach /newroot gemountet und dann alle nötigen Ordner (/bin, /lib /sbin, /usr usw.) ebenfalls gemounted. Dadurch ist es möglich, die Debian-Dienste direkt ohne Umwege auf der NAS zu starten. C Nach dem ersten Boot Per PuTTY/ssh verbinden und folgendes ausführen: sudo bash dru-resize.sh Dann neustarten, die Vergrößerung kann 5-10 Minuten dauern, danach folgt der übliche Piepton. D Ersteinrichtung über das Web Interface Ein paar Sachen sind mir noch aufgefallen, die man deaktivieren kann (manchmal auch muss), um die Performance zu verbessern: - System, Benachrichtigung, Ereignisse (System, Notification, Events) "CPU Auslastung" und "Durchschnittliche Last" (CPU usage/load average) deaktivieren, wenn man absichtlich etwas auf der NAS laufen hat, das viel Prozessor benötigt Dateisysteme (Filesystems) deaktivieren, wenn man über längere Zeit mehr als 80% der Festplatte belegt hat In beiden Fällen werden sonst alle 30 sek. Warn-Meldungen im Log eingetragen, womit die Log-Datei natürlich unnötig anwächst. - System, Energieverwaltung, Einstellungen, Überwachung (System, Power Management, Settings, Monitoring) deaktivieren Hierfür habe ich keine sinnvolle Begründung, ist bis jetzt nur eine Vermutung. - System, Überwachung (System, Monitoring) deaktivieren Beim aktivieren des iSCSI Target tritt sonst ein Fehler auf. Desweiteren benötigt die Überwachung selbst auch mehr Resourcen. - Einstellungen anwenden (apply changes) - Benutzerverwaltung, Password ändern (User Management, Change Password) Neues Passwort für den admin setzen - Netzwerk, Allgemein (Network, General) Computername der NAS festlegen - Netzwerk, Schnittstellen (Network, Interfaces) + Ethernet Device egiga0 wählen und IPv4-Adresse, Maske, Gateway und DNS-Server festlegen Optional egiga1 ebenfalls hinzufügen - Einstellungen anwenden (apply changes) - System neustarten - Datenspeicher, Dateisysteme (Storage, File Systems) Play-Button drücken um existierendes Dateisystem hinzuzufügen Auf "Select a file system" klicken, 10 Sekunden warten und einen Eintrag auswählen - Einstellungen anwenden (apply changes) - Dienste, NFS, Freigaben (Services, NFS, Shares) Freigaben hinzufügen - Dienste, NFS, Einstellungen (Services, NFS, Settings) Dienst aktivieren - Dienste, SMB/CIFS, Einstellungen (Services, SMB/CIFS, Settings) Dienst aktivieren - Einstellungen anwenden (apply changes) - Benutzerverwaltung, Benutzer (User Management, Users) Benutzer hinzufügen Shell: nologin Groups: everyone, users - Dienste, SMB/CIFS, Freigaben (Services, SMB/CIFS, Shares) Freigaben hinzufügen - Einstellungen anwenden (apply changes) Wenn man nach der Einrichtung OMV nicht mehr braucht, kann man die Dienste deaktivieren: sudo systemctl stop wsdd sudo systemctl disable wsdd sudo systemctl stop php7.4-fpm sudo systemctl disable php7.4-fpm sudo systemctl stop php8.2-fpm sudo systemctl disable php8.2-fpm sudo systemctl stop nginx sudo systemctl disable nginx sudo systemctl stop monit sudo systemctl disable monit sudo systemctl stop collectd sudo systemctl disable collectd sudo systemctl stop openmediavault-engined sudo systemctl disable openmediavault-engined sudo tar czvf ~/cron-openmediavault.tar.gz /etc/cron.*/openmediavault* sudo rm /etc/cron.*/openmediavault*