OpenWRT : Gérer correctement le processus de mise à niveau (sysupgrade)

Article publié, le et modifié le
4 minute(s) de lecture

Cet article contient 719 mots.
Source brute de l'article : MD

Description

OpenWRT a un outil pour faire la mise à niveau d’une version à une autre nommé sysupgrade. Il est possible de l’invoquer depuis l’interface web d’administration Luci, depuis le menu “Système” > “Flash firmware”.

Le principal ennui - et cela peut en être un - est que par défaut, l’usage de sysupgrade va supprimer toute trace de configuration personnalisée… à moins de prendre quelques précautions bien utiles, avant !

Le procédé suivant explique pas-à-pas la mise à niveau tout en mode CLI !
c’est plus rapide, et normalement fonctionnel)

Procédé

La première chose à laquelle nous veillons est d’installer l’outil curl, car par défaut le binaire wget nativement installé ne supporte pas TLS.

# opkg install curl

opkgscript.sh

Ensuite, nous récupèrons ce script fort utile opkgscript.sh :

$ curl -O https://raw.githubusercontent.com/richb-hanover/OpenWrtScripts/master/opkgscript.sh

Et, nous donnons les droits d’exécution nécessaire :
# chmod 0700 opkgscript.sh

Astuce

2/ on sauvegarde la liste des paquets installés - pour pouvoir restaurer après la mise à niveau système :

# ./opkgscript.sh -v write

Le script écrit la liste dans un fichier /etc/config/opkg.installed.

Téléchargement firmware

Récupèrons la nouvelle version du firmware (e.g. pour la version 19.07.4, et, pour le routeur Ubiquiti EdgeRouter X) :

$ curl -O https://downloads.openwrt.org/releases/19.07.4/targets/ramips/mt7621/{openwrt-19.07.4-ramips-mt7621-ubnt-erx-squashfs-sysupgrade.bin,sha256sums}

Et, nous vérifions la somme de contrôle afin de nous assurer du firmware :
$ sha256sum -c sha256sums 2> /dev/null | grep OK

Sauvegarde configuration

L’étape suivante est de vérifier la configuration de la sauvegarde :

# sysupgrade -l

Si nécessaire, il faut éditer le fichier pour ajouter certains répertoires/fichiers, ainsi dans le cas où un utilisateur a été ajouté correctement au groupe `sudo` , il faudra ajouter ce qui suit dans le fichier /etc/sysupgrade.conf :

  • /etc/sudoers
  • /etc/sudoers.d/

Vérifions à nouveau - et sauvegardons la configuration :

# sysupgrade -b /tmp/backup-${HOSTNAME}-$(date +%F).tar.gz

Astuce

Puis, il faut récupèrer cette sauvegarde :
$ scp root@openwrt:/tmp/backup*.tar.gz $(pwd)
(où ‘openwrt’ est l’adresse IP de votre routeur…)

Ultimes vérifications

Par acquis de conscience, assurons-nous de l’espace mémoire et disque avec les commandes free et df, histoire de vérifier l’état et de la disponibilité.

Puis supprimons ce qui devient désormais inutile :

  • les fichiers de listes des paquets :
    # rm -r /tmp/opkg-lists/
  • les caches suivants :
    # sync && echo 3 > /proc/sys/vm/drop_caches
  • Et si nécessaire, suppression des pilotes wifi suivants :
    # rm /etc/modules.d/*{80211,ath9k,b43}*

Mise à Niveau Système

Enfin, passons à la mise à niveau système, tel que :

# sysupgrade -v openwrt-19.07.4-*-sysupgrade.bin

Exemple, pour le routeur Ubiquiti EdgeRouter X :
suspgrade -v openwrt-19.07.4-ramips-mt7621-ubnt-erx-squashfs-sysupgrade.bin

Code : ash

Saving config files...
etc/config/dhcp
etc/config/dhcp-opkg
etc/config/dropbear
etc/config/firewall
etc/config/firewall-opkg
etc/config/https-dns-proxy
etc/config/https-dns-proxy-opkg
etc/config/luci
etc/config/luci-opkg
etc/config/network
etc/config/ntpclient
etc/config/opkg.installed
etc/config/rpcd
etc/config/system
etc/config/ucitrack
etc/config/ucitrack-opkg
etc/config/uhttpd
etc/dropbear/authorized_keys
etc/dropbear/dropbear_rsa_host_key
etc/group
etc/hosts
etc/inittab
etc/luci-uploads/.placeholder
etc/opkg/keys/0b26f36ae0f4106d
etc/opkg/keys/1035ac73cc4e59e3
etc/opkg/keys/5151f69420c3f508
etc/opkg/keys/72a57f2191b211e0
etc/opkg/keys/792d9d9b39f180dc
etc/opkg/keys/9ef4694208102c43
etc/opkg/keys/b2d571e0880ff617
etc/opkg/keys/b5043e70f9a75cde
etc/opkg/keys/c10b9afab19ee428
etc/opkg/keys/dace9d4df16896bf
etc/opkg/keys/dd6de0d06bbd3d85
etc/opkg/keys/f94b9dd6febac963
etc/passwd
etc/profile
etc/profile.d/opkg.sh
etc/rc.local
etc/shadow
etc/shells
etc/sysctl.conf
etc/uhttpd.crt
etc/uhttpd.key
etc/uhttpd.key
etc/uhttpd.crt
Commencing upgrade. Closing all shell sessions.

Normalement votre session SSH va se fermer et le routeur démarrer !

Attention

Mise à Niveau “tiers”

# opkg update && opkg list-upgradable

Normalement suite à la mise à niveau, il ne devrait pas y en avoir beaucoup.

Restauration profil utilisateur

On répète les étapes d’installation de l’outil curl, puis du script opkgscript.sh. Et une fois installé et les droits d’exécution attribués, on l’exécute pour qu’il complète l’installation du “profil utilisateur” :

# ./opkgscript.sh -v install

Pour finir, mieux vaut redémarrer !


Ultimes Vérifications

Ensuite, vérifier la configuration de votre routeur :

  • que vos différentes interfaces réseaux soient toujours présentes et opérationnelles.
  • que votre configuration “firewall” soit correcte ; vérifiez dans les différents onglets votre configuration.
  • que les différents services, que vous auriez précédement installés, soient toujours opérationnels, tel qu’un tunnel IPv6, OpenVPN, ou tout service accessible depuis le menu “Services”.

Voilà…

Normalement, tout devrait fonctionner correctement en suivant correctement ce processus de mise à niveau.