-
Notifications
You must be signed in to change notification settings - Fork 1
Image OpenWRT maison
L'idée ici est d'être en mesure de créer une image maison "sur-mesure". Ensuite il nous est alors possible de créer ou modifier des paquets à la pièce pour nos besoins.
Extraire le dépôt git OpenWRT:
$ mkdir git-openwrt
$ cd git-openwrt
$ git clone https://github.com/openwrt/openwrt.git
Cloning into 'openwrt'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 523205 (delta 0), reused 0 (delta 0), pack-reused 523204
Receiving objects: 100% (523205/523205), 181.93 MiB | 6.69 MiB/s, done.
Resolving deltas: 100% (356846/356846), done.
Accéder à la branche désirée:
$ cd openwrt
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/lede-17.01
remotes/origin/master
remotes/origin/openwrt-18.06
remotes/origin/openwrt-19.07
$ git checkout remotes/origin/openwrt-19.07
Mise a jour et installation des flux:
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
Configurer OpenWRT:
$ make menu_config
Sélectionner l'image cible à produire:
Target System (...) --->
┌──────────────────────── Target System ────────────────────────┐
│ Use the arrow keys to navigate this window or press the │
│ hotkey of the item you wish to select followed by the <SPACE │
│ BAR>. Press <?> for additional information about this │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ ( ) Allwinner A1x/A20/A3x │ │
│ │ ( ) AppliedMicro APM821xx │ │
│ │ ( ) Atheros AR231x/AR5312 │ │
│ │ (X) Atheros AR7xxx/AR9xxx │ │
│ │ ( ) Atheros ATH79 (DTS) │ │
│ │ ( ) Broadcom BCM27xx │ │
│ └────────────────┴(+)───────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────┤
│ <Select> < Help > │
└───────────────────────────────────────────────────────────────┘
Sélectionner le sous-profil à utiliser:
Target Profile (Default Profile (all drivers)) --->
┌─────────────────────── Target Profile ────────────────────────┐
│ Use the arrow keys to navigate this window or press the │
│ hotkey of the item you wish to select followed by the <SPACE │
│ BAR>. Press <?> for additional information about this │
│ ┌────^(-)───────────────────────────────────────────────────┐ │
│ │( ) TP-LINK RE450 v1 │ │
│ │( ) TP-LINK TL-MR6400 v1 │ │
│ │( ) TP-LINK TL-WDR3500 v1 │ │
│ │( ) TP-LINK TL-WDR3600 v1 │ │
│ │(X) TP-LINK TL-WDR4300 v1 │ │
│ │( ) TP-LINK TL-WDR4300 v1 (IL) │ │
│ └────┴(+)───────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────┤
│ <Select> < Help > │
└───────────────────────────────────────────────────────────────┘
Target Profile (TP-LINK TL-WDR4300 v1) --->
Sauvegarder la configuration puis quitter:
< Save > & < Exit >
Amorcer le processus de compilation:
$ make -j `nproc`
Un bug rencontré avec stubby
se situe dans l'ordonnancement des ses dépendances. Au final le paquet n'est pas disponible dans les canaux standards pour mon routeur. Pour contourner ce problème on doit tout d'abord:
- compiler ses dépences
- compiler
stubby
- ensuite reproduire le processus normal de création de paquet
Installer les outils:
make tools/install
make toolchain/install
Pour atteindre stubby
on doit d'abord compiler toutes ses dépendances:
unbound
:
$ make -j1 V=s package/unbound/compile
$ make -j1 V=s package/unbound/check
libidn2
:
$ make -j1 V=s package/libidn2/compile
$ make -j1 V=s package/libidn2/check
getdns
:
$ make -j1 V=s package/getdns/compile
$ make -j1 V=s package/getdns/check
Compiler le paquet désiré (stubby
):
$ make -j1 V=s package/stubby/compile
$ make -j1 V=s package/stubby/check
Si erreur on peut nettoyer et recommencer:
$ make package/getdns/clean
Re-configurer OpenWRT:
$ make menuconfig
Maintenant reproduire le processus normal de création de paquet, sélectionner les options suivantes:
[*] Build the OpenWrt Image Builder
[*] Include package repositories (NEW)
[*] Build the OpenWrt SDK
[*] Package the OpenWrt-based Toolchain
Sauvegarder la configuration puis quitter:
< Save > & < Exit >
Sélectionner le paquet en particulier à compiler:
Network ---> IP Addresses and Names --->
<*> stubby................................ stubby - (daemon that uses getdns)
Compiler le tout
$ make -j`nproc`
Valider que le paquet a été généré:
$ find . -name "*.ipk" | grep stubby
./staging_dir/packages/ar71xx/stubby_0.3.0-1_mips_24kc.ipk
./build_dir/target-mips_24kc_musl/openwrt-imagebuilder-ar71xx-generic.Linux-x86_64/packages/stubby_0.3.0-1_mips_24kc.ipk
./bin/packages/mips_24kc/packages/stubby_0.3.0-1_mips_24kc.ipk