• Crear una imagen personalizada de OpenWrt para la BPI-R3

    La BananaPi BPI-R3 tiene un procesador MediaTek Filogic MT7986a. OpenWrt ofrece una herramienta web para personalizar la creación de la imagen de instalación. Con esta herramienta web podemos compilar una imagen personalizada, con los paquetes que nos interesa. Lo bueno de esto es que, elijamos los paquetes que elijamos, la propia herramienta de compilación seleccionará automáticamente todas las dependencias.

    Los enlaces a la herramienta web para las diferentes versiones son:

    Snapshot

    23.05.0

    En mi caso, personalizo los paquetes desplegando la flecha hacia abajo, borro todos los que aparecen y los reemplazo con esta lista personalizada:

    # Hardware
    
      # Chipset
    
        mt7986-wo-firmware
        kmod-mt7986-firmware
    
      # Wifi
    
        kmod-mt7915-firmware
        kmod-mt7915e
        kmod-mac80211
        kmod-mt7615e
        
      # SFP
    
        kmod-sfp
    
      # USB 2
    
        kmod-usb2
        kmod-usb-core
        kmod-usb-ehci
        kmod-usb-ohci
        usbutils
        usbids
    
      # USB 3
    
        kmod-usb3
        kmod-usb-xhci-hcd
        kmod-usb-xhci-mtk
    
      # GPIO
    
        kmod-gpio-button-hotplug
        kmod-i2c-gpio
        kmod-leds-gpio
    
      # MTD
    
        mtd
    
      # NVMe
    
        kmod-nvme
    
      # PCI
    
        pciutils
        pciids
    
    # Software
    
      # Herramientas para terminal (mandatorias para el funcionamiento del sistema)
    
        base-files
        uci
        opkg
        dropbear
        dnsmasq
    
      # Herramientas para terminal (extra)
    
        mc
        nano
        curl
        git
        hwclock
    
      # Acceso a volúmenes
    
        e2fsprogs
        f2fsck
        fstools
        mkf2fs
        blkid
        block-mount
        blockd
        blockdev
        dosfstools
        fdisk
        kmod-fs-vfat
        kmod-usb-storage
        parted
        nand-utils
        lsblk
    
      # Web
    
        luci
        luci-i18n-base-es
    
        # Adblock
    
          adblock
          luci-app-adblock
          luci-i18n-adblock-es
          tcpdump-mini
          msmtp
    
        # DDNS
    
          ddns-scripts
          ddns-scripts-services
          luci-app-ddns
          luci-i18n-ddns-es
    
        # Cortafuegos
    
          firewall4
          luci-app-firewall
          luci-i18n-firewall-es
    
        # OPKG
    
          opkg
          luci-app-opkg
          luci-i18n-opkg-es
    
        # uPnP
    
          luci-app-upnp
          luci-i18n-upnp-es
    
        # Programación Wifi
    
          wifischedule
          luci-app-wifischedule
          luci-i18n-wifischedule-es
    
        # Wake on LAN
    
          luci-app-wol (Instala la dependencia etherwake)
          luci-i18n-wol-es
    
        # Terminal en LUCI
    
          luci-app-ttyd
          luci-i18n-ttyd-es
    
        # Watchcat
    
          luci-app-watchcat
          luci-i18n-watchcat-es
    
        # VPN
    
          kmod-wireguard
          wireguard-tools
          luci-proto-wireguard
          qrencode
    
        # Módem
    
          luci-proto-modemmanager
    
          # MÓDEM EC25 (Modo QMI)
    .
            kmod-usb-serial
            kmod-usb-serial-wwan # Kernel support for USB GSM and CDMA modems
            kmod-usb-serial-option
    .
            kmod-mii
            kmod-usb-net
            kmod-usb-wdm
            kmod-usb-net-qmi-wwan # QMI WWAN driver for Qualcomm MSM based 3G and LTE modems
            wwan
            uqmi
    .
            usb-modeswitch
            minicom
    

    Aquí abajo, todos los paquetes en una única línea, menos los paquetes para controlar módems, porque no sé que modem MiniPCIe le pondréis:

    mt7986-wo-firmware kmod-mt7986-firmware kmod-mt7915-firmware kmod-mt7915e kmod-mac80211 kmod-mt7615e kmod-sfp kmod-usb2 kmod-usb-core kmod-usb-ehci kmod-usb-ohci usbutils usbids kmod-usb3 kmod-usb-xhci-hcd kmod-usb-xhci-mtk kmod-gpio-button-hotplug kmod-i2c-gpio kmod-leds-gpio mtd kmod-nvme pciutils pciids base-files uci opkg dropbear dnsmasq mc nano curl git hwclock e2fsprogs f2fsck fstools mkf2fs blkid block-mount blockd blockdev dosfstools fdisk kmod-fs-vfat kmod-usb-storage parted nand-utils lsblk luci luci-i18n-base-es adblock luci-app-adblock luci-i18n-adblock-es tcpdump-mini msmtp ddns-scripts ddns-scripts-services luci-app-ddns luci-i18n-ddns-es firewall4 luci-app-firewall luci-i18n-firewall-es opkg luci-app-opkg luci-i18n-opkg-es luci-app-upnp luci-i18n-upnp-es wifischedule luci-app-wifischedule luci-i18n-wifischedule-es luci-app-wol luci-i18n-wol-es luci-app-ttyd luci-i18n-ttyd-es luci-app-watchcat luci-i18n-watchcat-es kmod-wireguard wireguard-tools luci-proto-wireguard qrencode luci-proto-modemmanager
    

    Todos los paquetes de arriba garantizan que la BPI-R3 funcione correctamente, con todas sus funcionalidades activadas:

    La propia herramienta selecciona todas las dependencias para esa compilación y se asegura que no falte ninguno que tenga relación con los paquetes que le pegamos. Esto nos asegura una instalación funcional de OpenWrt en la BPI-R3 en la que podremos utilizar todos sus componentes y hacer todas las funciones básicas de un router (y alguna más).

    Si que es cierto que, una vez conectado al router (mediante SSH o LUCI/Web) suelo instalar algún que otro paquete extra desde la propia terminal:

    CONTROLADORES
    
    kmod-hwmon-pwmfan
    mmc-utils
    lscpu
    uboot-envtools
    uclient-fetch
    busybox
    

    Al quemar una imagen personalizada, y especialmente si vamos a querer tener instalado OpenWrt en la NAND de la BPI-R3, deberemos tener cuidado con que la imagen generada no ocupe más de 128MB, pues es el tamaño máximo que disponemos para quemar imágenes en ella. Si, por otro lado, queremos tener OpenWrt instalado en la EMMC, o si vamos a correrlo desde la propia MicroSD, no nos hace falta preocuparnos por el espacio que ocupe la imagen generada; la EMMC de la BPI-R3 tiene 8GB de espacio y una MicroSD, pues lo que estemos dispuestos a gastar.

    Eso si, hay que prestar atención a que, al acabar de quemar la imagen de la MMC en la tarjeta, la última partición (que es donde se montará el overlay) tiene de tamaño, como mucho, el total de espacio que suman los paquetes elegidos. Y eso es muy poco. Por eso, antes de sacarla del ordenador GNU/Linux donde la hemos «quemado» y antes también de meterla en la BPI-R3, hay que hacer que esa última partición (que es la que se llama «production» sea tan grande como todo el espacio libre disponible al final de la tarjeta de memoria. Esto lo hacemos abriendo en la distro donde la quemamos, una consola con permisos de administrador y ejecutando dentro:

    cfdisk /dev/mmcblk0

    …nos posicionamos sobre la última partición y le damos en resize. Al acabar le damos a write y ya estaremos listos para meterla en la BananaPi y empezar a operar con ella.

    Entonces, volviendo al ruedo, después de darle a compilar, y que la compilación haya resultado exitosa, podrás descargar los archivos individuales.

    Se nos descargarán 8 archivos:

    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-sdcard.img              (Para quemar en la MicroSD)
    
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-nor-preloader.bin       (Otro tipo de imagen)
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-nor-bl31-uboot.fip      (Imagen de cargador de arranque. Software de bajo nivel que carga el sistema operativo en la primera fase del arranque.)
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-preloader.bin     ()
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-bl31-uboot.fip    ()
    
    
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-emmc-preloader.bin      (Es la correspondiente a bl2_emmc)
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-emmc-bl31-uboot.fip     (Imagen de cargador de arranque. Software de bajo nivel que carga el sistema operativo en la primera fase del arranque.)
    
    openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-squashfs-sysupgrade.itb (Para actualizar un sistema que ya ejecuta OpenWrt)

    Podemos quemar la imagen en la MicroSD de esta forma:

    dd if=/home/usuario/sd.img of=/dev/mmcblk0 bs=10M status=progress

    La NAND de la RPI-R3 consta de 4 dispositivos:

    • reserved
    • ubi
    • bl2
    • fip

     


    Deja una respuesta