Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of framboos-router met 'n blou hoed)

Die artikel Raspberry Pi + CentOS = Wi-Fi Hotspot (of Raspberry Red Hat Router) Ek het gepraat oor 'n manier om 'n Framboos in 'n draadlose toegangspunt te verander met die CentOS-bedryfstelsel. Deur my tuisrouter volgens hierdie tekening saam te stel, het ek my kreatiewe ego bevredig en 'n hupstoot van gemoedsrus gekry vir 'n kritieke element van my knus infrastruktuur. Die gevoel van onvoltooidheid van die oplossing en interne perfeksionisme het egter by my gespook: "'n onvolmaakte resultaat van werk het geen bestaansreg nie." Die gedagte dat “die ideaal bereik kan en moet word” het my nie vir 'n minuut verlaat nie.

En toe kom ek eendag, op een van die tematiese forums, af op 'n bespreking oor die bietjie diepte van bestaande bedryfstelsels vir Raspberry (aarch64 vs armhfp): watter 64-bis OS kan in beginsel pas en werk op Raspberry weergawe 3 ++?

My geliefde CentOS vir die ARM-argitektuur van "Userland" was nie haastig om na die nuutste weergawe van die kern oor te skakel en in 64-bis te verander nie. En die EPEL-bewaarplek, verbind van God weet waar sonder 'n digitale handtekening, was 'n nagmerrie in my rustelose slaap...

As 'n aanhanger van RPM-gebaseerde verspreidings gepraat, was ek verbaas om te vind dat die bedryfstelsel vir Framboos heeltemal vergeet is in besprekings Fedora! En dit ten spyte van die feit dat sy vrylating
vanaf weergawe 28 ondersteun dit amptelik Raspberry Pi 3B+ in 64-bis weergawe!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of framboos-router met 'n blou hoed)
In hierdie artikel sal ek praat oor die installasiemetode Fedora (aarch64) op Framboos Pi 3 Model B + в ekstra minimale prestasie. Ek sal kortliks stilstaan ​​by die kenmerke van die verhoging van 'n Wi-Fi-toegangspunt, geïdentifiseer as gevolg van proefwerking van my vorige konfigurasie op CentOS 7.

0. Wat jy nodig het

Alles is dieselfde as in die vorige artikel gelys:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (later kan jy die stelsel na 'n 2GB-skyf “oorplaas”);
  • Werkstasie met Linux en microSD kaartleser;
  • Bedrade netwerkverbinding tussen die Framboos en 'n Linux-werkstasie (in hierdie geval sal geen bykomende monitor en sleutelbord nodig wees vir opstelling nie), internettoegang vanaf beide toestelle;
  • Gevorderde vaardigheid in Linux (om te weet en nie bang te wees nie: geskei, dd и mkfs).

Soortgelyk aan iteratief LFS-om u eie Linux te bou, sal die Fedora-verspreidingsbeeld gebruik word, en dan, gebaseer op dit, sal 'n minimale stelsel geskep word (sonder om van bron af saam te stel).

1. Installering van die oorspronklike verspreiding

Koördinate van die rou beeld van die stelsel op die internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Nadat u dit op microSD opgeneem het en voordat u dit gebruik, moet u:

  1. Brei die "wortel" van die lêerstelsel uit (3de partisie, 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. Deaktiveer SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Verwyder die Aanvanklike Opstelling Wizard:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Laat toegang toe 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
    

Nou kan jy die "framboos" van microSD aflaai en via die netwerk daaraan koppel.

'n Koue begin neem ongeveer een en 'n half minute. TTX van die stelsel na laai:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of framboos-router met 'n blou hoed)

rpm -qa | wc -l
444

2. Die samestelling van 'n minimale stelsel

Ongelukkig blyk die "minimale verspreiding" van die ontwikkelaars ver van die mees beskeie in hulpbronverbruik te wees. Die stelselbeeld kan selfs kleiner gemaak word.

Om dit te doen, moet jy die skrif op Malinka laat loop:

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

Nadat die skrip uitgevoer is, sal 'n subgids in die huidige gids geskep word ($P) met die inhoud van die wortel van die nuwe minimale OS-uitgawe. Jy kan die Framboos afskakel en die microSD terugstuur na die Linux-werkstasie.

3. Installering van 'n minimale stelsel

Installasie kom daarop neer om die minimale OS-“beeld”-lêers (wat in die vorige stap verkry is) na 'n spesiaal voorbereide microSD na die toepaslike gidse te kopieer.

’n 2GB-kaart en twee partisies daarop is genoeg:

  1. / boot / efi - EFI+FAT32, selflaai, 100MB;
  2. / (wortel) - EXT4, alle oorblywende spasie.

Nadat u die microSD voorberei en lêers daarna gekopieer het, moet u:

  • maak OS selflaai reg;
  • skakel die netwerk aan;
  • konfigureer toegang via ssh.

Die opstartoplossing is om die UUID van die afdelings in die lêers te vervang:

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

en parameter gestoorde_inskrywing= in die laaste lêer

In lêer:

microSD:/etc/fstab

jy kan die ou waardes en die huidige (bygewerkte) waardes vind in die opdraguitvoer:

blkid | grep mmcblk | sort

Na vervanging moet u ook die inhoud regstel fstab op microSD sodat die monteerpunte ooreenstem met die nuwe partisie UUID's.

Netwerkfunksionaliteit wanneer jy die Framboos die eerste keer aanskakel, kan bereik word met 'n klein "kruk" - skep 'n skakel (skematies):

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

en lêer:

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

Na 'n suksesvolle aflaai, maak die bekendstelling skoon systemd-netwerkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Supergebruikertoegang via ssh word op soortgelyke wyse as stap 1 gekonfigureer.

Nadat u alles noukeurig en sonder foute gedoen het, kan u die microSD na die "framboos" skuif en met 'n 64-bis-bedryfstelsel in 'n ekstra minimale weergawe begin werk.

4. Gereed stelsel

Die "beeld" van die voltooide stelsel, geskep volgens die instruksies hierbo, kan afgelaai word vanaf die skakel:
Fedora-Tiny-31-5.5.7-200.aarch64

Dit sal 'n argief wees wat twee lêers bevat: die installasieskrip en TGZ met OS-lêers. Die argief moet op 'n Linux-werkstasie uitgepak word, 'n microSD invoeg ('n 2GB-kaart is genoeg) en die skrip met 'n parameter laat loop - die naam van die toestel:

./install /dev/mmcblk0

Wees versigtig!

Sonder enige waarskuwings sal die toestel geformateer word en die bedryfstelsel sal daarop geïnstalleer word.

Na foutvrye uitvoering van die skrif, kan die kaart herrangskik word in die "framboos" en gebruik word: vang via dhcp, wagwoord - "1".

Die stelsel word van alle ID's en sleutels skoongemaak, en daarom is elke nuwe installasie uniek.

Ek herhaal weereens, die stelsel - minimaal! Daarom, moenie bekommerd wees nie: DNF is beskikbaar, om te werk sal jy die regte een moet "uitdink". /etc/resolv.conf.

Die koue begin van die Framboos neem ongeveer 40 sekondes. TTX van die stelsel na laai:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of framboos-router met 'n blou hoed)

rpm -qa | wc -l
191

5. WiFi

Ek sal 'n bietjie stilstaan ​​by die kenmerke van die implementering van 'n Wi-Fi-toegangspunt. Vir besonderhede kan u na my vorige verwys Artikel.

EPEL is nie meer nodig nie - alle pakkette is in die amptelike bewaarplekke vervat.

Dit sal waarskynlik die moeite werd wees om op te gee dnsmasq, aangesien Fedora, anders as CentOS, 'n redelik onlangse systemd-networkd het, wat normale ingeboude DHCP/DNS-bedieners het. Maar die feit is dat in RHEL8 ontwikkelaars het geweier om die netwerkstapel met enigiets anders as NM te ondersteun, inspireer nie vertroue in die blink toekoms van die projek nie (skelms). Kortom, ek het dit nie probeer nie.

Verder kan die huidige drywers vir die ingeboude Wi-Fi-adapter nie van die Raspbian-verspreiding “gesteel” word nie, maar direk vanaf Github.

Dit is hoe die Broadcom-firmware-lêers op my Framboos lyk (skematies):

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

Sonder hulle sal jy nie 5GHz/AC kry nie.

Met betrekking tot die aantal en name van koppelvlakke. Nou beveel ek sterk aan dat almal nie gebruik maak van die "dienste" van sagtewareskakelaars nie, tensy dit absoluut noodsaaklik is (oorbrug), wat aansienlike las in die netwerkstapel inbring en roetering onderdruk. As jy nie van plan is om verskeie draadlose adapters te hê nie, moet jy slegs fisiese koppelvlakke gebruik. Ek het twee Wi-Fi, so ek kombineer net hulle in 'n sagteware-brug (alhoewel jy daarsonder kan klaarkom deur anders na die hostapd-opstelling te kyk).

En ek is mal daaroor om koppelvlakke te hernoem.

Om dit in Fedora te doen, moet jy 'n simboliese skakel skep:

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

en dan sal dit moontlik wees om betekenisvolle name te gee sonder om rond te steek uitev, maar slegs met behulp van systemd-networkd.

Byvoorbeeld, dit is wat die netwerkadapters in my router genoem word:

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 - ingeboude, ext - eksterne (USB) Wi-Fi-adapters saamgestel in 'n "brug" lan;
  • skop — Ethernet-adapter waaraan die internet gekoppel is.

Het jy opgemerk? fq_kodeel - 'n baie oulike ding. Saam met 'n vars Linux-kern verrig hulle werklike wonderwerke in die draadlose reeks: 'n hewige "torrent-aflaai" sal nie lei tot 'n skielike verswakking van spoed onder bure nie. Selfs 'n tuis-IP-TV wat "oor die lug" werk met 'n gelaaide kanaal, "breek nie op" en "hakkel" glad nie!

Die daemon-dienslêer het geringe veranderinge ondergaan hostapd.

Dit lyk nou so (met die voorbeeld van 'n ingeboude 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

En die "magic" hostapd-int.conf om in 5GHz/AC te werk:

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]

'n Klein photoshop gemaak van my Ericsson A1018's:

(Internet konneksie - 100Mbit/sek.)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of framboos-router met 'n blou hoed)
En laastens, 'n klein algemene vrae.

6. Vrae

6.1 Waarom 'n Wi-Fi-roeteerder op Framboos maak?

Mens kan eenvoudig antwoord, soos "dit is interessant om te probeer en dit alles."

Maar eintlik lyk dit vir my of die onderwerp nogal ernstig is. In die era van die "bloedige" internet is dit 'n baie droewige vooruitsig om 'n router in 'n winkel te koop en gyselaar te bly vir die vervaardiger daarvan. Baie mense verstaan ​​reeds dat dit nie moontlik is om met 'n CVE of ingeboude agterdeur te sit nie.

Natuurlik kan u van entoesiaste na WRT-firmware migreer. Daar is waarskynlik meer vertroue in hulle, maar as jy nie op hulle wil staatmaak nie, gebruik dan net jou eie produk. Ideaal gesproke 'n volwaardige rekenaar sodat alles in die wêreld daarop geïmplementeer kan word. In terme van roetering, natuurlik.

Daarom is die keuse van 'n "framboos" 'n suiwer ekonomiese skuif: 'n regte rekenaar en terselfdertyd 'n goedkoop een. Alhoewel, miskien ook - met hul "dubbels" binne.

6.2 Maar Framboos is 'n "lae router": stadig en met een Ethernet-poort!

As 'n tuis-Wi-Fi-router is die Framboos vir my meer as bevredigend. Ek het reeds hierbo oor lugspoed gepraat. En daar is net een Ethernet, wel, in 'n soortgelyke produk van Apple is dit omtrent dieselfde!

Maar ernstig, natuurlik wil ek meer hê. En ten spyte van die feit dat in my huishouding alle toestelle draadloos gekoppel is, is soms 'n koperverbinding steeds nodig. Vir sulke gevalle het ek 'n "mobiele spilpunt" in voorraad:

toestel - iets soos hierdieRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of framboos-router met 'n blou hoed)

6.3 As dit 'n router is, word niks gesê oor die “tuning” van TCP/IP nie, want dit is belangrik!

Benewens die opstel van die netwerkstapel (tcp_fastopen, YeAH, ens.), Dek hierdie en die vorige artikel nie ander nuanses nie, veral die proses om microSD voor te berei vir optimale gebruik (alhoewel die installeerder probeer om die geheuekaart in 'n moeilike manier). Die proses van verbetering is eindeloos, jy moet net betyds stop.

6.4 Hoekom Fedora?

Want ek hou van! Fedora is 'n "hoofstroom" stelsel vir geeks, vir wie hierdie artikel eintlik bedoel is. Ten tyde van die skryf hiervan is miskien die enigste bedryfstelsel wat vir Raspberry in 64-bis weergawe amptelik ondersteun word deur 'n beduidende personeel ontwikkelaars (van wie ek nie kan wag nie) kern 5.6).

6.5 Werk Bluetooth? Hoe is die video/klank/GPIO?

Weet nie. Die artikel handel oor die minimale installering van die stelsel en die daaropvolgende gebruik daarvan as 'n Wi-Fi-roeteerder.

6.6 Waarom begin alle artikels oor CentOS/Fedora/RedHat met die deaktivering van SELinux?

Omdat die stelsel minimaal is, het dit nie eens 'n firewall of nutsprogramme om dit op te stel nie. Enigiemand wat dit nodig het, kan bykomend alles installeer wat hulle nodig het.

6.7 Die stelsel kan nie gebruik word nie, die wagwoord kan nie verander word nie - geen passwd. Geen ping, niks niks!

Daar is DNF. Of hierdie installasie-opsie is nie vir jou nie - gebruik die verspreidingskit van die ontwikkelaars.

6.8 Waar is SWAP? Ek kan nie sonder hom lewe nie!

Is dit waar? OK dan:

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 Ek wil dadelik 'n klaargemaakte prent met 'n gekonfigureerde Wi-Fi-toegangspunt aflaai!

Om 'n installeerder "vir almal" voor te berei, sal tyd en moeite verg. As (skielik!) iemand dit regtig interessant en nodig vind, skryf vir ons en ons kom met iets vorendag.

Ek sal hiermee klaarmaak.

Ek wens almal veilige branderry en maksimum beheer oor die infrastruktuur toe!

Bron: will.com

Voeg 'n opmerking