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

De WikiBR
m (Florian.chive a déplacé la page Compiler OpenWRT vers Routeurs Wi-Fi/Compiler OpenWRT : Catégoriastion dans Routeurs W-Fi)
m (fix duplicate & links)
 
(7 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Attention|Si installer OpenWRT sur votre routeur risque de le briquer, compiler OpenWRT risque de briquer votre cerveau}}
{{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 ==
== Pourquoi compiler OpenWRT ==
Ligne 9 : Ligne 11 :


Ce guide est adapté de celui d'[https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem 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.
Ce guide est adapté de celui d'[https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem 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.
Ce guide n'est absolument pas optimal, et l'image résultante est bien moins fonctionnelle qu'une image pré-compilée officielle. Commencez par vérifier si une image n'existe pas déjà pour votre modèle, afin de vous épargner la purge qu'est ce procédé.


== Pré-requis ==
== Pré-requis ==


* Un ordinateur tournant sous Linux (les ordis de salle info ne fonctionnent ''pas'' car une dépendance est manquante (<code>libz2.so.1.0</code>), de préférence avec un accès <code>root</code> en cas de dépendances manquantes
* Un ordinateur tournant sous Linux (Debian est testé et fonctionne) (les ordis de salle info ne fonctionnent ''pas'' car une dépendance est manquante (<code>libz2.so.1.0</code>), de préférence avec un accès <code>root</code> en cas de dépendances manquantes
* Beaucoup de temps (la compilation peut prendre plusieurs heures)
* Beaucoup de temps (la compilation peut prendre plusieurs heures)
* Une brebis à sacrifier aux dieux de la compilation
* Une brebis à sacrifier aux dieux de la compilation
Ligne 40 : Ligne 44 :
  ./scripts/feeds install -a
  ./scripts/feeds install -a
   
   
  wget [URL] -O .config # Voir l'étape correspondante pour déterminer l'URL à utiliser
  wget https://stratus.binets.fr/s/aokdzwtmBsBtHAb/download?path=%2F&files=config.buildinfo -O .config
   
   
  make menuconfig
  make menuconfig
mkdir files files/etc files/etc/config files/etc/init.d files/etc/rc.d
nano files/etc/config/wpa.conf
nano files/etc/config/wireless
nano files/etc/init.d/wpa
cd files/etc/rc.d
ln -s -r ../init.d/wpa/S99wpa
cd ../../..
   
   
  make -j1 V=s
  make -j1 V=s
Ligne 55 : Ligne 70 :
=== Téléchargement des paquets disponibles ===
=== 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 <code>LuCI</code>, l'interface web d'administration d'OpenWRT.
Il faut ensuite télécharger, puis installer les différentes listes de paquets pouvant être ajoutés à OpenWRT.


  ./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 ===


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.
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.
 
Un fichier de configuration créé par le BR est disponible [https://stratus.binets.fr/s/aokdzwtmBsBtHAb 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 la <code>target</code> et <code>subtarget</code> ===
 
Si votre routeur est autre chose que le Archer C50 v6, il est nécessaire de changer la cible de compilation via la commande suivante :
 
make menuconfig
 
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>.


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].
=== Renseignement des fichiers de configuration ===


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].
Voici la partie cursed de ce guide. Je tiens à m'excuser profondément pour les instructions qui vont suivre.


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>.
==== rant ====


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>.
Le problème de cette méthode pour compiler OpenWRT est que, pour une raison qui m'échappe, il n'y a pas de persistance :


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 [https://downloads.openwrt.org/releases/23.05.2/targets/ramips/mt7620/config.buildinfo]
Théoriquement, OpenWRT utilise [https://openwrt.org/docs/techref/filesystems trois partitions] : la <code>rom</code>, qui correspond à l'image flashée et est utilisée en tant que référence et utilise le filesystem [https://openwrt.org/docs/techref/filesystems#squashfs SquashFS]. L'intérêt est que cette partition ne peut pas être modifiée, et peut donc être utilisée comme backup en cas de fausse manipulation sur un fichier.


On peut enfin télécharger ce fichier et l'enregistrer sous le nom <code>.config</code> :
La deuxième partition est une partition standard, utilisant [https://openwrt.org/docs/techref/filesystems#jffs2 Jssf2]. OpenWRT combine ces deux partitions via [https://openwrt.org/docs/techref/filesystems#overlayfs OverlayFS] afin d'obtenir la racine, qui est donc modifiable, les modifications allant dans la deuxième partition.


wget https://downloads.openwrt.org/releases/<version>/targets/<target>/<subtarget>/config.buildinfo -O .config
La troisième partition est un [https://openwrt.org/docs/techref/filesystems#tmpfs ramdisk], non persistent, qui sert pour les fichiers temporaires.


Pour le Archer C50 avec la version <code>23.05.2</code>, cela donne :
Le problème est qu'ici, ''nous n'avons pas la deuxième partition'' pour une raison qui m'échappe (je serais extrêmement heureux si quelqu'un pouvait trouver l'origine de ce problème sur lequel j'ai passé une semaine).


wget https://downloads.openwrt.org/releases/23.05.2/targets/ramips/mt7620/config.buildinfo -O .config
La conséquence est qu'il est impossible de configurer le routeur de manière standard, via SSH / LuCI (interface web d'administration), car les changements effectués ne persisteront pas après un reboot.


=== Configuration de OpenWRT ===
La seule solution que j'ai trouvé est d'inclure l'ensemble des fichiers de configuration dans l'image flashée, i.e. dans la rom.


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 :
'''CELA INCLUT LE SSID DU WIFI, LE MOT DE PASSE DU WIFI, ET LES IDENTIFIANTS EDUROAM'''.


  make menuconfig
Oui.
 
J'ai commis un crime de lèse-BRté : hardcoder des credentials dans une image compilée. J'ai honte. Je le referais. J'espère que quelqu'un va trouver une autre solution. En attendant, je n'ai pas mieux à proposer. Ô lecteur qui est sûrement en train de me juger, si tu te crois si malin, essaie donc de trouver un autre moyen de faire ceci, un moyen d'avoir un filesystem persistent. Rendez-vous dans une semaine (c'est le temps qu'il m'a fallut pour obtenir une image fonctionnelle).
 
==== do it ====
 
Les fichiers à inclure dans l'image doivent se trouver dans le dossier <code>files</code>. Il faut donc créer les dossiers nécessaires :
 
  mkdir files files/etc files/etc/config files/etc/init.d files/etc/rc.d
 
Ensuite, le fichier <code>files/etc/config/wpa.conf</code> doit avoir le contenu suivant, en remplaçant <code>PRENOM</code>, <code>NOM</code> et <code>PASSWORD</code> :
 
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
network={
  key_mgmt=IEEE8021X
  eap=TTLS
  identity="PRENOM.NOM@polytechnique.fr"
  anonymous_identity="anonymous@polytechnique.fr"
  password="PASSWORD"
  phase1="auth=TTLS"
  phase2="auth=PAP password=PASSWORD"
  eapol_flags=0
}
 
 
Le fichier <code>files/etc/config/wireless</code> doit avoir le contenu suivant, en remplaçant <code>WIFINAME</code> et <code>MOT_DE_PASSE</code> :
 
config wifi-device 'radio_2g'
        option type 'mac80211'
        option path 'platform/10300000.wmac'
        option channel '1'
        option band '2g'
        option htmode 'HT20'
        option disabled '0'
config wifi-iface 'wifi_2g'
        option device 'radio_2g'
        option network 'lan'
        option mode 'ap'
        option ssid 'WIFINAME'
        option encryption 'psk2'
        option key 'MOT_DE_PASSE'
        option country 'FR'
config wifi-device 'radio_5g'
        option type 'mac80211'
        option path 'pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option disabled '0'
config wifi-iface 'wifi_5g'
        option device 'radio_5g'
        option network 'lan'
        option mode 'ap'
        option ssid 'WIFINAME_5G'
        option encryption 'psk2'
        option key 'MOT_DE_PASSE'
        option country 'FR'
 
Cette configuration permet de générer deux réseaux wifi, un en 2.4GHz et un en 5GHz. Il est possible de désactiver l'un des deux en passant la valeur <code>'1'</code> à l'option <code>disabled</code> du <code>wifi-device</code> <code>radio_2g</code> ou <code>radio_5g</code>
 
Le fichier <code>files/etc/init.d/wpa</code> doit lui contenir le contenu suivant :
 
#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
START=99
start() {
  echo start
  wpa_supplicant -D wired -i eth0.2 -c /etc/config/wpa.conf -B
  sleep 5
  udhcpc -i eth0.2
}
 
Il ne reste plus qu'à créer un symlink permettant que la configuration <code>wpa_supplicant</code> démarre automatiquement :


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é).
cd files/etc/rc.d
ln -s -r ../init.d/wpa S99wpa


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


Il est enfin l'heure lancer la compilation avec la commande :
Il est enfin l'heure lancer la compilation avec la commande :
make -j1 V=s


Attention, durant la compilation des archives sont téléchargées, il est donc nécessaire d'avoir une connexion Internet.
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.
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.
Cela permet aussi d'apprécier les nombreux avertissements émis pour diverses raisons, mais qui peuvent être ignorés.
La compilation est un procédé très long (10 heures), mais une fois qu'elle a été effectuée une fois, les compilations ultérieures réutilisent les artefacts générés et sont donc très rapides.


Si tout c'est bien passé sans erreur, les fichiers générés se trouvent dans le dossier <code>bin/targets/<target>/<subtarget></code>
Si tout c'est bien passé sans erreur, les fichiers générés se trouvent dans le dossier <code>bin/targets/<target>/<subtarget></code>
Ligne 106 : Ligne 234 :
Le fichier recherché se nomme normalement <code>openwrt-snapshot-[quelque chose]-[target]-[subtarget]-[modèle]-squashfs-sysupgrade.bin</code>. Par exemple, pour le Archer C50 v6 un nom possible est <code>openwrt-snapshot-r24801-b7f9742da8-ramips-mt76x8-tplink_archer-c50-v6-squashfs-sysupgrade.bin</code>.
Le fichier recherché se nomme normalement <code>openwrt-snapshot-[quelque chose]-[target]-[subtarget]-[modèle]-squashfs-sysupgrade.bin</code>. Par exemple, pour le Archer C50 v6 un nom possible est <code>openwrt-snapshot-r24801-b7f9742da8-ramips-mt76x8-tplink_archer-c50-v6-squashfs-sysupgrade.bin</code>.


Ce fichier correspond au fichier <code>owrt.bin</code> 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 <code>tp_recovery.bin</code>.
{{Attention|Cette image ne doit surtout pas être diffusée car elle contient le mot de passe de l'élève}}
 
A la différence d'une image classique OpenWRT, celle-ci est directement fonctionnelle une fois flashée, mais ne peut pas être reconfigurée, sauf en recompilant.
 
Dans le cas du TP-Link ArchRant C50, après avoir copié ce fichier sous le nom <code>owrt.bin</code>, on peut suivre le guide [[Routeurs_Wi-Fi/Tutoriel_TP-Link_Archer_C50#Préparation]] afin d'obtenir le fichier <code>tp_recovery.bin</code> et le flasher.
 
[[Catégorie:Tutoriels]]
 
[[Catégorie:Wifi]]

Version actuelle datée du 18 janvier 2024 à 20:44

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.

Ce guide n'est absolument pas optimal, et l'image résultante est bien moins fonctionnelle qu'une image pré-compilée officielle. Commencez par vérifier si une image n'existe pas déjà pour votre modèle, afin de vous épargner la purge qu'est ce procédé.

Pré-requis

  • Un ordinateur tournant sous Linux (Debian est testé et fonctionne) (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 https://stratus.binets.fr/s/aokdzwtmBsBtHAb/download?path=%2F&files=config.buildinfo -O .config

make menuconfig

mkdir files files/etc files/etc/config files/etc/init.d files/etc/rc.d

nano files/etc/config/wpa.conf
nano files/etc/config/wireless
nano files/etc/init.d/wpa

cd files/etc/rc.d
ln -s -r ../init.d/wpa/S99wpa

cd ../../..

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.

./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.

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 la target et subtarget

Si votre routeur est autre chose que le Archer C50 v6, il est nécessaire de changer la cible de compilation via la commande suivante :

make menuconfig

La première chose à faire est de renseigner la target, la subtarget, puis le modèle exact dans Target Profile.

Renseignement des fichiers de configuration

Voici la partie cursed de ce guide. Je tiens à m'excuser profondément pour les instructions qui vont suivre.

rant

Le problème de cette méthode pour compiler OpenWRT est que, pour une raison qui m'échappe, il n'y a pas de persistance :

Théoriquement, OpenWRT utilise trois partitions : la rom, qui correspond à l'image flashée et est utilisée en tant que référence et utilise le filesystem SquashFS. L'intérêt est que cette partition ne peut pas être modifiée, et peut donc être utilisée comme backup en cas de fausse manipulation sur un fichier.

La deuxième partition est une partition standard, utilisant Jssf2. OpenWRT combine ces deux partitions via OverlayFS afin d'obtenir la racine, qui est donc modifiable, les modifications allant dans la deuxième partition.

La troisième partition est un ramdisk, non persistent, qui sert pour les fichiers temporaires.

Le problème est qu'ici, nous n'avons pas la deuxième partition pour une raison qui m'échappe (je serais extrêmement heureux si quelqu'un pouvait trouver l'origine de ce problème sur lequel j'ai passé une semaine).

La conséquence est qu'il est impossible de configurer le routeur de manière standard, via SSH / LuCI (interface web d'administration), car les changements effectués ne persisteront pas après un reboot.

La seule solution que j'ai trouvé est d'inclure l'ensemble des fichiers de configuration dans l'image flashée, i.e. dans la rom.

CELA INCLUT LE SSID DU WIFI, LE MOT DE PASSE DU WIFI, ET LES IDENTIFIANTS EDUROAM.

Oui.

J'ai commis un crime de lèse-BRté : hardcoder des credentials dans une image compilée. J'ai honte. Je le referais. J'espère que quelqu'un va trouver une autre solution. En attendant, je n'ai pas mieux à proposer. Ô lecteur qui est sûrement en train de me juger, si tu te crois si malin, essaie donc de trouver un autre moyen de faire ceci, un moyen d'avoir un filesystem persistent. Rendez-vous dans une semaine (c'est le temps qu'il m'a fallut pour obtenir une image fonctionnelle).

do it

Les fichiers à inclure dans l'image doivent se trouver dans le dossier files. Il faut donc créer les dossiers nécessaires :

mkdir files files/etc files/etc/config files/etc/init.d files/etc/rc.d

Ensuite, le fichier files/etc/config/wpa.conf doit avoir le contenu suivant, en remplaçant PRENOM, NOM et PASSWORD :

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
network={
  key_mgmt=IEEE8021X
  eap=TTLS
  identity="PRENOM.NOM@polytechnique.fr"
  anonymous_identity="anonymous@polytechnique.fr"
  password="PASSWORD"
  phase1="auth=TTLS"
  phase2="auth=PAP password=PASSWORD"
  eapol_flags=0
}


Le fichier files/etc/config/wireless doit avoir le contenu suivant, en remplaçant WIFINAME et MOT_DE_PASSE :

config wifi-device 'radio_2g'
        option type 'mac80211'
        option path 'platform/10300000.wmac'
        option channel '1'
        option band '2g'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface 'wifi_2g'
        option device 'radio_2g'
        option network 'lan'
        option mode 'ap'
        option ssid 'WIFINAME'
        option encryption 'psk2'
        option key 'MOT_DE_PASSE'
        option country 'FR'

config wifi-device 'radio_5g'
        option type 'mac80211'
        option path 'pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option disabled '0'

config wifi-iface 'wifi_5g'
        option device 'radio_5g'
        option network 'lan'
        option mode 'ap'
        option ssid 'WIFINAME_5G'
        option encryption 'psk2'
        option key 'MOT_DE_PASSE'
        option country 'FR'

Cette configuration permet de générer deux réseaux wifi, un en 2.4GHz et un en 5GHz. Il est possible de désactiver l'un des deux en passant la valeur '1' à l'option disabled du wifi-device radio_2g ou radio_5g

Le fichier files/etc/init.d/wpa doit lui contenir le contenu suivant :

#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
START=99
start() {
  echo start
  wpa_supplicant -D wired -i eth0.2 -c /etc/config/wpa.conf -B
  sleep 5
  udhcpc -i eth0.2
}

Il ne reste plus qu'à créer un symlink permettant que la configuration wpa_supplicant démarre automatiquement :

cd files/etc/rc.d
ln -s -r ../init.d/wpa S99wpa

Compilation

Il est enfin l'heure lancer la compilation avec la commande :

make -j1 V=s

Attention, durant la compilation des archives sont téléchargées, il est donc nécessaire d'avoir une connexion Internet.

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.

La compilation est un procédé très long (10 heures), mais une fois qu'elle a été effectuée une fois, les compilations ultérieures réutilisent les artefacts générés et sont donc très rapides.

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.

Warning.png Attention : Cette image ne doit surtout pas être diffusée car elle contient le mot de passe de l'élève

A la différence d'une image classique OpenWRT, celle-ci est directement fonctionnelle une fois flashée, mais ne peut pas être reconfigurée, sauf en recompilant.

Dans le cas du TP-Link ArchRant C50, après avoir copié ce fichier sous le nom owrt.bin, on peut suivre le guide Routeurs_Wi-Fi/Tutoriel_TP-Link_Archer_C50#Préparation afin d'obtenir le fichier tp_recovery.bin et le flasher.