?>/script>'; } ?> [Tutorial] Cómo compilar OpenWrt a nuestro gusto Widgets Magazine

Autor Tema: [Tutorial] Cómo compilar OpenWrt a nuestro gusto  (Leído 474140 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
[Tutorial] Cómo compilar OpenWrt a nuestro gusto
« en: 24-09-2012, 12:06 (Lunes) »
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  ;)
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:
Código: [Seleccionar]
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev
En Fedora:
Código: [Seleccionar]
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:
Código: [Seleccionar]
git clone git://git.openwrt.org/openwrt.gitAlternativa (Repositorio con todos los parches para bcm63xx, versión Barrier Breaker 14.04):
Código: [Seleccionar]
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:



Ahora se nos habrá creado un nuevo directorio llamado openwrt. Nos desplazamos hasta él y actualizamos e instalamos los paquetes.
Código: [Seleccionar]
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

Para verificar que no nos falten paquetes/dependencias, y que está todo correcto ejecutamos
Código: [Seleccionar]
make prereq
Si no hay ningún mensaje de error, continuamos y escribimos
Código: [Seleccionar]
make menuconfig
Ahora es cuando seleccionamos el hardware para el que queremos compilar.
Siguiendo el ejemplo, debemos cambiar el 'Target System' a BCM63xx



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  ^-^



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'.



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 *).


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.



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.



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 .

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.

Código: [Seleccionar]
make kernel_menuconfig
Después de un rato, veremos una captura como esta. Debemos marcar 'Enable FPU Emulation'. Damos a Exit y contestamos , a guardar los cambios.



Y ahora a compilar.
Dependiendo del número de núcleos de nuestro procesador usaremos una de las siguientes instrucciones:

Código: [Seleccionar]
make -j 5 V=cs (procesador con 4 núcleos)
Código: [Seleccionar]
make -j 3 V=cs (procesador con 2 núcleos)
Código: [Seleccionar]
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  >:D

Si todo ha ido bien, veremos algo parecido a esta captura:



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  :D
« Última modificación: 05-03-2016, 19:07 (Sábado) por jar229 »

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #1 en: 24-09-2012, 12:06 (Lunes) »
:: Consejos ::
Obtener más información sobre un paquete:
1) Situarse encima del paquete en cuestión:

2) Presionar "?". De esta forma, aparecerá un menú que dará una descripción más extensa y que también informará de las dependencias de dicho paquete




Buscar la localización dentro del menú de un paquete:
1) Si en cualquier parte del menú de openwrt presionamos "/", aparecerá un menú en el cual podremos introducir el nombre del paquete que queremos buscar.

2) Introducimos el nombre del paquete que queremos buscar y pulsamos enter. Nos aparecerá la misma información que al "Obtener más información sobre un paquete". Si nos fijamos bien, aparece la localización del paquete dentro del menuconfig.




Actualizar el workspace sin recompilar el Toolchain:
1) Limpiamos la compilación actual de OpenWrt.
Código: [Seleccionar]
make clean2) Actualizamos a través de SVN a la última versión
Código: [Seleccionar]
svn update
./scripts/feeds update
3) Opcional: Borramos la configuración actual si queremos compilar para otra plataforma/dispositivo:
Código: [Seleccionar]
rm -rf .config .config.old
« Última modificación: 23-08-2014, 21:35 (Sábado) por Noltari »

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #2 en: 24-09-2012, 12:09 (Lunes) »
Cómo optimizar las compilaciones para routers con tan sólo 4 megas de flash: https://foro.seguridadwireless.net/openwrt/compilar-openwrt-a-nuestro-gusto/380/ . Gracias a mekkon por la aportación
« Última modificación: 21-11-2014, 12:18 (Viernes) por jar229 »

feluco

  • Visitante
Re: Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #3 en: 24-09-2012, 12:25 (Lunes) »
Muy buen trabajo  ;), a ver si trasteo con ello en una máquina virtual.

Noltari

  • Visitante
Re: Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #4 en: 24-09-2012, 12:31 (Lunes) »
Muy buen tuto, jar229 ;D.

He modificado el V=99 por V=cs, ya que V=99 era para Backfire 10.03.1 y anteriores.
En cuanto pueda añado mas cosas al tutorial.

Saludos!

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #5 en: 24-09-2012, 12:46 (Lunes) »
Muy buen tuto, jar229 ;D.

He modificado el V=99 por V=cs, ya que V=99 era para Backfire 10.03.1 y anteriores.
En cuanto pueda añado mas cosas al tutorial.

Saludos!

Gracias por la correción.
Si te apetece explicar el proceso de 'parcheo' o añadir cualquier otra cosa, adelante.
Tú eres el master ;D

Muy buen trabajo  ;), a ver si trasteo con ello en una máquina virtual.

Espero que sea útil.
La verdad es que las primeras veces (como todo), parece algo complicado, pero al final, cuando le coges el 'truquillo' es 'coser y cantar'  ;D
« Última modificación: 24-09-2012, 13:12 (Lunes) por jar229 »

SERASER

  • Visitante
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #6 en: 24-09-2012, 13:04 (Lunes) »
Que nivelazo de "moderatas" que hay por aqui :D

Enhorabuena Jar229, y muchas gracias por el tuto.

Y ahora la "pedrada" ;D ;D

¿se asemejaria la forma de compilar en este tuto si queremos hacerlo para la plataforma lantiq?

Salud.

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #7 en: 24-09-2012, 13:31 (Lunes) »
Que nivelazo de "moderatas" que hay por aqui :D

Enhorabuena Jar229, y muchas gracias por el tuto.

Y ahora la "pedrada" ;D ;D

¿se asemejaria la forma de compilar en este tuto si queremos hacerlo para la plataforma lantiq?

Salud.

Es que hemos tenido buenos maestros  ;D ;D

El proceso, debería ser muy parecido, salvo que seleccionando lantiq en 'Target System'. A partir de ahí, en 'Subtarget' supongo que sería 'Danube' y luego el router.

Pongo 3 capturas para que veas la diferencia.







De todas formas, a ver si se pasa por aquí Pteridium, que es quien controla de esa plataforma y te lo confirma ...  ^-^

SERASER

  • Visitante
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #8 en: 24-09-2012, 15:03 (Lunes) »
Gracias Jar, por tus indicaciones ya se al menos por donde anda la cosa >:(

Y sssssssssss, no le digas "na" a Pteridium que ya me tiene medio aborrecido ^-^ >:D

Saludos y como no salud.

Noltari

  • Visitante
Re: Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #9 en: 24-09-2012, 17:00 (Lunes) »
Gracias por la correción.
Si te apetece explicar el proceso de 'parcheo' o añadir cualquier otra cosa, adelante.
Tú eres el master ;D
Ha sido un vistazo rápido, cuando tenga más tiempo añado cosillas y hago el proceso de parcheo, que como te he comentado ando algo liado.

Saludos!

elmasvital

  • Visitante
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #10 en: 24-09-2012, 18:33 (Lunes) »
Gran iniciativa. Felicides  >:( >:( >:( >:(

Me lo leere con mas intriga que un libro de crimenes... porque para mi compilar un kernel siempre fue un misterio.


Bastinazo

  • Visitante
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #11 en: 25-09-2012, 02:46 (Martes) »
¿Para los HG556a hay que aplicar un parche verdad?

Supongo que el que está en el hilo :https://foro.seguridadwireless.net/openwrt/openwrt-en-huaweig-hg556a/


Muchísimas gracias pro el aporte!!

Un saludo


venturi

  • Visitante
lo he estado intentando , y la verdad es que no me ha salido bien ,
primero por la direccion de svn que escribiste , no me funciona me da error . pero si pongo esta otra ya si svn co svn://svn.openwrt.org/openwrt/trunk/
luego  , porque me faltan librerias en ubuntu para poderlo hacer , pero instalando build-esential y make ya me funciona , cuando estoy en el paso 5 me encuentra a faltar el sub , y me pide que instale el sudo apt-get instal subversion . y cuando estoy en el menu y escojo los paquetes que quiero poner con la tecla espacio y termino y salgo guardando y hago el make v=99 me lo hace , pero cuando termina me dice que hay un error ( make -r world: build ailed . please re-run make with V=s to see what's going on
make: *** world error 1
y que prueve esta vez con make v=s para ver lo que pasa o algo asi entiendo yo .
ya decia yo que no iba a ser tan facil jejeje . lo hago desde ubuntu en una maquina virtual , porque el unico linux que uso es el wifislax 4.2 y tambien lo prove , pero me faltan librerias , las gnu c++. para poderlo usar.
venga gracias por el interes . un saludo ;)

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #13 en: 25-09-2012, 08:08 (Martes) »
lo he estado intentando , y la verdad es que no me ha salido bien ,
primero por la direccion de svn que escribiste , no me funciona me da error . pero si pongo esta otra ya si svn co svn://svn.openwrt.org/openwrt/trunk/
luego  , porque me faltan librerias en ubuntu para poderlo hacer , pero instalando build-esential y make ya me funciona , cuando estoy en el paso 5 me encuentra a faltar el sub , y me pide que instale el sudo apt-get instal subversion . y cuando estoy en el menu y escojo los paquetes que quiero poner con la tecla espacio y termino y salgo guardando y hago el make v=99 me lo hace , pero cuando termina me dice que hay un error ( make -r world: build ailed . please re-run make with V=s to see what's going on
make: *** world error 1
y que prueve esta vez con make v=s para ver lo que pasa o algo asi entiendo yo .
ya decia yo que no iba a ser tan facil jejeje . lo hago desde ubuntu en una maquina virtual , porque el unico linux que uso es el wifislax 4.2 y tambien lo prove , pero me faltan librerias , las gnu c++. para poderlo usar.
venga gracias por el interes . un saludo ;)

Te he movido el post a este hilo, que es dónde debe estar.
Lo del svn, ni idea de porqué te daba error, pero si así te funciona ...  ^-^

Qué paquetes has puesto en la compilación ?
Es probable, que alguno de ellos sea el que esté dando el problema.

¿Para los HG556a hay que aplicar un parche verdad?

Supongo que el que está en el hilo :https://foro.seguridadwireless.net/openwrt/openwrt-en-huaweig-hg556a/


Muchísimas gracias pro el aporte!!

Un saludo



Eso es.
Este tema está pendiente de ponerse en el tuto, pero si lees las 10 últimas páginas de ese hilo, encontrarás info de cómo hacerlo.

Bastinazo

  • Visitante
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #14 en: 25-09-2012, 14:02 (Martes) »
OK, como has dicho lo he comprobado y es así :

Citar
cd
svn co svn://svn.openwrt.org/openwrt/trunk/ openwrt
cd openwrt
patch -p0 -i hw556_svn.patch
./scripts/feeds update –a
./scripts/feeds install –a
make menuconfig (selecciono los paquetes que quiero instalar)
make kernel_menuconfig (selecciono FPU emulación)
make -j3 V=cs


Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: Re: Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #15 en: 25-09-2012, 14:46 (Martes) »
Todo correcto.
No olvides seleccionar (en el wifi) el profile del hg556a



Enviado desde mi U30GT-H usando Tapatalk 2

Bastinazo

  • Visitante
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #16 en: 25-09-2012, 18:08 (Martes) »
Gracias máquina !

venturi

  • Visitante
Re: Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #17 en: 26-09-2012, 09:04 (Miércoles) »
Una pregunta, cuánto espacio se debe tener como mínimo para poder compilar?  Es que en la máquina virtual con ubuntu, tengo 4gb libres y ke ha dado error mientras estaba compilando por no poder escribir en el disco por falta de espacio.

Enviado desde mi LT18i usando Tapatalk 2

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #18 en: 26-09-2012, 09:10 (Miércoles) »
4 gigas es poco.
Yo diría que 8 será suficiente  ;)

venturi

  • Visitante
Re: Re: Re: [Tutorial] Cómo compilar OpenWrt a nuestro gusto.
« Respuesta #19 en: 26-09-2012, 09:17 (Miércoles) »
4 gigas es poco.
Yo diría que 8 será suficiente  ;)
Ok, gracias maestro! 

Enviado desde mi LT18i usando Tapatalk 2