OpenWrt Buildroot – Instalación

La herramienta de compilación (toolchain) preferida para construir OpenWrt es OpenWrt Buildroot. Se recomienda que usted use una Distribución GNU/Linux , ya sea una instalación independiente o una ejecutándose en un entorno virtual (VMware o Qemu).

Probablemente Cygwin no funcione correctamente, y aunque sea posible construir una imagen de OpenWrt en ~BSD o en un sistema MacOSX, no se garantiza que tendrá éxito. Siéntase libre de intentar y luego de reportar tus resultados. No olvide leer solución de problemas.

Prerrequisitos

  • 350 MB de espacio de disco duro para los archivos fuente a ser descargados.
  • 3-4 GB de espacio disponible en el disco duro para construir (Compilación-cruzada) OpenWrt.

Procedimiento

1. Realiza todo como usuario normal (como Root no!).
2. Ejecuta todos los comandos del Buildroot de OpenWrt en el directorio en el <sistema de construcción raíz> (<buildsystem root>), por ejemplo ~/openwrt/trunk/
3. No construyas en un directorio que contenga espacios en su nombre completo.
  1. Instala subversion (short: svn), para descargar cómodamente el código fuente, y lasherramientas de construcción para ayudar con el proceso de compilación:
    sudo apt-get update
    sudo apt-get install subversion build-essential
  2. Descargue las fuentes de OpenWrt con svn.
    mkdir ~/openwrt
    cd ~/openwrt
    svn co svn://svn.openwrt.org/openwrt/trunk/
    cd trunk
    • esto creará un directorio 'trunk', que es el directorio principal para el código fuente de OpenWrt
    • para la revisión R27988 de trunk, habrá 14,382 archivos con un tamaño total de 150 MiB
    • incluye el sistema Buildroot de OpenWrt
    • para mayor información acerca de descargando las fuentes.
  3. Descargar e instalar feeds usando feeds script. (opcional)
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    • luego de esto, Revision 7367, el directorio trunk contiene 26,650 archivos con un tamaño total de 302 MiB (para instalar paquetes individuales: ./scripts/feeds install PACKAGENAME)
  4. Use uno de los siguientes comandos para comprobar los paquetes que faltantes en el sistema (sistema anfitrión) en el cual quieres construir OpenWrt:
    make defconfig
    make prereq
    make menuconfig
    • esto mostrará la lista de paquetes de sistema necesarios para construir OpenWrt correctamente usando Buildroot. - Instala los paquetes faltantes usando los comandos de gestor de paquetes. Miré los ejemplos y la tabla a continuación para mayores detalles.

:!: Luego de configurar y ejecutar make (como se describe aquí), el directorio trunk contiene 244,451 archivos con un tamaño total de 3.2GiB!

Tabla de prerrequisitos y su paquete correspondiente

Aquí hay una tabla con el nombre de paquete para cada prerrequisito separado para diferentes distribuciones de Linux.

Prerequisite Debian Suse Red Hat OS X (via MacPorts) Fedora NetBSD
asciidoc asciidoc asciidoc asciidoc asciidoc asciidoc ?
bash bash bash ? bash ? bash
binutils binutils binutils binutils binutils binutils ?
bzip2 bzip2 bzip2 bzip2 bzip2 bzip2 ?
fastjar fastjar fastjar libgcj fastjar libgcj ?
flex flex flex ? flex flex ?
git git-core git-core ? ? ? ?
g++ g++ gcc-c++ gcc-c++ ? gcc-c++ ?
gcc gcc gcc gcc ? gcc ?
getopt util-linux util-linux ? getopt ? getopt
GNU awk gawk gawk gawk gawk gawk ?
gtk2.0-dev libgtk2.0-dev ? gtk2-devel gtk2 gtk2-devel ?
intltool-update intltool intltool intltool intltool intltool ?
jikes jikes ? jikes ?
libz, libz-dev zlib1g-dev zlib-devel zlib-devel zlib zlib-devel ?
make make make ? gmake make gmake
ncurses libncurses5-dev ncurses-devel ncurses-devel ncurses ncurses-devel ?
openssl/ssl.h libssl-dev libopenssl-devel openssl-devel openssl openssl-devel ?
patch patch patch ? patchutils patch ?
perl-ExtUtils-MakeMaker perl-modules perl-ExtUtils-MakeMaker perl-ExtUtils-MakeMaker p5-extutils-makemaker perl-ExtUtils-MakeMaker ?
python2.6-dev python2.6-dev python-devel ? python26 ? ?
rsync rsync rsync ? rsync rsync ?
ruby ruby ruby ? ruby ruby ?
sdcc sdcc sdcc ? sdcc sdcc ?
unzip unzip unzip ? unzip unzip ?
wget wget wget wget wget wget ?
working-sdcc ? ? ? ?
xgettext gettext ? ? gettext gettext ?
xsltproc xsltproc libxslt ? libxslt libxslt ?
zlib, zlib-static zlib1g-dev zlib-devel ? ? ? ?

Unfortunately not all dependencies are checked by make config:

Package Prerequisite Debian Suse Red Hat OS X Fedora NetBSD
intltool [Perl] XML::Parser libxml-parser-perl ? ? ? ? ?

Ejemplos

Debian 5.0 Lenny:

# aptitude install gawk ncurses-dev unzip zlib1g-dev

Debian 6.0 Squeeze:

# aptitude install libncurses5-dev zlib1g-dev gawk flex libssl-dev sdcc-nf

Fedora 17:

yum install -y subversion binutils bzip2 gcc gcc-c++ gawk gettext flex libz-dev flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker mkdir ~/openwrt cd openwrt svn co svn://svn.openwrt.org/openwrt/trunk/ cd trunk ./scripts/feeds update -a ./scripts/feeds install -a make defconfig make prereq make menuconfig ionice -c 3 nice -n 20 make -j 2 #for quad-core CPU put -j 3

openSuSE 11.1

# zypper install binutils bzip2 gawk gcc gcc-c++ gettext make ncurses-devel patch unzip wget zlib-devel flex git-core

Ubuntu:

$ sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk flex

Ubuntu 9.10, también fueron necesarios estos (30-03-2011):

$ sudo apt-get install gcc-multilib bison autoconf screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core

Ubuntu 11.10:

$ sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt

Ubuntu 12.04LTS:

$ sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl

Ubuntu 64bit:

$ sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext

Mac OS X (probados en Lion 64-bit):

  1. Descargue MacPorts .pkg Installer, e instale (mueva el scroll en forma horizontal para ver el segundo comando completamente):
  2. sudo port -v selfupdate
  3. sudo port install coreutils asciidoc bzip2 fastjar flex getopt gtk2 intltool jikes zlib openssl p5-extutils-makemaker python26 rsync ruby sdcc unzip gettext libxslt bison gawk autoconf wget gmake ncurses e2fsprogs osso-uuid
  4. Requerido para OS X 64-bit: Luego de obtener el código fuente usando el comando svn anteriormente, tenemos uqe editartrunk/tools/Makefile
  • en la linea 17, borre la primera instancia de "e2fsprogs" pero deje el resto de la linea
  • Comente la linea 22, linea 50, linea 52, linea 58 con el simbolo hash, poniendo # al comienzo de cada linea. Esas son las lineas que hacen que qemu sea construido, seguido de las dependencias de construcciones para mtd-utils (dep: e2fsprogs), qemu (dep: e2fsprogs), y e2fsprogs respectivamente.
  • Luego copie las cabeceras (headers) requeridas y las librerías para compilar tools/mtd-utils
    cd trunk;
    mkdir -p staging_dir/host/include/e2fsprogs;
    cp -R /opt/local/include/ossp staging_dir/host/include/e2fsprogs/;
    cp /opt/local/lib/libuuid* staging_dir/host/lib 

Miré el hilo: [HOWTO] Build OpenWRT Trunk from svn on Mac OS X 10.7 Lion para mayores detalles

Notas:

  • En Debian o Ubuntu use
    apt-cache search ""
    para encontrar los paquetes prerequisito. Los nombres aveces son diferentes
  • En openSuse algunos paquetes requieren repositorios adicionales. Busqué en http://packages.opensuse-community.org y agregue repositorios asi:
    zypper ar "http://download.opensuse.org/repositories/devel:/languages:/perl/openSUSE_11.1/devel:languages:perl.repo"
  • Para construir sus imágenes en una máquina Mac OS X Machine todo lo que usted necesita es el paquete "fileutils" delproyecto fink. (probado en Leopard 10.5.3)

Descargando el código fuente

Versión corta: https://dev.openwrt.org/wiki/GetSource
Usted tiene dos opciones:

  • Descargar la ultima versión estable, o
  • Descargar la instantánea sangrienta en desarrollo 'bleeding edge development snapshot' (actualmente denominada "Barrier Breaker", pero a menudo llamada "trunk").

El repositorio oficial está en svn pero también puedes utilizar git si quieres construir trunk. Refiérase a ObtenerFuentes para la URL y los comandos necesarios.

Usando las fuentes estables lanzadas (stable)

Al momento de escribir esto, la ultima versión estable lanzada es OpenWrt 10.03 "Backfire". No existe ninguna rama que se llame Backfire en el repositorio SVN, el cual todavía está siendo lentamente actualizado con parches verificados. Usándolo producirá una instalación de Openwrt estable y funcional, pero las funcionalidades nuevas y parches nuevos podrían no estar ahí. As an example, this will check out the source code that the backfire release is built from (plus the latest backported fixes from trunk):

svn checkout svn://svn.openwrt.org/openwrt/branches/backfire

You could alternatively download a 'tagged' version of the backfire sources. For instance, if you insist on using the pristine release sources (no backported fixes applied after the last release), you could use:

svn checkout svn://svn.openwrt.org/openwrt/tags/backfire_10.03

You can check out a certain revision:

svn checkout --revision=24045 svn://svn.openwrt.org/openwrt/branches/backfire/ ./build_dir

As for the packages copy feeds.conf.default in ./build_dir to feeds.conf and add "@24045" at the end of the line that checks out the package feed:

src-svn packages svn://svn.openwrt.org/openwrt/packages@24045

Usando las fuentes en desarrollo (bleeding edge)

La rama en desarrollo (trunk) contiene todo, desde la documentación hasta los parches experimentales.

  • obtener la ultima revisión
    svn checkout svn://svn.openwrt.org/openwrt/trunk/
    
  • obtener una revisión en particular
    svn co svn://svn.openwrt.org/openwrt/trunk/@<rev#>
    

Solución de problemas

  • Tenga cuidado con las variables de entorno inusuales, tales como * GREP_OPTIONS las cuales no debieran tener –initial-tab u otras opciones que afecten su salida
    • SED no debiera estar seteado. En caso de estarlo, ejecute `unset SED` antes de compilar. (Mire Ticket 10612.)

Back to top

es/doc/howto/buildroot.exigence.txt · Last modified: 2013/06/25 14:34 by lorema