Construire une image OpenWrt
De neufbox 4
Sommaire
Prérequis
- Un système d'exploitation qui permet d'utiliser le système de construction d'OpenWrt : GNU/Linux ou *BSD.
- Quelques outils de base dont la présence est vérifiée par OpenWrt : gcc, binutils, patch, bzip2, flex, bison, make, gettext, pkg-config, unzip, gawk, libz-dev , ncurses-dev , subversion et les entêtes libc .
Note importante : l'ensemble des étapes doit être effectué avec un compte différent de root.
Récupération des sources
Il faut récupérer la dernière version d'OpenWrt depuis le dépôt officiel (r23084 au 18/09/2010):
-laptop:~$ mkdir openwrt -laptop:~$ cd openwrt -laptop:~/openwrt$ svn co svn://svn.openwrt.org/openwrt/trunk -laptop:~/openwrt$ cd trunk
Plus d'information sur le dépôt d'OpenWrt (notamment si vous préférez git) : https://dev.openwrt.org/wiki/GetSource.
Ajout du dépôt OpenBox4
Avant de passer à la configuration de l'image, il peut être intéressant d'ajouter le dépôt de paquets d'OpenBox4 aux feeds d'OpenWrt. Pour cela, il faut éditer le fichier feeds.conf afin d'ajouter le ligne correspondant au dépôt subversion OpenBox4.
Vous devriez avoir un ficher feeds.conf qui ressemble à :
src-svn packages svn://svn.openwrt.org/openwrt/packages #src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package #src-svn luci http://svn.luci.subsignal.org/luci/branches/luci-0.9/contrib/package #src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone #src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl #src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop #src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce src-svn openbox4 http://svn.gna.org/svn/openbox4/trunk/openwrt-packages
Mise à jour de la liste des paquets
Il vous faut ensuite mettre à jour la liste des paquets disponibles :
-laptop:~/openwrt/trunk$ scripts/feeds update -a && scripts/feeds install -a
Configuration de l'image
Pour configurer l'image générée, OpenWrt dispose d'une interface simple similaire à celle de la configuration d'un noyau Linux.
-laptop:~/openwrt/trunk$ make menuconfig
NOTE : sur certains systèmes, la commande suivante demande l'installation de certains packtages non présent par défaut, il faut donc les installer avec la commande suivante (pour les os a base de apt-get) :
-laptop:~/openwrt/trunk$ apt-get install gawk libncurses5-dev libssl-dev
La première étape est de sélectionner la bonne cible de compilation:
- Dans Target System choisissez Broadcom BCM63xx [2.6]
Si vous souhaitez avoir le support de l'USB :
- Dans Kernel modules, puis USB Support cochez ( [*] )
- kmod-usb-core
- kmod-usb-ohci
- kmod-usb2
Note: cochez kmod-usb-storage si vous souhaitez activer le support des clef usb de stockage.
Si vous avez ajouté le dépôt d'OpenBox4, il vous est possible d'activer le support des LEDs de la NeufBox4 :
- Dans Utilities, cochez
- ledctl
Ceci aura pour effet d'installer l'outil ledctl et le module kmod-leds-nb4 correspondant.
Ensuite libre à vous d'ajouter des paquets supplémentaires.
Note: un paquet marqué d'un [*] sera inclus dans l'image générée, [M] produira un paquet mais ne sera pas inclus dans l'image et [ ] ne sera pas compilé. Il est possible d'effectuer des recherches dans le menuconfig grâce à la touche '/'.
Note: Le bouton help du menuconfig fournit généralement un descriptif plus important que celui présent lorsqu'on liste les paquets et affiche également les dépendances entre paquets.
Changer la version de linux :
change the kernel version in ./target/linux/<arch>/Makefile and make target/linux/clean
Configurer le kernel :
make kernel_menuconfig
Compilation
Pour lancer la compilation, rien de plus simple :
-laptop:~/openwrt/trunk$ make
ou si l'on veut le détail des ordres de compilation (très bavard)
-laptop:~/openwrt/trunk$ make V=99
Vous pouvez également spécifier à make que vous souhaitez utiliser plusieurs CPU et/ou cœurs, par exemple pour un maximum de 4 processus concurrents : make -j4
Si la compilation se déroule correctement, l'image se situe dans le sous-répertoire bin/brcm63xx/ et sera nommée openwrt-NEUFBOX4-squashfs-cfe.bin
Flashage
Deux possibilités:
- soit par CFE, mais nécessite accès série,
- soit par flashimage.py, mais il faut mettre au format attendu par flashimage.py l'image openwrt précédemment obtenue. Le script suivant le permet :
$cat owpr2full.sh #!/bin/sh # 2 parameters : first = input second = output cat /dev/zero | tr '\000' '\377' | dd bs=64k of=$2 count=128 seek=0 dd bs=64k of=$2 if=$1 seek=1 dd if=/dev/zero bs=64k of=$2 count=1 seek=127 $
où le premier paramètre est l'image openwrt et le second est l'image au format flashimage.py