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
- Instala
subversion(short:svn), para descargar cómodamente el código fuente, y lasherramientas de construcciónpara ayudar con el proceso de compilación:sudo apt-get update sudo apt-get install subversion build-essential
- para información acerca de la herramienta subversion lea
svny documentación de subversion (multiples languajes) - para información acerca de las herramientas de construcción lea
makey build-essential
- 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.
- Descargar e instalar feeds usando feeds script. (opcional)
./scripts/feeds update -a ./scripts/feeds install -a
- luego de esto, Revision 7367, el directorio
trunkcontiene 26,650 archivos con un tamaño total de 302 MiB (para instalar paquetes individuales:./scripts/feeds install PACKAGENAME)
- 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.
- Proceda con la construcción o construir OpenWrt en Mac OS X 10.7 Lion
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):
- Descargue MacPorts .pkg Installer, e instale (mueva el scroll en forma horizontal para ver el segundo comando completamente):
sudo port -v selfupdate
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
- 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_OPTIONSlas cuales no debieran tener–initial-tabu otras opciones que afecten su salidaSEDno debiera estar seteado. En caso de estarlo, ejecute `unset SED` antes de compilar. (Mire Ticket 10612.)
es/doc/howto/buildroot.exigence.txt · Last modified: 2012/10/22 00:40 by uniqdom
This text is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
