Descripción general de OpenWrt e inicio rápido

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 LinkSysdel 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 LuCIcomo 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

Inserte la descripción de la imagen aquí
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 defconfige imprima la siguiente información, indicando que no hay error
Inserte la descripción de la imagen aquí

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.
Inserte la descripción de la imagen aquí
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.
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí

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.
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí

$ 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 虚拟机名 + vmdkformato puede ser.
Inserte la descripción de la imagen aquí
Abra la máquina virtual, ¡OpenWrt se ejecuta con éxito!
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
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.


  1. https://yq.aliyun.com/articles/97610 ↩︎

  2. https://openwrt.org/docs/guide-developer/quickstart-build-images ↩︎

  3. https://www.lxx1.com/3294 ↩︎

52 artículos originales publicados · Me gusta 30 · Visitas 50,000+

Supongo que te gusta

Origin blog.csdn.net/song_lee/article/details/104608599
Recomendado
Clasificación