Kernel-Assembly
Ich werde erklären, warum die vorhandenen Bilder nicht geeignet sind. Ihr Hauptproblem ist, dass sie auf dem alten 3.4-Kernel basieren, und dies setzt dem Compiler maximal Version 4 und Ubuntu 12.04 sofort eine Grenze, ich erinnere mich nicht an 14.04. Es stellt sich also heraus, dass Sie den neuesten Kernel neu erstellen müssen, wenn Sie die neueste Software und Bibliotheken verwenden möchten. Natürlich können Sie die Einschränkung beim Kompilieren von mindestens Version 5 von gcc in den Quellen aufheben und den Code so korrigieren, dass er unter Version 4 erstellt werden kann, aber dies ist immer noch ein Mist. Ganz zu schweigen von der Tatsache, dass in unserem Fall der grafische Teil von Linux überflüssig ist.
Um mit kernel.org zu beginnen, pumpen wir den 4.14.57-Kernel aus, zu dieser Zeit war es die letzte stabile Version.
Erstellen Sie im Quellordner ein Skript, mit dem die Konfiguration gestartet wird:
Wir bekommen so etwas:

/linux-4.14.57/arch/arm/configs/
Sie im
/linux-4.14.57/arch/arm/configs/
Datei
/linux-4.14.57/arch/arm/configs/
. Es gibt die Grundeinstellungen für die Prozessoren der Sunxi-Serie. Und dann müssen Sie einige Einstellungen hinzufügen. Das heißt, Wir suchen unter den angegebenen Flags und konfigurieren sie.
Wir binden alles in den Kernel ein, wann immer dies möglich ist.
CONFIG_BLK_DEV_INITRD - Wir werden stattdessen keine Ramfs verwenden, dann starten wir Aufs (erweitertes mehrschichtiges Unification-Dateisystem). Kurz gesagt, entfernen Sie das Kontrollkästchen.
CONFIG_MEMCG - wie alles im Inneren einschalten
CONFIG_BLK_CGROUP - einschalten
CONFIG_CGROUP_DEVICE - einschalten
CONFIG_CGROUP_CPUACCT - einschalten
CONFIG_CGROUP_PERF - wie alles im Inneren einschalten
CONFIG_EXPERT - wählen Sie einfach alles aus und lassen Sie es standardmäßig drin
CONFIG_BLK_WBT - wähle wie alles drinnen
CONFIG_PARTITION_ADVANCED - innen auswählen
CONFIG_SUN_PARTITION - auswählen
ARCH_SUNXI - innen lassen wir nur MACH_SUN5I
Wählen Sie in der Busunterstützung CONFIG_PCI aus, da USB-WLAN PCI-Busunterstützung erfordert. Wenn die WLAN-Unterstützung aktiviert ist, benötigt der Kernel natürlich keinen PCI-Bus. Ohne dieses WLAN findet der Supplicant jedoch kein USB-WLAN. Warum dies passiert, können Sie in die Tiefen der Geschichte schauen, aber nach allem zu urteilen, dass es historisch passiert ist, müssen Sie dies im Allgemeinen wissen und sich daran erinnern.
CONFIG_CPU_FREQ_STAT - suchen und auswählen
In CONFIG_NET wählen wir WIRELESS und dann CONFIG_CFG80211 aus und markieren dort CONFIG_NL80211_TESTMODE und CONFIG_CFG80211_WEXT. Letzteres enthält unseren WLAN-Treiber für den Supplicant.
CONFIG_MAC80211 - Schalten Sie den Netzwerkstapel ein.
CONFIG_MAC80211_MESH - einschalten
CONFIG_MAC80211_LED - nun, wählen wir dies
CONFIG_NFC - Wir schließen alles ein, außer CONFIG_NFC_NCI.
CONFIG_PARPORT - einschalten
CONFIG_LED_TRIGGER_PHY - auswählen
CONFIG_REALTEK_PHY - auswählen
CONFIG_WLAN - auswählen
CONFIG_RTL8XXXU - Wählen Sie CONFIG_RTL8XXXU_UNTESTED aus und markieren Sie es.
CONFIG_SERIO_SUN4I_PS2 - einschalten
CONFIG_SERIAL_DEV_BUS - Schalten Sie es ein und wählen Sie darin SERIAL_DEV_CTRL_TTYPORT aus.
CONFIG_USB_WUSB_CBAF - aktivieren
CONFIG_USB_WUSB_CBAF_DEBUG - einschalten
CONFIG_USB_WDM - einschalten
CONFIG_USB_SERIAL - auswählen
CONFIG_UWB - auswählen und innen auswählen CONFIG_UWB_HWA und CONFIG_UWB_I1480U und danach wird CONFIG_USB_WUSB angezeigt und auch ausgewählt.
Wir wählen CONFIG_STAGING und im Inneren wählen wir die Treiber CONFIG_RTL8192U und CONFIG_RTLLIB aus, und im letzten wählen wir auch alles aus. Sie werden durch Gedichte durch Gedichte gekennzeichnet, später müssen sie separat verschraubt werden.
CONFIG_R8188EU - auswählen
Im Allgemeinen ist dies ein notwendiges Minimum an Kerneleinstellungen. Wenn Sie plötzlich etwas anderes aktivieren möchten, lesen Sie die Abhängigkeiten dieses Parameters sorgfältig durch, da sonst beim Kompilieren ein Fehler auftritt. Als nächstes müssen Sie mit der Kompilierung beginnen:
make O=../olimex-kernel-4.14.57/ -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage
Sammeln und erstellen Sie gleichzeitig Baumdateien:
make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
Dies ist nur für den Fall der Fall, da die Quelldateien möglicherweise fehlerhaft sind, obwohl sie im Kernel und in Uboot identisch sind. Daher wird nicht so einer wie der andere funktionieren.
Der nächste Schritt besteht darin, die gesammelten Dateien im ersten Abschnitt der SD-Karte zu sammeln:
-
/olimex-kernel-4.14.57/arch/arm/boot/
von hier bekommen wir den zusammengebauten Kernel, er heißt uImage und wiegt nur 4,7 Meter.
-
/olimex-uboot/arch/arm/dts/
von hier erhalten wir den kompilierten Baum, Datei sun5i-a13-olinuxino.dtb
-
/u-boot-2018.05/
von hier bekommen wir das kompilierte Boot-Skript boot.scr.
Ubuntu bauen
Da alle zum Herunterladen von rootfs erforderlichen Teile vorbereitet sind, muss Ubuntu noch erstellt werden. Dazu verwenden wir die neueste Version 18.04.
Erstellen Sie zunächst einen Ordner im Stammverzeichnis:
sudo mkdir /destrupt
Genau hier, denn um Chroot später anzuwenden, benötigen Sie entweder die vollen Rechte wie im Stammverzeichnis oder registrieren die Chroot-Konfiguration für einen anderen Ordner. Kurz gesagt, es ist einfacher, einen Ordner im Stammverzeichnis zu erstellen, und es wird nicht mit der Konfiguration herumgespielt.
Für die Montage benötigen wir folgende Pakete, die nicht geliefert werden müssen, wenn nicht:
- Qemu-Benutzer-statisch
- Debootstarp
- schroot
Führen Sie als Nächstes den Ubuntu-Build aus:
sudo qemu-debootstrap
# Wir verwenden qemu, da qemu zusammen mit der Ubuntu-Assembly installiert wird, sodass Sie Chroot sofort auf der zusammengestellten Version von Ubuntu ausführen können
--arch armhf
# Typ der Prozessorarchitektur
--variant=minbase
# Assembly in der Mindestversion
bionic
# build version 18.04
/destrup/
# Adresse, an der
/destrup/
http://ports.ubuntu.com/ubuntu-ports
# wo Quellen gesammelt werden können
Nun, da Ubuntu 18.04 bereits zusammengebaut ist, werden wir nun mit der schrittweisen Konfiguration fortfahren:
1. Bevor wir beginnen, klettern wir in / destrup / etc / apt / und bearbeiten die Datei source.list. Fügen Sie Folgendes hinzu:
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
Dies sind nur Quellen für Distributionen für unseren Prozessor.
2. Führen Sie change root auf dem neu erstellten Distributions-Ubuntu aus:
sudo chroot /destrup
Legen Sie zunächst das Kennwort für den Root-Benutzer fest:
passwd root
Dieses Kennwort ist erforderlich, um sich beim Booten anzumelden.
3. Installieren Sie die folgenden Pakete.
apt update
- Pakete aktualisieren
Wir listen die Pakete für das Netzwerk auf:
iputils-ping, dhcpcd5, iproute2, iw, networkd-dispatcher, wireless-tools, net-tools.
Netzwerksystempakete:
linux-firmware, wpasupplicant, systemd, hostapd, kmod, udev.
Nun und der Rest, damit es bequem war, all dies zu bearbeiten und zu konfigurieren: nano, mc, usbutils, sudo.
Und ich werde nicht alles beschreiben, da es sich um ein paar weitere Artikel handelt. Wir werden nur einige der Pakete durchgehen, die für die Einrichtung erforderlich sind.
Wpa-Supplicant konfigurieren.
Zunächst werden wir kurz analysieren, was USB-WLAN ist.
Der Chip selbst, der WLAN bereitstellt (in diesem Fall rtl8188), ist ein verpackter ADC mit einer eigenen speziellen Darstellung der Daten und dem Zugriff auf USB. d.h. Wenn Sie den Befehl lsmod ohne das geladene Modul r8188eu.ko ausführen, wird nur angezeigt, dass jemand den USB-Port verwendet hat. Wenn das Modul geladen ist, ist der Name des Geräts bereits sichtbar, dh dieses Modul ist nur eine Programmschnittstelle zur Steuerung dieser Mikroschaltung.
Die nächstwichtigste Bibliothek ist lib80211.ko, der IEEE 802.11-Standard selbst. In einfachen Worten handelt es sich um die Interpretation digitaler Ethersignale in die Darstellung spezifischer Internetprotokolle. Um all dies zu verwalten, müssen Sie die Linux-Firmware installieren. Sie enthält den Treiber -wext-, der all dies erledigt. Wir werden es im Bittsteller weiter verbinden.
Beginnen wir mit der Supplicant-Konfiguration.
Unter dieser Adresse steigen wir in eine frisch versammelte Ubunte:
/ etc / wpa_supplicant / wpa_supplicant.conf
Und wenn nicht, erstellen wir eine Konfigurationsdatei. Wenn dies der Fall ist, korrigieren wir diesen Typ:
ctrl_interface_group=0
Wenn alles richtig konfiguriert ist und die oben beschriebenen Module geladen sind, wird eine Gerätedatei unter der in der Konfiguration angegebenen Adresse (Parameter ctrl_interface) erstellt.
Systemd-Setup
Wir haben den Supplicant konfiguriert, aber es gibt noch niemanden, der ihn ausführt. Sie können natürlich den Netzwerk-Manager installieren und die automatische Optimierung genießen, aber wo ist der Hardcore und wo ist der Papierkorb? Im Allgemeinen Langeweile.
Deshalb klettern wir zur Adresse:
/ etc / systemd / system/
Und hier erstellen wir eine Datei namens
network-wireless.service
wenn nicht, und wenn ja, beginnen wir mit der Bearbeitung:
[Unit]
Lassen Sie uns beim Start des Bittstellers verweilen:
ExecStart=/sbin/wpa_supplicant
# Pfad für den Zugriff auf den Supplicant
-B
# im Hintergrund laufen
-i wlx007005012449
# Schnittstelle zum Ausführen, die gleiche Gerätedatei
-D wext
#
-D wext
für Whistle von Linux-Firmware
-c /etc/wpa_supplicant/wpa_supplicant.conf
# Adresse der Supplicant-Konfigurationsdatei
Nun, im Allgemeinen ist alles, was Sie brauchen, konfiguriert. Gehen Sie zur Installation der Module.
Installation von Modulen.
Um die Module zu installieren, gehen wir ein wenig zurück, nämlich zu dem Ordner mit der Kernelquelle, und führen Sie den Befehl aus, um die Module vom Kernel in den Ordner mit Ubuntu von dort zu kopieren:
make O=../olimex-kernel-4.14.57 -j2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install
Danach werden alle unsere zusammengebauten Module unter folgender Adresse nach ubuntu kopiert:
/ lib / modules / 4.14.57 / kernel
Das Wichtigste ist nun, den Start der kopierten Module und alle ihre Abhängigkeiten zu registrieren, damit wir zur Adresse gelangen:
/ etc / modules
Öffnen Sie die Moduldatei zum Bearbeiten und fügen Sie die folgenden Module hinzu:
michael_mic r8188eu # r8192e_pci rtllib rtllib_crypt_ccmp rtllib_crypt_tkip rtllib_crypt_wep r8192u_usb # lib80211 # IEEE 802.11
Jetzt müssen alle zusammengebauten Ubuntu in den SD-Kartenabschnitt kopiert werden, der im vorherigen Artikel als Abschnitt für Ubuntu markiert wurde.
Danach können Sie das USB-Flash-Laufwerk in die Karte einstecken, die Stromversorgung einschalten und sich auf die Karte setzen, um auf die Verwaltung zuzugreifen oder über ssh einzusteigen. Sie können systemd einen Befehl hinzufügen, um die IP-Adresse oder eine andere Konfiguration im Allgemeinen festzulegen. Dann liegt alles andere in Ihren Händen ...
Der erste Teil des ArtikelsDer zweite Teil des Artikels