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

Artikel Raspberry Pi + CentOS = Wi-Fi Hotspot (oder Himbeer-Router mit rotem Hut) Ich habe über eine Möglichkeit gesprochen, einen Raspberry mithilfe des CentOS-Betriebssystems in einen drahtlosen Zugangspunkt zu verwandeln. Indem ich meinen Heimrouter nach dieser Zeichnung zusammenbaute, befriedigte ich mein kreatives Ego und erhielt einen Schub an Seelenfrieden für ein wichtiges Element meiner gemütlichen Infrastruktur. Allerdings verfolgte mich das Gefühl der Unvollständigkeit der Lösung und des inneren Perfektionismus: „Ein unvollkommenes Arbeitsergebnis hat keine Daseinsberechtigung.“ Der Gedanke, dass „das Ideal erreicht werden kann und sollte“, ließ mich keine Minute los.

Und dann stieß ich eines Tages in einem der Themenforen auf eine Diskussion über die Bittiefe bestehender Betriebssysteme für Raspberry (aarch64 vs. armhfp): Welches 64-Bit-Betriebssystem kann im Prinzip auf Raspberry Version 3 passen und funktionieren? ++?

Mein geliebtes CentOS für die ARM-Architektur von „Userland“ hatte es nicht eilig, auf die neueste Version des Kernels umzusteigen und auf 64-Bit umzusteigen. Und das EPEL-Repository, von Gott weiß woher ohne digitale Signatur verbunden, war in meinem unruhigen Schlaf ein Albtraum ...

Als Anhänger RPM-basierter Distributionen war ich überrascht, dass das Betriebssystem für Raspberry in den Diskussionen völlig vergessen wurde Fedora! Und das trotz der Tatsache, dass es veröffentlicht wurde
Ab Version 28 unterstützt es offiziell den Raspberry Pi 3B+ in der 64-Bit-Version!

Raspberry Pi + Fedora (aarch64) = WLAN-Hotspot (oder Himbeer-Router mit blauem Hut)
In diesem Artikel werde ich über die Installationsmethode sprechen Fedora (aarch64) auf Raspberry Pi 3 Modell B + в extra minimale Leistung. Ich werde kurz auf die Funktionen der Einrichtung eines WLAN-Zugangspunkts eingehen, die sich aus dem Testbetrieb meiner vorherigen Konfiguration ergeben haben 7 CentOS.

0. Was Sie brauchen

Alles ist das Gleiche wie im vorherigen Artikel aufgeführt:

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

Ähnlich wie iterativ LFS- Beim Erstellen Ihres eigenen Linux wird das Fedora-Distributions-Image verwendet und dann darauf basierend ein Minimalsystem erstellt (ohne „Kompilieren aus dem Quellcode“).

1. Installation der Originaldistribution

Koordinaten des Rohbildes des Systems im Internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Nachdem Sie es auf microSD aufgezeichnet haben und bevor Sie es verwenden, müssen Sie Folgendes tun:

  1. Erweitern Sie das „Root“ des Dateisystems (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
    

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

  3. Entfernen Sie den Ersteinrichtungsassistenten:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Zugriff per SSH 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 der microSD herunterladen und über das Netzwerk damit verbinden.

Ein Kaltstart dauert etwa eineinhalb Minuten. TTX des Systems nach dem Laden:

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

rpm -qa | wc -l
444

2. Zusammenbau eines Minimalsystems

Leider erweist sich die „minimale Verteilung“ der Entwickler als bei weitem nicht die bescheidenste im Ressourcenverbrauch. Das Systemabbild kann noch kleiner gemacht werden.

Dazu müssen Sie das Skript auf Malinka 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 der Ausführung des Skripts wird im aktuellen Verzeichnis ein Unterverzeichnis erstellt ($P) mit dem Inhalt des Stammverzeichnisses der neuen Minimal-OS-Edition. Sie können den Raspberry ausschalten und die microSD an die Linux-Workstation zurückgeben.

3. Installation eines Minimalsystems

Die Installation läuft darauf hinaus, die minimalen „Image“-Dateien des Betriebssystems (die Sie im vorherigen Schritt erhalten haben) auf eine speziell vorbereitete microSD in die entsprechenden Verzeichnisse zu kopieren.

Eine 2GB Karte und zwei Partitionen darauf genügen:

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

Nachdem Sie die microSD vorbereitet und Dateien darauf kopiert haben, müssen Sie Folgendes tun:

  • Betriebssystemstart reparieren;
  • schalten Sie das Netzwerk ein;
  • Konfigurieren Sie den Zugriff über SSH.

Der Boot-Fix soll die UUID der Abschnitte in den Dateien ersetzen:

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

und Parameter gespeicherter_Eintrag= in der letzten Datei

Im Ordner:

microSD:/etc/fstab

Die alten Werte und die aktuellen (aktuellen) Werte finden Sie in der Befehlsausgabe:

blkid | grep mmcblk | sort

Nach dem Austausch sollten Sie auch den Inhalt korrigieren fstab auf microSD, sodass die Mount-Punkte den neuen Partitions-UUIDs entsprechen.

Die Netzwerkfunktionalität beim ersten Einschalten des Raspberry kann mit einer kleinen „Krücke“ erreicht 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

Räumen Sie nach einem erfolgreichen Download den Start auf systemd-netzwerkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Der Superuser-Zugriff über SSH wird ähnlich wie in Schritt 1 konfiguriert.

Nachdem Sie alles sorgfältig und fehlerfrei erledigt haben, können Sie die microSD in die „Himbeere“ verschieben und mit einem 64-Bit-Betriebssystem in einer extra minimalen Version arbeiten.

4. Bereites System

Das nach obiger Anleitung erstellte „Image“ des fertigen Systems kann unter folgendem Link heruntergeladen werden:
Fedora-Tiny-31-5.5.7-200.aarch64

Dies wird ein Archiv sein, das zwei Dateien enthält: das Installationsskript und TGZ mit Betriebssystemdateien. Das Archiv muss auf einer Linux-Workstation entpackt werden, eine microSD einlegen (eine 2-GB-Karte reicht aus) und das Skript mit einem Parameter ausführen – dem Namen des Geräts:

./install /dev/mmcblk0

Seien Sie vorsichtig!

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

Nach fehlerfreier Ausführung des Skripts kann die Karte in die „Himbeere“ umgeordnet und verwendet werden: Abfangen über DHCP, Passwort - „1“.

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

Ich wiederhole noch einmal, das System - minimal! Seien Sie daher nicht beunruhigt: DNF ist verfügbar. Damit es funktioniert, müssen Sie das richtige „erfinden“. / Etc / resolv.conf.

Der Kaltstart des Raspberry dauert etwa 40 Sekunden. TTX des Systems nach dem Laden:

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

rpm -qa | wc -l
191

5. W-lan

Ich werde ein wenig auf die Funktionen der Implementierung eines Wi-Fi-Zugangspunkts eingehen. Einzelheiten finden Sie in meinem vorherigen Artikel Artikel.

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

Es würde sich wahrscheinlich lohnen, aufzugeben dnsmasq, da Fedora im Gegensatz zu CentOS über ein relativ neues systemd-networkd verfügt, das über normale integrierte DHCP/DNS-Server verfügt. Tatsache ist jedoch, dass in RHEL8-Entwicklern weigerte sich, den Netzwerkstapel mit etwas anderem als NM zu unterstützen, weckt kein Vertrauen in die glänzende Zukunft des Projekts (Schurken). Kurz gesagt, ich habe es nicht ausprobiert.

Darüber hinaus können die aktuellen Treiber für den integrierten WLAN-Adapter nicht von der Raspbian-Distribution „geklaut“ werden, sondern direkt von heruntergeladen werden github.

So sehen die Broadcom-Firmware-Dateien auf meinem Raspberry 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 erhalten Sie kein 5GHz/AC.

Bezüglich der Anzahl und Namen der Schnittstellen. Jetzt empfehle ich jedem dringend, nicht auf die „Dienste“ von Software-Switches zurückzugreifen, es sei denn, dies ist unbedingt erforderlich (Brücke), die den Netzwerkstapel erheblich belasten und das Routing beeinträchtigen. Wenn Sie nicht vorhaben, über mehrere WLAN-Adapter zu verfügen, sollten Sie nur physische Schnittstellen verwenden. Ich habe zwei Wi-Fi, daher kombiniere ich nur diese zu einer Software-Bridge (obwohl Sie darauf verzichten können, indem Sie das Hostapd-Setup anders betrachten).

Und ich liebe es, Schnittstellen umzubenennen.

Dazu müssen Sie in Fedora einen symbolischen Link erstellen:

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

und dann wird es möglich sein, aussagekräftige Namen zu vergeben, ohne herumzustöbern udev, aber nur mit systemd-networkd.

So heißen zum Beispiel die Netzwerkadapter in meinem Router:

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 - eingebaut, ext — Externe (USB-)WLAN-Adapter zu einer „Brücke“ zusammengefügt lan;
  • fahl — Ethernet-Adapter, an den das Internet angeschlossen ist.

Bemerkte? fq_codel - eine wirklich coole Sache. Zusammen mit einem frischen Linux-Kernel bewirken sie wahre Wunder im WLAN-Bereich: Ein heftiger „Torrent-Download“ führt nicht zu einem plötzlichen Geschwindigkeitsabfall bei Nachbarn. Selbst ein Heim-IP-TV, der „über Funk“ mit einem geladenen Kanal betrieben wird, „bricht nicht ab“ und „stottert“ überhaupt nicht!

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

Das sieht nun so aus (am Beispiel eines 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 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 kleines Photoshop aus meinem Ericsson A1018:

(Internetverbindung – 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = WLAN-Hotspot (oder Himbeer-Router mit blauem Hut)
Und zum Schluss noch eine kleine FAQ.

6. FAQ

6.1 Warum einen WLAN-Router auf Raspberry erstellen?

Man könnte einfach antworten: „Es ist interessant, das alles auszuprobieren.“

Aber tatsächlich scheint mir das Thema ziemlich ernst zu sein. Im Zeitalter des „blutigen“ Internets ist der Kauf eines Routers in einem Geschäft und die Geisel seines Herstellers eine sehr düstere Aussicht. Viele Menschen verstehen bereits, dass es nicht möglich ist, mit einem CVE oder einer eingebauten Hintertür herumzusitzen.

Natürlich können Sie von Enthusiasten auf die WRT-Firmware migrieren. Ihnen wird wahrscheinlich mehr Vertrauen entgegengebracht, aber wenn Sie sich nicht auf sie verlassen möchten, dann verwenden Sie einfach Ihr eigenes Produkt. Idealerweise ein vollwertiger Computer, auf dem alles auf der Welt umgesetzt werden kann. Was das Routing angeht, natürlich.

Daher ist die Wahl einer „Himbeere“ ein rein wirtschaftlicher Schachzug: ein echter Computer und gleichzeitig ein preiswerter. Obwohl, vielleicht auch – mit ihren „Doppelgängern“ im Inneren.

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

Als Heim-WLAN-Router ist der Raspberry für mich mehr als zufriedenstellend. Über die Luftgeschwindigkeit habe ich oben bereits gesprochen. Und es gibt nur ein Ethernet, aber bei einem ähnlichen Produkt von Apple ist es ungefähr das Gleiche!

Aber im Ernst, ich hätte natürlich gerne mehr. Und obwohl in meinem Haushalt alle Geräte drahtlos miteinander verbunden sind, ist manchmal immer noch eine Kupferverbindung erforderlich. Für solche Fälle habe ich einen „mobilen Hub“ auf Lager:

Gerät - so etwas in der ArtRaspberry Pi + Fedora (aarch64) = WLAN-Hotspot (oder Himbeer-Router mit blauem Hut)

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

Abgesehen vom Einrichten des Netzwerkstapels (tcp_fastopen, YeAH usw.) behandeln dieser und der vorherige Artikel keine anderen Nuancen, insbesondere den Prozess der Vorbereitung von microSD für die optimale Verwendung (obwohl das Installationsprogramm versucht, die Speicherkarte zu formatieren). eine knifflige Art). Der Verbesserungsprozess ist endlos, Sie müssen nur rechtzeitig anhalten.

6.4 Warum Fedora?

Weil ich mag! Fedora ist ein „Mainstream“-System für Geeks, für die dieser Artikel eigentlich gedacht ist. Zum Zeitpunkt des Verfassens dieses Artikels vielleicht das einzige Betriebssystem, das für Raspberry in der 64-Bit-Version offiziell von einem bedeutenden Team von Entwicklern unterstützt wird (von denen ich es kaum erwarten kann). Kernel 5.6).

6.5 Funktioniert Bluetooth? Wie ist das Video/Ton/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 Artikel über CentOS/Fedora/RedHat mit der Deaktivierung von SELinux?

Da das System minimal ist, verfügt es nicht einmal über eine Firewall oder Dienstprogramme zum Einrichten. Wer es braucht, kann zusätzlich alles installieren, was er braucht.

6.7 Das System ist nicht nutzbar, das Passwort kann nicht geändert werden – kein Passwort. Kein Ping, kein Nichts!

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

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

Ist es wahr? 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 sofort ein fertiges Bild mit einem konfigurierten WLAN-Zugangspunkt herunterladen!

Die Vorbereitung eines Installationsprogramms „für alle“ erfordert einige Zeit und Mühe. Wenn (plötzlich!) jemand das wirklich interessant und notwendig findet, schreiben Sie uns und wir lassen uns etwas einfallen.

Damit komme ich zum Schluss.

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

Source: habr.com

Kommentar hinzufügen