Raspberry Pi + Fedora (aarch64) = WLAN-Hotspot (oder ein Himbeer-Router mit blauem Hut)

In dem Artikel Raspberry Pi + CentOS = Wi-Fi-Hotspot (oder ein Himbeer-Router mit rotem Hut) habe ich darüber gesprochen, wie man eine Himbeere mit dem CentOS-Betriebssystem in einen drahtlosen Zugangspunkt verwandelt. Nachdem ich meinen Heimrouter von einer solchen Zeichnung gesammelt hatte, befriedigte ich mein kreatives Ego und erhielt eine Ladung Ruhe für ein kritisches Element meiner gemütlichen Infrastruktur. Das Gefühl einer unvollständigen Entscheidung und des inneren Perfektionismus gab jedoch keine Ruhe: "Ein unvollkommenes Ergebnis der Arbeit hat kein Existenzrecht." Der Gedanke, dass „dieses Ideal erreicht werden kann und muss“, ließ mich keine Minute stehen.

Und dann stieß ich eines Tages in einem der thematischen Foren auf eine Diskussion über die Bittiefe bestehender Betriebssysteme für „Himbeere“ (aarch64 vs armhfp): Welche 64-Bit-Betriebssysteme passen grundsätzlich in Raspberry Version 3 ++ und verdienen Geld damit?

Mein Lieblings-CentOS für ARM-Architektur von "Userland" hatte es nicht eilig, auf den Kernel der neuesten Version umzusteigen und in 64-Bit umzuwandeln. Und das EPEL-Repository, verbunden mit Gott weiß, wo ohne digitale Signatur ein Albtraum in meinem unruhigen Traum war ...

Als Anhänger von RPM-basierten Distributionen stellte ich überrascht fest, dass Fedora in Diskussionen über das Betriebssystem für „Himbeere“ absolut vergessen war ! Und das trotz der Tatsache, dass die Veröffentlichung
der 28. Version den Raspberry Pi 3B + in der 64-Bit-Version offiziell unterstützt!

Fedora aarch64

In diesem Artikel werde ich darüber sprechen, wie Fedora (aarch64) auf dem Raspberry Pi 3 Model B + in einer zusätzlichen Minimalversion installiert wird . Ich werde kurz auf die Funktionen zum Erhöhen eines Wi-Fi-Zugangspunkts eingehen, der als Ergebnis des Testbetriebs meiner vorherigen Konfiguration unter CentOS 7 identifiziert wurde .

0. Was wird benötigt


Trotzdem wie im vorherigen Artikel aufgeführt:

  • Himbeer Pi 3 Modell B +;
  • microSD> = 4 GB (später können Sie das System auf ein 2 GB-Laufwerk "übertragen");
  • Linux-Workstation mit microSD-Kartenleser;
  • Kabelgebundene Netzwerkverbindung von „Himbeere“ und der Workstation mit Linux (in diesem Fall sind für die Konfiguration kein zusätzlicher Monitor und keine zusätzliche Tastatur erforderlich), Internetzugang von beiden Geräten;
  • Fortgeschrittene Linux-Kenntnisse (wissen und keine Angst haben: getrennt , dd und mkfs ).

Wie bei einer iterativen LFS- Assembly Ihres eigenen Linux wird das Fedora-Distributionsimage verwendet und anschließend ein minimales System auf seiner Basis erstellt (ohne "Kompilierung aus dem Quellcode").

1. Installieren der ursprünglichen Distribution


Die Koordinaten des
Rohabbilds des Systems im Web: https: //.../fedora-secondary/releases/.../Spins/aarch64/images/Fedora-Minimal-...xz

Nach dem Schreiben in die microSD und vor der Verwendung ist dies erforderlich ::

  1. Erweitern Sie das "Stammverzeichnis" des Dateisystems (3. Abschnitt, 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. Deaktivieren Sie SELinux

    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Löschen Sie den Assistenten für die Ersteinrichtung:

    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. SSH-Zugriff zulassen:

    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 "Himbeere" von microSD herunterladen und über das Netzwerk eine Verbindung herstellen.

Ein Kaltstart dauert ungefähr anderthalb Minuten. TTX-System nach dem Start:

Fedora aarch64

rpm -qa | wc -l
444

2. Minimale Systemmontage


Leider ist die „minimale Verteilung“ der Entwickler bei weitem nicht die geringste beim Ressourcenverbrauch. Das Bild des Systems kann noch kleiner gemacht werden.

Dazu müssen Sie auf der "Himbeere" das Skript ausführen:

#!/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 dem Ausarbeiten des Skripts wird im aktuellen Verzeichnis ein Unterverzeichnis ( $ P ) mit dem Inhalt des Stammverzeichnisses der neuen Minimal OS Edition erstellt. Sie können die „Himbeere“ ausschalten und die microSD an die Linux-Workstation zurückgeben.

3. Installieren eines Mindestsystems


Die Installation beschränkt sich darauf, die Dateien des minimalen "Images" des Betriebssystems (im vorherigen Schritt erhalten) auf eine speziell vorbereitete microSD in den entsprechenden Verzeichnissen zu kopieren.

Eine 2-GB-Karte und zwei Abschnitte reichen aus:

  1. / boot / efi - EFI + FAT32, boot, 100 MB;
  2. / (root) - EXT4, der gesamte verbleibende Speicherplatz.

Nachdem Sie die microSD vorbereitet und Dateien darauf kopiert haben, benötigen Sie:

  • Boot-Betriebssystem reparieren;
  • das Netzwerk einschalten;
  • Konfigurieren Sie den Zugriff über ssh.

Das Reparieren eines Downloads besteht darin, die UUID der Abschnitte in den Dateien zu ersetzen:

microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv

und saved_entry = Parameter in der letzten Datei

In der Datei:

microSD:/etc/fstab

Sie können alte und aktuelle (aktuelle) Werte in der Ausgabe des Befehls finden:

blkid | grep mmcblk | sort

Nach dem Ersetzen sollten Sie auch den Inhalt von fstab an microSD anpassen , sodass die Einhängepunkte den neuen Partitions-UUIDs entsprechen.

Wenn Sie die „Himbeere“ zum ersten Mal einschalten, kann die Netzwerkleistung mit einer kleinen „Krücke“ erreicht werden. Erstellen Sie eine Verknüpfung (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

Räumen Sie nach einem erfolgreichen Start den Start von systemd-networkd auf :

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Der Superuser-Zugriff über ssh ist ähnlich wie unter Punkt 1 konfiguriert.

Nachdem Sie alles ordentlich und fehlerfrei erledigt haben, können Sie die microSD in der "Himbeere" neu anordnen und mit 64-Bit-Betriebssystemen bei minimaler Leistung arbeiten.

4. System bereit


Das "Image" des fertigen Systems, das gemäß den obigen Anweisungen erstellt wurde, kann unter folgendem Link heruntergeladen werden:
Fedora-Tiny-31-5.5.7-200.aarch64

Dies ist ein Archiv, das zwei Dateien enthält: ein Installationsskript und TGZ mit Betriebssystemdateien. Das Archiv muss auf einer Linux-Workstation entpackt, eine microSD-Karte (2 GB Karte ist ausreichend) eingelegt und das Skript mit dem Parameter - dem Namen des Geräts - ausgeführt werden:

./install /dev/mmcblk0
Seien Sie vorsichtig!

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


Nach einer fehlerfreien Ausarbeitung des Skripts kann die Karte in die "Himbeere" umgeordnet und verwendet werden: Um per DHCP zu fangen, lautet das Passwort "1".

Das System wird von allen Arten von IDs und Schlüsseln befreit, weshalb jede neue Installation einzigartig ist.

Ich wiederhole noch einmal, das System ist minimal ! Seien Sie daher nicht beunruhigt: DNF ist verfügbar. Für seine Funktionalität müssen Sie die richtige /etc/resolv.conf „komponieren“ .

Ein Kaltstart einer Himbeere dauert etwa 40 Sekunden. TTX-System nach dem Start:

Fedora aarch64

rpm -qa | wc -l
191

5. Wi-Fi


Ich werde auf die Funktionen der Implementierung von Wi-Fi-Zugangspunkten eingehen. Einzelheiten finden Sie in meinem vorherigen Artikel .

EPEL wird nicht mehr benötigt - alle Pakete sind in offiziellen Repositories enthalten.

Wahrscheinlich lohnt es sich, auf dnsmasq zu verzichten , da Fedora im Gegensatz zu CentOS über ein relativ neues systemd-networkd verfügt, in dem normale DHCP / DNS-Server integriert sind. Die Tatsache, dass sich Entwickler in RHEL8 geweigert haben, den Netzwerkstapel mit etwas anderem als NM zu unterstützen , weckt jedoch kein Vertrauen in die glänzende Zukunft des Projekts (Bösewichte). Kurz gesagt, ich habe es nicht versucht.

Außerdem können die aktuellen Treiber des integrierten Wi-Fi-Adapters nicht aus der Raspbian-Distribution "gestohlen", sondern direkt von github heruntergeladen werden .

So sehen Broadcom-Firmware-Dateien auf meiner „Himbeere“ 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 5 GHz / AC nicht.

Über die Anzahl und Namen der Schnittstellen. Jetzt empfehle ich dringend, dass jeder ohne besondere Anforderungen nicht auf die „Dienste“ von Software-Switches ( Bridge ) zurückgreifen muss, die den Netzwerkstapel erheblich belasten und das Routing verhindern. Wenn mehrere drahtlose Adapter nicht geplant sind, sollten nur physische Schnittstellen verwendet werden. Ich habe zwei Wi-Fi, also kombiniere ich sie nur zu einer Software-Bridge (obwohl Sie darauf verzichten können, indem Sie die Hostapd-Einstellung anders betrachten).

Und ich benenne gerne Schnittstellen um.

Erstellen Sie dazu in Fedora einen symbolischen Link:

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

und dann wird es möglich sein, aussagekräftige Namen zu vergeben, ohne an udev zu basteln , sondern nur mit systemd-networkd.

Hier werden beispielsweise Netzwerkadapter in meinem Router genannt:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

2: wan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

3: lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

4: int: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master lan state UP group default qlen 1000

5: ext: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master lan state UP group default qlen 1000

  • int - eingebaute, ext - externe (USB) Wi-Fi-Adapter, die in der "Bridge" -Sprache montiert sind ;
  • WAN - Ethernet-Adapter, mit dem das Internet verbunden ist.

Hast du bemerkt? fq_codel ist wirklich eine gute Sache. Zusammen mit dem neuen Linux-Kernel wirken sie Wunder im drahtlosen Bereich: Die starke „Torrent-Qualität“ wird nicht zu einer plötzlichen Verschlechterung der Geschwindigkeit bei den Nachbarn führen. Selbst wenn Sie "über Funk" zu Hause IP-TV mit einem geladenen Kanal arbeiten, "löst" sich das nicht auf und "stottert" überhaupt nicht vom Wort!

Die Hostapd- Daemon-Servicedatei wurde geringfügig geändert .

Es sieht jetzt so aus (am Beispiel des eingebauten 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 die Arbeit mit 5 GHz / 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" von meinem "Ericsson A1018s":

(Internetverbindung - 100 Mbit / s)
Fedora aarch64

Und abschließend eine kleine FAQ.

6. FAQ


6.1 Warum einen WLAN-Router auf einer Himbeere bauen?


Man könnte einfach antworten und sagen: "Es ist interessant, das alles zu versuchen."

Tatsächlich scheint mir das Thema jedoch sehr ernst zu sein. In Zeiten des "blutigen" Internets ist es eine sehr langweilige Aussicht, einen Router in einem Geschäft zu kaufen und von seinem Hersteller als Geisel genommen zu werden. Viele Menschen verstehen bereits, dass es unmöglich ist, mit einem CVE oder einer verkabelten Hintertür zu sitzen.

Natürlich können Sie von Enthusiasten auf WRT-Firmware migrieren. Es gibt wahrscheinlich mehr Vertrauen in sie, aber wenn Sie sich nicht auf sie verlassen möchten, dann nur auf Ihr eigenes Produkt. Idealerweise ein vollwertiger Computer für die Möglichkeit, alles auf der Welt darauf zu implementieren. In Bezug auf das Routing natürlich.

Daher ist die Wahl der „Himbeeren“ ein rein wirtschaftlicher Schritt: ein echter Computer und gleichzeitig kostengünstig. Es ist aber auch möglich - mit seinem "Dual" im Inneren.

6.2 Aber Raspberry ist ein „Sub-Router“: langsam und mit einem Ethernet-Port!


Als Heim-WLAN-Router passt „Malinka“ mehr zu mir als. Über Geschwindigkeit "durch die Luft" habe ich bereits oben gesagt. Und nur ein Ethernet in einem ähnlichen Produkt von Apple auf ungefähr die gleiche Weise!

Aber im Ernst, natürlich würde ich gerne mehr. Und trotz der Tatsache, dass in meinem Haushalt alle Geräte drahtlos verbunden sind, ist manchmal immer noch eine Kupferverbindung erforderlich. In solchen Fällen habe ich einen „mobilen Hub“ auf Lager:

Gerät - wie
Fedora aarch64

6.3 Wenn dies ein Router ist, wird nichts über das "Tuning" von TCP / IP gesagt, weil es wichtig ist!


Zusätzlich zum Einrichten des Netzwerkstapels (tcp_fastopen, YeAH usw.) wurden in diesem und im vorherigen Artikel keine weiteren Nuancen offengelegt, insbesondere der Prozess der Vorbereitung von microSD für die optimale Verwendung (obwohl das Installationsprogramm versucht, die Speicherkarte auf schwierige Weise zu formatieren). Der Verbesserungsprozess ist endlos, Sie müssen nur rechtzeitig anhalten.

6.4 Warum Fedora?


Weil ich mag! Fedora - "Mainstream" - ein System von Geeks, für das dieser Artikel eigentlich gedacht ist. Zum Zeitpunkt des Schreibens wird möglicherweise das einzige Betriebssystem für Raspberry in der 64-Bit-Version offiziell von einer großen Anzahl von Entwicklern unterstützt (von denen ich nicht auf den 5.6-Kernel warten kann ).

6.5 Funktioniert Bluetooth? Wie ist das Video / Sound / GPIO?


Weiß nicht. Der Artikel befasst sich mit der minimalen Installation des Systems und seiner anschließenden Verwendung als WLAN-Router.

6.6 Warum beginnen alle CentOS / Fedora / RedHat-Artikel mit der Deaktivierung von SELinux?


Da das System minimal ist, verfügt es nicht einmal über eine Firewall und Dienstprogramme zum Einrichten. Wer es braucht - sie können zusätzlich alles Nötige installieren.

6.7. Das System kann nicht verwendet werden, das Passwort kann nicht geändert werden - kein Passwort. Kein Ping, nichts!


Es gibt eine DNF . Oder diese Installationsoption ist nichts für Sie - verwenden Sie das Distributionskit der Entwickler.

6.8 Wo ist der SWAP? Ich kann nicht ohne ihn leben!


Wahrheit? 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 möchte ein fertiges Bild mit einem konfigurierten Wi-Fi-Zugangspunkt herunterladen!


Die Vorbereitung des Installationsprogramms "für alle" erfordert einen gewissen Zeit- und Arbeitsaufwand. Wenn es (plötzlich!) Für jemanden wirklich interessant und notwendig erscheint - schreiben Sie, wir werden uns etwas einfallen lassen.



Darauf - ich werde fertig sein.

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

All Articles