Construire une image OpenWrt

De neufbox 4

(Redirigé depuis OpenWrt)

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