Para compilar OpenWrt necesitamos un sistema operativo Linux. Yo uso Ubuntu, pero el proceso será muy similar en otras distribuciones.
Si eres usuario habitual de windows y no quieres particionar, ni complicarte, puedes hacer servir perfectamente una máquina virtual
![Wink ;)](https://foro.seguridadwireless.net/Smileys/nostalgia/wink.gif)
En nuestro caso, vamos a compilar la última versión de OpenWrt para la plataforma
bcm63xx con idea de instalarlo en el Huawei HG553.
Empezamos instalando las aplicaciones/librerias necesarias
Desde una ventana del terminal:
En Ubuntu:
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev
En Fedora:
sudo yum install subversion git-core gawk flex quilt gcc ncurses* zlib* gcc-c++
Bajamos las fuentes de la última versión de la rama trunk usando git:
git clone git://git.openwrt.org/openwrt.git
Alternativa (Repositorio con todos los parches para bcm63xx, versión
Barrier Breaker 14.04):
git clone git://github.com/openwrt-es/barrier-breaker-openwrt.git -b barrier-breaker_14.04
Al clonarlo con
git no se indica la revisión, pero es mucho más rápido que con SVN:
![](https://drive.google.com/uc?id=0ByrtEG1tVo67UGFadlpJcjdoekU)
Ahora se nos habrá creado un nuevo directorio llamado
openwrt. Nos desplazamos hasta él y actualizamos e instalamos los paquetes.
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
Para verificar que no nos falten paquetes/dependencias, y que está todo correcto ejecutamos
make prereq
Si no hay ningún mensaje de error, continuamos y escribimos
make menuconfig
Ahora es cuando seleccionamos el hardware para el que queremos compilar.
Siguiendo el ejemplo, debemos cambiar el
'Target System' a
BCM63xx![](https://lh3.googleusercontent.com/-FVdShkL4LAc/UGAYJdhJG1I/AAAAAAAAARg/ylvZAZLlIqc/s800/broadcom_bcm63xx.jpg)
En
'Target Profile', yo cambio el driver wifi que se incluye por defecto, por el 'propietario' de broadcom. Esto es una elección personal, así que depende del gusto de cada uno
![Azn ^-^](https://foro.seguridadwireless.net/Smileys/nostalgia/silvidos.gif)
![](https://lh4.googleusercontent.com/-UlbodxKjJC8/UGAYJR6S-pI/AAAAAAAAARk/_tVtNMTLn1U/s800/bcm43xx_wifi_propietario.jpg)
A partir de aquí, empezamos a añadir las aplicaciones/paquetes que necesitamos. Voy a poner un par de ejemplos para que quede más claro.
Nos desplazamos hacia abajo, hasta encontrar
'LuCi'. Seleccionamos (dando a enter) y volvemos a seleccionar en el apartado
'1. Collections'.
![](https://lh6.googleusercontent.com/-rNUPHZvc9dE/UGAYKE8tEYI/AAAAAAAAAR0/_twPnWGZjzs/s800/luci1.jpg)
Marcamos
luci (NEW).
Para seleccionar un paquete, y que este se incluya en la compilación, debemos dar 2 veces en la barra espaciadora hasta que quede marcado como en la captura (con un
*).
![](https://lh6.googleusercontent.com/-sTtx0f4yllk/UGAYKDddzqI/AAAAAAAAAR4/R4T-qt9sSsQ/s800/luci2.jpg)
Para volver atrás, seleccionamos
Exit (en la parte inferior).
Volvemos a estar en el apartado de
LuCi 'general'.
Nos desplazamos hasta
'3. Aplications' y damos a
Select. Vamos marcando lo que nos interese. En mi caso:
luci-app-p910nd, luci-app-samba, luci-app-statistics y luci-app-wol.
![](https://lh6.googleusercontent.com/-sfBF8omhRik/UGAYK7POb7I/AAAAAAAAASA/kQ9LK7BCLI4/s800/luci3.jpg)
Ya hemos terminado aquí, así que
Exit.
De nuevo otra vez en
LuCi 'general', nos vamos a
'5. Traslations' y bajamos hasta marcar
luci-i18n-spanish.
![](https://lh4.googleusercontent.com/-Xa_FHDCtkH8/UGAYLaWWaEI/AAAAAAAAASM/V8yl8IEQfeo/s800/luci4.jpg)
Hemos terminado con todo lo que tiene que ver con LuCi, así que
Exit y Exit. Volvemos al
menú general.
Lo primero, si nuestra idea es pinchar por USB un disco duro o pendrive, es darle soporte para que podamos trabajar con el. Así que vamos a
'Kernel modules' y entramos en
'Filesystems'. Aquí seleccionamos
kmod-fs-ext4 (sistema de ficheros ext en sus diversas variantes) y
kmod-fs-vfat (sistema de ficheros fat16 y fat32).
Exit y Exit y volvemos al
menú principal.
Vamos a
'Utilities' y entramos en
'Filesystem'. Buscamos y seleccionamos
ntfs-3g (lectura/escritura en discos con ntfs).
Exit y Exit y de nuevo al
menú principal.
Otra vez a
'Kernel Modules' y entramos en
'USB support'. Marcamos
kmod-usb-core, kmod-usb-ohci, kmod-usb-printer, kmod-usb-storage y kmod-usb2.
Exit.Nos desplazamos hacia arriba (seguimos en
'Kernel Modules'), hasta encontrar
'Native Language Support' y entramos. Seleccionamos
kmod-nls-cp437, kmod-nls-cp850, kmod-nls-cp852, kmod-nls-iso8859-15 y kmod-nls-utf8.
Exit y Exit. Otra vez al
menú principal.
Volvemos a darle a
Exit. Nos preguntará si deseamos guardar los cambios, a lo que por supuesto diremos que
sí.
Con esto, nos hemos preparado para compilar un firmware con la siguientes características: hardware basado en bcm6xx, driver wifi propietario de broadcom, LuCi, soporte para USB (impresora y discos con formato ext2, ext3, ext4, ntfs, fat16 y fat32) y samba.
Añadir más paquetes es sencillo. Localizarlos en la estructura (si no encontramos algo siempre podemos buscarlo si presionamos shift+7 y escribimos el nombre) y marcarlos. Ojo, no nos pasemos que puede salirnos un firmware que no 'quepa' en la flash de nuestro router.
Yo he incluído transmission, htop, wavemon y pure-ftpd.
Como yo uso mldonkey, necesito habilitar la
FPU emulation en el kernel. Si no es vuestro caso, podéis saltaros este paso.
make kernel_menuconfig
Después de un rato, veremos una captura como esta. Debemos marcar 'Enable FPU Emulation'. Damos a Exit y contestamos
sí, a guardar los cambios.
![](https://lh3.googleusercontent.com/-iutsmLXhHKg/UGAYJ3mLySI/AAAAAAAAARs/KhFDj93JGsk/s800/fpu.jpg)
Y ahora a compilar.
Dependiendo del número de núcleos de nuestro procesador usaremos una de las siguientes instrucciones:
make -j 5 V=cs
(procesador con 4 núcleos)
make -j 3 V=cs
(procesador con 2 núcleos)
make V=cs
(procesador con 1 sólo núcleo)
Activar modo "verbose" (más información por consola): V=cs en revisiones posteriores a Backfire 10.03.1, en anteriores o Backfire 10.03.1 usar V=99.
El tiempo de compilación, dependerá de nuestra máquina. Puede ir desde un par de horas, a 6/7 horas (o más).
Paciencia
![Evil >:D](https://foro.seguridadwireless.net/Smileys/nostalgia/tongue.gif)
Si todo ha ido bien, veremos algo parecido a esta captura:
![](https://lh5.googleusercontent.com/-w16XmWpO1bo/UGAtbc2nUWI/AAAAAAAAAS0/74ELSRfJvCU/s800/fin_compilacion.jpg)
Cuando haya terminado el proceso, tendremos nuestro firmware listo en la carpeta
/home/nombre_de_usuario/openwrt/trunk/bin/brcm63xx/. El que fichero que nos interesa para flashear en el Huawei HG553 es:
openwrt-HW553-squashfs-cfe.bin ![Cheesy :D](https://foro.seguridadwireless.net/Smileys/nostalgia/cheesy.gif)