Trabajo de preparación periférica de desarrollo Openwrt: (cero) compilar firmware openwrt
- Prólogo
- Preparar herramientas de compilación.
- Clonar el código fuente requerido
- Descargar componentes
- Función de configuración
- Seleccionar modelo ambiental
- Conducir relacionado
- Configurar controladores relacionados con la red
- Configurar controladores relacionados con USB
- Configurar controlador inalámbrico
- Añadir página LUCI
- Configuración relacionada con la red
- Guardar arreglo
- Realizar compilación
- Obtenga resultados de compilación
- Grabar algunos hoyos:
- Conclusión
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 :
la mitad inferior de la página que necesita atención:
Seleccionar modelo ambiental
Elija de acuerdo con su propio equipo , soy una máquina virtual, así que elija x86_64
Conducir relacionado
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
Como queremos jugar a la marcación de ppp, es necesario seleccionarlos.
Configurar controladores relacionados con USB
Principalmente dos partes: una admite el puerto serie a USBCH341 y la
otra es para la preparación de la tarjeta de red
Configurar controlador inalámbrico
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
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
Sigue siendo el mismo, principalmente ppp
Guardar arreglo
¡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)
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 | ू ・ ω ・ `)