Crear una imagen con paquetes añadidos.

Objetivo: Crear una imagen del último firmware estable con paquetes añadidos de esa misma versión del firmware.


La manera más fácil y rápida de crear una imagen de Openwrt personalizada con los paquetes que queramos es la siguiente:

Paso 1. Preparar nuestro sistema para que compile paquetes. ¿(opcional)?

Para que pueda compilar paquetes nuestro sistema debe tener lo siguiente instalado:

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

Paso 2. Descargar y descomprimir el archivo Image Builder.

Nos vamos a la zona de descarga del último firmware estable. En nuestro caso es el Chaos Calmer 15.05.1 y para el router HH556A

https://downloads.openwrt.org/chaos_calmer/15.05.1/brcm63xx/generic/

A continuación nos descargamos el paquete ImageBuilder (En nuestro caso es un archivo de unos 145 MegaBytes)

https://downloads.openwrt.org/chaos_calmer/15.05.1/brcm63xx/generic/OpenWrt-ImageBuilder-15.05.1-brcm63xx-generic.Linux-x86_64.tar.bz2

Descomprimimos el archivo por ejemplo en el escritorio de nuestro Linux.

Abrimos un terminal y accedemos a la carpeta descomprimida. En nuestro caso lo hemos descomprimido en el escritorio y nos ha aparecido una carpeta llamada OpenWrt-ImageBuilder-15.05.1-brcm63xx-generic.Linux-x86_64.

Paso 3. Creación de una imagen para nuestro router.

Dentro de ese subdirectorio ejecutamos la orden make

$ make
Available Commands:
 help: This help text
 info: Show a list of available target profiles
 clean: Remove images and temporary build files
 image: Build an image (see below for more information).
Building images:
 By default 'make image' will create an image with the default
 target profile and package set. You can use the following parameters
 to change that:
  make image PROFILE="<profilename>" # override the default target profile
  make image PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages
  make image FILES="<path>" # include extra files from <path>
  make image BIN_DIR="<path>" # alternative output directory for the images

En el caso de este post la sintaxis para crear la imagen que queremos está en rojo.

Un ejemplo:

Para añadir por ejemplo el paquete nano a la imagen original pondremos:

 make image PACKAGES="nano"

Si no da error, la imagen generada la podemos encontrar en nuestro caso en la carpeta ./bin/brcm63xx/

Localizaremos la que es de nuestro router y podremos flashearlo sin problemas.

Otra opción:

En nuestro caso el firmware generado es par un Huawei HG556A. Podemos también añadirle o cambiar a los que trae por defecto de la siguiente manera.

Editamos el archivo

/target/linux/brcm63xx/profiles/huawei.mk

Buscamos las líneas:

define Profile/HG556a_AB
  NAME:=Huawei EchoLife HG556a (version A/B - Atheros)
  PACKAGES:=kmod-ath9k wpad-mini \
        kmod-usb2 kmod-usb-ohci kmod-ledtrig-usbdev nano
endef
define Profile/HG556a_AB/Description
  Package set optimized for Huawei HG556a version A/B (Atheros).
endef
$(eval $(call Profile,HG556a_AB))

define Profile/HG556a_C
  NAME:=Huawei EchoLife HG556a (version C - Ralink)
  PACKAGES:=kmod-rt2800-pci wpad-mini \
        kmod-usb2 kmod-usb-ohci kmod-ledtrig-usbdev nano
endef
define Profile/HG556a_C/Description
  Package set optimized for Huawei HG556a version C (Ralink).
endef
$(eval $(call Profile,HG556a_C))

Se ha puesto en rojo la sección PACKAGES y vemos como hemos añadido el paquete nano para las tres versiones del router. (AB) y (C).

6 comentarios en “Crear una imagen con paquetes añadidos.

  1. Necesito que nos ayuden a crear imagen Openwrt personalizada para router tp-link Wr841n V11 y configuración del router con wifidog. Agradezco la atencion.

  2. Buenas, en el caso de ya tener el firmware, cómo se puede hacer para cambiar las configuraciones que traen por defecto? O como no se puede crear una imagen de openwrt, de un router ya configurado, para que al momento de darle a reset inicie con la configuración deseada. Espero se entienda mí duda.
    Desde ya muchas gracias por la ayuda

    1. Sólo lo he hecho con el image builder. En esa compilación puedes añadir ficheros de configuración para que todo funcione a la primera.
      Para más información: https://wiki.openwrt.org/es/doc/howto/obtain.firmware.generate o https://lede-project.org/docs/user-guide/imagebuilder
      Se me ocurren a bote pronto otra alternativa:
      Instalar el firmware y luego meter un archivo en /etc/init.d/instala para que se ejecute en el próximo reinicio. (https://wiki.openwrt.org/doc/techref/initscripts)


      #!/bin/sh /etc/rc.common
      # Example script
      # Copyright (C) 2007 OpenWrt.org

      START=10
      STOP=15

      start() {
      echo start
      uci set network.lan.proto=static
      uci set network.lan.ipaddr=AQUI PONES UNA IP DENTRO DE TU RANGO DE RED
      uci set network.lan.netmask=255.255.255.0
      uci set network.lan.gateway=AQUI PONES TU PUERTA DE ENLACE
      uci set network.lan.dns=8.8.8.8

      # Ahora le dices que instale los paquetes que te interesa
      opkg update
      opkg install nano otro_paquete otro_paquete

      # Las configuraciones las puedes tocar todas a partir de aquí o bien trayendotelas de internet o bien con echo "Parametro=valor" >> /etc/archivo de configuración
      }

      stop() {
      echo stop
      # commands to kill application
      }

      Una vez creado tienes que hacer un /etc/init.d/instala enable

      Recuerda que una vez se haya descargado todo tienes que hacer un /etc/init.d/instala disable

      Por ahí también encontrarás que la gente restaura backups de las particiones pero dentro de esos backups seguro que hay información propia de cada router individualmente tal como las direcciones MAC de WIFI o de las tarjetas de red. Podría no funcionar.

      saludos.

  3. Hola, gracias por el tiempo y la dedicación para generar un conocimiento colectivo. tengo una consulta tengo un router marca NC-LINK con openWRT, también tengo el .bin. lo que necesito saber es como, a partir del .bin q tengo, puedo hacer para generar otro con paquetes agregados y archivos de configuración personalizada. el router es arquitectura ramips chipset mt7620

  4. Se me ocurre que podrías instalar el firmware que te bajaste, lo configuras a tu gusto, accedes al router y extraes los archivos de configuración que quieras.
    Para extraerlos puedes instalar el paquete sftp:

    opkg update
    opkg install openssh-sftp-server

    Te conectas con un cliente sftp y coges lo que necesites.

    A continuación usando el image builder (https://lede-project.org/docs/user-guide/imagebuilder)

    Añades dichos archivos con la sección:
    make image FILES=files/

    Previamente has de indicar los paquetes que quieres que te incluya.
    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *