1 Introducción a OpenWrt
1.1 Origen histórico
El proyecto OpenWrt es un sistema operativo Linux para dispositivos integrados, comúnmente utilizado en enrutadores. Como una breve introducción del sistema operativo Linux incorporado, OpenWrt es altamente modular y automatizado, no solo ocupa un espacio pequeño, sino que también tiene componentes de red potentes . Muchos enrutadores domésticos domésticos en China tienen la sombra de OpenWrt, que se basa en OpenWrt para el desarrollo secundario. El firmware del enrutador principal incluye DD-WRT, Tomato y OpenWrt, que muestra su posición importante.
OpenWrt proyecto se inició en enero de 2004, se adoptó la primera versión LinkSys
del código fuente. Después de que se carga el código LinkSys, se cambia a la integración del kernel de Linux, y OpenWrt está completamente modularizado, y se introducen continuamente parches y controladores. La característica principal de OpenWrt es su alta escalabilidad y el sistema de archivos se puede escribir. Los desarrolladores no necesitan volver a compilar completamente después de cada modificación, solo compilan sus propios paquetes de software, lo que acelera el proceso de desarrollo. Además, OpenWrt proporciona un SDK, y cada software en ejecución puede compilarse con el SDK e instalarse y desinstalarse como un paquete de software. Sus características principales son las siguientes 1
- El código fuente no contiene código tripartito, solo enlaces
- Al compilar, descargue diferentes códigos fuente y parches de acuerdo con diferentes plataformas, y modifique el Makefile para obtener el último paquete de software
- Utilizar
LuCI
como una interfaz de gestión de usuario final, que es nuestra interfaz de administración web del router común - Método de gestión de configuración universal UCI
- Use un script para llamar a iptable para implementar la función de firewall, y el archivo de configuración se guarda en el archivo UCI
- Use el formato OPKG abierto y extensible para instalar paquetes de actualización
1.2 Directorio de proyectos OpenWrt
OpenWrt contiene los siguientes directorios
Directorio | Descripción |
---|---|
./config |
Archivo de configuración de opciones de compilación: contiene configuraciones de compilación global, configuraciones de desarrollador y configuraciones de compilación del núcleo |
./include |
Prepare el script de entorno, descargue el script de parche, compile Makefile y compile las instrucciones |
./package |
Varios paquetes de software, el paquete solo contiene Makefile, parche y archivo de configuración |
./scripts |
Almacenaba algunos scripts, usaba bash, Python, perl y otros lenguajes de scripting |
./target |
Plataforma integrada, incluido el contenido específico de la plataforma integrada |
./toolchain |
Compilador y biblioteca C, por ejemplo, incluidas las bibliotecas gcc y glibc |
./tools |
Comandos generales, herramientas auxiliares para generar firmware, como parches / make / spuashfs, etc. |
El directorio raíz de OpenWrt contiene los siguientes archivos
Archivo | Descripción |
---|---|
Config.in |
Como puede ver en include / toplevel.mk, este es el archivo asociado con make menuconfig |
Makefile |
El archivo de entrada para el comando make en el directorio de nivel superior |
feeds.conf.default |
Configure la dirección utilizada al descargar algunos paquetes de software de terceros |
rules.mk |
Definir algunas variables y funciones comunes usadas en Makefile |
Después de la compilación, el código fuente tendrá más archivos. Podemos utilizar el método de compilación del código fuente para generar firmware que admita plataformas específicas, o podemos descargar directamente la imagen oficial, que también proporciona archivos de imágenes binarias que admiten múltiples arquitecturas y plataformas. A continuación, presentaremos los métodos básicos de compilación de código fuente y generación de firmware, e instalación oficial de imágenes. Y mostrará OpenWrt instalado en dos plataformas de hardware diferentes, nuestra plataforma se instala OpenWrt plataforma de Frambuesa Pi basado en ARM y de Windows basada en x86 máquina virtual.
2 Compila el código fuente
Este método es adecuado para OpenWrt personalizado. Podemos personalizarlo según sea necesario. Para usuarios avanzados, puede modificar el código fuente para lograr el efecto del desarrollo secundario.
2.1 Descargar el código fuente
El código fuente se puede descargar en github o en el sitio web oficial de OpenWrt
# 任选其一
git clone https://github.com/openwrt/openwrt.git
git clone https://git.openwrt.org/openwrt/openwrt.git
2.2 Dependencias del proyecto de instalación
Se requiere el paquete de dependencia 2 para instalar y compilar el código fuente : compatibilidad con el entorno: encabezados gcc, binutils, bzip2, flex, python3.5 +, perl, make, find, grep, diff, unzip, gawk, getopt, subversion, libz-dev y libc
Sistema Debian / Ubuntu
sudo apt install subversion g++ zlib1g-dev build-essential git python python3 python3-distutils libncurses5-dev gawk gettext \
unzip file libssl-dev wget libelf-dev ecj fastjar java-propose-classpath
Ubuntu 18.04 y superior
sudo apt install build-essential libncursesw5-dev python unzip
Fedro 30
sudo dnf install @c-development @development-tools @development-libs zlib-static elfutils-libelf-devel gawk unzip file wget python3
CentOS
# CentOS
yum install binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static ncurses-libs sed sdcc intltool sharutils bison wget git-core openssl-devel xz
2.3 Modificar el archivo de configuración
Genere archivos de configuración predeterminados, guarde todas las configuraciones, incluida la verificación del entorno de compilación, y genere una cadena de compilación cruzada
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
Esta es una información que debe configurarse en el dispositivo de destino para facilitar la generación de firmware que cumpla con los requisitos. Tomamos el Raspberry Pi como ejemplo. La información de hardware del Raspberry Pi se puede encontrar en el código de versión de Raspberry Pi Raspberry Pi Raspberry Pi Daquan . De acuerdo con la información del hardware, complete lo anteriorOpenWrt Configuration
De acuerdo con la información del hardware, Target System selecciona Broadcom BCM27xx, y los siguientes elementos se generarán automáticamente. Las opciones de configuración que deben modificarse manualmente se personalizan a pedido, no es necesario
Configuraciones globales
- compilar con soporte para funcionalidad patentada (por defecto)
Módulo Kernel
- Dispositivos de bloque-> kmod-block2mtd (MTD: dispositivo de tecnología de memoria dispositivo de tecnología de memoria)
- Módulos API criptográficos -> kmod-crypto-ccm kmod-crypto-cmac
Los siguientes también pertenecen al subelemento Módulo Kernel
sistema de archivos
- kmod-fs-ext4
- kmod-fs-ntfs
- kmod-fs-vfat
USB Supprot
- kmod-usb-ohci
- kmod-usb-uhci
- kmod-usb-storage-extras
- kmod-usb2
Controladores inalámbricos
- kmod-ath
- kmod-ath9k-common
- kmod-ath9k-htc
- kmod-brcmfmac
Ingrese make defconfig
e imprima la siguiente información, indicando que no hay error
2.4 Compilar
# 编译前可更新,也可以不更新
make
Esto crea una imagen personalizada. Por supuesto, también podemos usar el archivo de imagen compilado oficial.
3 Instalación de imagen Raspberry Pi OpenWrt
El sitio web oficial de OpenWrt proporciona paquetes espejo adecuados para diversos hardware. Tome la Raspberry Pi como ejemplo, las imágenes compatibles son las siguientes. Dado que esta es la primera vez que instala OpenWRT usando la Raspberry Pi, elija la imagen de fábrica.
Si siente que la velocidad de descarga de la imagen oficial es demasiado lenta, como otras distribuciones de Linux, también puede usar doméstica Dirección espejo proporcionada, espejo OpenWrt de la Universidad de Ciencia y Tecnología de China
Win32 Disk Imager es una herramienta de uso común para grabar la imagen en la tarjeta SD. Si cree que la velocidad del enlace es demasiado lenta, Baidu también puede descargarla.
La práctica ha demostrado que cuando se utiliza Win32 Disk Imager para grabar, el posible problema es que OpenWrt no puede iniciarse normalmente y se ha quedado atascado en la interfaz del arco iris
Etcher es una excelente herramienta de creación de imágenes de disco U con funciones potentes. Por supuesto, el software Ether en sí también es muy grande.
Tenga en cuenta que al grabar archivos, primero debe formatear la tarjeta SD. Se recomienda SDCardFormatter.
Una vez que la grabación se realiza correctamente, inicie Raspberry Pi y la operación de configuración de la página web posterior le permite a Raspberry Pi actuar como enrutador. El laboratorio Raspberry Pi proporciona instrucciones más precisas para que Raspberry Pi instale OpenWrt para crear un súper enrutador
4 Instale OpenWrt en la máquina virtual
Descargue la arquitectura OpenWrt de x86 desde el sitio web oficial o la fuente espejo doméstica . Descomprima y convierta la imagen a un formato que sea compatible con Vmware
$ gzip -d openwrt-19.07.2-x86-generic-combined-ext4.img.gz
$ sudo qemu-img convert -f raw openwrt-19.07.2-x86-generic-combined-ext4.img -O vmdk openwrt-19.07.2-x86-generic-combined-ext4.vmdk
Vmware crea una nueva máquina virtual, y la configuración de parámetros es razonable, sin asignar demasiado espacio de memoria. Después de crear una máquina virtual, la máquina virtual en el directorio, vamos a cambiar el nombre de la imagen 虚拟机名 + vmdk
formato puede ser.
Abra la máquina virtual, ¡OpenWrt se ejecuta con éxito!
La dirección IP debe configurarse manualmente para permitir que el host acceda a OpenWrt, de modo que estén en el mismo segmento de red. Verifique la tarjeta de red original OpenWrt para
configurar la red de modo que la máquina host y la máquina física estén en el mismo segmento de red
ifconfig br-lan 192.168.229.100 netmask 255.255.255.0
Ahora puede acceder a los amigos felices del router
siguen otros ajustes, puede acceder a la Frambuesa Pi instalar el router OpenWrt para crear un super 3
5 Resumen
Como un excelente proyecto de código abierto, OpenWrt ha establecido una base sólida para el desarrollo de enrutadores domésticos. Este artículo solo presenta OpenWrt y analiza su uso general. No solo presenta el método general de compilación de código fuente, sino que también presenta el método oficial de instalación de imágenes. Al instalar la imagen OpenWrt en dos plataformas diferentes: Raspberry Pi y máquina virtual, Puede tener una comprensión perceptiva de OpenWrt. Nuestro objetivo final es usar OpenWrt para personalizar el firmware de su propio enrutador para que pueda tener una comprensión integral de los principios detrás del enrutador doméstico. Por lo tanto, a continuación, continuaremos profundizando en los secretos detrás de OpenWrt.