Ensamblaje de granos
Explicaré por qué las imágenes existentes no son adecuadas. Su principal problema es que están construidos en el antiguo núcleo 3.4, y esto inmediatamente impone un límite en la versión máxima del compilador 4 y ubuntu 12.04 con seguridad, no recuerdo 14.04. Resulta que si desea utilizar el software y las bibliotecas más recientes, tendrá que reconstruir el núcleo más reciente. Por supuesto, puede eliminar la restricción de compilar al menos la versión 5 de gcc en las fuentes y corregir el código para que pueda compilarse en la versión 4, pero esto sigue siendo una mierda. Sin mencionar el hecho de que en nuestro caso la parte gráfica de Linux es superflua.
Para comenzar con kernel.org, sacamos el kernel 4.14.57; en ese momento era la última versión estable.
En la carpeta de origen, cree un script que inicie la configuración:
Obtenemos algo como esto:

En el menú de archivo en
/linux-4.14.57/arch/arm/configs/
seleccione el archivo
/linux-4.14.57/arch/arm/configs/
, existen las configuraciones básicas para los procesadores de la serie sunxi. Y luego necesita agregar algunas configuraciones. Es decir Buscamos debajo de las banderas especificadas y las configuramos.
Incrustemos todo en el núcleo siempre que sea posible.
CONFIG_BLK_DEV_INITRD: no utilizaremos ramfs en su lugar, luego iniciaremos Aufs (sistema de archivos avanzado de unificación de varias capas). En resumen, quite la casilla de verificación.
CONFIG_MEMCG: enciéndelo como todo lo que hay dentro
CONFIG_BLK_CGROUP - activar
CONFIG_CGROUP_DEVICE - activar
CONFIG_CGROUP_CPUACCT - activar
CONFIG_CGROUP_PERF: enciéndelo como todo lo que hay dentro
CONFIG_EXPERT: solo seleccione y deje todo dentro de forma predeterminada
CONFIG_BLK_WBT - elige como todo dentro
CONFIG_PARTITION_ADVANCED - seleccionar dentro
CONFIG_SUN_PARTITION - seleccionar
ARCH_SUNXI - dentro dejamos solo MACH_SUN5I
En soporte de bus, seleccione CONFIG_PCI, ya que el wifi USB requiere soporte de bus PCI. Obviamente, cuando el soporte wifi está habilitado, el kernel no requiere un bus pci, sin embargo, sin este wpa, el solicitante no encuentra wifi usb. Por qué sucede esto, puede examinar las profundidades de la historia, pero a juzgar por todo, sucedió históricamente, en general, necesita saber y recordar esto.
CONFIG_CPU_FREQ_STAT - buscar y seleccionar
Dentro de CONFIG_NET seleccionamos INALÁMBRICO y luego CONFIG_CFG80211 y allí marcamos CONFIG_NL80211_TESTMODE y CONFIG_CFG80211_WEXT, este último incluye nuestro controlador wifi para el solicitante.
CONFIG_MAC80211: activa la pila de red.
CONFIG_MAC80211_MESH - activar
CONFIG_MAC80211_LED - bueno, elijamos esto
CONFIG_NFC: incluimos lo que hay dentro, excepto CONFIG_NFC_NCI.
CONFIG_PARPORT: activar
CONFIG_LED_TRIGGER_PHY - seleccionar
CONFIG_REALTEK_PHY - seleccionar
CONFIG_WLAN - seleccionar
CONFIG_RTL8XXXU: seleccione y dentro de CONFIG_RTL8XXXU_UNTESTED marcamos.
CONFIG_SERIO_SUN4I_PS2 - activar
CONFIG_SERIAL_DEV_BUS: actívelo y seleccione SERIAL_DEV_CTRL_TTYPORT dentro.
CONFIG_USB_WUSB_CBAF - habilitar
CONFIG_USB_WUSB_CBAF_DEBUG - activar
CONFIG_USB_WDM - activar
CONFIG_USB_SERIAL - seleccionar
CONFIG_UWB: seleccione y en el interior seleccione CONFIG_UWB_HWA y CONFIG_UWB_I1480U y luego aparecerá CONFIG_USB_WUSB y también seleccione.
Seleccionamos CONFIG_STAGING y dentro seleccionamos el controlador CONFIG_RTL8192U y CONFIG_RTLLIB, y en el último también seleccionamos todo. Están marcados por módulos de poesía y luego deberán atornillarse por separado.
CONFIG_R8188EU - seleccionar
En general, este es un mínimo necesario de la configuración del kernel, si de repente desea habilitar algo más, lea cuidadosamente las dependencias de este parámetro, de lo contrario habrá un error al compilar. A continuación, debe comenzar la compilación:
make O=../olimex-kernel-4.14.57/ -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage
Al mismo tiempo, recopile y cree archivos de dispositivo:
make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
Esto es solo por si acaso, porque los archivos de origen pueden estar en error aunque sean los mismos en el núcleo y en uboot. Por lo tanto, no uno para que el otro funcione.
El siguiente paso es recopilar los archivos recopilados en la primera sección de la tarjeta SD:
-
/olimex-kernel-4.14.57/arch/arm/boot/
de aquí obtenemos el núcleo ensamblado, se llama uImage y pesa solo 4.7 metros.
-
/olimex-uboot/arch/arm/dts/
de aquí obtenemos el árbol compilado, archivo sun5i-a13-olinuxino.dtb
-
/u-boot-2018.05/
desde aquí obtenemos el script de arranque compilado boot.scr.
Construcción de Ubuntu
Como todas las partes necesarias para descargar rootfs están preparadas, queda por construir ubuntu y para esto tomamos la última versión 18.04.
Primero, cree una carpeta en el directorio raíz:
sudo mkdir /destrupt
Exactamente aquí porque para aplicar chroot más tarde necesita derechos completos como en el directorio raíz, o registrar la configuración de chroot para cualquier otra carpeta. En resumen, es más fácil crear una carpeta en el directorio raíz y no perder el tiempo con la configuración.
Para el ensamblaje, necesitamos los siguientes paquetes, deben suministrarse si no:
- Qemu-user-static
- debootstarp
- schroot
A continuación, ejecute la compilación de ubuntu:
sudo qemu-debootstrap
# usamos qemu porque qemu se instalará junto con el ensamblaje de ubuntu, lo que le permitirá ejecutar inmediatamente chroot en la versión ensamblada de ubuntu
--arch armhf
# tipo de arquitectura de procesador
--variant=minbase
# en la versión mínima
bionic
# build versión 18.04
/destrup/
# dirección donde recolectar
http://ports.ubuntu.com/ubuntu-ports
# donde recolectar fuentes
Bueno, ubuntu 18.04 ya está ensamblado, ahora procederemos a la configuración paso a paso:
1. Antes de comenzar, subimos a / destrup / etc / apt / y editamos sources.list, agreguemos lo siguiente:
deb http://ports.ubuntu.com/ubuntu-ports bionic main restricted deb http://ports.ubuntu.com/ubuntu-ports bionic universe deb http://ports.ubuntu.com/ubuntu-ports bionic multiverse
Estas son solo fuentes de distribución para nuestro procesador.
2. Ejecute change root en el distrib ubuntu recién creado:
sudo chroot /destrup
Primero, configure la contraseña para el usuario root:
passwd root
Esta contraseña es necesaria para iniciar sesión en el momento del arranque.
3. Instale los siguientes paquetes.
apt update
- paquetes de actualización
iputils-ping, dhcpcd5, iproute2, iw, networkd-dispatcher, wireless-tools, net-tools.
los paquetes para la red:
iputils-ping, dhcpcd5, iproute2, iw, networkd-dispatcher, wireless-tools, net-tools.
Paquetes de sistema de red:
linux-firmware, wpasupplicant, systemd, hostapd, kmod, udev.
Bueno y el resto para que sea conveniente editar y configurar todo esto: nano, mc, usbutils, sudo.
Y no describiré todo porque se extenderá por un par de artículos más, solo revisaremos algunos de los paquetes necesarios para la configuración.
Configurando wpa supplicant.
Para comenzar, analizaremos brevemente qué es usb wifi.
El chip en sí que proporciona wifi (en este caso, rtl8188) es un ADC envuelto, con su propia presentación especial de datos y acceso a usb. es decir si ejecuta el comando lsmod sin el módulo r8188eu.ko cargado, solo veremos que alguien ha tomado el puerto usb. Cuando se carga el módulo, el nombre del dispositivo ya estará visible, en otras palabras, este módulo es solo una interfaz de programa para controlar este chip.
La siguiente biblioteca más importante es lib80211.ko, el estándar IEEE 802.11, en palabras simples, es la interpretación de señales digitales de éter en la representación de protocolos específicos de ehternet. Pero para administrar todo esto, necesita instalar linux-firmware, incluirá el controlador -wext-, que hará todo esto. Lo conectaremos más adelante en el solicitante.
Comencemos la configuración suplicante.
Subimos a un ubunte recién ensamblado en esta dirección:
/ etc / wpa_supplicant / wpa_supplicant.conf
Y creamos un archivo de configuración si no es así y si lo hay, corregimos este tipo:
ctrl_interface_group=0
Si todo está configurado correctamente y los módulos descritos anteriormente se cargan, se creará un archivo de dispositivo en la dirección especificada en la configuración (parámetro ctrl_interface).
Configuración de Systemd
Configuramos el solicitante, pero todavía no hay nadie para ejecutarlo. Por supuesto, puede instalar el administrador de red y disfrutar del autoajuste, pero ¿dónde está el hardcore y dónde está la basura? En general, puro aburrimiento.
Por eso subimos a la dirección:
/ etc / systemd / system/
Y aquí creamos un archivo llamado
network-wireless.service
si no es así, y si lo hay, comenzamos a editar:
[Unit]
Detengámonos en el lanzamiento del suplicante:
ExecStart=/sbin/wpa_supplicant
# ruta para acceder al solicitante
-B
# ejecutado en segundo plano
-i wlx007005012449
# interfaz para ejecutar, el mismo archivo de dispositivo
-D wext
# nombre del controlador para silbato de linux-firmware
-c /etc/wpa_supplicant/wpa_supplicant.conf
# dirección del archivo de configuración del solicitante
Bueno, en general, todo lo que necesita está configurado, vaya a la instalación de módulos.
Instalación de módulos.
Para instalar los módulos, regresemos un poco, es decir, a la carpeta con la fuente del núcleo y ejecute el comando para copiar los módulos desde el núcleo a la carpeta con ubuntu desde allí:
make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install
Después de eso, todos nuestros módulos ensamblados se copian a ubuntu en:
/ lib / modules / 4.14.57 / kernel
Ahora lo más importante es registrar el lanzamiento de los módulos copiados y todas sus dependencias, así que subimos a la dirección:
/ etc / modules
Y abra el archivo de módulos para editar y agregue los siguientes módulos:
michael_mic r8188eu # r8192e_pci rtllib rtllib_crypt_ccmp rtllib_crypt_tkip rtllib_crypt_wep r8192u_usb # lib80211 # IEEE 802.11
Ahora queda copiar todo el ubuntu ensamblado en la sección de la tarjeta SD marcada en el artículo anterior como una sección para ubuntu.
Después de eso, puede insertar la unidad flash USB en la placa, aplicar energía y sentarse en su uart para acceder a su administración o ingresar a través de ssh. Puede agregar un comando a systemd para establecer la dirección IP u otra configuración en general, luego todo lo demás está en sus manos ...
La primera parte del artículoLa segunda parte del articulo