Zyxel NSA320S és a Debian Linux – 4. rész

A Debian Linux telepítési kísérlet végkifejlete még a második bejegyzés megírásakor is kérdéses volt számomra, de jelenleg már egy jól működő Debian Linux fut az NSA320S vason. Ebben a bejegyzésben a telepítés leírását és a telepítéshez létrehozott fájlokat osztom meg.

Powered by Debian
Talán be kellene szereznem egy Debian Powered matricát az NSA320S-re.

Fontos!  Szándékosan nem egy könnyen követhető step-by-step leírás készült. Senkit nem bíztatok arra, hogy pusztán a leírásomra alapozva belekezdjen egy NAS szoftverének vagy hardverének módosításába. Egyetlen célom, hogy a rendelkezésemre álló információkat megosszam azokkal, akik szintén hasonló megoldáson törik a fejüket. Minden hozzászólást, infót és visszajelzést szívesen fogadok, de a leírásom felhasználásából fakadó károkért felelősséget vállalni nem tudok.

Az ARMv5 vason bootolható Debian alaprendszer telepítése

Szerencsére nem fájlonként kell összevadászni egy ARMv5 alaprendszert, hanem legalább két lehetőség van.

  1. A debootstrap csomag segítségével bármilyen Debian rendszeren (nem kell ARM, tökéletes egy i386/amd64) létrehozható egy alap rootfs. A kész alaprendszert csak át kell másolni az adott vason elérhető médiára, ami lehet egy pendrive vagy SATA lemez adott partíciója vagy akár egy NFS szerver is.
  2. Egy Debian netboot telepítő bootolásával még egyszerűbb a helyzet, mert a telepítés mellett beállítások nagy részét elvégzi a Debian installer.

Én első körben a debootstrap módszerrel tettem próbát, de a kész kernellel a Debian installer már egy sokkal kényelmesebb lehetőséget kínál.

Debian installer használata az NSA320S eszközön

A Debian ARM netboot telepítő bebootolható az NSA320S vason, ekkor a konzolos Debian telepítő felületén kell csak végigfutnunk egy működőképes alaprendszer telepítéséhez. Természetesen itt nem egy Debian telepítő ISO letöltésével, lemezre írásával indulnak a teendők.

  1. A működőképes 3.19 kernel kész. (Az előző bejegyzések írásakor még 3.18.4 volt aktuális, de azóta kijött a 3.19 is.)
  2. Egy ARMv5 vason használható netboot telepítő initrd letölthető a Debian mirrorokról.
  3. Az U-Boot segítségével bebootolható a kernel és a telepítő initrd pendriveról vagy akár TFTP szerverről is.
  4. Létrehozható olyan összeállítás, amelynél már a telepítéshez sem (!) szükséges soros konzol.
  5. Az U-Boot megfelelő beállításával több kernel és rootfs között is válthatunk, illetve létrehozhatunk egy nekünk tetsző bootsorrendet vagy recovery lehetőséget is.
NSA320S Debian Installer
A Debian Installer használatával egyszerűbb az élet.

Az U-Boot beállítása

Az alábbi parancsok soros/TTL konzolon adhatóak ki.

setenv ipaddr 192.168.1.214
setenv netmask 255.255.255.0
setenv serverip 192.168.1.134
setenv bootargs_console 'console=ttyS0,115200'
setenv bootargs_mtdpartitions 'mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2)'
setenv init_usb 'mw.l f1010100 1361c000;usb reset'
setenv init_eth 'phyWrite 1 0x16 0x3;phyWrite 1 0x10 0x1017;phyWrite 1 0x11 0x4408;phyWrite 1 0x16 0;phyWrite 1 0x4 0x1e1;phyWrite 1 0x9 0x300;phyWrite 1 0x10 0x3860;phyWrite 1 0x0 0x9140'
setenv init_sata 'mw.l f1010104 c70e0ffd;ide reset'
setenv bootcmd_sata 'setenv bootargs ${bootargs_console} ${bootargs_mtdpartitions} netconsole=6665@${ipaddr}/eth0,6666@${serverip}/ root=/dev/md0 ro;ext2load ide 0:1 0x800000 /uimage;bootm 0x800000'
setenv bootcmd_usb 'setenv bootargs ${bootargs_console} ${bootargs_mtdpartitions} netconsole=6665@${ipaddr}/eth0,6666@${serverip}/;fatload usb 0 0x800000 /uimage;fatload usb 0 0xf00000 /uinitrd;bootm 0x800000 0xf00000'
setenv bootcmd_nand 'setenv bootargs ${bootargs_console} ${bootargs_mtdpartitions} root=/dev/nfs rw init=/init;nand read.e 0x2000000 ${kernel_addr} 0xa00000; bootm 0x2000000'
setenv bootcmd 'run init_eth;run init_usb;run init_sata;run bootcmd_usb;run bootcmd_sata;run bootcmd_nand'
saveenv

Az U-Boot beállítások az NSA320S eredeti Zyxel rendszerén, telneten keresztül is hozzáférhetőek. Ott természetesen a setenv helyett fw_setenv parancsot kell használni, illetve a beállításokat elmentő (NAND) saveenv parancs kiadása ott nem szükséges. Innentől akár szétszedés és soros konzol nélkül is hackelgethető a rendszer.

A fenti beállításokkal az NSA320S az alábbiakkal próbálkozik a boot során

  1. Inicializálja a gigabites Ethernet portot. (init_eth)
  2. Bekapcsolja az USB portokat (+5V). (init_usb)
  3. Aktiválja a 2. SATA portot. (init_sata)
  4. Megpróbálja az előlapi USB portba dugott, FAT32-re formázott pendriveról betölteni a kernelt (/uimage) és az Debian telepítő uinitrd fájlját (/uinitrd). (bootcmd_usb)
  5. Megpróbálja az 1. SATA merevlemez (a bal oldali) 1. partíciójáról (/dev/sda1) betölteni a kernelt (/uinitrd), majd az md0 tömböt rootfs-ként átadni a kernelnek. (bootcmd_sata)
  6. Megpróbálja az eredeti Zyxel rendszert betölteni és bebootolni. (bootcmd_nand)

Természetesen nincs szükség minden lehetőségre, a fentiek alapján mindenki kedvére konfigurálhatja a boot sorrendjét. Az USB boot lehetőségét szerintem célszerű egyfajta „recovery” módnak megtartani.

Számomra a kernel foltozása közben az USB kulcs ki-be dugdosása elég kényelmetlen volt, az uinitrd-be injektált preseed.cfg fájl szerkesztése sem volt egyszerű, ezért inkább az alábbi módon, egy TFTP szerverről töltöttem be az épp létrehozott kernelt és a preseed.cfg fájlt.

setenv bootcmd_tftp 'setenv bootargs ${bootargs_console} ${bootargs_mtdpartitions} netconsole=6665@${ipaddr}/eth0,6666@${serverip}/ rootdelay=5 auto=true debian-installer/locale=en_US console-keymaps-at/keymap=us netcfg/choose_interface=eth0 netcfg/get_hostname=nsa320s netcfg/get_domain=local url=tftp://${serverip}/nsa320s/preseed.cfg;tftp 0x800000 /nsa320s/uimage;tftp 0xf00000 /nsa320s/uinitrd;bootm 0x800000 0xf00000'

Ezzel a beállítással az NSA320S  a megadott TFTP szerverről (192.168.1.134) próbálja letölteni a telepítés kernelét (/nsa320s/uimage), az initrd (/nsa320s/uinitrd) és a preseed (/nsa320s/preseed.cfg) fájljait, majd ezekkel bootolja a Debian telepítőt.

A kernel boot folyamata a netconsole lehetőségével a megadott IP címen (192.168.1.134) lévő szerveren nyomon követhető (pl. „nc -l -u -p 6666” paranccsal). Sajnos, a Zyxel által szállított U-Boot nem tartalmazza a netconsole lehetőségét, így csak a Linux kernelének üzeneteit láthatjuk. Pedig megfelelően fordított U-Boot esetén akár a soros konzol helyett is használható volna a netconsole.

A bootargs rész TFTP esetén azért lett olyan hosszú, mert a preseed.cfg fájl is TFTP-ről töltődött nálam, és ennek előfeltétele, hogy a Debian telepítője még a preseed.cfg nélkül, automatikusan túljusson a hálózati beállításokon, hiszen a TFTP eléréshez a hálózatnak már működnie kell.

Ha valamiért mindenképp az eredeti, Zyxel rendszert kellene bootolni, akkor az alábbiakkal ez megtehető. Ez indul el akkor is, ha pendrive és diszkek nélkül kapcsoljuk be az NSA320S-t.

setenv bootcmd 'run bootcmd_nand'
boot

Természetesen az eredeti U-Boot beállítások is visszaírhatóak, így nyom nélkül eltüntethető minden módosítás. Akár Debian rendszer alól is, az ehhez szükséges fw_setenv parancsot az u-boot-tools csomag tartalmazza.

A Debian telepítő uinitrd image létrehozása

Több ARMv5 kompatibilis netboot initrd is van a Debian mirroron, én ezek közül választottam egyet, és ebbe illesztettem be az alábbi módon a preseed.cfg fájlt. Ubuntu/Debian linuxon az mkimage parancs az u-boot-tools csomagban van.

apt-get install u-boot-tools
wget -nd ftp://ftp.fsn.hu/pub/linux/distributions/debian/dists/wheezy/main/installer-armel/20130613+deb7u2+b4/images/versatile/netboot/initrd.gz
mkdir irmod
cd irmod
gzip -cd ../initrd.gz | cpio --extract --verbose --make-directories --no-absolute-filenames
cat >preseed.cfg <<EOF
d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/language string en
d-i debian-installer/country string HU
d-i console-keymaps-at/keymap select us
d-i netcfg/choose_interface select eth0
d-i netcfg/get_hostname string nsa320s
d-i netcfg/get_domain string local
d-i preseed/early_command string anna-install network-console
d-i network-console/password password installer
d-i network-console/password-again password installer
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.hu.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i anna/no_kernel_modules boolean true
EOF
find . | cpio -H newc --create --verbose | gzip -9 > ../initrd-preseed.gz
cd ..
mkimage -A arm -O linux -T ramdisk -C gzip -n netboot -a 0 -e 0 -d initrd-preseed.gz uinitrd

Az U-Boot számára a kernel zImage formájában nem emészthető, ezt is a saját image formátumába kell csomagolni az mkimage paranccsal, az ehhez használt konkrét parancsokat az előző bejegyzésben írtam. A kernel, az initrd és a dtb fájl egy uimage fájlba is gyúrható az mkimage segítségével.

A Debian Linux telepítése

A fenti beállítások mellett már csak egy USB pendrive-ra van szükség (FAT32), amire a Debian telepítőhöz szükséges két fájl rámásolható.

/uimage
/uinitrd

Bekapcsolás vagy reboot után a NAS elsőként ezeket fogja keresni az előlapi USB portba dugott pendriveon. Az NSA320S bootol, majd kb. 1 perc után a DHCP szervertől kapott IP címen elérhetővé válik telepítő SSH protokollon („ssh installer@kiosztott-ip-cim„). A belépéshez szükséges jelszó a preseed.cfg fájlban adható meg (a fenti példában ez „installer” volt).

Fontos! A beavatkozás nélküli hálózati beállításokhoz a fenti preseed.cfg fájl mellett egy működő DHCP szerver és internetes kapcsolat is szükséges, a telepítőnek ugyanis még az SSH konzol aktiválása előtt le kell töltenie néhány fájlt a megadott Debian mirrorról.

NSA320S Debian telepítés
A telepítés vége felé jár, talán 30 perc alatt eljut idáig. A szoftveres RAID1 tömb szinkronizálása még sok ideig leköti a gépet.

Az egyszerű telepítés után, reboot előtt már csak a kernelt kell átmásolni az 1. SATA diszk 1. partíciójára (/dev/sda1). Én egy 100 MB méretű partíciót hoztam létre ehhez, amelyet a rendszeren /boot alá mountoltam be. Az U-Boot számára RAID tömb vagy hasonló nem felel meg, mindenképp EXT2 vagy FAT partíció kell. A másoláshoz egy chroot után akár scp, wget vagy egyéb parancsot is használhatunk.

chroot /target /bin/bash
scp root@ubuntu:/home/temp/build/uimage /boot/

A telepítésnél vicces(!) volt megtapasztalni, hogy a Debian telepítővel létrehozott szoftveres RAID1 tömböt a kernel nem képes automatikusan használatba venni. Az initrd kerülőútja helyett én inkább kézzel hoztam létre egy a kernel számára is emészthető md0 tömböt (v0.90).

mdadm –create /dev/md0 –metadata=0.90 –level=1 –raid-devices=2 /dev/sda3 /dev/sdb3

Utolsó simítások a Debian rendszeren

Ha mindent jól csináltunk, akkor elegendő újraindítani a rendszert, és máris a friss, ropogós Debian rendszeren végezhetjük el az utolsó simításokat.

Én az alábbiakat állítottam be első körben.

1. Az U-Boot beállításaihoz hozzáférést biztosító fw_setenv/fw_printenv működéséhez kell egy u-boot-tools csomag.

apt-get install u-boot-tools
cat > /etc/fw_env.config <<EOF
/dev/mtd1 0x0000 0x20000 0x20000 4
EOF
fw_printenv

2. Az előlapi System LED-et a beállításaim szerint bootoláskor villogtatja a kernel, ez kikapcsolható a boot után.

cat > /etc/rc.local <<EOF
#!/bin/sh -e
# green sys led on
echo none > /sys/class/leds/nsa320s\:green\:sys/trigger
echo 1 > /sys/class/leds/nsa320s\:green\:sys/brightness
EOF

3. A diszkek x percnyi tétlenség utáni lekapcsolásához kell egy hdparm.

apt-get install hdparm
vim /etc/hdparm.conf

4. Az MCU által vezérelt ventilátor fordulatszámának és a hőmérsékletnek a lekérdezése i2c-tools csomaggal lehetséges.

apt-get install i2c-tools
i2cget -y 0x0 0x0a 0x07
i2cget -y 0x0 0x0a 0x08

Az első érték (0x07) a hőmérséklet °C egységben,  a második (0x08) a ventilátor egy fordulatának megtételéhez szükséges idő ezredmásodpercben (fordulat/perc = 60000/érték).

5. Az előlapi Power kapcsoló működéséhez kellhet egy acpid.

apt-get install acpid

A NAS funkciók eléréséhez persze telepíteni kell Samba, NFS, FTP vagy egyéb lehetőséget is. Természetesen rengeteg egyéb beállítást is illik elvégezni a rendszeren, de a legtöbbről nyilván mindenki más és más elképzeléssel bír, így nem mennék bele a részletekbe.

Összefoglalás

A Debian Linux rendszer összedrótozása az eddig nem támogatott vasra elvitte néhány napnyi szabadidőmet, de valószínűleg elsőként fejeztem be sikeresen a telepítést. A feladat ezzel számomra leküzdve.

NSA320S + Debian LInux = OK

Az alábbiak működnek az új rendszeren:

  1. Képes bebootolni SATA, USB vagy TFTP/NFS szerverről az aktuális Debian Linux.
  2. Gigabites ethernet port működik.
  3. Mindkét SATA port működik.
  4. Valamennyi előlapi LED elérhető.
  5. Működik a HT1382 típusú óra (RTC) elérése.
  6. Működik a szoftveres Poweroff lehetősége.
  7. Működnek az előlapi power, copy és a hátlapi reset nyomógombok.
  8. Az előlapi Copy LED bootoláskor a SATA portok aktivitását is mutatja, a System LED csak villogtatva van.
  9. A ventilátor fordulatszáma és az alaplap hőmérséklete lekérdezhető.

Egy-két dolog nem foglalkoztatott annyira, hogy komolyabban foglalkozzak vele:

  1. Az alaplapi csipogó (buzzer).
  2. A Wake-on-lan.
  3. A Power resume funkció.
  4. Az MCU funkciói.

Lehetne még finomítani a megoldásokon, hiszen nem készítettem DEB csomagot a kész kernelből, és nem használtam ki a kernel-modulok lehetőségét sem. Innentől ezek nem nagy feladatok.

A telepítés mellékhatásai

Az eredeti, folyton swappelő rendszerről írtam az első bejegyzésben, ahhoz képest jelentős javulást hoz, hogy Debian Linux alatt (Samba kiszolgáló mellett) 200 MB fölött marad használható a rendelkezésre álló 256 MB ramból. Bőven van lehetőség ezt-azt telepíteni a rendszerre, nem csak elvi lehetősége van annak, hogy több 10.000 debianos alkalmazás között válogassunk.

A Zyxel rendszerén végeztem 1-2 tesztet még a módosítás előtt, a nagy fájlok SMB protokollon keresztüli másolásánál stabilan kb. 18 MB/sec írási és 38MB/sec olvasási eredményt kaptam a gigabites hálózaton. (Az NSA325v2 ennek kb. a dupláját tudja azonos körülmények között.) A Debian Linux alatt az alapértelmezett Samba konfiggal (amelyben csak egy megosztást hoztam létre), minden tuning nélkül kaptam stabil 36MB/sec írási és 46MB/sec olvasási eredményt. Nyilván az eredeti és az új rendszer is tuningolható, de engem csak az alapbeállításokkal hozott átviteli sebesség érdekelt, az is csak egy teszt erejéig. A telepítéssel egyáltalán nem volt célom a teljesítmény javítása, az eredeti rendszer által nyújtott teljesítmény is bőven elegendő szinte bármire.

Talán egy majdani bejegyzésben a rendszerrel szerzett tapasztalataim mellett leírom majd, hogy mire is használhatjuk még a fentiek szerint létrehozott debianos NAS rendszerünket. Talán lesz bejegyzés arról is, hogy miképp használhatjuk a NAS-t arra, hogy CD/DVD/Pendrive nélkül bootoljunk róla Linux (vagy egyéb) telepítőt, vagy akár teljes operációs rendszert egy merevlemez nélküli számítógépen. Meglátjuk.

Fájlok:

linux-3-19-nsa320s.patch – Linux 3.19 kernel patch (MD5: 04fe738f7b1346ec644420bdc56f3cab)
config-3-19-nsa320 – Linux 3.19 kernel config (MD5: 250171f565548c48a997b799540543f3)
uimage – Linux 3.19 kernel U-Boot image (MD5: 48a096f0ed32abb06539373ef24fd722)
uinitrd – Debian Installer U-Boot image (MD5: b908e5a4c9e59d142215a9377221590f)

Frissítés: Az előző DTS fájlban benne maradtak a forrásul használt NSA320 DTS fájl készítőjének adatai. Javítva. /2015-02-12/

Hivatkozások:

http://www.madadmin.com/zyxel-nsa320s-es-debian-linux-1-resz/
http://www.madadmin.com/zyxel-nsa320s-es-debian-linux-2-resz/
http://www.madadmin.com/zyxel-nsa320s-es-debian-linux-3-resz/
http://www.madadmin.com/zyxel-nsa320s-es-debian-linux-5-resz/
http://www.kernel.org/
https://wiki.debian.org/EmDebian/CrossDebootstrap

33 hozzászólás “Zyxel NSA320S és a Debian Linux – 4. rész” bejegyzéshez

  1. Hello,

    I have tried to follow your guide but i seem to fail, installer works, installs debian but it fails saying no kernel to be installed and i should copy my own one

    when i copy over uImage to /boot/ and restart NSA320s it boots into syxel os not from usb

    files in /boot/:
    config-3-19-nsa320s
    uimage
    vmlinux
    zImage-nsa320s

    Thank you for any help

  2. Hi Jochar,

    Probably, the bootargs or bootcmd values are wrong. Where is the /boot partition? Please show your partition tables and U-Boot variables.

    MadAdmin

  3. Q: do i have to change uboot variables before each boot? or does saveenv permanently store them?

    Im trying to boot off usb drive, i want to keep OS on usb and hdds as storage only. I have all data including boot in one partition (ext4)

    16GB usb key
    14.8GB primary
    474MB swap

    Thanks

  4. The „saveenv” writes the modified environment to NAND (mtd1).

    The preinstalled U-Boot does not support the EXT4 fs, only EXT2. Create a small EXT2 partition for /boot.

    MadAdmin

  5. Hello,

    My boot log is here:
    http://skrac.me/bwbDt

    I did create a 500mb boot primary partition

    Device Boot Start End Sectors Size Id Type
    /dev/sdb1 * 2048 976895 974848 476M 83 Linux
    /dev/sdb2 978942 30717951 29739010 14.2G 5 Extended
    /dev/sdb5 978944 29747199 28768256 13.7G 83 Linux
    /dev/sdb6 29749248 30717951 968704 473M 82 Linux swap / Solaris

    i have creaded a boot partition and copyd to the root of it

    76082 Feb 18 22:39 config-3-19-nsa320s
    6241432 Feb 28 02:06 Image
    1602532 Feb 28 02:06 System.map
    2166724 Feb 28 02:07 uimage
    71863766 Feb 28 02:06 vmlinux
    2157568 Feb 28 02:06 zImage
    2166660 Feb 28 02:06 zImage-nsa320s

    but still it boots into zyxel os

    i must be doing somethign wrong…

  6. Marvell>> run init_usb
    (Re)start USB…
    USB: scanning bus for devices… 3 USB Device(s) found
    Waiting for storage device(s) to settle before scanning…
    1 Storage Device(s) found
    Marvell>> ext2ls usb 0:1
    1024 .
    1024 ..
    12288 lost+found
    76082 config-3-19-nsa320s
    6241432 Image
    1602532 System.map
    2166724 uimage
    71863766 vmlinux
    2157568 zImage
    2166660 zImage-nsa320s

  7. Something is wrong.

    Your bootlog shows:

    ...
    ** Unable to read "/uimage" from usb 0:1 **
    ...
    

    But your uboot variables does not contains any references to „usb 0:1”.

  8. Try this (in uboot console):

    setenv bootargs '${bootargs_console} ${bootargs_mtdpartitions} root=/dev/sdb5 ro'
    run init_eth
    run init_sata
    run init_usb
    ext2load usb 0:1 0x800000 /uimage
    bootm 0x800000
    

    If it is works properly, then:

    setenv bootcmd_sdb5 'setenv bootargs ${bootargs_console} ${bootargs_mtdpartitions} root=/dev/sdb5 ro;ext2load usb 0:1 0x800000 /uimage;bootm 0x800000'
    setenv bootcmd 'run init_eth;run init_usb;run init_sata;run bootcmd_usb;run bootcmd_sdb5;run bootcmd_nand'
    saveenv
    boot
    

    (if your rootfs is /dev/sdb5)

  9. The comands above make it hang on booting kernel

    „Uncompressing Linux… done, booting the kernel.”

    log here:
    http://skrac.me/5iS8z

    i must be doing somethign wrong… i wish there would be a image i could just download and sync it to USB key

  10. Looks like a bootargs problem…

    What are the LEDs doing on the front panel of NSA320S?

    Try this:

    setenv bootargs 'console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=/dev/sdb5 ro'
    run init_eth
    run init_sata
    run init_usb
    ext2load usb 0:1 0x800000 /uimage
    bootm 0x800000
    
  11. Thanks for the reply
    First green led (Power) is flashing

    [ 2.079982] —[ end Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

    log here:
    http://skrac.me/abhMv

    but this is much closer

    also this error:
    [ 1.935641] VFS: Cannot open root device „sda5” or unknown-block(0,0): error -6

    i have tried sda5 and sdb5 same error

    Thank you

  12. The system won’t boot because kernel tries to access the rootfs before the USB drive is recognized. To avoid this problem, pass a rootdelay parameter to the kernel.

    Try this:

    setenv bootargs 'console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=/dev/sda5 rootdelay=10 ro'
    run init_eth
    run init_sata
    run init_usb
    ext2load usb 0:1 0x800000 /uimage
    bootm 0x800000
    

    The „rootdelay=10” option will tell the kernel to wait 10 seconds before proceeding to mount the rootfs.

  13. The disk labels are more flexible.

    Set the label of the rootfs to „usbroot”:

    e2label /dev/sda5 usbroot
    

    Add „root=LABEL=usbroot” to your bootargs:

    ...
    setenv bootargs 'console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=LABEL=usbroot rootdelay=10 ro'
    ...
    
  14. Do you think this will work for permanent USB boot:

    setenv bootcmd_sda5’setenv bootargs ‘console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=LABEL=usbroot rootdelay=10 ro’

    setenv bootcmd ‘run init_eth;run init_usb;run init_sata;run bootcmd_usb;run bootcmd_sda5;run bootcmd_nand’

    saveenv
    boot

    Thank you

  15. Szia

    Eloszor is hadd gratulaljak eme nagyszeru kuttato munkahoz. En is mar regota keresgeltem valami megoldast, hogy lecsereljem az nsa310s rendszeret. Aztan ratalatam erre a blogsorozatra (mar nem tudom, hogy hova volt belinkelve, gondoltam megnezem, hogy mi a hasonlosag az nsa320s es nsa310s kozott). Aztan jot az osszehasonlitas es vegul belevagtam es nagyon szepen muzsikal. Egy apro hibaval talkoztam, nemtudom nallad elofordul-e? Ha torrentezni is hasznalom es letoltok akkor elobb-utobb megall minden. iotop szerint kezdnek elakadni a processek io-wait-ban (99% iowait- 0 lemezmuvelet). Netconzolon hasonlo logotat kapok csak nagyon sokara
    [ 6240.062325] INFO: task jbd2/sda4-8:1194 blocked for more than 120 seconds.
    [ 6240.069205] Not tainted 3.19.0-nsa320s-1 #1
    [ 6240.073929] „echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
    [ 6240.081745] jbd2/sda4-8 D c06999b0 0 1194 2 0x00000000
    [ 6240.088185] [] (__schedule) from [] (jbd2_journal_commit_transaction+0x1ec/0x1434)
    [ 6240.097492] [] (jbd2_journal_commit_transaction) from [] (kjournald2+0xa4/0x228)
    [ 6240.106627] [] (kjournald2) from [] (kthread+0xc0/0xd4)
    [ 6240.113590] [] (kthread) from [] (ret_from_fork+0x14/0x3c)
    [ 6240.120822] INFO: task kworker/0:1:9899 blocked for more than 120 seconds.
    [ 6240.127693] Not tainted 3.19.0-nsa320s-1 #1
    [ 6240.132413] „echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
    [ 6240.140264] kworker/0:1 D c06999b0 0 9899 2 0x00000000
    [ 6240.146677] Workqueue: ipv6_addrconf addrconf_verify_work
    [ 6240.152108] [] (__schedule) from [] (schedule_preempt_disabled+0xc/0x10)
    [ 6240.160546] [] (schedule_preempt_disabled) from [] (__mutex_lock_slowpath+0x7c/0xb0)
    [ 6240.170021] [] (__mutex_lock_slowpath) from [] (addrconf_verify_work+0x8/0x14)
    [ 6240.178979] [] (addrconf_verify_work) from [] (process_one_work+0x1d0/0x37c)
    [ 6240.187764] [] (process_one_work) from [] (worker_thread+0x294/0x41c)
    [ 6240.195935] [] (worker_thread) from [] (kthread+0xc0/0xd4)
    [ 6240.203159] [] (kthread) from [] (ret_from_fork+0x14/0x3c)

    Esetleg ha van valami otleted akkor szivesen meghalgatnam. Megyeszer koszi a nagyszeru leirast!

    ui. probalkoztam vm.dirty_ratio es vm.dirty_background_ratio allitagtassl is de nem segitett. ja es 3 kulombozo hdd-vel probalatm de az esm segitett.

  16. Szia!

    Nálam egyszer jelentkezett hasonló, de később nem tudtam reprodukálni, így nem is foglalkoztam sokat vele. Arra gyanakszom, hogy a Zyxel NAS rendszerének leggyengébb láncszeme, a kevés RAM okoz gondot itt is.

    A vm.min_free_kbytes növelésével próbálkozz meg, az alapértelmezett érték szerintem kevés, és ez kiválthat ilyen jelenséget. 5-8 Mbyte már megfelelőbb érték lehet.

    Az eredeti Zyxel rendszer ilyen beállításokat használ:

    vm.min_free_kbytes = 5000
    vm.vfs_cache_pressure = 300
    vm.dirty_background_ratio = 1
    vm.dirty_ratio = 1
    

    Sok sikert!

  17. Hello,

    Any chance you could post your entire saveenv as I have done something to mine and its stuck in a loop now wont boot into Zyxel firmware neither it will boot debian.

    Thank you

  18. Szia. Eloszori sép munka zyxel-el ,de en ebbe azért nem vágnék bele. Viszont segitségedet kérném mert én csak film nézésre használnám az nsa320s gépt. Jelenleg plex servert telepitettem ra. Bin file-bol ami webes feluleten tökéletesen működik. A problémam ha a plex kliens app-on hasznalom telefon,lgtv akor csak az mp4 videokat jatsza le. Avi mkv wmv stb videok at nem inditja el. Erre lenne valami megoldas? Lgtv- ha dnla kapcsolaton csatlakozok a szerverhez ott minden formatumu videot lejátszik a tv igaz igy fapados könyvtár szerkezet a kezelőfelület. Jeleznem előte pc vont a plex server 1ghz 512 ram ott nem volt ijen problémám.

    Remélem tudsz segiteni miért csak mp4 videók futnak
    köszönöm

  19. Szia! Sajnos, én nem használok Plex szervert, így nem tudok a segítségedre lenni. Úgy tippelem, hogy a videó konvertáláshoz gyenge processzor miatt talán bele sem tették a csomagba a transcoding lehetőségét.

  20. Üdv,
    Nagyon jól működő megoldás grat. hozzá, egy problémánk adódott mégpedig hogy iscsitarget-ként szeretnénk használni a NASunkat. (ugyanúgy NSA320S) A szolgáltatás indításánál errort dob:

    Starting iSCSI enterprise target service:libkmod: ERROR ../libkmod/libkmod.c:554 kmod_search_moddep: could not open moddep file ‘/lib/modules/4.5.0-nsa320s-1/modules.dep.bin’

    Tudnál ebben még valahogy segíteni?

  21. Szia!

    Az okoz gondot, hogy ez a kernel csak épphogy összerakva lett, nem lett elkészítve belőle a standard Debian kernel csomag, illetve nem lett kihasználva a kernel modulok lehetősége sem.

    Az iscsitarget csomag viszont a standard Debian kernelhez készült, ami a szükséges ISCSI támogatást modulként tartalmazza. Emiatt van két modprobe sor az /etc/init.d/iscsitarget scriptben, ami a két kernelmodult töltené be. Modulok viszont nincsenek, így még a /lib/modules/ dir sem jön létre. A szükséges modulokat szerencsére tartalmazza a kernel, csak nem modulként.

    Gyors megoldásként azt javaslom, hogy kommmentezd ki a problémás modprobe sorokat az /etc/init.d/iscsitarget scriptben így:

    ietd_start()
    {
    log_daemon_msg „Starting iSCSI enterprise target service”
    # modprobe -q crc32c
    # modprobe iscsi_trgt
    # RETVAL=$?
    # if [ $RETVAL != „0” ] ; then
    # log_end_msg 1
    # exit $RETVAL
    # fi
    start-stop-daemon –start –exec $DAEMON –quiet –oknodo — $ISCSITARGET_OPTIONS

    A jobb/szebb megoldás egy friss, Debianos standard szerinti kernel csomag létrehozása, de nem hiszem, hogy én ezt megcsinálom a közeljövőben. 🙂

  22. Köszi a gyors választ, sajnos ezután is hiányolja:

    Apr 20 07:01:26 nsa320s ietd: cannot find iscsictl in /proc/devices – make sure the kernel module is loaded
    Apr 20 07:01:26 nsa320s ietd: unable to open ctldev fd: Success

  23. Ez sajnos arra utal, hogy rosszul emlékszem, és az iscsi_target mégsincs a kernelben. Így sajnos nem úszható meg a kernel újrafordítása. A menuconfig esetén ezt itt találhatod meg:

    Device Drivers > Generic Target Core Mod (TCM) and ConfigFS Infrastructure > Linux-iSCSI.org iSCSI Target Mode Stack

  24. Üdv,

    Újrafordítottam, be is tölti bootnál:
    Apr 24 13:03:45 nsa320s kernel: [ 0.878855] Loading iSCSI transport class v2.0-870.
    Apr 24 13:03:45 nsa320s kernel: [ 0.884159] iscsi: registered transport (tcp)

    De mégis ezzel a hibával elhasal:
    # ietd –config=/etc/iet/ietd.conf –debug 9 –foreground
    1524571233.804192: cannot find iscsictl in /proc/devices – make sure the kernel module is loaded
    1524571233.805081: unable to open ctldev fd: Success

  25. Hasonló a helyzet, csak itt azt se nagyon tudom mit kellene nézni, hogy mi a baja 😀

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    2 not fully installed or removed.
    After this operation, 0 B of additional disk space will be used.
    Setting up lio-utils (3.1+git2.fd0b34fd-2) …
    Loading target_core_mod/ConfigFS core: [FAILED]: 1
    invoke-rc.d: initscript target, action „start” failed.
    dpkg: error processing lio-utils (–configure):
    subprocess installed post-installation script returned error exit status 1
    dpkg: dependency problems prevent configuration of targetcli:
    targetcli depends on lio-utils; however:
    Package lio-utils is not configured yet.

    dpkg: error processing targetcli (–configure):
    dependency problems – leaving unconfigured
    Errors were encountered while processing:
    lio-utils
    targetcli
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    ezután kiszedtem a modul betöltéseket az init scriptben hogy hiba nélkül induljon el de ennyire nem egyszerű a helyzet….
    targetcli parancs ezt dobja (egy oldal traceback után):

    IOError: [Errno 2] No such file or directory: ‘/lib/modules/4.5.0-nsa320s-1/modules.dep’

  26. A leírásod alapján itt is az okoz gondot, hogy szinte minden debianos scriptbe bele van drótozva, hogy a szülkséges modulokat töltse be induláskor és távolítsa el leállításkor. Ezt így elég nehéz kiszedegetni mindenhonnan, és az első upgrade ki is gyalulja a módosításokat.

    Legjobb volna egy rendes debianos kernelcsomagot készíteni, amiben minden modul, amit modulként várnak el a debianos csomagok. Ennél valamivel egyszerűbb megoldás, ha a kernelt úgy fordítod újra, hogy minden modulban legyen, ami nem kell a boothoz. A modulok a helyükre kerülhetnek, így a debianos scriptek sem hasalnak el emiatt.

    Ha létrehozod a /lib/modules/4.5.0-nsa320s-1/ könyvtárat, akkor egy depmod paranccsal is létrehozhatóak az (üres) modules.dep, alias és egyéb fájlok. Ez sajnos sokat nem fog segíteni.

A hozzászólások jelenleg nem engedélyezettek ezen a részen.