Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malinový router s modrým klobúkom)

Tento článok Raspberry Pi + CentOS = Wi-Fi Hotspot (alebo malinový router s červeným klobúkom) Hovoril som o spôsobe, ako zmeniť Raspberry na bezdrôtový prístupový bod pomocou operačného systému CentOS. Zostavením môjho domáceho smerovača podľa tohto nákresu som uspokojil svoje tvorivé ego a získal som pokoj v duši pre kritický prvok mojej útulnej infraštruktúry. Prenasledoval ma však pocit neúplnosti riešenia a vnútorný perfekcionizmus: „nedokonalý výsledok práce nemá právo na existenciu“. Myšlienka, že „ideál môže a mal by byť dosiahnutý“, ma neopustila ani na minútu.

A potom som jedného dňa na jednom z tematických fór narazil na diskusiu o bitovej hĺbke existujúcich operačných systémov pre Raspberry (aarch64 vs armhfp): ktorý 64-bitový OS môže v zásade pasovať a fungovať na Raspberry verzie 3 ++?

Môj milovaný CentOS pre architektúru ARM z „Userland“ sa neponáhľal prejsť na najnovšiu verziu jadra a zmeniť sa na 64-bit. A úložisko EPEL, pripojené bohvie odkiaľ bez digitálneho podpisu, bolo nočnou morou môjho nepokojného spánku...

Ako prívrženec distribúcií založených na RPM som bol prekvapený, keď som zistil, že na OS pre Raspberry sa v diskusiách úplne zabudlo Fedora! A to aj napriek tomu, že jeho vydanie
od verzie 28 oficiálne podporuje Raspberry Pi 3B+ v 64-bit verzii!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malinový router s modrým klobúkom)
V tomto článku budem hovoriť o spôsobe inštalácie Fedora (aarch64) na Raspberry Pi 3 Model B + в extra minimálny výkon. V krátkosti sa pozastavím nad funkciami zvýšenia prístupového bodu Wi-Fi, ktoré boli identifikované ako výsledok skúšobnej prevádzky mojej predchádzajúcej konfigurácie na 7 CentOS.

0. Čo budete potrebovať

Všetko je rovnaké ako v predchádzajúcom článku:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (neskôr môžete systém „preniesť“ na 2GB disk);
  • Pracovná stanica s Linuxom a čítačkou kariet microSD;
  • Káblové sieťové pripojenie medzi Raspberry a linuxovou pracovnou stanicou (v tomto prípade nebude potrebný žiadny ďalší monitor a klávesnica na nastavenie), prístup na internet z oboch zariadení;
  • Pokročilé zručnosti v Linuxe (poznať a nebáť sa: rozlúčili, dd и mkfs).

Podobne ako iteratívne LFS-vybudovanie vlastného Linuxu, použije sa obraz distribúcie Fedory a na jeho základe sa vytvorí minimálny systém (bez „kompilácie zo zdroja“).

1. Montáž pôvodného rozvodu

Súradnice surového obrazu systému na internete:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Po zaznamenaní na microSD a pred jeho použitím musíte:

  1. Rozbaľte „koreň“ systému súborov (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. Zakázať SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Odstráňte sprievodcu úvodný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 si môžete stiahnuť „malinu“ z microSD a pripojiť sa k nej cez sieť.

Studený štart trvá približne jeden a pol minúty. TTX systému po načítaní:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malinový router s modrým klobúkom)

rpm -qa | wc -l
444

2. Zostavenie minimálneho systému

Bohužiaľ, „minimálna distribúcia“ od vývojárov sa ukazuje byť ďaleko od najskromnejšej spotreby zdrojov. Obraz systému je možné ešte zmenšiť.

Ak to chcete urobiť, musíte spustiť skript na 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

Po spustení skriptu sa v aktuálnom adresári vytvorí podadresár ($P) s obsahom koreňového adresára novej minimálnej edície OS. Môžete vypnúť Raspberry a vrátiť microSD do pracovnej stanice Linux.

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

Inštalácia sa scvrkáva na skopírovanie minimálnych súborov „obrazu“ operačného systému (získaných v predchádzajúcom kroku) na špeciálne pripravenú kartu microSD do príslušných adresárov.

Stačí 2GB karta a dve partície na nej:

  1. / Batožinového priestoru / efu - EFI+FAT32, boot, 100 MB;
  2. / (root) - EXT4, všetok zostávajúci priestor.

Po príprave karty microSD a skopírovaní súborov na ňu musíte:

  • opraviť boot OS;
  • zapnite sieť;
  • nakonfigurovať prístup cez ssh.

Oprava zavádzania je nahradiť UUID sekcií v súboroch:

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

a parametrom uložený_záznam= v poslednom súbore

V súbore:

microSD:/etc/fstab

staré hodnoty a aktuálne (aktuálne) hodnoty nájdete vo výstupe príkazu:

blkid | grep mmcblk | sort

Po výmene by ste mali opraviť aj obsah fstab na microSD tak, aby body pripojenia zodpovedali UUID nového oddielu.

Sieťovú funkčnosť pri prvom zapnutí Raspberry možno dosiahnuť pomocou malej „barličky“ - vytvorte odkaz (schematicky):

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 stiahnutí urobte poriadok v spustení systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Prístup superužívateľa cez ssh je nakonfigurovaný podobne ako v kroku 1.

Po vykonaní všetkého starostlivo a bez chýb môžete microSD presunúť do „maliny“ a začať pracovať so 64-bitovým OS v extra minimálnej verzii.

4. Pripravený systém

„Obrázok“ hotového systému, vytvorený podľa vyššie uvedených pokynov, si môžete stiahnuť z odkazu:
Fedora-Tiny-31-5.5.7-200.aarch64

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

./install /dev/mmcblk0

Buďte opatrní!

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

Po bezchybnom vykonaní skriptu je možné kartu preusporiadať na „malinu“ a použiť: catch cez dhcp, heslo - „1“.

Systém je zbavený všetkých ID a kľúčov, a preto je každá nová inštalácia jedinečná.

Opakujem ešte raz, systém - minimálne! Preto sa nezľaknite: DNF je k dispozícii, aby fungovalo, budete musieť „vymyslieť“ ten správny / Etc / resolv.conf.

Studený štart Raspberry trvá asi 40 sekúnd. TTX systému po načítaní:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malinový router s modrým klobúkom)

rpm -qa | wc -l
191

5. WiFi

Trochu sa pozastavím nad funkciami implementácie prístupového bodu Wi-Fi. Pre podrobnosti si môžete pozrieť moje predchádzajúce článok.

EPEL už nie je potrebný - všetky balíčky sú obsiahnuté v oficiálnych úložiskách.

Asi by stálo za to sa vzdať dnsmasq, pretože Fedora má na rozdiel od CentOS pomerne nedávnu sieť systemd, ktorá má normálne vstavané servery DHCP/DNS. Faktom ale je, že v RHEL8 vývojári odmietol podporovať sieťový zásobník čímkoľvek iným ako NM, nevzbudzuje dôveru v svetlú budúcnosť projektu (šmejdi). Skrátka som to neskúšal.

Okrem toho aktuálne ovládače pre vstavaný adaptér Wi-Fi nemožno „ukradnúť“ z distribúcie Raspbian, ale stiahnuť si ich priamo z GitHub.

Takto vyzerajú súbory firmvéru Broadcom na mojom Raspberry (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 nezískate 5GHz/AC.

Čo sa týka počtu a názvov rozhraní. Teraz dôrazne odporúčam každému, aby sa neuchyľoval k „službám“ softvérových prepínačov, pokiaľ to nie je absolútne nevyhnutné (most), ktoré značne zaťažujú sieťový zásobník a znižujú smerovanie. Ak neplánujete mať viacero bezdrôtových adaptérov, mali by ste používať iba fyzické rozhrania. Mám dve Wi-Fi, takže kombinujem iba ich do softvérového mosta (hoci sa bez toho zaobídete, keď sa na nastavenie hostapd pozriete inak).

A milujem premenovanie rozhraní.

Ak to chcete urobiť vo Fedore, musíte vytvoriť symbolický odkaz:

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

a potom bude možné dávať zmysluplné mená bez toho, aby ste sa do toho hrabali udev, ale iba pomocou systemd-networkd.

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

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 - vstavaný, ext — externé (USB) adaptéry Wi-Fi zostavené do „mostu“ lán;
  • bledý — Ethernetový adaptér, do ktorého je pripojený internet.

Všimli ste si? fq_codel - naozaj super vec. Spolu s čerstvým jadrom Linuxu dokážu v bezdrôtovom dosahu skutočné zázraky: prudké „sťahovanie torrentov“ nepovedie k náhlemu zníženiu rýchlosti medzi susedmi. Dokonca aj domáca IP-TV fungujúca „vzduchom“ s nabitým kanálom sa „nerozbije“ a vôbec „nezadrhne“!

Súbor služby démona prešiel malými zmenami hostapd.

Teraz to vyzerá takto (na príklade vstavaného adaptéra):

[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 „magický“ hostapd-int.conf pre prácu v pásme 5 GHz/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]

Malý photoshop vyrobený z môjho Ericssonu A1018s:

(Internetové pripojenie - 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malinový router s modrým klobúkom)
A na záver malý FAQ.

6. Najčastejšie otázky

6.1 Prečo vytvoriť smerovač Wi-Fi na Raspberry?

Dalo by sa odpovedať jednoducho, napríklad „je zaujímavé vyskúšať a tak ďalej“.

Ale v skutočnosti sa mi zdá, že téma je dosť vážna. V ére „krvavého“ internetu je kúpa smerovača v obchode a ostať rukojemníkom jeho výrobcu veľmi žalostná vyhliadka. Mnoho ľudí už chápe, že sedenie s CVE alebo vstavaným zadným vrátkom nie je možné.

Samozrejme, môžete migrovať na firmvér WRT od nadšencov. Pravdepodobne je v nich väčšia dôvera, ale ak sa na nich nechcete spoliehať, použite svoj vlastný produkt. Ideálne plnohodnotný počítač, aby sa na ňom dalo implementovať všetko na svete. Čo sa týka smerovania, samozrejme.

Výber „maliny“ je preto čisto ekonomický krok: skutočný počítač a zároveň lacný. Aj keď možno tiež - so svojimi „dvojníkmi“ vo vnútri.

6.2 Ale Raspberry je „nízky smerovač“: pomalý a s jedným ethernetovým portom!

Ako domáci Wi-Fi router je pre mňa Raspberry viac než uspokojivý. O rýchlosti vzduchu som už hovoril vyššie. A existuje len jeden Ethernet, no, v podobnom produkte od Apple je to približne rovnaké!

Ale vážne, samozrejme, že by som chcel viac. A napriek tomu, že v mojej domácnosti sú všetky zariadenia pripojené bezdrôtovo, niekedy je stále potrebné medené pripojenie. Pre takéto prípady mám na sklade „mobilný hub“:

zariadenie - niečo takéRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (alebo malinový router s modrým klobúkom)

6.3 Ak ide o smerovač, nehovorí sa nič o „ladení“ TCP/IP, pretože je to dôležité!

Okrem nastavenia sieťového zásobníka (tcp_fastopen, YeAH atď.) sa tento ani predchádzajúci článok nezaoberajú ďalšími nuansami, najmä procesom prípravy microSD na optimálne použitie (aj keď sa inštalátor pokúša naformátovať pamäťovú kartu v zložitý spôsob). Proces zlepšovania je nekonečný, len sa treba včas zastaviť.

6.4 Prečo Fedora?

Pretože mám rád! Fedora je „mainstreamový“ systém pre geekov, ktorým je vlastne tento článok určený. V čase písania článku možno jediný OS, ktorý pre Raspberry v 64-bitovej verzii oficiálne podporuje významný tím vývojárov (od ktorých sa už neviem dočkať jadro 5.6).

6.5 Funguje Bluetooth? Ako je to 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 router.

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

Pretože je systém minimálny, nemá ani bránu firewall alebo nástroje na jeho nastavenie. Každý, kto to potrebuje, si môže dodatočne nainštalovať všetko potrebné.

6.7 Systém nie je možné používať, heslo nie je možné zmeniť - žiadne heslo. Žiadny ping, nič!

K dispozícii je DNF. Alebo táto možnosť inštalácie nie je pre vás - použite distribučnú súpravu od vývojárov.

6.8 Kde je SWAP? Nemôžem bez neho žiť!

Je to pravda? Dobre teda:

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 Chcel by som okamžite stiahnuť hotový obrázok s nakonfigurovaným prístupovým bodom Wi-Fi!

Príprava inštalačného programu „pre každého“ bude vyžadovať určitý čas a úsilie. Ak to (zrazu!) niekoho naozaj zaujme a potrebné, napíšte nám a niečo vymyslíme.

Skončím s týmto.

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

Zdroj: hab.com

Pridať komentár