Routeurs Wi-Fi/Compiler OpenWRT
Attention : Si installer OpenWRT sur votre routeur risque de le briquer, compiler OpenWRT risque de briquer votre cerveau |
Pourquoi compiler OpenWRT
Il est utile de compiler soi-même OpenWRT dans deux cas :
- Il n'existe pas de version officielle d'OpenWRT pour votre routeur, et la version la plus proche ne fonctionne pas
- L'image dont vous disposez est trop grosse pour le stockage de votre routeur et vous avez besoin de l'alléger
Ce guide est adapté de celui d'OpenWRT. Il n'est pas exhaustif et ne cherche pas à l'être, la documentation d'OpenWRT étant très complète et agréable à naviguer.
Pré-requis
- Un ordinateur tournant sous Linux (les ordis de salle info ne fonctionnent pas car une dépendance est manquante (
libz2.so.1.0
), de préférence avec un accèsroot
en cas de dépendances manquantes - Beaucoup de temps (la compilation peut prendre plusieurs heures)
- Une brebis à sacrifier aux dieux de la compilation
Installation des dépendances
Les dépendances requises sont détaillées ici
Pour Debian / Ubuntu, les dépendances peuvent être installées avec cette commande :
sudo apt install build-essential clang flex bison g++ gawk \ gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \ python3-distutils rsync unzip zlib1g-dev file wget
Pour les autres distributions, référez-vous à la documentation d'OpenWRT
Compilation
Bonne chance.
Voici un résumé de l'ensemble des commandes à exécuter, chacune étant ensuite détaillée.
git clone https://git.openwrt.org/openwrt/openwrt.git cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a wget [URL] -O .config # Voir l'étape correspondante pour déterminer l'URL à utiliser make menuconfig make -j1 V=s
Téléchargement du code source
La première étape est de cloner le repo Git et de cd
dedans.
git clone https://git.openwrt.org/openwrt/openwrt.git cd openwrt
Téléchargement des paquets disponibles
Il faut ensuite télécharger, puis installer les différentes listes de paquets pouvant être ajoutés à OpenWRT. Parmis ceux-ci se trouve notamment LuCI
, l'interface web d'administration d'OpenWRT.
./scripts/feeds update -a ./scripts/feeds install -a
Téléchargement d'une configuration de référence
La compilation d'OpenWRT est un processus complexe, avec de nombreuses options assez cryptiques. Cependant, on peut utiliser comme base la configuration utilisée pour compiler les images fournies d'OpenWRT.
Pour cela, le plus simple est de consulter la page correspondant à notre modèle sur le site d'OpenWRT, par exemple le Archer C50.
Dans la section Downloads, on peut voir que le lien de téléchargement de l'image d'OpenWRT est [1].
Ce qui nous intéresse dans cette URL est la partie entre /targets/
et le nom du fichier .bin
: ramips
, la target
, et mt7620
, la subtarget
.
Cette information va nous permettre de récupérer la dernière version du fichier de configuration approprié : il faut aller dans le dossier releases d'OpenWRT, pour trouver quelle est la dernière version d'OpenWRT disponible, par exemple 23.05.2
.
Cela a été un peu long, mais nous avons enfin tous les éléments nécessaires afin de déduire l'URL du fichier tant cherché : https://downloads.openwrt.org/releases/<version>/targets/<target>/<subtarget>/config.buildinfo
. Pour le Archer C50 avec la version 23.05.2
, cela donne https://downloads.openwrt.org/releases/23.05.2/targets/ramips/mt7620/config.buildinfo
On peut enfin télécharger ce fichier et l'enregistrer sous le nom .config
:
wget https://downloads.openwrt.org/releases/<version>/targets/<target>/<subtarget>/config.buildinfo -O .config
Pour le Archer C50 avec la version 23.05.2
, cela donne :
wget https://downloads.openwrt.org/releases/23.05.2/targets/ramips/mt7620/config.buildinfo -O .config
Configuration de OpenWRT
La configuration par défaut téléchargée à l'étape précédente est un début, mais elle n'est pas complète. Il est nécessaire d'entrer dans le menu de configuration de compilation avec la commande :
make menuconfig
La première chose à faire est de renseigner le modèle exact dans Target Profile
. Attention, le modèle n'apparaît que si la bonne target
et subtarget
ont été sélectionnés (ce qui est normalement le cas dans la configuration que nous avons téléchargé).
Compilation
Il est enfin l'heure lancer la compilation avec la commande :
Attention, durant la compilation des archives sont téléchargées, il est donc nécessaire d'avoir une connexion Internet.
make -j1 V=s
Les options passées permettent d'augmenter le niveau de verbosité, ce qui permet d'avoir des détails en cas d'erreur.
Cela permet aussi d'apprécier les nombreux avertissements émis pour diverses raisons, mais qui peuvent être ignorés.
Si tout c'est bien passé sans erreur, les fichiers générés se trouvent dans le dossier bin/targets/<target>/<subtarget>
Le fichier recherché se nomme normalement openwrt-snapshot-[quelque chose]-[target]-[subtarget]-[modèle]-squashfs-sysupgrade.bin
. Par exemple, pour le Archer C50 v6 un nom possible est openwrt-snapshot-r24801-b7f9742da8-ramips-mt76x8-tplink_archer-c50-v6-squashfs-sysupgrade.bin
.
Ce fichier correspond au fichier owrt.bin
indiqué dans le guide Routeurs_Wi-Fi/Tutoriel_TP-Link_Archer_C50#Préparation, qui peut ensuite être suivi dans le cas du Archer C50 afin d'obtenir le fichier tp_recovery.bin
.