Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malina router v modrom klobúku)

V článku Raspberry Pi + CentOS = Wi-Fi Hotspot (alebo malinový router v červenej šiltovke) Opísal som spôsob, ako transformovať «malinku» na bezdrôtový prístupový bod pomocou operačného systému CentOS. Skladaním domáceho routera podľa tohto nákresu som uspokojil svoje kreatívne ego a získal som kľud nad kriticky dôležitou súčasťou mojej útulnej infraštruktúry. Avšak pocit nedokončenia riešenia a vnútorný perfekcionizmus mi nedávali pokoj: „nedokonalý výsledok nemá právo na existenciu“. Myšlienka, že „ideál môže byť a musí byť dosiahnutý“, ma ani na chvíľu neopustila.

A tak jedného dňa, na jednom z tematických fór, som narazil na diskusiu o architektúre existujúcich operačných systémov pre «malinku» (aarch64 vs armhfp): aké 64-bitové OS môžu vlastne fungovať na verzii Raspberry 3++?

Moja obľúbená CentOS pre architektúru ARM od „Userland“ sa nemala k prechodu na jadro poslednej verzie a premeneniu na 64-bitovú. A repozitár EPEL, pripojený nevedno odkiaľ bez digitálneho podpisu, bol nočná mora v mojom nepokojnom sne...

Ako zástanca RPM-based distribúcií som s prekvapením zistil, že v diskusiách o OS pre «malinku» bola úplne zabudnutá Fedora! A to aj napriek tomu, že jej vydanie
od 28. verzie oficiálne podporuje Raspberry Pi 3B+ v 64-bitovom prevedení!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malina router v modrom klobúku)
V tomto článku popíšem spôsob inštalácie Fedora (aarch64) na Raspberry Pi 3 Model B+ v v extrémne minimálnom prevedení. Krátko sa zastavím pri vlastnostiach vytvorenia Wi-Fi prístupového bodu, ktoré sa ukázali počas experimentálnej prevádzky mojej predchádzajúcej konfigurácie na CentOS 7.

0. Čo potrebujete

Všetko to isté, čo je uvedené v predchádzajúcom článku:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (následne je možné „presunúť“ systém na 2GB úložisko);
  • Pracovná stanica s Linuxom a čítačkou microSD;
  • Káblové sieťové prepojenie «malinky» a pracovnej stanice s Linuxom (v tomto prípade nebudú potrebné ďalšie monitor a klávesnica na nastavenie), prístup na Internet z oboch zariadení;
  • Pokročilé zručnosti v Linuxe (poznať a nebáť sa: parted, dd a mkfs).

Podobne ako pri iteratívnej LFS- zostave vlastného Linuxu bude použitý distribučný obraz Fedora, a potom na jeho základe - vytvorený minimálny systém (bez „kompilácie zo zdrojov“).

1. Inštalácia originálneho distribútu

Koordináty raw-obrázku systému v sieti:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Pred jeho zápisom na microSD a pred začatím používania je potrebné:

  1. Rozšíriť „root“ súborového systému (3. oddiel, 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. Deaktivovať SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Odstrániť Sprievodcu počiatočným nastavením:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Povoliť prístup cez 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
    

Teraz je možné spustiť „malinku“ z microSD a pripojiť sa k nej cez sieť.

Studený štart trvá približne jednu a pol minúty. Technické charakteristiky systému po spustení:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malina router v modrom klobúku)

rpm -qa | wc -l
444

2. Zostavenie minimálneho systému

Žiaľ, „minimálny distribučný balík“ od vývojárov sa ukazuje byť ďaleko od najskromnejšieho z hľadiska spotreby zdrojov. Obraz systému je možné spraviť ešte menším.

Na to je potrebné na „malinke“ vykonať skript:

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

Po vykonaní skriptu bude v aktuálnom adresári vytvorený podadresár ($P) so obsahom koreňa novej minimálnej verzie OS. Je možné vypnúť „malinku“ a vrátiť microSD do pracovnej stanice Linux.

3. Inštalácia minimálneho systému

Inštalácia spočíva v kopírovaní súborov minimálneho „obrazu“ OS (získaného v predchádzajúcom kroku) na špeciálne pripravenú microSD do príslušných adresárov.

Stačí 2GB karta a dva oddiely na nej:

  1. /boot/efi — EFI+FAT32, štartovací, 100MB;
  2. / (root) — EXT4, všetok zvyšný priestor.

Po príprave microSD a skopírovaní súborov na ňu je potrebné:

  • opravovať spustenie OS;
  • aktivovať sieť;
  • nastaviť prístup cez ssh.

Oprava spustenia spočíva v nahradení UUID oddielov v súboroch:

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

a parametra saved_entry= v poslednom súbore

V súbore:

microSD:/etc/fstab

možno nájsť staré hodnoty, a aktuálne (platné) — vo výstupe príkazu:

blkid | grep mmcblk | sort

Po zmene je tiež potrebné upraviť obsah fstab na microSD, aby body pripojenia zodpovedali novým UUID oddielov.

Sieťovú funkčnosť pri prvom zapnutí „malinky“ je možné dosiahnuť malým „obratom“ — vytvoriť odkaz (schématicky):

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

a súbor:

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

Po úspešnom načítaní – upraviť spustenie systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Prístup superužívateľa cez ssh sa nastavuje podobne ako v bode 1.

Keď všetko spravíte starostlivo a bez chýb, môžete premiestniť microSD do "malinky" a začať pracovať s 64-bitovým OS v extrémne minimálnom prevedení.

4. Hotový systém

"Obraz" hotového systému, vytvorený podľa vyššie uvedeného návodu, si môžete stiahnuť cez odkaz:
Fedora-Tiny-31-5.5.7-200.aarch64

Bude to archív obsahujúci dva súbory: inštalačný skript a TGZ so súbormi OS. Archív je potrebné rozbaliť na pracovnej stanici Linux, vložiť microSD (stačí karta 2GB) a spustiť skript s parametrom – menom zariadenia:

.\/install \/dev\/mmcblk0

Buďte opatrní!

Bez akýchkoľvek varovaní bude zariadenie naformátované a naň sa – nainštaluje operačný systém.

Po bezchybnom vykonaní skriptu si môžete kartu premiestniť do "malinky" a používať: načítať cez dhcp, heslo – "1".

Systém je zbavený akýchkoľvek ID a kľúčov, a preto je každá nová inštalácia – jedinečná.

Ešte raz zopakujem, systém je – minimálny! Preto sa nebojte: DNF – je k dispozícii, na jeho fungovanie treba "vymyslieť" správny /etc/resolv.conf.

Studený štart "malinky" trvá približne 40 sekúnd. TTX systému po načítaní:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malina router v modrom klobúku)

rpm -qa | wc -l
191

5. Wi-Fi

Na chvíľu sa zastavím pri špecifikách realizácie Wi-Fi prístupového bodu. Pre konkrétne informácie sa môžete obrátiť na môj predchádzajúci článku.

EPEL už nebude potrebný – všetky balíky sú obsiahnuté v oficiálnych repozitároch.

Asi by bolo rozumné vzdať sa dnsmasq, pretože vo Fedora, na rozdiel od CentOS, je dosť čerstvý systemd-networkd, ktorý obsahuje normálne zabudované DHCP\/DNS servery. Ale fakt, že vo RHEL8 vývojári sa vzdali podpory sieťového stacku čímkoľvek okrem NM, nepodporuje dôveru v svetlú budúcnosť projektu (padouchi). Skrátka, neskúšal som.

Ďalej, aktuálne ovládače zabudovaného Wi-Fi adaptéru nemusíte "kradnúť" z distribúcie Raspbian, ale môžete ich stiahnuť priamo z github.

Takto vyzerajú na mojej "malinke" súbory firmvéru Broadcom (schematicky):

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

Bez nich to nepôjde 5GHz\/AC.

Pokiaľ ide o počet a názvy rozhraní. Teraz už všetkým dôrazne odporúčam, aby sa bez zvláštnej potreby vyhýbali „službám“ softvérových switchov (bridge), ktoré zaťažujú sieťový stack a zhoršujú routovanie. Ak nie sú plánované viaceré bezdrôtové adaptéry, mali by sa používať výlučne fyzické rozhrania. Mám dve Wi-Fi, preto ich len spájam do softvérového mosta (aj keď sa dá obísť aj bez toho, ak sa na nastavenie hostapd pozrieme inak).

A premenovávať rozhrania mám rád.

Na to je potrebné v Fedore vytvoriť symbolický odkaz:

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

a potom môžeme dávať zrozumiteľné názvy bez hrabania sa v udev, len pomocou nástrojov systemd-networkd.

Takto sa napríklad nazývajú sieťové adaptéry v mojom routeri:

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 — zabudovaný, ext — externé (USB) Wi-Fi adaptéry, zoskupené do „mosta“ lan;
  • wan — Ethernet adaptér, do ktorého je pripojený internet.

Zaznamenali ste? fq_codel — skutočne úžasná vec. Spolu s novým jadrom Linux dosahujú skutočné zázraky v bezdrôtovom pásme: intenzívne „torrentovanie“ nezpôsobí náhle zhoršenie rýchlosti u susedov. Dokonca fungujúce „vzduchové“ domáce IP-TV ani pri zaťaženom kanáli sa vôbec „nerozpadá“ a „nezadrháva“!

Servisný súbor démona prešiel malými zmenami. hostapd.

Teraz vyzerá takto (na príklade zabudovaného adaptéru):

[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

A „čarovný“ hostapd-int.conf pre prácu v 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]

Trochu „Photoshop“, vytvorené z môjho „Ericsson A1018s“:

(pripojenie na Internet — 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malina router v modrom klobúku)
A na záver malý FAQ.

6. FAQ

6.1 Prečo si vyrobiť Wi-Fi router na Raspberry?

Možno by sa dalo jednoduchšie odpovedať: „je zaujímavé to vyskúšať a všetko také.“

Ale v skutočnosti, ako sa mi zdá, je toto téma dosť vážna. V ére „krvavého“ Internetu je naozaj smutné kupovať router v obchode a byť zajatcom jeho výrobcu. Mnohí už chápajú, že sedieť s CVE alebo zabudovaným backdoorom nie je dobré.

Samozrejme, je možné prejsť na WRT firmware od nadšencov. Dôvera k nim je pravdepodobne väčšia, ale ak sa nechcete na nich spoliehať, potom je len jedna možnosť — vlastný produkt. Ideálne – plnohodnotný počítač s možnosťou realizácie všetkého, čo na ňom chcete. Pokiaľ ide o routing, samozrejme.

Preto je výber „malinky“ čisto ekonomický krok: skutočný počítač a pritom – lacný. Aj keď, možno, tiež má svoje „dobré a zlé“ stránky.

6.2 Ale predsa len, Raspberry je „nelacný router“: pomalý a s jedným Ethernet portom!

Ako domáci Wi-Fi router, „malinka“ mi vyhovuje viac než dosť. O rýchlosti „bezdrôtového pripojenia“ som už spomenul. A jeden Ethernet, no tak v podobnom produkte od Apple je to takisto!

A ak sa na to pozriem seriózne, samozrejme, bolo by dobré mať viac. A napriek tomu, že všetky moje zariadenia sú pripojené bezdrôtovo, niekedy je predsa len potrebné medené pripojenie. Na takéto prípady mám pripravený „mobilný hub“:

zariadenie — niečo takéRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malina router v modrom klobúku)

6.3 Ak je to router, tak nič nebolo povedané o „tuningoch“ TCP/IP, veď je to dôležité!

Okrem nastavenia sieťového stacku (tcp_fastopen, YeAH atď.), v tomto a predchádzajúcom článku neboli odhalené ďalšie nuansy, najmä proces prípravy microSD na optimálne využitie (inak inštalátor sa snaží naformátovať pamäťovú kartu zvláštnym spôsobom). Proces zlepšovania je nekonečný, stačí sa len včas zastaviť.

6.4 Prečo Fedora?

Pretože sa mi páči! Fedora je "mainstream" – systém geekov, pre ktorých je tento článok určený. V čase písania je to asi jediný OS, ktorý pre Raspberry oficiálne podporuje výkonný tím vývojárov v 64-bitovej verzii (na ktorých sa nijako nemôžem dočkať jadra 5.6).

6.5 Funguje Bluetooth? Ako to je s videom/zvukom/GPIO?

Neviem. Článok je o minimálnej inštalácii systému a jeho následnom použití ako Wi-Fi routera.

6.6 Prečo všetky články o CentOS/Fedora/RedHat začínajú vypnutím SELinux?

Pretože systém je minimálny, nemá ani firewall a utilitky na jeho nastavenie. Kto bude potrebovať, môže si nainštalovať všetko potrebné navyše.

6.7 Systém sa nedá používať, nemôžem zmeniť heslo – nie je tu passwd. Nie je tu ping, nie je nič!

Existuje DNF. Alebo táto verzia inštalácie nie je pre vás – využite distribúciu od vývojárov.

6.8 A kde je SWAP? Bez neho nemôžem žiť!

Naozaj? Nuž, dobre:

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 Rád by som stiahol hneď hotový obraz so nastaveným prístupovým bodom Wi-Fi!

Na prípravu inštalátora "pre všetkých" bude potrebné určité množstvo času a úsilia. Ak (náhodou!) sa niekomu to bude skutočne javiť ako zaujímavé a potrebné – napíšte, niečo vymyslíme.

Na tomto končím.

Prajem všetkým bezpečné surfovanie a maximálnu kontrolu nad infraštruktúrou!

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster