-
Instalar OpenWrt oficial personalizado en la MicroSD del router BPI-R3
Para quemar una imagen oficial personalizada de OpenWrt en una MicroSD y que esta imagen inicie correctamente en una BPI-R3 tenemos que seguir los siguientes pasos:
- Obtención de imagen para quemar en la MicroSD.
- Grabado de la imagen en la tarjeta.
- Configuración de los jumpers para iniciar desde la MicroSD.
- Inicio de la MicroSD.
OBTENCIÓN DE LA IMAGEN PERSONALIZADA DE OPENWRT
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:
En mi caso, personalizo los paquetes desplegando la flecha hacia abajo, borro todos los que aparecen y los reemplazo con esta lista personalizada:
# U-Boot uboot-envtools # Hardware # Chipset mt7986-wo-firmware kmod-mt7986-firmware # Ventilador kmod-hwmon-pwmfan # 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 busybox dnsmasq dropbear hostapd-openssl libc libgcc libustream-openssl logd netifd nftables openssh-sftp-server opkg procd procd-ujail procd-seccomp uci # Herramientas para terminal (extra) mc nano curl git hwclock ethtool # 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 msmtp # DDNS ddns-scripts ddns-scripts-services luci-app-ddns luci-i18n-ddns-es bind-host # 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 # Ejecutar scripts o comandos desde LUCI (Agrega Sistema >> Comandos personalizados) luci-app-commands luci-i18n-commands-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:
uboot-envtools mt7986-wo-firmware kmod-mt7986-firmware kmod-hwmon-pwmfan 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 busybox dnsmasq dropbear hostapd-openssl libc libgcc libustream-openssl logd netifd nftables openssh-sftp-server opkg procd procd-ujail procd-seccomp uci mc nano curl git hwclock ethtool 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 msmtp ddns-scripts ddns-scripts-services luci-app-ddns luci-i18n-ddns-es bind-host 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 luci-app-commands luci-i18n-commands-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).
Aquí todos juntos los paquetes para agregar funcionalidad para el modem EC25:
kmod-usb-serial kmod-usb-serial-wwan kmod-usb-serial-option kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan wwan uqmi usb-modeswitch
Al quemar una imagen personalizada, debemos tener en cuenta que, además de preparar la imagen para la MicroSD , si vamos a querer tener instalado OpenWrt en la SPI 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.
Después de ingresar estos paquetes en el personalizador, y antes de compilar, podemos crear un script que se ejecutará la primera vez que la imagen de OpenWrt se inicie en la BPI-R3. Esto lo hacemos en el campo de texto que está por debajo del campo de selección de paquetes (uci-defaults). Un script básico podría ser:
.
Después de darle a compilar, y de que la compilación haya resultado exitosa, podremos descargar 8 tipos de archivos individuales:
openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-sdcard.img: Imagen para quemar directamente en la MicroSD.
openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-nor-preloader.bin: Esta va en la mtd bl2?
openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-nor-bl31-uboot.fip: Es la imagen de cargador de arranque. Va en la mtd fip?openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-preloader.bin: Esta va en la mtd bl2?
openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-bl31-uboot.fip: Es la imagen de cargador de arranque. Va en la mtd 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.
El archivo que nos importa ahora mismo es el de la SD. Descomprimimos el archivo y obtendremos otro archivo con extensión .img.
QUEMADO DE LA IMAGEN EN LA TARJETA
Podemos quemar la imagen en la MicroSD de esta forma:
dd if=/home/usuario/openwrt-xx.xx.x-mediatek-filogic-bananapi_bpi-r3-sdcard of=/dev/mmcblk0 bs=10M status=progress sync
Eso sí, al acabar de quemar la imagen de la MMC en la tarjeta, hay que prestar atención a que 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
…donde /dev/mmcblk0 es el dispositivo de la tarjeta de memoria.
Nos desplazamos con flecha abajo hasta la última partición y luego, con flecha lateral nos desplazamos hasta la opción de resize.
Damos Enter en resize y aceptamos que use todo el espacio libre disponible.
Nos desplazamos hasta write y damos Enter, aceptando la escritura.
Salimos de cfdisk presionando Enter sobre «Quit.»
CONFIGURACIÓN DE JUMPERS PARA INICIAR DESDE LA MICROSD
Expulsamos la MicroSD, la metemos en el router BPI-R3, ponemos los jumpers 1, 2 y 4 hacia arriba. La posición del jumper 4 determinará si el OpenWrt booteado desde la MicroSD podrá acceder a la SPI NOR o a la SPI NAND. Para la NAND, arriba. Para la NOR, abajo.
INICIO DE LA MICROSD
Conectamos el cable de corriente y el OpenWrt debería iniciar sin problemas.
Los hacks de hacks4geeks son minitutoriales rápidos pensados para geeks con conocimiento informático avanzado. Si no entiendes o no consigues ejecutar un hack de esta web considera suscribirte a Premium para solicitar asistencia sobre el mismo.