Trabajo de preparación periférica de desarrollo Openwrt: (cero) compilar firmware openwrt

Prólogo

Durante el proceso de desarrollo, descubrí que el firmware descargado no tiene las funciones que necesito, por lo que aprendí el funcionamiento del firmware personalizado.
Este artículo describirá brevemente cómo compilar su propio firmware desde cero.
Mis requisitos de firmware son x86, con luci, con el controlador de puerto serie ch341 y el controlador rt3070.
¡Compilar firmware personalizado es una parte indispensable del aprendizaje de openwrt, recuerda!

Preparar herramientas de compilación.

Para evitar el error de que algunas herramientas son insuficientes durante el proceso de compilación, primero prepare el contenido relevante de antemano.
Nota: Lo siguiente ... OK es similar a lo que agregué para marcar el progreso. En el uso real, debe ingresar algo como :sudo apt-get install g++

sudo apt-get install g++  。。。OK
sudo apt-get install libncurses5-dev  …OK  
sudo apt-get install zlib1g-dev …OK
sudo apt-get install bison  …OK
sudo apt-get install flex   …OK
sudo apt-get install unzip  …OK
sudo apt-get install autoconf  …OK
sudo apt-get install gawk  …OK
sudo apt-get install make  …OK
sudo apt-get install gettext  …OK
sudo apt-get install gcc  …OK
sudo apt-get install binutils   …OK
sudo apt-get install patch  …OK
sudo apt-get install bzip2  …OK
sudo apt-get install libz-dev  …OK
sudo apt-get install asciidoc  …OK  
sudo apt-get install subversion  …OK
sudo apt-get install sphinxsearch  …OK
sudo apt-get install libtool   …OK
sudo apt-get install sphinx-common  …OK
sudo apt-get install libssl-dev  …OK
sudo apt-get install libssl0.9.8  …OK
sudo apt-get install git-core  …OK
sudo apt-get install build-essential   …OK
sudo apt-get install mercurial   …OK

Clonar el código fuente requerido

Busque una carpeta vacía , ábrala en modo no root y luego ejecute el siguiente comando
git clone git://github.com/openwrt/openwrt.git

Descargar componentes

Siga el paso anterior, ingrese el directorio
cd openwrt
y luego descargue e instale los componentes

./scripts/feeds update 
./scripts/feeds update -a
./scripts/feeds install –a

Tenga en cuenta que a veces la descarga incompleta del componente puede causar un error en el proceso de instalación, por lo general solo es necesario repetir las 3 líneas de instrucciones anteriores para resolver.
En este punto, si no hay ningún error, puede continuar con el siguiente paso.

Función de configuración

El directorio no cambia, use el comando
make menuconfig
y luego se abrirá una interfaz, aproximadamente de la siguiente manera,
la mitad superior de la página que necesita atención :
Inserte la descripción de la imagen aquí
la mitad inferior de la página que necesita atención:

Inserte la descripción de la imagen aquí

Seleccionar modelo ambiental

Elija de acuerdo con su propio equipo , soy una máquina virtual, así que elija x86_64
Inserte la descripción de la imagen aquí

Conducir relacionado

Inserte la descripción de la imagen aquí
Después de ingresar los elementos relacionados con la unidad, concéntrese en estos pocos elementos que le indiqué y luego configure estos contenidos relacionados.

Configurar controladores relacionados con la red

Inserte la descripción de la imagen aquí
Como queremos jugar a la marcación de ppp, es necesario seleccionarlos.

Configurar controladores relacionados con USB

Inserte la descripción de la imagen aquí
Principalmente dos partes: una admite el puerto serie a USBCH341 y la
Inserte la descripción de la imagen aquí
otra es para la preparación de la tarjeta de red

Configurar controlador inalámbrico

Inserte la descripción de la imagen aquí
También olvidé cuál era el 3070. Lo elegí todo, sin perder. (Algunos lugares tienen errores en múltiples opciones, como luci, deben prestar atención).

Añadir página LUCI

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Como se muestra en la figura, verifique los elementos.
He sufrido una pérdida aquí. Debido a que no verifiqué los elementos relevantes, no pude abrir la interfaz luci de ipv4, sino solo la interfaz ipv6. Olvidé qué elemento específico, si ocurre el mismo problema, compruebe cuidadosamente si la función relacionada con luci está marcada.
En la actualidad, debe verificarse.

Configuración relacionada con la red

Inserte la descripción de la imagen aquí
Sigue siendo el mismo, principalmente ppp

Guardar arreglo

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
¡No te olvides de ahorrar! !
¡No te olvides de ahorrar! !
¡No te olvides de ahorrar! !

(Lo importante se dice 3 veces)

Realizar compilación

Borre los datos antiguos
make clean
y compile.Durante el
make v=99
proceso de compilación, estos errores pueden ocurrir:
···

  • check_data_file_clashes: el paquete libustream-openssl20150806 quiere instalar el archivo /home/b/Desktop/test_openwrt/openwrt/build_dir/target-i386_pentium4_musl/root-x86/lib/libustream-ssl.so
    pero ese archivo ya está disponible150 m * por paquete.
  • opkg_install_cmd: no se puede instalar el paquete libustream-openssl20150806.
  • check_data_file_clashes: Package nginx-mod-luci-ssl quiere instalar el archivo /home/b/Desktop/test_openwrt/openwrt/build_dir/target-i386_pentium4_musl/root-x86/etc/nginx/conf.d/luci.locations
    Pero ese archivo es ya proporcionado por el paquete * nginx-mod-luci
  • check_data_file_clashes: el paquete nginx-mod-luci-ssl quiere instalar el archivo / home / b / Desktop / test_openwrt / openwrt / build_dir / target-i386_pentium4_musl / root-x86 / etc / uci-defaults / 60_nginx-luci-support
    Pero ese archivo es ya proporcionado por el paquete * nginx-mod-luci
  • opkg_install_cmd: No se puede instalar el paquete nginx-mod-luci-ssl.

···
Solución: desmarque:
nginx-mod-luci-ssl, nginx-mod-luci-ssl, libustream-openssl20150806
encuentran este tipo de error. Si desea verificar cuidadosamente las opciones de configuración, si ha seleccionado más.
make menuconfig
Verifique cuidadosamente
y luego vuelva a compilar.
Si no puede encontrarlo, solo puede
mv .config .config.bak
make clean
comenzar desde el principio.

Obtenga resultados de compilación

Una vez completada la compilación, si no hay ningún error y la compilación finaliza, se requiere un archivo de grabación en el directorio a continuación (Necesito: openwrt-x86-generic-combine-squashfs.img.gz)
Inserte la descripción de la imagen aquí

Grabar algunos hoyos:

make -C /home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/linux-x86_64/linux-5.4.24 KCFLAGS="-ffile-prefix-map=/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl=target-x86_64_musl" HOSTCFLAGS="-O2 -I/home/b/Desktop/test_openwrt/openwrt/staging_dir/host/include -I/home/b/Desktop/test_openwrt/openwrt/staging_dir/hostpkg/include -I/home/b/Desktop/test_openwrt/openwrt/staging_dir/target-x86_64_musl/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="x86_64-openwrt-linux-musl-" ARCH="x86" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="" KBUILD_BUILD_HOST="" KBUILD_BUILD_TIMESTAMP="Wed Mar 18 22:55:51 2020" KBUILD_BUILD_VERSION="0" HOST_LOADLIBES="-L/home/b/Desktop/test_openwrt/openwrt/staging_dir/host/lib" KBUILD_HOSTLDLIBS="-L/home/b/Desktop/test_openwrt/openwrt/staging_dir/host/lib" CONFIG_SHELL="bash" V=''  cmd_syscalls= KERNELRELEASE=5.4.24 CC="x86_64-openwrt-linux-musl-gcc" M="/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/wifidog-ng-nossl" modules
make[4]: Entering directory `/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/linux-x86_64/linux-5.4.24'
  CC [M]  /home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/wifidog-ng-nossl/main.o
/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/wifidog-ng-nossl/main.c:17:10: fatal error: net/netfilter/nf_nat_l3proto.h: No such file or directory
 #include <net/netfilter/nf_nat_l3proto.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[6]: *** [/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/wifidog-ng-nossl/main.o] Error 1
make[5]: *** [/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/wifidog-ng-nossl] Error 2
make[4]: *** [sub-make] Error 2
make[4]: Leaving directory `/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/linux-x86_64/linux-5.4.24'
make[3]: *** [/home/b/Desktop/test_openwrt/openwrt/build_dir/target-x86_64_musl/wifidog-ng-nossl/.built] Error 2
make[3]: Leaving directory `/home/b/Desktop/test_openwrt/openwrt/feeds/packages/net/wifidog-ng'
time: package/feeds/packages/wifidog-ng/nossl/compile#2.52#3.63#6.61
make[2]: *** [package/feeds/packages/wifidog-ng/compile] Error 2
make[2]: Leaving directory `/home/b/Desktop/test_openwrt/openwrt'
make[1]: *** [/home/b/Desktop/test_openwrt/openwrt/staging_dir/target-x86_64_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory `/home/b/Desktop/test_openwrt/openwrt'

Solución: deje el wifidog y mire el código fuente. El código fuente en sí tiene un error gramatical, pero no lo solucioné. Traté por un día y me di por vencido.

Conclusión

La velocidad de compilación es muy lenta, muy lenta. Si comienza desde cero después de la limpieza, puede tomar de 3 a 5 horas, dependiendo de su rendimiento y velocidad de red (se necesita descargar mucho contenido de Internet), hay muchas maneras de Acelere esta velocidad, pero para el jugador que compila por primera vez, todavía es apropiado usarla después de completar el proceso. Si hay un error en la compilación, resuelva activamente el error y luego continúe compilando, no continúe compilando directamente, el error o el error no desaparecerá solo (excepto los errores causados ​​por la red)
Le deseo todo lo mejor para obtener el firmware deseado, vamos | ू ・ ω ・ `)

19 artículos originales publicados · Me gusta5 · Visita 1283

Supongo que te gusta

Origin blog.csdn.net/ex_xyz/article/details/104964615
Recomendado
Clasificación