Backup e ripristino del sistema operativo OpenWRT
In questo tutorial vediamo come eseguire Backup e ripristino del sistema operativo OpenWRT in particolare delle configurazioni utente e dei pacchetti installati.
Le informazioni riportate in questo articolo fanno riferimento al seguente scenario:
– Router con sistema operativo OpenWRT (GL-MT300N)
– Windows 11: computer client da cui connettersi al Router per le attività di backup e ripristino tramite browser o client SSH
– Browser (Chrome) per accedere alla console di LUCI
– Client SSH (Putty)
Indice dei contenuti
Backup da interfaccia Luci
L’interfaccia Luci permette di eseguire il backup ma ha un limite: non permette di esportare il riferimento ai pacchetti installati e di conseguenza l’elenco dei pacchetti eventualmente aggiunti impedendo di ripristinare gli stessi post upgrade OpenWrt o su nostra necessità.
Vediamo comunque come utilizzare l’interfaccia LUCI per eseguire il backup delle configurazioni . Colleghiamoci alla interfaccia aprendo un browser:
http://192.168.8.1/cgi-bin/luci
Quindi selezioniamo dal menù superiore la voce “System” quindi “Backup/Flash Firmware”

Quindi procediamo con “Generate archive” alla sezione Backup

“Generate archive” produce un pacchetto con estensione .gz che potete scaricare ed aprire con 7Zip o similari Il paccetto contenente il buckup delle configurazioni di sistema e dei pacchetti installati ma, come detto in precedenza, non dei pacchetti aggiunti da utente.

Backup da riga di comando
In alternativa al Browser possiamo utilizzare un client SSH.
Nel esempio che trovi di seguito ho utilizzando “Putty” (programma gratuito) inserendo le stesse credenziali con cui accediamo a LUCI.


A questo punto eseguiamo il backup includendo anche l’elenco completo dei pacchetti installati con l’opzione “-k” tramite il seguente script:
sysupgrade -k -b /tmp/backup-${HOSTNAME}-$(date +%F).tar.gz
il comando esegue un backup completo aggiungendo il riferimento a host del router e data (es: backup-GL-MT300N-V2-2022-09-13.tar.gz) delle configurazioni OpenWRT includendo anche il riferimento ai pacchetti installati ottenendo come risposta “Saving config files…”

A questo punto chiudiamo il client SSH digitanto il comando
exit
Ora trasferiamo la copia del file di backup sul nostro sistema operativo Windows 11.
Apriamo un terminale su Windows e digitiamo:
scp root@192.168.8.1:/tmp/backup-GL-MT300N-* .
scp: comando terminale Windows che permerte di copiare file criptati tra macchine in rete con sistema operativo Linux e sistemi operativi compatibili con POSIX.
root@192.168.8.1: rappresenta il nome dell’utente che ha i diritti di amministrazione sul router OpenWRT (root) seguito dal simbolo @ e da indirizzo IP del server OperWRT
/tmp/backup-GL-MT300N-* rappresenta il percordo del file da copiare
il simbolo “.” rappresenta il percorso del file di destinazione sul computer Windows.

Il file di backup è quindi disponibile nella cartella dove abbiamo eseguito il comando scp che nel nostro caso equivale a:

Rispetto al backup eseguito dalla interfaccia web Luci
Ripristino del backup
Tramite l’interfaccia web di Luci è possibile ripristinare i contenuti del backup con un limite: la procedura di ripristino non si occupa di installare i pacchetti eventualmente presenti al momento del backup poi eliminati da procedure di upgrade o errori utente.
Per risolvere questo limite possiamo creare uno script “ad hoc” che vedremo nel prossimo capitolo.
Vediamo comunque come utilizzare l’interfaccia LUCI per eseguire il ripristino delle configurazioni . Colleghiamoci alla interfaccia aprendo un browser:
http://192.168.8.1/cgi-bin/luci
Quindi selezioniamo dal menù superiore la voce “System” quindi “Backup/Flash Firmware”

Quindi nella sezione “Restore backup” possiamo eseguire upload del file contenente il backup in precedenza esportato.


quindi procedere con “upload” e confermare


Ripristino dei pacchetti applicativi
Completato il ripristino delle configurazioni utente di OpenWRT potrebbe essere utile installare anche i pacchetti applicativi (sezione software di Luci) presenti al momento del backup.
Personalmente utilizzo il seguente script (fonte gist.github.com) per automatizzare questa attività post restore.
Ti suggerisco di eseguire i seguenti passaggi:
- salvare lo script qui /etc/package-list/persist.sh
- chmod 755 /etc/package-list/persist.sh
- verificare che nella cartella /etc/backup sia presente il file “installed_packages.txt” che contiene l’elenco dei pacchetti applicativi installati al momento del backup.
- eseguire lo script ed accedere al log “/var/log/persist-packages.log” per analizzare il risultato
#!/bin/sh
exec > /var/log/persist-packages.log 2>&1
set -x
PKGS=/etc/backup/installed_packages.txt
# https://github.com/openwrt/packages/issues/6744, not fixed in 18.06.x
fix_route53() {
if grep -q CURL_SSL /usr/lib/ddns/update_route53_v1.sh 2>/dev/null ; then
sed -i /CURL_SSL/d /usr/lib/ddns/update_route53_v1.sh
fi
}
list_extra_packages() {
if [ ! -f $PKGS ] || [ /usr/lib/opkg/status -nt $PKGS ] ; then
# Find the latest package in the ROM
PROG='
$1 == "Installed-Time:" && ($2 < NEWEST || NEWEST=="") {
NEWEST=$2
}
END {
print NEWEST
}
'
FLASH_TIME="$( awk "$PROG" /rom/usr/lib/opkg/status )"
# All user-installed packages minus those from ROM mistakenly marked as such
# plus (those explicitly marked previously minus those not installed)
MARKED=`awk '{RE=RE "|" $0} END { print RE }' $PKGS`
MARKED='^('${MARKED#|}')$'
PROG='
$1 == "Package:" {
PKG=$2
USR=""
}
$1 == "Status:" && $3 ~ "user" {
USR=1
}
$1 == "Installed-Time:" && $2 > FT && ( USR || ( PKG ~ MARKED ) ) {
print PKG
}
'
awk -v FT="$FLASH_TIME" -v MARKED="$MARKED" "$PROG" /usr/lib/opkg/status | sort > $PKGS.tmp
mv $PKGS.tmp $PKGS
# Maybe somebody updated it and OpenWRT team forgot to propagate the fix?
fix_route53
fi
}
install_extra_packages() {
set -e
opkg update
UPGRADE=`opkg list-upgradable | cut -d ' ' -f 1`
if [ -n "$UPGRADE" ] ; then
opkg upgrade $UPGRADE
opkg flag ok $UPGRADE
fi
INSTALL_CANDIDATES=`cat $PKGS`
# Weed out packages that don't exist anymore
INSTALL=""
for CANDIDATE in $INSTALL_CANDIDATES ; do
if [ -n "`opkg list $CANDIDATE`" ] ; then
INSTALL="$INSTALL $CANDIDATE"
fi
done
if [ -n "$INSTALL" ] ; then
opkg install $INSTALL
fi
fix_route53
find /etc -name \*-opkg -exec rm '{}' ';'
touch /usr/.extra-pakages-installed
sleep 70
reboot
}
if [ -f /usr/.extra-pakages-installed ] ; then
list_extra_packages
elif [ -f $PKGS ] ; then
install_extra_packages
fi
Se apprezzi il mio lavoro ti invito a lasciare un commento e ad iscriverti al canale Youtube collegato a questo sito per non perderti le notifiche dei nuovi video che puoi comunque sempre trovare nella sezione Tutorial e Recensioni.
[…] OpenWRT trasformare una stampate USB in wirelessBackup e ripristino del sistema operativo OpenWRTInstallare e configurare ADBlock su router OpenWRTCome eliminare un account Instagram (metodo […]
[…] OpenWRT trasformare uno scanner USB in wirelessOpenWRT trasformare una stampate USB in wirelessBackup e ripristino del sistema operativo OpenWRTInstallare e configurare ADBlock su router […]