View Full Version : [Thread ufficiale] Zyxel VMG8828-B50B - Modding
- Scopo di questo thread
Scopo di questo thread è di discutere espressamente ed esclusivamente del prodotto oggetto del thread:
Zyxel VMG8828-B50B
esclusivamente in rerlazione al modding.
- Thread uffciiale
Per discussioni in merito ai firmware stock fare riferimento al thread ufficiale
Zyxel VMG8828-B50B - Thread uffciiale (https://www.hwupgrade.it/forum/showthread.php?t=2960663)
- Licenza Creative Commons
Il contenuto di questo post è rilasciato con licenza
Creative Commons Attribution-Noncommercial-Share Alike 2.5 (http://creativecommons.org/licenses/by-nc-sa/2.5/it/)
..
- Licenza Creative Commons
Il contenuto di questo post è rilasciato con licenza
Creative Commons Attribution-Noncommercial-Share Alike 2.5 (http://creativecommons.org/licenses/by-nc-sa/2.5/it/)
..
Salve a tutti, ho brickato il router e se dovesse servire a qualcuno sono riuscito a recuperarlo tramite seriare con un adattatore uart usb-ttl.
Ecco come ho fatto dopo aver aperto il router individuato i pin per il seriale e collegato i cavi. nella foto di seguito vedete come ho collegato i cavi,
tra le dita ho il connettore usb dove vedete i colori dei cavi che partono dall'adattatore (nero=GRD, verde=TXD, blu=RXD)
sul foglietto giallo la leggenda in corrispondenza dei pin sulla scheda.
quindi ho collegato il nero sul gnd della scheda(quinto pin), il verde sull'RX della scheda (terzo pin) e il blu sul TX della scheda (secondo pin). Vedete che quello più vicino alla cpu resta libero.
https://i.fibra.click/size=1024/2024/11/1730761757_33776_27777.jpg
ho installato putty e ho impostato la connesione seriale con baud 115200 acceso il router ho avuto subito la shell.
il mio era briccato quindi non ho dovuto interrompere la sequenza di boot e ho avuto subito la shell CFE
ho dato il comando ATEN 1
adesso prima di dare l'ultimo comando tramite seriale bisogna preparare sul computer il server TFTP, in questa foto vedete che ho usato Tftpd64 come software
https://i.fibra.click/2024/11/1730762124_33776_27777.jpg
ho creato dentro C: la cartella server in cui ho messo il file del firmware rinominato come fw.bin (perchè il nome non può avere caratteri speciali e al massimo un punto)
assicuratevi di non avere firewall a bloccarvi
impostate la vostra scheda di rete con un indirizzo ip statico ad esempio 192.168.1.2 e date come gateway 192.168.1.1
collegate il vostro pc via cavo ethernet al router alla prima porta come potete vedere nella porta precedente.
disattivate tutte le altre connessioni, ad esempio wifi etc
a questo punto sulla shell di puntty potete mandare via seriale il comando al router ATUR 192.168.1.2:fw.bin
e dovreste vedere che il server carica il file, potrebbe impiegare un minuto.
appena finito il download subito flasha autonomamente la rom e riparte, ma a me la prima volta ha avuto un errore, poi l'ho rifatto e ha funzionato.
spero di aver aiutato qualcuno
qualora qualcuno dovesse avere il firmware di andreock versione 5.17 se me lo mandasse sarei molto grato 🙂
Dopo tanta agonia sto iniziando a vedere qualche risultato, sono riuscito a compilare il firmware e di conseguenza ad avere l'SDK e la toolchain per compilare programmi per il VMG8828b50b. Ho letto tanto e fatto tanti esperimenti e alla fine sono riuscito ad avere la versione di dropbear 2024.86 (l'ultima) funzionante sul router. Sono appena riuscito quindi non ho ancora giocato con le configurazioni e non ho ancora creato il pacchetto ipk ma ho eseguito il programma sul router e finalmente posso usare le nuove chiavi ed25519.
Scrivo questo post con quello che ho fatto fino ad ora sperando possa tornare utile a qualcun altro o a me stesso in futuro come pro memoria. La guida non è esaustiva, riporto le mie note quindi potrebbe capitare di dover fare qualche altro passo come ad esempio installare git per il quale non ho dato indicazioni.
Prima cosa preparare l'ambiente!
ho usato da mac UTM ma le macchine virtuali dovrebbero funzionare più o meno allo stesso modo su ogni piattaforma.
scaricare ed installare UTM https://mac.getutm.app/
scaricare l'immagine di ubuntu-12.04-alternate-i386.iso da https://old-releases.ubuntu.com/releases/12.04/
aprire UTM crea nuova -> emula -> altro -> seleziona cd/dvd image e poi da scegli selezionare l'immagine scaricata al punto 2 -> continua
[IMPORTANTE] scegliere Architettura i386, almeno 20GB disco, esattamente 2GB ram e 1 solo core
andare avanti fino alla fine
sarà sempre importante poter copiare/incollare dal vostro sistema a quello emulato e viceversa quindi andare nelle impostazioni della macchina appena creata selezionare la voce condivisione e abilitare condivisione appunti. Anche condividere file con il sistema principale è importante perchè UBUNTU è talmente vecchio che non riuscirete ad usare internet per questione di certificati. Quindi scegliere anche la modalità di condivisione cartella che per MacOs è VirtFs e scegliere nella stessa scermata la cartella che si vuole condividere (poi bisognerà montare in ubuntu questa cartella)
nel menu rete scegliete VLAN Emulata
avviate la macchina e procedete con l'installazione fino alla fine
consiglio, in fase di installazione quando scegliete l'utente usate il nome "builder". al completamento dell'installazione dovrete riavviare il sistema virtuale. In realtà lo dovete arrestare e rimuovere l'immagine..punto 10
a sistema arrestato andate nelle impostazioni in fondo dove trovate dischi ide e rimuovete il disco contenente l'immagine del sistema operativo. assicuratevi anche che nella scheda Qemu sia flaggato solo il checkbox "Dispositivo RNG"
ora potete avviare, accedete al desktop et voila! finito?! NO!
è necessario scaricare un pò di programmi con apt-get ma il file /etc/apt/sources.list è obsoleto e i link rotti quindi cancellate tutto e salvatelo con questi link:
deb http://old-releases.ubuntu.com/ubuntu/ precise main universe
deb-src http://old-releases.ubuntu.com/ubuntu/ precise main universe
deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main universe
deb-src http://old-releases.ubuntu.com/ubuntu/ precise-updates main universe
deb http://old-releases.ubuntu.com/ubuntu precise-security main universe
deb-src http://old-releases.ubuntu.com/ubuntu precise-security main universe
Intenet potrebbe non funzionare subito.. la prima cosa da provare è di cambiare nel file /etc/network/interfaces auto in dhcp e creare una connessione wired dal network manager in dhcp e riavviare se non dovesse funzionare si può provare questo https://askubuntu.com/questions/198612/my-ethernet-is-not-been-detected-in-ubuntu-12-04
ecco il file dopo la modifica: # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
#NetworkManager
iface eth0 inet dhcp
adesso si dovrebbe riuscire ad installare un pò di software da shell:
#aggiornate il sistema con
sudo apt-get update
#aggiornare i certificate per https
sudo apt-get upgrade openssl
sudo dpkg-reconfigure dash*#(e rispondi NO alla richiesta).
sudo apt-get install --reinstall ca-certificates
#Bisogna installare spice per poter fare copia incolla
apt-get install spice-*
per montare la cartella condivisa del sistema ospitante (MacOs nel mio caso):
builder@ubuntu:~$ sudo nano /etc/fstab
E nel file aggiungere
# UTM Shared Folder
share /mnt/utm 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail,auto 0 0
builder@ubuntu:~$ sudo mkdir /mnt/utm
#e creiamo un link sul desktop
builder@ubuntu:~$ ln -s /mnt/utm ~/Desktop/utm_link
ho anche collegato al router una chiavetta usb e condivisa tramite l'interfaccia web del router in modo da poter gestire i file da dare al router direttamente con una cartella sul desktop:
#per montare la dir usb del router
sudo apt-get install smbclient
sudo apt-get install cifs-utils
sudo mkdir -p /mnt/router_usb_folder
#verifica le cartelle condivise disponibili 192.168.1.1 dovrebbe essere lìip del router
smbclient -L //192.168.1.1 -U guest
#usb1_sda1 dovrebbe essere l'unità montata nel router verificate da WebUI
sudo mount -t cifs //192.168.1.1/usb1_sda1 /mnt/router_usb_folder -o guest
#sempre nella webui verificate che il livello di accesso sia pubblico
ln -s /mnt/router_usb_folder /home/builder/Desktop/router_usb_folder
sudo chown -R builder:builder /mnt/router_usb_folder
sudo chmod -R 755 /mnt/router_usb_folder
echo "//192.168.1.1/usb1_sda1 /mnt/router_usb_folder cifs guest,uid=$(id -u),gid=$(id -g) 0 0" | sudo tee -a /etc/fstab && sudo mount -a
adesso il sistema è pronto :) :D :O :cry:
POSSIAMO INIZIARE
con git potete scaricare nella home nella directory vmg8828 il codice https://gitlab.com/Andrea055/vmg8828
e installare il software necessario:
sudo apt-get install -y g++ flex bison gawk make autoconf zlib1g-dev libncurses-dev git subversion gettext
poi entrate nella cartella e modificate il file feeds.default perchè anche esso è obsoleto sostituite i link con questi:
src-git packages https://git.openwrt.org/feed/packages.git
src-git xwrt https://github.com/stgerrard008/OpenWRT-missing-file
src-git bmx6 https://github.com/stgerrard008/OpenWRT-missing-file
adesso make menuconfig e poi make dovrebbero creare l'sdk
lascio un buon link su come funziona il menuconfig https://oldwiki.archive.openwrt.org/doc/howto/build
nel prossimo post condivido qualche nota su come ho compilato dropbear
è molto insicuro lasciare le password originali condivido come ho fatto a cambiarle:
per prima cosa fare l'accesso con ssh
per avere un prompt più informativo: export PS1='${USER}@$(uname -n) $(pwd) $ ' se si vuole rendere permanente:
mount -o remount,rw /
e salvare la linea in /etc/profile
prima di fare qualsiasi modifica permanente verifichiamo che il filesystem non sia montato in sola lettura mount | grep "on / "
se è in sola lettura ro (read-only) rimontiamolo in scrittura : mount -o remount,rw /
potrebbe essere necessario: nvram commit
usare passwd per cambiare le password degli utenti che si vuole
il sistema ad ogni riavvio crea una copia di una porzione del filesystem modificabile var quando cambiate le password vengono quindi salvate in una partizione temporanea.#Check how /var is mounted:
mount | grep /var infatti se dopo il cambio password verifichiamo la data dell'ultima modifica dei file in etc questi non cambiano: ls -l /etc/shadow
ls -l /etc/passwd
le nuove password sono in var e verranno perse al riavvio
per risolvere definitivamente il problema rimuovere il link simbolico dal shadow e passwd di /var/ .
rm /etc/shadow
rm /etc/passwd
E copiare i file di var in etc
root@VMG8828-B50B /etc $ cp -f /var/shadow /etc/shadow
root@VMG8828-B50B /etc $ cp -f /var/passwd /etc/passwd
questo dovrebbe risolvere il problema delle password da questo momento in poi ogni volta che sarammo cambiate saranno permanenti
LINK IMPORTANTE! SPIEGA BENISIMO COME FUNZIONA BUILDROOT: https://buildroot.org/downloads/manual/manual.html#rootfs-custom
Dropbear non è aggiornato e la versione 2019 ha molte, molte, molte vulnerabilità per cui ho ritenuto importante spenderci molto tempo per cercare di aggiornarlo all'ultima versione.
partendo dal presupposto che l'ambiente sia pronto e l'SDK compilato come ho indicato nei post precedenti bisogna scaricare i sorgenti del programma
verificate di avere dentro home -> builder -> staging_dir le cartelle toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi e target-arm_v7-a_uClibc-0.9.32_eabi
nel caso in cui dovessero mancare dalla directory principare vmg8828
make clear
make
make tools/install
make toolchain/install
creare una cartella in home -> customdevelop ed entrarci da shell
scaricare e spacchettare dropbear ad esempio con i seguenti comandi:
curl -O https://matt.ucc.asn.au/dropbear/releases/dropbear-2024.86.tar.bz2
tar xvjf dropbear-2024.86.tar.bz2
adesso bisognerà risolvere il problema di una libreria (zlib) mancante nella toolchain quindi creare una cartella zlibincludes all'interno della directory appena spacchettata (customdevelop->dropbear-2024.86) ed entrarci con la shell. Il programma è compilato staticamente con uClibc seguendo le indicazioni in questa pagina https://github.com/mkj/dropbear/blob/master/INSTALL.md (ho caricato qui i files già pronti https://github.com/VittorioParagallo/Zyxel-VMG8828-B50B-Mod/tree/main/zlibincludes )
con questo comando vediamo in quali posizioni è disponibile un eventuale header: find /home -name zconf.h
copiare l'header cp /home/builder/vmg8828/staging_dir/target-arm_v7-a_uClibc-0.9.32_eabi/usr/include/zconf.h zconf.h
stessa cosa per il file zlib.h: find /home -name zlib.h
scegliamo quale prendere e copiamolo: cp /home/builder/vmg8828/staging_dir/target-arm_v7-a_uClibc-0.9.32_eabi/usr/include/zlib.h zlib.h
adesso caricare la libreria vera e propria libz.a dentro target-arm_v7-a_uClibc-0.9.32_eabi/usr/lib/ (non ricordo da quale altra cartella l'ho presa, comunque ho salvato una copia qui https://github.com/VittorioParagallo/Zyxel-VMG8828-B50B-Mod ) e dentro /home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi/lib/
aprire una shell entrare nella cartella appena spacchettata e impostare de variabili d'ambiente:
export PATH=$PATH:/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi/bin
export CC=/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi/bin/arm-openwrt-linux-uclibcgnueabi-gcc
export STAGING_DIR=/home/builder/vmg8828/staging_dir
export TOOLCHAIN_DIR='/home/builder/vmg8828/toolchain'
export CFLAGS="-fstack-protector-all -Izlibincludes -I../zlibincludes"
export LDFLAGS="-fstack-protector-all $STAGING_DIR/target-arm_v7-a_uClibc-0.9.32_eabi/usr/lib/libz.a"
./configure --host=arm-openwrt-linux-uclibcgnueabi --build=x86_64-linux-gnu --enable-static --prefix=/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi
siamo pronti per compilare, per controllo riporto prima la situazione delle variabili d'ambiente prima della compilazione ottenuta con printenv (ho eliminato quelle che non ci interessano):
Questa è la situazione env var:
builder@ubuntu:~/customdevelop/dropbear-2024.86$ printenv
LDFLAGS=/home/builder/vmg8828/staging_dir/target-arm_v7-a_uClibc-0.9.32_eabi/usr/lib/libz.a
SHELL=/bin/bash
USER=builder
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi/bin:/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi/bin
PWD=/home/builder/customdevelop/dropbear-2024.86
HOME=/home/builder
CFLAGS=-Izlibincludes -I../zlibincludes
STAGING_DIR=/home/builder/vmg8828/staging_dir
LOGNAME=builder
TOOLCHAIN_DIR=/home/builder/vmg8828/toolchain
CC=/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi/bin/arm-openwrt-linux-uclibcgnueabi-gcc
infine possiamo fare il config:./configure --host=arm-openwrt-linux-uclibcgnueabi --build=x86_64-linux-gnu --enable-static --prefix=/home/builder/vmg8828/staging_dir/toolchain-arm_v7-a_gcc-4.6.2_uClibc-0.9.32_eabi
e il make
a questo punto nella cartella dropbear-2024.86 ci saranno i programmi dropbear e dropbearkey. li possiamo trascinare nella cartella condivisa del router e collegarci al router via ssh navigando il filesystem fino al programma caricato diamo da shell ./dropbear --version e vedremo che il numero di versione è corretto e funziona
adesso proverò a compilare impostando delle opzioni riguardo le possibili chiavi e poi troverò un modo per sostituire dropbear del firmware o sovrascrivendo o impacchettando con ipk. vi tengo aggiornati
cito questo sito che mi è stato molto utile https://dvblog.soabit.com/building-custom-openwrt-packages-an-hopefully-complete-guide/
e anche quest altro https://www.gargoyle-router.com/old-openwrt-coding.html
Con la versione 14.04 di ubuntu può risultare problematico scaricare pacchetti a causa della mancanza di chiavi crittografiche. Perciò per scaricare ad esempio dropbear dal repository originale ( https://matt.ucc.asn.au/dropbear/releases/dropbear-2020.79.tar.bz2) è necessario aggiornare wget:
sudo apt-get install wget
se questo non dovesse essere sufficiente potrebbe essere necessario aggiornare anche OpenSSL:
$ wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/openssl/3.0.13-0ubuntu3/openssl_3.0.13.orig.tar.gz
$ tar -xvzf openssl_3.0.13.orig.tar.gz
$ cd openssl-3.0.13/
$ sudo ./config
$ sudo make
]# then Create symbolic link from ‘which openssl’ and restart the shell
Siccome non sono riuscito a compilare il firmware con dropbear aggiornato ho studiato come avviare un qualunque script all'avvio del router e riporto qualche nota:
la sequenza di avvio chiama in ordine:
Viene prima lanciato /etc/preinit
root@VMG8828-B50B /etc $ cat preinit
#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
# Copyright (C) 2010 Vertical Communications
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH=/home/bin:/home/scripts:/opt/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/jamvm/bin:/opt/scripts
export LD_LIBRARY_PATH=/lib/public:/lib/private:/lib/gpl:/lib
#set the head of the shell to be more informative (added by Vittorio Paragallo)
export PS1='${USER}@$(uname -n) $(pwd) $ '
# Generate device node
mount -t tmpfs -o noatime,mode=0755,size=512K tmpfs /dev
mount -t tmpfs -o noatime,mode=0755,size=512K tmpfs /tmp
sh /etc/init.d/makeDevs.sh
# Clean input/output
exec >/dev/console </dev/console 2>&1
exec /sbin/init </dev/console >/dev/console 2>&1
root@VMG8828-B50B /etc $
che chiama /sbin/init che diventa PID1. Init è un link simbolico a busybox root@VMG8828-B50B /etc $ ls -l /sbin/init
lrwxrwxrwx 1 root 0 14 Jan 30 17:06 /sbin/init -> ../bin/busybox
init legge il suo file di configurazione
* Nei sistemi SysVinit, questo è /etc/inittab
* Nei sistemi BusyBox, usa /etc/init.d/ e i symlink in /etc/rc*.d/
Determina il runlevel o la fase di avvio
* Esegue gli script in /etc/rcS.d/ per le operazioni iniziali
* Poi esegue quelli in /etc/rc3.d/ se il runlevel è 3 (multi-user mode)
Avvia i servizi di sistema
* In base agli script in /etc/init.d/, avvia servizi come:
* Rete (dnsmasq, zywifid)
* Logging (syslog-ng)
* Crontab (crond)
* Servizi personalizzati (bcm-base-drivers, zyinetled)
c'è anche inittab che sembrerebbe essere usato da busybox (forse viene chiamato proprio da init), ma non ho capito bene se e quando, comunque non è importante appena sarà più chiaro aggiornerò il post.
quindi l'inizializzazione chiama in ordine alfabetico tutti gli script in init.d e poi in Rc3.d
Quindi se si vuole avviare un programma all'avvio del router si può inserire lo script in Rc3.d (notare che tutti gli script già presenti sono link simbolici agli script in init.d).
All avvio verranno chiamati tutti gli script in ordine alfabetico dandogli il paramentro start. Quindi gli script che andiamo ad aggiungere conviene prefissarli con S99 in modo che vengano eseguiti per ultimi.
Questo codice può fungere da template per tutti i servizi che vogliamo avviare, è un semplice helloworld arricchito con la possibilità di gestire i parametri start, stop, fare logrotate e avere processi singleton (come nel mio caso con dropbear):
root@VMG8828-B50B /etc/rc3.d $ pwd
/etc/rc3.d
root@VMG8828-B50B /etc/rc3.d $ ls -l S99helloworldv2.sh
-rwxr-xr-x 1 root 0 2109 Feb 18 14:46 S99helloworldv2.sh
root@VMG8828-B50B /etc/rc3.d $ cat S99helloworldv2.sh
#!/bin/sh
export PATH=/home/bin:/home/scripts:/opt/bin:/bin:/sbin:/usr/bin:/usr/sbin
export LD_LIBRARY_PATH=/lib/public:/lib/private:/usr/lib:/lib:/usr/lib/ebtables:/usr/lib/iptables
EXEC_NAME=helloworldv2
EXEC_PATH=/usr/sbin
LOGROTATE_CONF=/var/log/${EXEC_NAME}.conf
LOGROTATE_FILE=/var/log/${EXEC_NAME}.log
if [ ! -f "$LOGROTATE_FILE" ]; then
touch "$LOGROTATE_FILE"
fi
if [ ! -f $LOGROTATE_CONF ]; then
echo "${LOGROTATE_FILE} {
size 50k
rotate 3
compress
missingok
notifempty
copytruncate
}" > $LOGROTATE_CONF
fi
run_logrotate()
{
logrotate $LOGROTATE_CONF
}
start()
{
while true; do
run_logrotate
echo "$(date '+%d-%m-%y %H:%M:%S') helloworldv2" > /dev/pts/0
echo "$(date '+%d-%m-%y %H:%M:%S') helloworldv2" >> $LOGROTATE_FILE
sleep 120 # Pausa di 2 minuti
done &
}
stop()
{
PID=$(pgrep -f "$EXEC_NAME")
for pid in $PID; do
if [ "$pid" != "$$" ]; then
echo "$(date '+%d-%m-%y %H:%M:%S') killing $EXEC_NAME with PID $pid !!!"
echo "$(date '+%d-%m-%y %H:%M:%S') killing $EXEC_NAME with PID $pid !!!" >> $LOGROTATE_FILE
kill -9 "$pid"
exit 0
fi
done
}
case "$1" in
start)
PID=$(pgrep -f "$EXEC_NAME")
if [ -z "$PID" ] || [ "$PID" = "$$" ] ; then
echo "$(date '+%d-%m-%y %H:%M:%S') Avvio di $EXEC_NAME..." >> $LOGROTATE_FILE
start
else
echo "$(date '+%d-%m-%y %H:%M:%S') $EXEC_NAME is already running wiyh PID $PID !!!"
echo "$(date '+%d-%m-%y %H:%M:%S') $EXEC_NAME IS ALREADY running with PID $PID" >> $LOGROTATE_FILE
fi
exit 0
;;
stop)
echo "$(date '+%d-%m-%y %H:%M:%S') Arresto di $EXEC_NAME..." >> $LOGROTATE_FILE
stop
exit 0
;;
restart)
stop
start
exit 0
;;
*)
echo "$0: unrecognized option $1"
exit 1
;;
esac
root@VMG8828-B50B /etc/rc3.d $
Come potete vedere questo script può gestire:
start quando il router viene avviato il sistema chiama helloworld2.sh start
stop quando il router viene arrestato il sistema chiama helloworld2.sh stop
reload
* nei casi in cui venga ricevuto un parametro diverso dai precedenti
questo permette quando viene lanciato con start di verificare se il processo non è già in esecuzione.
inonltre all'inizio crea i file conf e log per logrotate se non ci sono.
Questo script può fungere da template per qualunque script semplicemente sostituendo EXEC_NAME=helloworldv2 con il nome del nostro script.
Infine non bisogna dimenticare di rendere lo script eseguibile:
chmod +x /etc/Rc3.d/helloworldv2.sh
il path del log è impostato per scrivere i file su /var/log che è il file system temporaneo creato all'avvio, bisogna comunque tenere presente che è di dimensioni ridotte. Nel caso si volesse conservare grandi log, consiglio di sostituire con il path su una chiave usb e si risolvono i problemi di spazio, ad esempio:
LOGROTATE_CONF= /mnt/usb1_sda1log/${EXEC_NAME}.conf
LOGROTATE_FILE= /mnt/usb1_sda1/log/${EXEC_NAME}.log
I passaggi sono gli stessi del 2024.86 ma non funzionerà perchè lo sviluppatore ha inserito in nel file mlkem768.c degli static assert che non sono supportati da uclib così vecchio. Però lo sviluppatore ha già risolto il rpoblema nel master su github quindi la prossima release dovrebbe funzionare, intanto se si vuole compilare quindi bisogna scaricare il master ad oggi 27/04/25 corrisponde alla v2025.87 con la patch necessaria per la compilazione su uclib.
La versione già compilata per armv7 è qui https://github.com/VittorioParagallo/Zyxel-VMG8828-B50B-Mod/tree/main/dropbear/2025.87
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.