« Routeurs Wi-Fi/Compiler OpenWRT » : différence entre les versions

De WikiBR
(Ajout de la configuration du BR)
(Clarification du guide)
Ligne 61 : Ligne 61 :
  ./scripts/feeds update -a
  ./scripts/feeds update -a
  ./scripts/feeds install -a
  ./scripts/feeds install -a
=== Déterminer la <code>target</code> et la <code>subtarget</code> ===
OpenWRT peut être installé sur une grande variété de routeurs, qui sont classé par <code>target</code> et <code>subtarget</code>.
Pour déterminer quelles est notre <code>target</code> et notre <code>subtarget</code>, le plus simple est de se référer à la documentation officielle d'OpenWRT pour notre modèle, disponible [https://openwrt.org/toh/start ici]. Pour le Archer C50, la page est la [https://openwrt.org/toh/tp-link/archer-c50 suivante].
Il faut ensuite aller à la section '''Downloads''', afin d'obtenir le lien de téléchargement d'OpenWRT pour ce modèle.
Cette url se présente sous la forme suivante : https://downloads.openwrt.org/releases/<code>version</code>/targets/<code>target</code>/<code>subtarget</code>/openwrt-<code>version</code>-<code>target</code>-<code>subtarget</code>-<code>modele</code>-squashfs-factory-<code>zone</code>.bin
La partie qui nous intéresse de cette URL se situe juste après le <code>/targets/</code>.
Par exemple, pour le [https://openwrt.org/toh/tp-link/archer-c50#downloads Archer C50], le lien de téléchargement est https://downloads.openwrt.org/releases/22.03.0/targets/ramips/mt7620/openwrt-22.03.0-ramips-mt7620-tplink_archer-c50-v1-squashfs-factory-eu.bin
La <code>target</code> est donc <code>ramips</code> et la subtarget <code>mt7620</code>. Cette information va nous permettre de compiler OpenWRT pour notre modèle.


=== Téléchargement d'une configuration de référence ===
=== Téléchargement d'une configuration de référence ===
Ligne 78 : Ligne 94 :
==== Configuration de référence ====
==== Configuration de référence ====


Il est également possible d'utiliser comme base le fichier de configuration utilisé pour compiler les images officielles d'OpenWRT.
Il est également possible d'utiliser comme base le fichier de configuration utilisé pour compiler les images officielles d'OpenWRT à l'aide de la <code>target</code> et de la <code>subtarget</code>.
 
Pour cela, le plus simple est de consulter la page correspondant à notre modèle sur le site d'OpenWRT, par exemple le [https://openwrt.org/toh/tp-link/archer-c50 Archer C50].
 
Dans la section [https://openwrt.org/toh/tp-link/archer-c50#downloads Downloads], on peut voir que le lien de téléchargement de l'image d'OpenWRT est [https://downloads.openwrt.org/releases/22.03.0/targets/ramips/mt7620/openwrt-22.03.0-ramips-mt7620-tplink_archer-c50-v1-squashfs-factory-eu.bin].
 
Ce qui nous intéresse dans cette URL est la partie entre <code>/targets/</code> et le nom du fichier <code>.bin</code> : <code>ramips</code>, la <code>target</code>, et <code>mt7620</code>, la <code>subtarget</code>.


Cette information va nous permettre de récupérer la dernière version du fichier de configuration approprié : il faut aller dans le dossier [https://downloads.openwrt.org/releases/ releases] d'OpenWRT, pour trouver quelle est la dernière version d'OpenWRT disponible, par exemple <code>23.05.2</code>.
Pour l'obtenir, il faut aller dans le dossier [https://downloads.openwrt.org/releases/ releases] d'OpenWRT, afin de déterminer quelle est la dernière version d'OpenWRT disponible, par exemple <code>23.05.2</code>.


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é : <code>https://downloads.openwrt.org/releases/<version>/targets/<target>/<subtarget>/config.buildinfo</code>. Pour le Archer C50 avec la version <code>23.05.2</code>, cela donne <code>https://downloads.openwrt.org/releases/23.05.2/targets/ramips/mt7620/config.buildinfo</code>
L'URL du fichier de configuration fourni par OpenWRT est : https://downloads.openwrt.org/releases/<code>version</code>/targets/<code>target</code>/<code>subtarget</code>/config.buildinfo. Pour le Archer C50 avec la version <code>23.05.2</code>, cela donne <code>https://downloads.openwrt.org/releases/23.05.2/targets/ramips/mt7620/config.buildinfo</code>


On peut enfin télécharger ce fichier et l'enregistrer sous le nom <code>.config</code> :
On peut enfin télécharger ce fichier et l'enregistrer sous le nom <code>.config</code> :
Ligne 104 : Ligne 114 :
  make menuconfig
  make menuconfig


La première chose à faire est de renseigner le modèle exact dans <code>Target Profile</code>. Attention, le modèle n'apparaît que si la bonne <code>target</code> et <code>subtarget</code> ont été sélectionnés (ce qui est normalement le cas dans la configuration que nous avons téléchargé).
La première chose à faire est de renseigner la <code>target</code>, la <code>subtarget</code>, puis le modèle exact dans <code>Target Profile</code>. Si vous avez téléchargé le fichier de référence, <code>target</code> et <code>subtarget</code> sont déjà renseignés, mais le modèle n'est pas sélectionné.


=== Compilation ===
=== Compilation ===

Version du 14 janvier 2024 à 12:04

Warning.png Attention : Si installer OpenWRT sur votre routeur risque de le briquer, compiler OpenWRT risque de briquer votre cerveau

Ce guide a été écrit principalement pour le routeur Archer C50, mais il est entièrement transposable à tout modèle de routeur sur lequel OpenWRT peut être installé. Le détail de comment flasher OpenWRT dépend cependant du modèle, et n'est pas couvert par ce guide.

Pourquoi compiler OpenWRT

Il est utile de compiler soi-même OpenWRT dans deux cas :

  1. Il n'existe pas de version officielle d'OpenWRT pour votre routeur, et la version la plus proche ne fonctionne pas
  2. 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ès root 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

Déterminer la target et la subtarget

OpenWRT peut être installé sur une grande variété de routeurs, qui sont classé par target et subtarget.

Pour déterminer quelles est notre target et notre subtarget, le plus simple est de se référer à la documentation officielle d'OpenWRT pour notre modèle, disponible ici. Pour le Archer C50, la page est la suivante.

Il faut ensuite aller à la section Downloads, afin d'obtenir le lien de téléchargement d'OpenWRT pour ce modèle.

Cette url se présente sous la forme suivante : https://downloads.openwrt.org/releases/version/targets/target/subtarget/openwrt-version-target-subtarget-modele-squashfs-factory-zone.bin

La partie qui nous intéresse de cette URL se situe juste après le /targets/.

Par exemple, pour le Archer C50, le lien de téléchargement est https://downloads.openwrt.org/releases/22.03.0/targets/ramips/mt7620/openwrt-22.03.0-ramips-mt7620-tplink_archer-c50-v1-squashfs-factory-eu.bin

La target est donc ramips et la subtarget mt7620. Cette information va nous permettre de compiler OpenWRT pour notre modèle.

Téléchargement d'une configuration de référence

La compilation d'OpenWRT est un processus complexe, avec de nombreuses options assez cryptiques. Il est cependant possible de prendre comme base un fichier de configuration pré-existant.

Configuration du BR

Un fichier de configuration créé par le BR est disponible ici.

La commande pour le copier est donc :

wget https://stratus.binets.fr/s/aokdzwtmBsBtHAb/download?path=%2F&files=config.buildinfo -O .config

Ce fichier correspond à une configuration pour compiler OpenWRT sur le Archer C50 v6, mais peut être adapté à tout routeur en modifiant la cible de compilation (cf. étape suivante).

Configuration de référence

Il est également possible d'utiliser comme base le fichier de configuration utilisé pour compiler les images officielles d'OpenWRT à l'aide de la target et de la subtarget.

Pour l'obtenir, il faut aller dans le dossier releases d'OpenWRT, afin de déterminer quelle est la dernière version d'OpenWRT disponible, par exemple 23.05.2.

L'URL du fichier de configuration fourni par OpenWRT est : 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 la target, la subtarget, puis le modèle exact dans Target Profile. Si vous avez téléchargé le fichier de référence, target et subtarget sont déjà renseignés, mais le modèle n'est pas sélectionné.

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.