Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hallonrouter med blå hatt)

Artikeln Raspberry Pi + CentOS = Wi-Fi Hotspot (eller hallonrouter med röd hatt) Jag pratade om ett sätt att förvandla en hallon till en trådlös åtkomstpunkt med hjälp av operativsystemet CentOS. Genom att sätta ihop min hemmarouter enligt denna ritning tillfredsställde jag mitt kreativa ego och fick ett uppsving av sinnesfrid för en kritisk del av min mysiga infrastruktur. Men känslan av ofullständighet hos lösningen och inre perfektionism förföljde mig: "ett ofullkomligt resultat av arbete har ingen rätt att existera." Tanken att "det ideala kan och bör uppnås" lämnade mig inte en minut.

Och så en dag, på ett av de tematiska forumen, stötte jag på en diskussion om bitdjupet i befintliga operativsystem för Raspberry (aarch64 vs armhfp): vilket 64-bitars OS som i princip kan passa och fungera på Raspberry version 3 ++?

Min älskade CentOS för ARM-arkitekturen från "Userland" hade ingen brådska att byta till den senaste versionen av kärnan och förvandla till 64-bitars. Och EPEL-förvaret, anslutet från Gud vet var utan en digital signatur, var en mardröm i min rastlösa sömn...

På tal som en anhängare av RPM-baserade distributioner, blev jag förvånad över att finna att OS för Raspberry helt glömdes bort i diskussioner fedora! Och detta trots att dess release
från version 28 stöder den officiellt Raspberry Pi 3B+ i 64-bitarsversion!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hallonrouter med blå hatt)
I den här artikeln kommer jag att prata om installationsmetoden Fedora (aarch64)Raspberry Pi 3 Modell B + в extra minimal prestanda. Jag kommer kort att uppehålla mig vid funktionerna för att höja en Wi-Fi-åtkomstpunkt, identifierad som ett resultat av provdrift av min tidigare konfiguration på 7 CentOS.

0. Vad du behöver

Allt är detsamma som i föregående artikel:

  • Raspberry Pi 3 modell B+;
  • microSD >= 4GB (senare kan du "överföra" systemet till en 2GB-enhet);
  • Arbetsstation med Linux och microSD-kortläsare;
  • Trådbunden nätverksanslutning mellan Raspberry och en Linux-arbetsstation (i det här fallet behövs ingen extra bildskärm och tangentbord för installation), Internetåtkomst från båda enheterna;
  • Avancerad färdighet i Linux (att veta och inte vara rädd: parted, dd и mkfs).

Liknar iterativ LFS-om du bygger ditt eget Linux, kommer Fedora-distributionsbilden att användas, och baserat på den kommer ett minimalt system att skapas (utan att "kompilera från källan").

1. Installation av originaldistributionen

Koordinater för den råa bilden av systemet på Internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Efter att ha spelat in det på microSD och innan du använder det måste du:

  1. Expandera "roten" av filsystemet (3:e partitionen, 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. Inaktivera SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Ta bort Initial Setup Wizard:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Tillåt åtkomst via 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
    

Nu kan du ladda ner "hallon" från microSD och ansluta till den via nätverket.

En kallstart tar ungefär en och en halv minut. TTX för systemet efter laddning:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hallonrouter med blå hatt)

rpm -qa | wc -l
444

2. Montering av ett minimalt system

Tyvärr visar sig den "minimala fördelningen" från utvecklarna vara långt ifrån den mest blygsamma i resursförbrukning. Systembilden kan göras ännu mindre.

För att göra detta måste du köra skriptet på Malinka:

#!/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

Efter att ha kört skriptet kommer en underkatalog att skapas i den aktuella katalogen ($P) med innehållet i roten till den nya minimala OS-utgåvan. Du kan stänga av Raspberry och returnera microSD till Linux-arbetsstationen.

3. Installation av ett minimalt system

Installationen går ut på att kopiera de minimala OS "image"-filerna (erhållna i föregående steg) till en speciellt förberedd microSD till lämpliga kataloger.

Ett 2GB-kort och två partitioner på det räcker:

  1. / Boot / efi - EFI+FAT32, start, 100 MB;
  2. / (root) - EXT4, allt återstående utrymme.

Efter att ha förberett microSD och kopierat filer till det måste du:

  • fixa OS-start;
  • slå på nätverket;
  • konfigurera åtkomst via ssh.

Bootfixet är att ersätta UUID för avsnitten i filerna:

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

och parameter saved_entry= i den sista filen

I fil:

microSD:/etc/fstab

du kan hitta de gamla värdena och de nuvarande (uppdaterade) värdena i kommandoutgången:

blkid | grep mmcblk | sort

Efter byte bör du även korrigera innehållet fstab på microSD så att monteringspunkterna motsvarar de nya partitions-UUID:erna.

Nätverksfunktionalitet när du först slår på Hallon kan uppnås med en liten "krycka" - skapa en länk (schematiskt):

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

och fil:

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

Efter en lyckad nedladdning, städa upp lanseringen systemd-nätverk:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superanvändaråtkomst via ssh konfigureras på samma sätt som steg 1.

Efter att ha gjort allt noggrant och utan fel kan du flytta microSD till "hallon" och börja arbeta med ett 64-bitars OS i en extra minimal version.

4. Klart system

"Bilden" av det färdiga systemet, skapad enligt instruktionerna ovan, kan laddas ner från länken:
Fedora-Tiny-31-5.5.7-200.aarch64

Detta kommer att vara ett arkiv som innehåller två filer: installationsskriptet och TGZ med OS-filer. Arkivet måste packas upp på en Linux-arbetsstation, sätta i ett microSD (ett 2GB-kort räcker) och köra skriptet med en parameter - namnet på enheten:

./install /dev/mmcblk0

Var försiktig!

Utan några varningar kommer enheten att formateras och operativsystemet kommer att installeras på den.

Efter felfri exekvering av skriptet kan kortet ordnas om till "hallon" och användas: fånga via dhcp, lösenord - "1".

Systemet rensas på alla ID och nycklar, varför varje ny installation är unik.

Jag upprepar ännu en gång, systemet - minimal! Var därför inte orolig: DNF är tillgänglig, för att det ska fungera måste du "uppfinna" den korrekta / Etc / resolv.conf.

Kallstarten av Hallon tar cirka 40 sekunder. TTX för systemet efter laddning:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hallonrouter med blå hatt)

rpm -qa | wc -l
191

5. WiFi

Jag kommer att uppehålla mig lite vid funktionerna i att implementera en Wi-Fi-åtkomstpunkt. För detaljer kan du hänvisa till min tidigare artikeln.

EPEL behövs inte längre - alla paket finns i de officiella arkiven.

Det vore nog värt att ge upp dnsmasq, eftersom Fedora, till skillnad från CentOS, har ett ganska nytt systemd-nätverk, som har normala inbyggda DHCP/DNS-servrar. Men faktum är att i RHEL8 utvecklare vägrade att stödja nätverksstacken med något annat än NM, inger inte förtroende för projektets ljusa framtid (skurkar). Kort sagt, jag har inte provat det.

Vidare kan de nuvarande drivrutinerna för den inbyggda Wi-Fi-adaptern inte "stjälas" från Raspbian-distributionen, utan laddas ner direkt från github.

Så här ser Broadcom-firmware-filerna ut på min Raspberry (schematiskt):

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

Utan dem får du inte 5GHz/AC.

Angående antal och namn på gränssnitt. Nu rekommenderar jag starkt till alla att inte ta till "tjänsterna" av mjukvaruväxlar om det inte är absolut nödvändigt (bro), som inför betydande belastning i nätverksstacken och trycker ner routing. Om du inte planerar att ha flera trådlösa adaptrar, bör du endast använda fysiska gränssnitt. Jag har två Wi-Fi, så jag kombinerar bara dem till en mjukvarubrygga (även om du kan klara dig utan detta genom att titta på hostapd-inställningen annorlunda).

Och jag älskar att byta namn på gränssnitt.

För att göra detta i Fedora måste du skapa en symbolisk länk:

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

och då blir det möjligt att ge meningsfulla namn utan att peta runt udev, men bara med systemd-networkd.

Det här är till exempel vad nätverksadaptrarna i min router heter:

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 - inbyggd, ext — externa (USB) Wi-Fi-adaptrar monterade till en "brygga" lan;
  • wan — Ethernet-adapter som Internet är anslutet till.

Lade märke till? fq_codel - en riktigt cool grej. Tillsammans med en fräsch Linux-kärna utför de verkliga mirakel inom det trådlösa räckvidden: en våldsam "torrentnedladdning" kommer inte att leda till en plötslig försämring av hastigheten bland grannar. Inte ens en hem-IP-TV som fungerar "over the air" med en laddad kanal "bryts upp" och "stamlar" inte alls!

Demonservicefilen har genomgått mindre ändringar hostapd.

Det ser nu ut så här (med exemplet med en inbyggd adapter):

[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

Och den "magiska" hostapd-int.conf för att arbeta i 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]

En liten photoshop gjord av min Ericsson A1018:

(Internetanslutning - 100Mbit/sek.)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hallonrouter med blå hatt)
Och till sist en liten FAQ.

6. FAQ

6.1 Varför göra en Wi-Fi-router på Raspberry?

Man skulle kunna svara enkelt, som "det är intressant att prova och allt det där."

Men i själva verket verkar det som att ämnet är ganska allvarligt. I en tid präglad av det "blodiga" Internet är det en mycket dyster utsikt att köpa en router i en butik och förbli gisslan till dess tillverkare. Många förstår redan att det inte är möjligt att sitta med en CVE eller inbyggd bakdörr.

Naturligtvis kan du migrera till WRT-firmware från entusiaster. Det finns förmodligen mer förtroende för dem, men om du inte vill vara beroende av dem, använd bara din egen produkt. Helst en fullfjädrad dator så att allt i världen kan implementeras på den. När det gäller routing såklart.

Att välja ett "hallon" är därför ett rent ekonomiskt drag: en riktig dator och samtidigt en billig. Fast kanske också - med sina "dubbel" inuti.

6.2 Men Raspberry är en "låg router": långsam och med en Ethernet-port!

Som en Wi-Fi-router för hemmet är Raspberry mer än tillfredsställande för mig. Jag har redan pratat om lufthastighet ovan. Och det finns bara ett Ethernet, ja, i en liknande produkt från Apple är det ungefär detsamma!

Men seriöst, självklart skulle jag vilja ha mer. Och trots att i mitt hushåll är alla enheter anslutna trådlöst, ibland krävs fortfarande en kopparanslutning. För sådana fall har jag en "mobil hub" i lager:

enhet - något sånt härRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hallonrouter med blå hatt)

6.3 Om detta är en router, så sägs ingenting om att "tuna" TCP/IP, eftersom detta är viktigt!

Förutom att ställa in nätverksstacken (tcp_fastopen, YeAH, etc.), täcker denna och föregående artikel inte andra nyanser, i synnerhet processen att förbereda microSD för optimal användning (även om installationsprogrammet försöker formatera minneskortet i ett knepigt sätt). Förbättringsprocessen är oändlig, du behöver bara sluta i tid.

6.4 Varför Fedora?

För att jag gillar! Fedora är ett "mainstream"-system för nördar, för vilka den här artikeln faktiskt är avsedd. I skrivande stund, kanske det enda operativsystemet som för Raspberry i 64-bitarsversionen officiellt stöds av en betydande personal av utvecklare (som jag inte kan vänta från kärna 5.6).

6.5 Fungerar Bluetooth? Hur är videon/ljudet/GPIO?

Vet inte. Artikeln handlar om den minimala installationen av systemet och dess efterföljande användning som en Wi-Fi-router.

6.6 Varför börjar alla artiklar om CentOS/Fedora/RedHat med att inaktivera SELinux?

Eftersom systemet är minimalt har det inte ens en brandvägg eller verktyg för att ställa in det. Alla som behöver det kan installera ytterligare allt de behöver.

6.7 Systemet kan inte användas, lösenordet kan inte ändras - ingen passwd. Inget ping, inget ingenting!

Det finns DNF. Eller så är det här installationsalternativet inte för dig - använd distributionssatsen från utvecklarna.

6.8 Var är SWAP? Jag kan inte leva utan honom!

Är det sant? Okej då:

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 Jag vill omedelbart ladda ner en färdig bild med en konfigurerad Wi-Fi-åtkomstpunkt!

Att förbereda en installatör "för alla" kommer att kräva lite tid och ansträngning. Om (plötsligt!) någon verkligen tycker att detta är intressant och nödvändigt, skriv till oss så kommer vi på något.

Jag avslutar med det här.

Jag önskar alla säker surfning och maximal kontroll över infrastrukturen!

Källa: will.com

Lägg en kommentar