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

I artikeln Raspberry Pi + CentOS = Wi-Fi Hotspot (eller en hallonrouter i röd hatt) Jag berÀttade om hur man förvandlar "malin" till en trÄdlös Ätkomstpunkt med hjÀlp av operativsystemet CentOS. Genom att bygga min hemrouter efter denna ritning tillfredsstÀllde jag min skapande ego och kÀnde en lugn över en kritiskt viktig del av min mysiga infrastruktur. Men kÀnslan av ofullstÀndighet och min inre perfektionism gav mig ingen ro: "en ofullkomlig lösning har ingen rÀtt att existera". Tanken pÄ att "ideal bör och kan uppnÄs" övergav mig aldrig.

En dag snubblade jag över en diskussion pÄ ett temaforum om bitdjupet pÄ existerande operativsystem för "malin" (aarch64 vs armhfp): vilka 64-bitars OS kan egentligen installeras och fungera pÄ Raspberry version 3++?

Min favorit CentOS för ARM-arkitekturen frÄn "Userland" hade inte brÄttom att uppgradera till den senaste versionens kÀrna och bli 64-bitars. Och EPEL-repositoriet, som pÄ nÄgot sÀtt inkluderats utan digital signatur, var en mardröm i min oroliga sömn...

Som en anhÀngare av RPM-baserade distributioner blev jag överraskad över att det i diskussionerna om OS för "malin" helt hade glömts bort Fedora! Och detta trots att dess utgÄva
frÄn version 28 officiellt stödjer Raspberry Pi 3B+ i 64-bitarsformat!

Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (eller hallonrouter med blÄ hatt)
I denna artikel kommer jag att berÀtta om hur man installerar Fedora (aarch64) till Raspberry Pi 3 Model B+ pÄ i en extremt minimal version. Jag kommer kort att nÀmna de specifika egenskaperna hos Wi-Fi Ätkomstpunkten som kom fram efter den praktiska anvÀndningen av min tidigare konfiguration pÄ CentOS 7.

0. Vad som behövs

Samma sak som nÀmns i den tidigare artikeln:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (i framtiden kan man "flytta" systemet till ett 2GB lagringsmedium);
  • Arbetsstation med Linux och microSD-kortlĂ€sare;
  • Kabelanslutning mellan "malin" och arbetsstationen med Linux (i detta fall behövs ingen extra skĂ€rm eller tangentbord för konfiguration), internetĂ„tkomst för bĂ„da enheterna;
  • Avancerad kompetens i Linux (veta och inte vara rĂ€dd: parted, dd och mkfs).

I likhet med en iterativ LFS-byggnation av ett eget Linux, kommer en distributionsbild av Fedora att anvÀndas, och dÀrefter skapas ett minimalt system (utan "kompilering frÄn kÀllkod").

1. Installation av den ursprungliga distributionen

Koordinaterna för rÄsystemavbildningen pÄ nÀtet:
https://
/fedora-secondary/releases/
/Spins/aarch64/images/Fedora-Minimal-
xz

Efter att han har registrerats pÄ microSD och innan anvÀndning krÀvs följande:

  1. Utöka "roten" för filsystemet (tredje 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. StÀng av SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Ta bort installationsguiden:
    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 starta "malinen" frÄn microSD och ansluta till den via nÀtverket.

Kallstart tar ungefÀr en och en halv minut. Systemets specifikationer efter start:

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

rpm -qa | wc -l
444

2. Bygga ett minimalt system

TyvÀrr Àr "den minimala distributionen" frÄn utvecklarna lÄngt ifrÄn den mest resurskrÀvande. Systemavbildningen kan göras Ànnu mindre.

För detta behöver du köra ett skript pÄ "malinen":

#!/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 skriptet har körts kommer en underkatalog skapas i den aktuella katalogen ($P) med innehÄllet frÄn roten av den nya minimala versionen av operativsystemet. Du kan stÀnga av "malinen" och Äterföra microSD till Linux-arbetsstationen.

3. Installation av minimalsystemet

Installationen innebÀr att kopiera filerna frÄn den minimala "avbildningen" av operativsystemet (som erhÄllits i föregÄende steg) till en sÀrskilt förberedd microSD i motsvarande kataloger.

En 2GB kort och tvÄ partitioner pÄ den rÀcker:

  1. /boot/efi — EFI+FAT32, startpartition, 100MB;
  2. / (roten) — EXT4, allt Ă„terstĂ„ende utrymme.

Efter att ha förberett microSD och kopierat filerna till den, behöver du:

  • fixa operativsystemets start;
  • aktivera nĂ€tverket;
  • konfigurera ssh-Ă„tkomst.

Att reparera starten innebÀr att byta UUID för partitionerna i filer:

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

och parametern saved_entry= i den senaste filen

I filen:

microSD:/etc/fstab

kan du hitta de gamla vÀrdena, medan de aktuella (relevanta) finns i utskriften av kommandot:

blkid | grep mmcblk | sort

Efter att ha bytt, bör du Àven justera innehÄllet i fstab pÄ microSD sÄ att monteringspunkterna motsvarar de nya UUID:erna för partitionerna.

NÀtverksfunktionalitet vid första starten av "malinen" kan uppnÄs med en liten "fusk" - skapa en lÀnk (schematiskt):

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

och filen:

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

Efter en lyckad start - ordna upp uppstarten systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

TillgÄng till superanvÀndaren via ssh konfigureras pÄ samma sÀtt som punkt 1.

NÀr allt har gjorts noggrant och utan fel, kan microSD-kortet flyttas till "malinen" och du kan börja arbeta med ett 64-bitars OS i extra minimal version.

4. Den fÀrdiga systemet

"Avbildningen" av det fÀrdiga systemet, skapad enligt ovanstÄende instruktion, kan laddas ner via lÀnken:
Fedora-Tiny-31-5.5.7-200.aarch64

Det kommer att vara ett arkiv som innehĂ„ller tvĂ„ filer: installationsskript och TGZ med OS-filer. Arkivet mĂ„ste packas upp pĂ„ en Linux-arbetsstation, sĂ€tt in microSD (2GB-kort rĂ€cker) och kör skriptet med parametern – enhetsnamnet:

.\install \/dev\/mmcblk0

Var försiktig!

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

Efter att skriptet har körts utan fel kan kortet flyttas till "malinen" och anvĂ€ndas: fĂ„ IP via dhcp, lösenord – "1".

Systemet Àr rensat frÄn alla ID och nycklar, vilket gör varje ny installation unik.

Jag sĂ€ger det igen, systemet – minimalistiskt! SĂ„ tveka inte: DNF finns tillgĂ€ngligt, för att det ska fungera mĂ„ste vi "hitta" rĂ€tt /etc/resolv.conf.

Kallstart av "malinen" tar omkring 40 sekunder. Teknikspecifikationer för systemet efter laddning:

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

rpm -qa | wc -l
191

5. Wi-Fi

Jag ska stanna upp lite vid funktionerna för implementationen av Wi-Fi hotspot. För specifikationer kan du hÀnvisa till min tidigare artikeln.

EPEL behövs inte lĂ€ngre – alla paket finns i de officiella arkiven.

Det skulle nog ha varit bÀttre att avstÄ frÄn dnsmasq, eftersom Fedora, till skillnad frÄn CentOS, har en tillrÀckligt modern systemd-networkd, dÀr det finns normala inbyggda DHCP\/DNS-servrar. Men faktum Àr att RHEL8:s utvecklare har avböjt stöd för nÀtverksstacken med nÄgot annat Àn NM, vilket inte inger förtroende för projektets ljusa framtid (skurkar). Kort sagt, jag har inte testat.

Sedan kan aktuella drivrutiner för den inbyggda Wi-Fi-adaptern inte "stjÀlas" frÄn Raspbian-distributionen, utan laddas direkt frÄn github.

SÄ hÀr ser filerna för Broadcom:s firmware ut pÄ min "malin":

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 fungerar det inte med 5GHz\/AC.

AngÄende antalet och namnen pÄ grÀnssnitten. Nu rekommenderar jag starkt att man utan sÀrskilt behov inte anvÀnder "tjÀnster" frÄn mjukvaruswitchar (bridge), som lÀgger en betydande belastning pÄ nÀtverksstacken och hÀmmar rutingen. Om flera trÄdlösa adaptrar inte planeras att anvÀndas bör endast fysiska grÀnssnitt anvÀndas. Jag har tvÄ Wi-Fi, sÄ jag kopplar bara ihop dem i en programvarubro (Àven om det gÄr att klara sig utan detta genom att se pÄ instÀllningen av hostapd).

Och jag Àlskar att döpa om grÀnssnitten.

För detta i Fedora behöver du skapa en symbolisk lÀnk:

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

och dÄ kan man ge meningsfulla namn utan att grÀva i udev, utan endast med hjÀlp av systemd-networkd.

SÄ hÀr, till exempel, namnges nÀtverksadaptrarna i min 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 — inbyggd, ext — extern (USB) Wi-Fi-adaptrar, sammanfogade i en "bro" lan;
  • wan — Ethernet-adapter, som Internet Ă€r kopplat till.

LĂ€gg mĂ€rke till? fq_codel — Ă€r faktiskt en fantastisk sak. Tillsammans med ett nytt Linux-kĂ€rna gör de underverk i det trĂ„dlösa spektrumet: intensiv "torrent-nedladdning" leder inte till plötslig nedgradering av hastigheten för grannarna. Även det "trĂ„dlösa" hem-IP-TV:t klipper inte eller hackar nĂ€r kanalen Ă€r belastad!

TjÀnstefilen för demon har genomgÄtt smÄ förÀndringar hostapd.

Det ser nu ut sÄ hÀr (med inbyggd adapter som exempel):

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Autentiserare
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 arbete 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]

Lite "Photoshop", gjort med min "Ericsson A1018s":

(internetanslutning – 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (eller hallonrouter med blĂ„ hatt)
Och avslutningsvis en liten FAQ.

6. FAQ

6.1 Varför bygga en Wi-Fi-router pÄ Raspberry?

Man skulle kunna svara enkelt med "det Àr intressant att prova och sÄdant".

Men egentligen, som jag ser det, Àr Àmnet ganska allvarligt. I en tid av "blodiga" internetköp Àr det en rÀtt trist perspektiv att köpa en router i affÀren och bli fÄngen av dess tillverkare. MÄnga förstÄr redan att man inte kan sitta med en CVE eller en inbyggd bakdörr.

SjĂ€lvklart kan man migrera till WRT-firmware frĂ„n entusiaster. Kanske finns det mer förtroende för dem, men om man inte vill vara beroende av dem heller, dĂ„ Ă€r det bara - egen produkt. Idealiskt sett – en fullstĂ€ndig dator för att kunna realisera allt pĂ„ den. NĂ€r det kommer till routing, förstĂ„s.

DĂ€rför Ă€r valet av "hallon" en rent ekonomisk strategi: en riktig dator som dessutom Ă€r billig. Även om, det kanske ocksĂ„ har sina "tvetydigheter" inne.

6.2 Men Raspberry Àr inte en "router": lÄngsam och har en Ethernet-port!

Som en hemm Wi-Fi-router Àr "hallonen" mer Àn tillfredsstÀllande för mig. Jag har redan berÀttat om hastigheten "trÄdlöst" ovan. Och med endast en Ethernet, tja, i en liknande produkt frÄn Apple Àr det pÄ ungefÀr samma sÀtt!

Och om man ska vara seriös, skulle man sjÀlvklart vilja ha fler. Trots att alla mina enheter Àr anslutna trÄdlöst, krÀvs det ibland en kopparanslutning. För sÄdana tillfÀllen har jag förberett en "mobil hub":

en enhet – typ sĂ„dan hĂ€rRaspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (eller hallonrouter med blĂ„ hatt)

6.3 Om detta Àr en router, sÄ har inget sagts om "tuning" av TCP/IP, för det Àr viktigt!

Förutom konfiguration av nÀtverksstacken (tcp_fastopen, YeAH osv.), i denna och föregÄende artikel har andra aspekter, sÀrskilt processen för att förbereda microSD för optimalt anvÀndande (Àven om installationsprogrammet försöker formatera minneskortet pÄ ett listigt sÀtt), inte diskuterats. FörbÀttringsprocessen Àr oÀndlig, man mÄste bara veta nÀr man ska stoppa.

6.4 Varför Fedora?

För att jag gillar det! Fedora Ă€r "mainstream" – systemet för nördar, för vilka denna artikel faktiskt Ă€r avsedd. Vid skrivande stund, kanske den enda OS som officiellt stöds för Raspberry i 64-bitarsversion av en stor grupp utvecklare (som jag inte kan vĂ€nta pĂ„ att fĂ„) kĂ€rna 5.6).

6.5 Fungerar Bluetooth? Hur Àr det med video/ljud/GPIO?

Jag vet inte. Artikeln handlar om den minimala installationen av systemet och dess efterföljande anvÀndning som Wi-Fi-router.

6.6 Varför börjar alla artiklar om CentOS/Fedora/RedHat med att stÀnga av SELinux?

För att systemet Àr minimalt, det finns inte ens en brandvÀgg eller verktyg för att konfigurera den. Den som behöver kan installera allt som Àr nödvÀndigt.

6.7 Det gÄr inte att anvÀnda systemet, man kan inte Àndra lösenordet - det finns ingen passwd. Det gÄr inte att pinga, det finns ingenting!

Det finns DNF. Eller denna installationsvariant Àr inte för dig - anvÀnd distributionen frÄn utvecklarna.

6.8 Men var Àr SWAP? Jag kan inte leva utan det!

Verkligen? Tja, bra:

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 skulle vilja ladda ner en fÀrdig bild med en konfigurerad Wi-Fi-accesspunkt!

För att förbereda installatören "för alla" kommer det att krÀvas en viss mÀngd tid och anstrÀngning. Om (plötsligt!) nÄgon verkligen tycker att detta Àr intressant och nödvÀndigt - skriv, sÄ hittar vi pÄ nÄgot.

Med detta avslutar jag.

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

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster