Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (oder Himbeer-Router mit blauer Mütze)

In dem Artikel Raspberry Pi + CentOS = Wi-Fi Hotspot (oder Himbeer-Router mit rotem Hut) Ich habe darüber berichtet, wie man eine „Raspberry Pi“ mit dem Betriebssystem CentOS in einen drahtlosen Zugangspunkt verwandelt. Als ich meinen Heimrouter nach diesem Plan zusammenbaute, befriedigte ich mein kreatives Ego und erhielt ein beruhigendes Gefühl für ein kritisches Element meiner gemütlichen Infrastruktur. Doch das Gefühl, dass die Lösung unvollständig war, und mein innerer Perfektionismus ließen mir keine Ruhe: „Ein unvollkommenes Ergebnis hat kein Recht auf Existenz“. Der Gedanke, dass „das Ideal erreicht werden kann und muss“, ließ mich keinen Augenblick los.

Eines Tages stieß ich in einem der thematischen Foren auf eine Diskussion über die Architektur der vorhandenen Betriebssysteme für die „Raspberry Pi“ (aarch64 vs armhfp): Welche 64-Bit-Betriebssysteme können überhaupt auf der Raspberry Pi Version 3++ funktionieren?

Meine liebste CentOS für die ARM-Architektur von „Userland“ hatte es nicht eilig, auf den neuesten Version des Kernels umzusteigen und 64-Bit zu werden. Und das EPEL-Repository, das Gott weiß woher ohne digitale Signatur kam, war ein Albtraum in meinen unruhigen Nächten...

Als Verfechter von RPM-basierten Distributionen war ich erstaunt darüber, dass in den Diskussionen über Betriebssysteme für die 'Raspberry Pi' eine absolut vergessene Option war. , aber bisher ist er noch nicht inUnd das, obwohl die Veröffentlichung
mit der Version 28 offiziell Raspberry Pi 3B+ in 64-Bit unterstützt!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (oder Himbeer-Router mit blauer Mütze)
In diesem Artikel werde ich die Installationsweise erläutern Fedora (aarch64) findet man Raspberry Pi 3 Model B+ in in einer äußerst minimalistischen Ausführung.Ich werde kurz auf die Besonderheiten beim Einrichten eines Wi-Fi-Hotspots eingehen, die sich aus der praktischen Nutzung meiner vorherigen Konfiguration ergeben haben. CentOS 7.

0. Was wird benötigt

Alles bleibt gleich wie in dem vorherigen Artikel:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (später kann das System auf einen 2GB-Speicher übertragen werden);
  • Eine Arbeitsstation mit Linux und einem microSD-Kartenleser;
  • Eine kabelgebundene Netzwerkverbindung zwischen der 'Raspberry Pi' und der Arbeitsstation mit Linux (in diesem Fall sind keine zusätzlichen Monitore und Tastaturen zur Einrichtung erforderlich), Internetzugang für beide Geräte;
  • Fortgeschrittene Kenntnisse in Linux (wissen und keine Angst haben: parted, dd und mkfs).

Ähnlich wie bei der iterativen LFS-Erstellung eines eigenen Linux wird das Distributions-Image von Fedora verwendet und darauf basierend wird ein minimales System erstellt (ohne 'Kompilierung aus Quellcode').

1. Installation des Original-Distributions

Koordinaten des Raw-Image der System im Netz:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Nach der Aufzeichnung auf microSD und vor der Nutzung müssen Sie:

  1. Das Root-Dateisystem erweitern (dritte 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
    

  2. SELinux deaktivieren
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Den Ersteinrichtungsassistenten entfernen:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Zugriff über ssh erlauben:
    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 microSD booten und über das Netzwerk darauf zugreifen.

Ein Kaltstart dauert etwa eineinhalb Minuten. Technische Daten des Systems nach dem Booten:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (oder Himbeer-Router mit blauer Mütze)

rpm -qa | wc -l
444

2. Aufbau eines minimalen Systems

Leider ist die „minimale Distribution“ der Entwickler bei weitem nicht die ressourcenschonendste. Das Systemabbild kann noch kleiner gemacht werden.

Dazu muss auf dem „Raspberry Pi“ ein 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 Verzeichnis ein Unterverzeichnis erstellt ($P) mit dem Root-Inhalt der neuen minimalen OS-Version. Sie können die «Raspberry Pi» ausschalten und die microSD-Karte wieder in Ihre Linux-Workstation einsetzen.

3. Installation des Minimal-Systems

Die Installation besteht darin, die Dateien des minimalen «Images» des Betriebssystems (von Schritt eins erhalten) auf die speziell vorbereitete microSD in die entsprechenden Verzeichnisse zu kopieren.

Eine 2GB-Karte mit zwei Partitionen reicht aus:

  1. /boot/efi — EFI+FAT32, bootfähig, 100MB;
  2. / (Root) — EXT4, der gesamte verbleibende Speicher.

Nach der Vorbereitung der microSD und dem Kopieren der Dateien darauf müssen Sie:

  • den OS-Boot 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 den Parameter saved_entry= in der letzten Datei.

In der Datei:

microSD:/etc/fstab

finden Sie die alten Werte, während die aktuellen (gültigen) im Ausgabe-Befehl zu finden sind:

blkid | grep mmcblk | sort

Nach der Ersetzung sollten Sie auch den Inhalt von fstab auf der microSD anpassen, damit die Einhängepunkte den neuen UUIDs der Partitionen entsprechen.

Um die Netzwerkkonfiguration beim ersten Einschalten des «Raspberry Pi» zu erreichen, kann ein kleiner «Trick» verwendet werden — erstellen Sie einen Link (schematisch):

ln -s /usr/lib/systemd/system/systemd-networkd.service 
  microSD:/etc/systemd/system/multi-user.target.wants

und Datei:

mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF

Nach dem erfolgreichen Booten – starten Sie die Konfiguration. systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Der Superuser-Zugang per ssh wird analog zu Punkt 1 eingerichtet.

Hat man alles sorgfältig und fehlerfrei gemacht, kann die microSD-Karte in die "Raspberry Pi" eingesetzt werden und man kann mit einem 64-Bit-Betriebssystem in minimaler Ausführung arbeiten.

4. Fertiges System

Das "Image" des fertigen Systems, erstellt nach der obigen Anleitung, kann unter folgendem Link heruntergeladen werden:
Fedora-Tiny-31-5.5.7-200.aarch64

Es handelt sich um ein Archiv, das zwei Dateien enthält: ein Installationsskript und TGZ mit den Betriebssystemdateien. Das Archiv muss auf einem Linux-Arbeitsplatz entpackt werden, die microSD (mindestens 2GB Karte) eingesetzt und das Skript mit dem Parameter – dem Gerätenamen – gestartet werden:

./install /dev/mmcblk0

Seien Sie vorsichtig!

Ohne Vorwarnung wird das Gerät formatiert und das Betriebssystem darauf installiert.

Nach erfolgreichem Ausführen des Skripts kann die Karte in die "Raspberry Pi" eingesetzt und verwendet werden: Auf DHCP zugreifen, Passwort – "1".

Das System ist von allen IDs und Schlüsseln bereinigt, wodurch jede neue Installation einzigartig ist.

Ich wiederhole: Das System ist — minimal! Daher keine Panik: DNF ist verfügbar, um es funktionsfähig zu machen, müssen Sie die richtige /etc/resolv.conf.

Der Kaltstart des „Raspberry Pi“ dauert etwa 40 Sekunden. Technische Daten des Systems nach dem Booten:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (oder Himbeer-Router mit blauer Mütze)

rpm -qa | wc -l
191

5. Wi-Fi

Ich möchte die Besonderheiten der Implementierung des Wi-Fi Access Points etwas näher erläutern. Für Details können Sie auf meine vorherige Artikel.

EPEL wird jetzt nicht mehr benötigt — alle Pakete sind in den offiziellen Repositories enthalten.

Es wäre wahrscheinlich sinnvoll gewesen, auf dnsmasq, zu verzichten, da in Fedora, im Gegensatz zu CentOS, — eine relativ aktuelle version von systemd-networkd vorhanden ist, die — vernünftige integrierte DHCP/DNS-Server hat. Aber die Tatsache, dass die Entwickler in RHEL8 die Unterstützung des Netzwerkstacks für nichts anderes als NM aufgegeben haben,, gibt nicht viel Hoffnung für die Zukunft des Projekts (Schurken). Kurz gesagt, ich habe es nicht ausprobiert.

Außerdem können die aktuellen Treiber für den integrierten Wi-Fi Adapter direkt von github.

So sehen auf meinem „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 sie funktioniert 5GHz/AC nicht.

Zur Anzahl und den Bezeichnungen der Schnittstellen empfehle ich mittlerweile jedem, ohne besonderen Bedarf nicht auf die „Dienste“ von Software-Switches zurückzugreifen (Bridge), die eine erhebliche Belastung für den Netzwerkstack darstellen und das Routing beeinträchtigen. Wenn nicht mehrere drahtlose Adapter geplant sind, sollten ausschließlich physische Schnittstellen verwendet werden. Ich habe zwei Wi-Fi, also vereine ich nur diese in einer Software-Brücke (obwohl man darauf auch verzichten könnte, wenn man die Konfiguration von hostapd anders betrachtet).

Ich mag es, Schnittstellen umzubenennen.

Dafür muss in Fedora ein symbolischer Link erstellt werden:

/etc/systemd/network/99-default.link -> /dev/null

und dann können sinnvolle Namen vergeben werden, ohne sich in udevzu vertiefen, sondern nur mit den Mitteln von systemd-networkd.

So nennen sich beispielsweise die Netzwerkadapter in meinem Router:

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

2: wan:  mtu 1500 qdisc fq_codel state UP group default qlen 1000

3: lan:  mtu 1500 qdisc noqueue state UP group default qlen 1000

4: int:  mtu 1500 qdisc fq_codel master lan state UP group default qlen 1000

5: ext:  mtu 1500 qdisc mq master lan state UP group default qlen 1000

  • int — integriert, ext — externe (USB) Wi-Fi-Adapter, die im ‚Bridge‘-Modus zusammengeschaltet sind lan;
  • wan — Ethernet-Adapter, der mit dem Internet verbunden ist.

Haben Sie das bemerkt? fq_codel — wirklich eine interessante Lösung. Zusammen mit dem aktuellen Linux-Kernel zaubern sie wahre Wunder im WLAN-Bereich: Selbst intensive Torrent-Downloads führen nicht zu einer plötzlichen Geschwindigkeitsverschlechterung bei den Nachbarn. Sogar das über WLAN laufende IPTV zu Hause bricht bei einer hohen Auslastung des Kanals nicht zusammen und hakt überhaupt nicht!

Die Dienstdatei des Daemons hat kleine Änderungen erfahren hostapd.

So sieht sie jetzt 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 in 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 wenig „Photoshop“, gemacht mit meinem „Ericsson A1018s“:

(Internetanschluss – 100Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (oder Himbeer-Router mit blauer Mütze)
Und zum Schluss ein kleiner FAQ.

6. FAQ

6.1 Warum einen Wi-Fi-Router auf Raspberry erstellen?

Man könnte einfach antworten, dass es „interessant ist, es auszuprobieren und das war's“.

Aber tatsächlich halte ich das Thema für ziemlich ernst. In einer Zeit des „blutigen“ Internets einen Router im Geschäft zu kaufen und dessen Hersteller gegenüber hilflos zu sein – das ist eine eher trübe Perspektive. Immer mehr Leute verstehen, dass man nicht mit einem CVE oder einem eingebauten Backdoor leben sollte.

Natürlich kann man auf WRT-Firmware von Enthusiasten migrieren. Das Vertrauen in sie ist wahrscheinlich größer, aber wenn man nicht von ihnen abhängig sein möchte, bleibt nur – ein eigenes Produkt. Idealerweise wäre das ein vollwertiger Computer, um darauf alles Mögliche umzusetzen. Natürlich im Hinblick auf das Routing.

Deshalb ist die Wahl der „Raspberry Pi“ ein rein wirtschaftlicher Schritt: ein echter Computer und gleichzeitig – kostengünstig. Auch wenn er vielleicht intern seine „Schwächen“ hat.

6.2 Aber der Raspberry ist kein „Router für wenig Geld“: langsam und mit nur einem Ethernet-Port!

Als Heim-Wi-Fi-Router kann mich die „Raspberry Pi“ mehr als überzeugen. Über die Geschwindigkeit „über WLAN“ habe ich bereits oben berichtet. Und nur ein Ethernet-Port? Nun, das ist bei einem ähnlichen Produkt von Apple ganz ähnlich!

Wenn ich ehrlich bin, hätte ich gerne mehr. Und obwohl in meinem Haushalt alle Geräte kabellos verbunden sind, benötigt man manchmal doch eine kabelgebundene Verbindung. Für solche Fälle habe ich einen „mobilen Hub“:

ein Gerät wie diesesRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (oder Himbeer-Router mit blauer Mütze)

6.3 Wenn es sich um einen Router handelt, wurde nichts über das „Tuning“ von TCP/IP gesagt, denn das ist wichtig!

Neben der Konfiguration des Netzwerkstacks (tcp_fastopen, YeAH usw.) wurden in diesem und dem vorherigen Artikel andere Nuancen nicht behandelt, insbesondere der Prozess der Vorbereitung der microSD-Karte für eine optimale Nutzung (der Installer versucht, die Speicherkarte auf eine clevere Weise zu formatieren). Der Prozess der Verbesserung ist endlos; man muss nur rechtzeitig anhalten.

6.4 Warum Fedora?

Weil es mir gefällt! Fedora ist das «Mainstream» -System für Nerds, für die dieser Artikel gedacht ist. Zum Zeitpunkt des Schreibens ist es wohl das einzige Betriebssystem, das für Raspberry in 64-Bit offiziell von einer bedeutenden Anzahl von Entwicklern unterstützt wird (auf die ich nur schwer warten kann). Kernel 5.6).

6.5 Funktioniert Bluetooth? Wie steht es um Video/Audio/GPIO?

Ich weiß es nicht. Der Artikel handelt von der Minimalinstallation des Systems und dessen anschließender Nutzung 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 oder Werkzeuge zu deren Konfiguration. Wer möchte, kann alle notwendigen Komponenten zusätzlich installieren.

6.7 Das System ist nicht nutzbar, das Passwort kann nicht geändert werden – passwd fehlt. Kein ping, nichts!

Es gibt DNF. Oder ist diese Installationsoption nichts für Sie? Dann nutzen Sie das Distribution vom Entwickler.

6.8 Wo ist SWAP? Ohne kann ich nicht leben!

Wirklich? Nun 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 ein fertiges Image mit konfiguriertem Wi-Fi-Hotspot zum Download!

Um einen Installer für alle vorzubereiten, wird eine gewisse Zeit und Mühe benötigt. Wenn (für den Fall!) es wirklich jemanden interessiert und notwendig erscheint – lassen Sie es mich wissen, wir werden uns etwas überlegen.

Damit bin ich am Ende.

Ich wünsche allen sicheres Surfen und maximale Kontrolle über die Infrastruktur!

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster