In dem Artikel Ich habe von der Möglichkeit erzählt, die „Malinka“ mithilfe des Betriebssystems CentOS in einen drahtlosen Access Point zu verwandeln. Indem ich meinen Heimrouter nach dieser Anleitung gebaut habe, habe ich mein kreatives Ego befriedigt und ein Gefühl der Ruhe für ein kritisches Element meiner gemütlichen Infrastruktur erhalten. Doch das Gefühl, dass die Lösung unvollständig war, und der innere Perfektionismus ließen mich nicht zur Ruhe kommen: „Ein unvollkommenes Ergebnis hat kein Recht auf Existenz“. Der Gedanke, dass „das Ideal erreicht werden kann und sollte“, ließ mich keine Minute in Ruhe.
Und eines Tages stieß ich in einem thematischen Forum auf die Diskussion über die Bit-Breite der bestehenden Betriebssysteme für die „Malinka“ (aarch64 gegen armhfp): Welche 64-Bit-Betriebssysteme könnten grundsätzlich auf der Raspberry-Version 3++ laufen?
Mein Lieblings-CentOS für die ARM-Architektur von „Userland“ beeilte sich nicht, auf den neuesten Kernel zu wechseln und 64-Bit zu werden. Das EPEL-Repository, das von Gott weiß wo ohne digitale Signatur angeschlossen war, war ein Albtraum in meinem unruhigen Traum …
Als Verfechter von RPM-basierten Distributionen stellte ich mit Erstaunen fest, dass in den Diskussionen über Betriebssysteme für die „Malinka“ völlig vergessen wurde, Fedoraund das, obwohl ihr Release

In diesem Artikel werde ich über die Installation von Fedora (aarch64) auf Raspberry Pi 3 Model B+ in in einer extrem minimalen Ausführung. Ich werde kurz auf die Besonderheiten der Einrichtung des Wi-Fi Access Points eingehen, die sich aus der praktischen Nutzung meiner vorherigen Konfiguration ergeben haben auf .
0. Was wird benötigt
Alles bleibt gleich wie in dem vorherigen Artikel aufgeführt:
- Raspberry Pi 3 Model B+;
- microSD >= 4GB (später kann das System auf ein 2GB-Medium „übertragen“ werden);
- Ein Arbeitsstation mit Linux und einem microSD-Kartenleser;
- Kabelgebundene Netzwerkverbindung zwischen der „Malinka“ und der Arbeitsstation mit Linux (in diesem Fall sind keine zusätzlichen Monitor und Tastatur für die Einrichtung erforderlich), Internetzugang auf beiden Geräten;
- Fortgeschrittene Fähigkeiten in Linux (wissen und keine Angst haben: , und ).
Ähnlich wie bei der iterativen - Zusammenstellung eines eigenen Linux wird ein distributives Abbild von Fedora verwendet, und darauf aufbauend wird ein minimales System geschaffen (ohne „Kompilation aus den Quellen“).
1. Installation des Original-Distribution
Die Koordinaten des raw-Images des Systems im Netz:
Nach dem Schreiben auf die microSD und vor der Verwendung ist Folgendes erforderlich:
- Erweitern Sie das „Root“-Dateisystem (3. Partition, ext4)
parted /dev/mmcblk0 resizepart 3 100% e2fsck -f /dev/mmcblk0p3; resize2fs /dev/mmcblk0p3; e2fsck -f /dev/mmcblk0p3 for i in 1 2 3; do mkdir -p /mnt/$i; mount /dev/mmcblk0p$i /mnt/$i; done - Deaktivieren Sie SELinux
echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config - Entfernen Sie den Einrichtungsassistenten:
find /mnt/3/etc/systemd/ -iname initial-setup.service -delete - Ermöglichen Sie den Zugriff über SSH:
mkdir -p /mnt/3/root/.ssh cp -fv ~/ .ssh/id_rsa.pub /mnt/3/root/.ssh/authorized_keys sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/g' /mnt/3/etc/ssh/sshd_config
Jetzt können Sie die „Raspberry Pi“ von der microSD booten und über das Netzwerk darauf zugreifen.
Der Kaltstart dauert etwa anderthalb Minuten. Technische Daten des Systems nach dem Booten:

rpm -qa | wc -l
444
2. Minimaler Systemaufbau
Leider ist das „minimale Distributionspaket“ der Entwickler bei weitem nicht das bescheidenste in Bezug auf den Ressourcenverbrauch. Das Systemabbild kann noch kleiner gemacht werden.
Dafür muss auf der „Raspberry Pi“ das Skript ausgeführt werden:
#!/bin/bash
. /etc/os-release
P=$(mktemp --directory $(pwd)/$ID-$VERSION_ID.XXX)
dnf --installroot=$P --releasever=$VERSION_ID --setopt=install_weak_deps=false
--assumeyes install
bcm283x-firmware
dnf
grub2-efi-aa64
kernel
openssh-server
shim-aa64
for f in /boot/efi/EFI/fedora/grub.cfg
/boot/efi/EFI/fedora/grubenv
/boot/efi/rpi3-u-boot.bin
/etc/default/grub
/etc/fstab
do
cp -fv $f $P$f
done
rm -fv $P/dev/*
rm -rfv $P/var/cache/dnf
echo "--------------------------------------------------------------------------------"
du -hs $P
Nach der Ausführung des Skripts wird im aktuellen Katalog ein Unterverzeichnis erstellt ($P) mit dem Inhalt des Root-Verzeichnisses der neuen minimalen Betriebssystemversion. Sie können die „Raspberry Pi“ ausschalten und die microSD in die Linux-Workstation zurückgeben.
3. Installation des minimalen Systems
Die Installation besteht darin, die Dateien des minimalen Betriebssystemabbilds (die im vorherigen Schritt erstellt wurden) auf die speziell vorbereitete microSD in die entsprechenden Verzeichnisse zu kopieren.
Eine 2-GB-Karte mit zwei Partitionen ist ausreichend:
- /boot/efi — EFI+FAT32, bootfähig, 100MB;
- / (Root) — EXT4, der gesamte verbleibende Speicherplatz.
Nach der Vorbereitung der microSD und dem Kopieren der Dateien darauf muss folgendes getan werden:
- das Booten des Betriebssystems reparieren;
- das Netzwerk aktivieren;
- den SSH-Zugriff einrichten.
Die Reparatur des Bootvorgangs besteht darin, die UUIDs der Partitionen in den Dateien zu ersetzen:
microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv
und dem Parameter saved_entry= in der letzten Datei
In der Datei:
microSD:/etc/fstab
können die alten Werte gefunden werden, während die aktuellen (gültigen) im Ausgabe der Befehle zu finden sind:
blkid | grep mmcblk | sort
Nach dem Ersetzen sollten auch die Inhalte von fstab auf der microSD so angepasst werden, dass die Einhängepunkte den neuen UUIDs der Partitionen entsprechen.
Die Netzwerkfunktionalität beim ersten Einschalten der „Raspberry Pi“ kann durch einen kleinen „Trick“ erreicht werden — ein Link sollte erstellt werden (schematisch):
ln -s /usr/lib/systemd/system/systemd-networkd.service
microSD:/etc/systemd/system/multi-user.target.wants
und die Datei:
mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF
Nach einem erfolgreichen Boot — den Start in Ordnung bringen :
systemctl disable systemd-networkd
systemctl enable systemd-networkd
Der Zugriff auf den Superuser über SSH wird ähnlich wie in Punkt 1 konfiguriert.
Wenn alles ordentlich und fehlerfrei durchgeführt wird, kann die microSD-Karte in die "Raspberry Pi" eingesetzt werden, um mit dem 64-Bit-Betriebssystem in einer extrem minimalen Ausführung zu arbeiten.
4. Das fertige System
Das „Image“ des fertigen Systems, das gemäß der oben genannten Anleitung erstellt wurde, kann über den folgenden Link heruntergeladen werden:
Dies wird ein Archiv sein, das zwei Dateien enthält: ein Installationsskript und TGZ mit den Betriebssystemdateien. Das Archiv muss auf einer Linux-Arbeitsstation entpackt werden, die microSD (eine 2GB-Karte reicht aus) eingelegt werden und das Skript mit dem Parameter – dem Gerätenamen – gestartet werden:
.\/install \/dev\/mmcblk0
Seien Sie vorsichtig!
Ohne jegliche Warnung wird das Gerät formatiert und das Betriebssystem wird darauf installiert.
Nach fehlerfreier Ausführung des Skripts kann die Karte in die "Raspberry Pi" eingesetzt werden und verwendet werden: über DHCP empfangen, Passwort – „1“.
Das System ist von allen IDs und Schlüsseln befreit, wodurch jede neue Installation einzigartig ist.
Ich wiederhole noch einmal, das System ist minimal! Deshalb keine Angst: DNF ist vorhanden, um es funktionsfähig zu machen, muss man das richtige .
Der Kaltstart der "Raspberry Pi" dauert etwa 40 Sekunden. Technische Merkmale des Systems nach dem Booten:

rpm -qa | wc -l
191
5. Wi-Fi
Ich werde kurz auf die Besonderheiten der Implementierung des Wi-Fi-Hotspots eingehen. Für Details können Sie auf mein vorheriges .
EPEL wird jetzt nicht mehr benötigt – alle Pakete sind in den offiziellen Repositories enthalten.
Wahrscheinlich wäre es besser, auf zu verzichten, denn in Fedora, im Gegensatz zu CentOS, gibt es ein relativ aktuelles systemd-networkd, das ordentliche integrierte DHCP/DNS-Server enthält. Aber die Tatsache, dass die Entwickler in RHEL8 erweckt kein Vertrauen in die Zukunft des Projekts (Schurken). Kurz gesagt, ich habe es nicht ausprobiert.
Weiterhin können die aktuellen Treiber für den integrierten Wi-Fi-Adapter direkt von .
So sehen auf meiner "Raspberry Pi" die Broadcom-Firmware-Dateien aus (schematisch):
ls \/usr\/lib\/firmware\/brcm | grep 43455
[612775] brcmfmac43455-sdio.bin
[14828] brcmfmac43455-sdio.clm_blob
[symlink] brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt -> brcmfmac43455-sdio.txt
[2099] brcmfmac43455-sdio.txt
Ohne diese funktioniert 5GHz/AC nicht.
Was die Anzahl und die Namen der Schnittstellen betrifft. Ich empfehle jetzt allen dringend, ohne besonderen Bedarf nicht auf die „Dienste“ von Software-Switches zurückzugreifen (), die erhebliche Belastungen im Netzwerk-Stack verursachen und die Routing-Performance beeinträchtigen. Wenn keine mehrere drahtlose Adapter geplant sind, sollten ausschließlich physische Schnittstellen verwendet werden. Ich habe zwei Wi-Fi, daher kombiniere ich nur diese in einer Software-Brücke (obwohl es auch ohne gehen kann, wenn man die Konfiguration von hostapd anders betrachtet).
Und ich liebe es, Schnittstellen umzubenennen.
Dafür muss man in Fedora einen symbolischen Link erstellen:
/etc/systemd/network/99-default.link -> /dev/null
und dann kann man sinnvolle Namen vergeben, ohne sich in , sondern nur mit den Mitteln von systemd-networkd.
So werden zum Beispiel die Netzwerkadapter in meinem Router genannt:
1: lo: mtu 65536 qdisc noqueue status UNBEKANNT gruppe standard qlen 1000
2: wan: mtu 1500 qdisc fq_codel status aktiv gruppe standard qlen 1000
3: lan: mtu 1500 qdisc noqueue status aktiv gruppe standard qlen 1000
4: int: mtu 1500 qdisc fq_codel master lan status aktiv gruppe standard qlen 1000
5: ext: mtu 1500 qdisc mq master lan status aktiv gruppe standard qlen 1000
- int — integriert, ext — externe (USB) Wi-Fi-Adapter, die zu einem „Bridge“ zusammengeschlossen sind lan;
- wan — Ethernet-Adapter, an den das Internet angeschlossen ist.
Hast du es bemerkt? — ist wirklich eine beeindruckende Sache. Zusammen mit dem aktuellen Linux-Kernel vollbringen sie wahre Wunder im drahtlosen Bereich: Ein intensiver Torrent-Download führt nicht zu plötzlichen Geschwindigkeitsverlusten bei den Nachbarn. Selbst das über das Netzwerk laufende IP-TV „bricht“ bei einem ausgelasteten Kanal nicht zusammen und „stockt“ überhaupt nicht!
Die Dienstdatei des Daemons hat einige kleine Änderungen erfahren. .
Jetzt sieht sie so aus (am Beispiel des integrierten Adapters):
[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target
BindsTo=sys-subsystem-net-devices-int.device
[Service]
Type=forking
PIDFile=/run/hostapd-int.pid
#ExecStartPre=/usr/sbin/iw dev int set power_save off
ExecStart=/usr/sbin/hostapd /path/to/hostapd-int.conf -P /run/hostapd-int.pid -B
[Install]
RequiredBy=sys-subsystem-net-devices-int.device
Und die „magische“ hostapd-int.conf für den Betrieb im 5GHz/AC:
ssid=rpi
wpa_passphrase=FedoRullezZ
# 5180 MHz [36] (20.0 dBm)
# 5200 MHz [40] (20.0 dBm)
# 5220 MHz [44] (20.0 dBm)
# 5240 MHz [48] (20.0 dBm)
# 5745 MHz [149] (20.0 dBm)
# 5765 MHz [153] (20.0 dBm)
# 5785 MHz [157] (20.0 dBm)
# 5805 MHz [161] (20.0 dBm)
# 5825 MHz [165] (20.0 dBm)
channel=36
#channel=149
# channel+6
# http://blog.fraggod.net/2017/04/27/wifi-hostapd-configuration-for-80211ac-networks.html
vht_oper_centr_freq_seg0_idx=42
#vht_oper_centr_freq_seg0_idx=155
country_code=US
interface=int
bridge=lan
driver=nl80211
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
macaddr_acl=0
hw_mode=a
wmm_enabled=1
# N
ieee80211n=1
require_ht=1
ht_capab=[HT40+][SHORT-GI-40][SHORT-GI-20]
# AC
ieee80211ac=1
ieee80211d=0
ieee80211h=0
vht_oper_chwidth=1
require_vht=1
vht_capab=[SHORT-GI-80]
Ein bisschen „Photoshop“, gemacht von meinem „Ericsson A1018s“:
(Internetanschluss — 100Mbit/s)
Und abschließend ein kleines FAQ.
6. FAQ
6.1 Warum einen Wi-Fi-Router auf Raspberry machen?
Man könnte einfach antworten: "Es ist interessant, es auszuprobieren und so weiter."
Aber tatsächlich, wie ich finde, ist das Thema ziemlich ernst. In der Zeit des "blutigen" Internets einen Router im Laden zu kaufen und beim Hersteller gefangen zu sein — ist eine sehr trübe Perspektive. Viele verstehen bereits, dass man nicht mit einem CVE oder einem eingebauten Backdoor sitzen sollte.
Natürlich kann man auf WRT-Firmware von Enthusiasten umsteigen. Das Vertrauen zu ihnen ist vermutlich größer, aber wenn man auch davon unabhängig sein möchte, bleibt nur ein eigenes Produkt. Ideal wäre ein vollwertiger Computer, um alles Mögliche darauf zu realisieren, in Bezug auf Routing natürlich.
Deshalb ist die Wahl der „Himbeere“ ein rein wirtschaftlicher Schachzug: ein echter Computer und dabei günstig. Obwohl es vielleicht auch seine „Doppelzüngigkeiten“ hat.
6.2 Aber die Raspberry ist ein „nicht-Router“: langsam und mit nur einem Ethernet-Port!
Als heimischer Wi-Fi-Router bin ich mit der „Himbeere“ mehr als zufrieden. Über die Geschwindigkeit „in der Luft“ habe ich bereits oben erzählt. Und ein einziger Ethernet-Port, nun ja, so ist es auch bei einem ähnlichen Produkt von Apple!
Und ehrlich gesagt, natürlich würde ich mir mehr wünschen. Und obwohl in meinem Haushalt alle Geräte kabellos verbunden sind, ist manchmal eine kabelgebundene Verbindung erforderlich. Für solche Fälle habe ich einen „mobilen Hub“ vorrätig:
ein Gerät — etwa so
6.3 Wenn das ein Router ist, wurde nichts über das „Tuning“ von TCP/IP gesagt, denn das ist wichtig!
Neben der Konfiguration des Netzwerk-Stacks (tcp_fastopen, YeAH usw.) werden in diesem und dem vorherigen Artikel andere Feinheiten nicht behandelt, insbesondere der Prozess der Vorbereitung der microSD für eine optimale Nutzung (obwohl der Installer versucht, die Speicherkarte auf raffinierte Weise zu formatieren). Der Prozess der Verbesserung ist endlos, man muss nur rechtzeitig aufhören.
6.4 Warum Fedora?
Weil es mir gefällt! Fedora ist der „Mainstream“ — ein System für Nerds, für die dieser Artikel eigentlich gedacht ist. Zum Zeitpunkt des Schreibens wohl das einzige Betriebssystem, das für Raspberry in 64-Bit-Format offiziell von einem namhaften Entwicklerteam unterstützt wird (auf das ich gespannt warte. ).
6.5 Funktioniert Bluetooth? Wie steht's mit Video/Sound/GPIO?
Ich weiß nicht. Der Artikel handelt von der minimalen Installation des Systems und dessen anschließender Verwendung als Wi-Fi-Router.
6.6 Warum beginnen alle Artikel über CentOS/Fedora/RedHat mit der Deaktivierung von SELinux?
Weil das System minimal ist, es gibt nicht einmal eine Firewall und keine Tools zur Konfiguration. Wer es benötigt, kann alles Notwendige zusätzlich installieren.
6.7 Mit dem System kann man nicht arbeiten, das Passwort kann nicht geändert werden – es gibt kein passwd. Es gibt kein Ping, nichts!
Ja . Oder diese Installationsvariante eignet sich nicht für Sie – nutzen Sie die Distribution der Entwickler.
6.8 Wo ist SWAP? Ohne kann ich nicht leben!
Wirklich? Na gut:
fallocate -l 1G /swap
chmod -v 0600 /swap
mkswap -f /swap
swapon -v /swap
grep "/swap" /etc/fstab || echo "/swap swap swap defaults 0 0" >> /etc/fstab
6.9 Ich hätte gerne sofort ein fertiges Image mit einem konfigurierten Wi-Fi-Zugangspunkt!
Um den Installer „für alle“ vorzubereiten, ist eine gewisse Zeit und Mühe erforderlich. Wenn es (aus Versehen!) tatsächlich interessant und notwendig erscheint – schreiben Sie, wir werden uns etwas einfallen lassen.
Damit beende ich.
Ich wünsche allen sicheres Surfen und maximale Kontrolle über die Infrastruktur!
Quelle: habr.com
