La idea no es nueva. Hay algo publicado para el D-Link DIR-825 aquí:
https://wiki.debian.org/InstallingDebianOn/D-Link/DIR-825Después de varios días intentándolo, finalmente lo he podido instalar en un HG553. Presumiblemente, se puede instalar en cualquier router OpenWrt.
- jar229 lo ha instalado en un Xiaomi MiWiFi Mini.
En el PC,1. Compilar una imagen OpenWRT específica con emulación FPU y soporte USB para sistemas de archivo ext4Empezamos como siempre,
# Clonar repositorio
git clone https://www.github.com/openwrt/openwrt -b openwrt-18.06
# Actualizar e instalar fuentes
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
Debian utiliza un coprocesador matemático hardware (FPU) del que carece el HG553. Afortunadamente, su presencia se puede emular por software. Es muy importante habilitar la emulación FPU tanto en menuconfig como en kernel_menuconfig.
# Entrar en el menú de configuración
make menuconfig
# Seleccionar Sistema
Target System ---> (X) Broadcom BCM63xx
# Selecciona Perfil
Target Profile ---> (X) Huawei EchoLife HG553
# MUY IMPORTANTE, habilitar la emulación FPU
Global build settings ---> Kernel build options ---> (*) Compile the kernel with MIPS FPU Emulator
# Poner interfaz luci,
LuCI ---> Collections ---> <*> LuCI
# Dar soporte WiFi
Kernel modules ---> Wireless Drivers ---> <*> kmod-b43
# Dar soporte WPA-PSK
Network ---> <*> wpad-mini
Hay algunos paquetes que se pueden incluir en la compilación o instalarlos más tarde
Base system ---> <*> block-mount
Kernel modules ---> Filesystems ---> <*> kmod-fs-ext4
Kernel modules ---> USB Support ---> <*> kmod-usb-storage
Utilities ---> Disc ---> <*> cfdisk
Utilities ---> Filesystem ---> <*> e2fsprogs
Utilities ---> Compression ---> <*> xz-utils (si no se selecciona, no aparecerá deboostrap)
Administration ---> <*> debootstrap
Como dije más arriba, también hay que habilitar la emulación FPU en kernel_menuconfig
# Entrar en el menú de configuración del Kernel
make kernel_menuconfig
# Habilitar emulación FPU
Kernel type ---> (*) MIPS FPU Emulator
Por último,
# Compilar
make -j 3 V=cs
Y flashear el router.
En el router,2. Configurar la redEs imprescindible que el router tenga acceso a Internet.
3. Particionar y montar una memoria USB externaYo he utilizado un pendrive de 4GB que he particionado con la utilidad cfdisk en el propio router
# Particionar Disco
cfdisk /dev/sda
Partición sda1, tipo Swap, de 512M. Partición sda2, tipo Linux, con el resto de espacio.
Formatear y montar
# Formatear /dev/sda2
mke2fs -t ext4 /dev/sda2
# Montar
mount /dev/sda2 /mnt
La partición Swap no es necesaria por ahora, pero también se puede montar si se quiere
# Formatear swap
mkswap /dev/sda1
# Montar swap
swapon /dev/sda1
4. Instalar la utilidad debootstrapSi no se incluyó al compilar, instalar la utilidad debooststrap que se usará más adelante para descargar e instalar Debian.
opkg update
opkg install debootstrap
Junto con este paquete se descargan automáticamente otros paquetes que son necesarios.
5. Instalar Debian 8 («jessie») en el punto de montaje /mntAveriguar la arquitectura del router.
uname -m
En teoría, este comando devuelve la arquitectura del router. Pero, según reporta jar229, este método no es fiable. Sugiero entonces consultar la toh de OpenWrt.
Establecer variable de entorno. Esto es importante, si no, no irá bien la instalación.
LANG=C
Invocar el comando deboostrap con la opción --arch=<arquitectura_del_router>
debootstrap --verbose --arch=mips jessie /mnt http://ftp.de.debian.org/debian
Tarda un buen rato en descargar e instalarse.
6. ¡Debian!Para entrar en el entorno Debian, ejecutar el comando
chroot /mnt /bin/bash
Puede parecer que no ha sucedido nada, pero se está ejecutando un SO Debian con un Kernel OpenWRT
QUEDA POR HACER:- Montaje automático de Debian al arrancar el router.
- Establecer una IP propia para Debian distinta de OpenWRT
- Instalar soporte SSH para Debian.
- Etc.