Raspberry Pi + Fedora (aarch64) = Wi-Fi hotspot (nebo malinový router s modrým kloboukem)

Tento článek Raspberry Pi + CentOS = Wi-Fi Hotspot (nebo raspberry router s červeným kloboukem) Mluvil jsem o způsobu, jak proměnit Raspberry v bezdrátový přístupový bod pomocí operačního systému CentOS. Sestavením svého domácího routeru podle tohoto nákresu jsem uspokojil své kreativní ego a získal klid na kritický prvek mé útulné infrastruktury. Pronásledoval mě však pocit neúplnosti řešení a vnitřní perfekcionismus: „nedokonalý výsledek práce nemá právo na existenci“. Myšlenka, že „ideál může a měl by být dosažen“, mě neopustila ani na minutu.

A pak jsem jednoho dne na jednom z tematických fór narazil na diskusi o bitové hloubce existujících operačních systémů pro Raspberry (aarch64 vs armhfp): který 64bitový OS může v zásadě pasovat a fungovat na Raspberry verze 3 ++?

Můj milovaný CentOS pro architekturu ARM z „Userland“ nijak nespěchal s přechodem na nejnovější verzi jádra a přeměnou na 64-bit. A úložiště EPEL, připojené bůhví odkud bez digitálního podpisu, bylo noční můrou v mém neklidném spánku...

Jako přívrženec distribucí založených na RPM jsem byl překvapen, když jsem zjistil, že OS pro Raspberry byl v diskuzích zcela zapomenut Fedora! A to i přesto, že jeho vydání
od verze 28 oficiálně podporuje Raspberry Pi 3B+ v 64bitové verzi!

Raspberry Pi + Fedora (aarch64) = Wi-Fi hotspot (nebo malinový router s modrým kloboukem)
V tomto článku budu hovořit o způsobu instalace Fedora (aarch64) na Malina Pi 3 Model B + в extra minimální výkon. Krátce se zastavím u funkcí zvýšení přístupového bodu Wi-Fi, které byly zjištěny jako výsledek zkušebního provozu mé předchozí konfigurace na CentOS 7.

0. Co budete potřebovat

Vše je stejné jako v předchozím článku:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (později můžete systém „přenést“ na 2GB disk);
  • Pracovní stanice s Linuxem a čtečkou microSD karet;
  • Kabelová síťová konektivita mezi Raspberry a linuxovou pracovní stanicí (v tomto případě nebude k nastavení potřeba žádný další monitor a klávesnice), přístup k internetu z obou zařízení;
  • Pokročilá znalost Linuxu (znát a nebát se: rozdělil se, dd и mkfs).

Podobné jako iterativní LFS-při vytváření vlastního Linuxu se použije obraz distribuce Fedory a na jeho základě se vytvoří minimální systém (bez „kompilace ze zdroje“).

1. Instalace původního rozvodu

Souřadnice surového obrazu systému na internetu:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Po nahrání na microSD a před použitím musíte:

  1. Rozbalte „kořen“ systému souborů (3. oddíl, 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ázat SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Odebrání průvodce počátečním nastavením:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Povolit přístup přes 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
    

Nyní si můžete stáhnout „malinu“ z microSD a připojit se k ní přes síť.

Studený start trvá asi jednu a půl minuty. TTX systému po načtení:

Raspberry Pi + Fedora (aarch64) = Wi-Fi hotspot (nebo malinový router s modrým kloboukem)

rpm -qa | wc -l
444

2. Sestavení minimálního systému

Bohužel se ukazuje, že „minimální distribuce“ od vývojářů není zdaleka nejskromnější ve spotřebě zdrojů. Obraz systému lze ještě zmenšit.

Chcete-li to provést, musíte skript spustit 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 spuštění skriptu se v aktuálním adresáři vytvoří podadresář ($P) s obsahem kořenového adresáře nové minimální edice OS. Raspberry můžete vypnout a vrátit microSD do pracovní stanice Linux.

3. Instalace minimálního systému

Instalace se scvrkává na zkopírování minimálních souborů „image“ OS (získaných v předchozím kroku) na speciálně připravenou microSD do příslušných adresářů.

Stačí 2GB karta a dva oddíly na ní:

  1. / boot / efi - EFI+FAT32, boot, 100 MB;
  2. / (root) - EXT4, veškerý zbývající prostor.

Po přípravě microSD a zkopírování souborů na ni musíte:

  • opravit boot OS;
  • zapněte síť;
  • nakonfigurovat přístup přes ssh.

Oprava spouštění spočívá v nahrazení UUID sekcí v souborech:

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

a parametr uložený_vstup= v posledním souboru

V souboru:

microSD:/etc/fstab

můžete najít staré hodnoty a aktuální (aktuální) hodnoty ve výstupu příkazu:

blkid | grep mmcblk | sort

Po výměně byste měli také opravit obsah fstab na microSD tak, aby přípojné body odpovídaly UUID nového oddílu.

Síťové funkčnosti při prvním zapnutí Raspberry lze dosáhnout pomocí malé „berličky“ - vytvořte odkaz (schematicky):

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

a soubor:

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

Po úspěšném stažení udělejte pořádek ve spuštění systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Přístup superuživatele přes ssh je nakonfigurován podobně jako v kroku 1.

Po provedení všeho pečlivě a bez chyb můžete microSD přesunout do „maliny“ a začít pracovat s 64bitovým OS v extra minimální verzi.

4. Připravený systém

„Obrázek“ hotového systému, vytvořený podle výše uvedených pokynů, lze stáhnout z odkazu:
Fedora-Tiny-31-5.5.7-200.aarch64

Toto bude archiv obsahující dva soubory: instalační skript a TGZ se soubory OS. Archiv je potřeba rozbalit na linuxové pracovní stanici, vložit microSD (stačí 2GB karta) a spustit skript s parametrem - názvem zařízení:

./install /dev/mmcblk0

Buďte opatrní!

Bez jakéhokoli varování bude zařízení zformátováno a bude na něj nainstalován operační systém.

Po bezchybném provedení skriptu lze kartu přeskládat na „malinu“ a používat: catch přes dhcp, heslo – „1“.

Systém je vyčištěn od všech ID a klíčů, proto je každá nová instalace jedinečná.

Znovu opakuji, systém - minimální! Proto se nelekejte: DNF je k dispozici, aby fungovalo, budete muset „vymyslet“ ten správný / Etc / resolv.conf.

Studený start Raspberry trvá asi 40 sekund. TTX systému po načtení:

Raspberry Pi + Fedora (aarch64) = Wi-Fi hotspot (nebo malinový router s modrým kloboukem)

rpm -qa | wc -l
191

5. WiFi

Trochu se zastavím u funkcí implementace přístupového bodu Wi-Fi. Pro podrobnosti se můžete podívat na můj předchozí článek.

EPEL již není potřeba – všechny balíčky jsou obsaženy v oficiálních repozitářích.

Asi by stálo za to to vzdát dnsmasq, protože Fedora má na rozdíl od CentOS poměrně nedávný systemd-networkd, který má normální vestavěné servery DHCP/DNS. Faktem ale je, že v RHEL8 vývojáři odmítl podporovat síťový zásobník čímkoli jiným než NM, nevzbuzuje důvěru ve světlou budoucnost projektu (šmejdi). Zkrátka jsem to nezkoušel.

Dále platí, že aktuální ovladače pro vestavěný adaptér Wi-Fi nelze „ukrást“ z distribuce Raspbian, ale stáhnout je přímo z GitHub.

Takto vypadají soubory firmwaru Broadcom na mém 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ískáte 5GHz/AC.

Pokud jde o počet a názvy rozhraní. Nyní všem důrazně doporučuji, aby se neuchylovali ke „službám“ softwarových přepínačů, pokud to není nezbytně nutné (most), které významně zatěžují síťový zásobník a potlačují směrování. Pokud neplánujete mít více bezdrátových adaptérů, měli byste používat pouze fyzická rozhraní. Mám dvě Wi-Fi, takže kombinuji pouze je do softwarového mostu (i když se bez toho obejdete, když se na nastavení hostapd podíváte jinak).

A miluji přejmenování rozhraní.

Chcete-li to provést ve Fedoře, musíte vytvořit symbolický odkaz:

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

a pak bude možné dávat smysluplná jména bez šťouchání udev, ale pouze pomocí systemd-networkd.

Například takto se nazývají síťové adaptéry v mém routeru:

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 - vestavěný, ext — externí (USB) Wi-Fi adaptéry sestavené do „mostu“ lan;
  • bledý — Ethernetový adaptér, do kterého je připojen internet.

Všimli jste si? fq_codel - opravdu skvělá věc. Společně s čerstvým linuxovým jádrem dokážou v bezdrátovém dosahu skutečné zázraky: prudké „stahování torrentů“ nepovede k náhlému snížení rychlosti mezi sousedy. Ani domácí IP-TV fungující „vzduchem“ s nabitým kanálem se „nerozbije“ a už vůbec „nezadrhne“!

Soubor služby démona prošel drobnými změnami hostapd.

Nyní to vypadá takto (na příkladu vestavěné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 „kouzelný“ hostapd-int.conf pro práci 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]

Malý photoshop vyrobený z mého Ericssonu A1018s:

(Připojení k internetu - 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi hotspot (nebo malinový router s modrým kloboukem)
A na závěr malý FAQ.

6. Nejčastější dotazy

6.1 Proč vytvořit Wi-Fi router na Raspberry?

Dalo by se odpovědět jednoduše, jako "je zajímavé vyzkoušet a tak."

Ale ve skutečnosti se mi zdá, že téma je docela vážné. V době „krvavého“ internetu je nákup routeru v obchodě a zůstat rukojmím jeho výrobce velmi tristní vyhlídkou. Mnoho lidí již chápe, že sezení s CVE nebo vestavěným zadním vrátkem není možné.

Samozřejmě můžete migrovat na firmware WRT od nadšenců. Pravděpodobně je v ně větší důvěra, ale pokud se na ně nechcete spoléhat, použijte svůj vlastní produkt. Ideálně plnohodnotný počítač, aby se na něm dalo implementovat vše na světě. Pokud jde o směrování, samozřejmě.

Proto je výběr „maliny“ čistě ekonomickým krokem: skutečný počítač a zároveň levný. I když možná také - s jejich „dvojníky“ uvnitř.

6.2 Ale Raspberry je „nízký router“: pomalý a s jedním ethernetovým portem!

Jako domácí Wi-Fi router je pro mě Raspberry více než vyhovující. O rychlosti vzduchu jsem již mluvil výše. A Ethernet je jen jeden, no, v podobném produktu od Applu je to zhruba stejné!

Ale vážně, samozřejmě bych chtěl víc. A přesto, že v mé domácnosti jsou všechna zařízení připojena bezdrátově, občas je stále potřeba měděné připojení. Pro takové případy mám na skladě „mobilní hub“:

zařízení - něco takovéhoRaspberry Pi + Fedora (aarch64) = Wi-Fi hotspot (nebo malinový router s modrým kloboukem)

6.3 Pokud se jedná o router, pak se nic neříká o „ladění“ TCP/IP, protože to je důležité!

Kromě nastavení síťového zásobníku (tcp_fastopen, YeAH atd.) se tento a předchozí článek nezabývají dalšími nuancemi, zejména procesem přípravy microSD pro optimální použití (i když se instalátor snaží naformátovat paměťovou kartu v záludný způsob). Proces zlepšování je nekonečný, jen je potřeba se včas zastavit.

6.4 Proč Fedora?

Protože mám rád! Fedora je „mainstreamový“ systém pro geeky, kterým je tento článek ve skutečnosti určen. V době psaní článku snad jediný OS, který pro Raspberry v 64bitové verzi oficiálně podporuje významný tým vývojářů (od kterých se nemůžu dočkat jádro 5.6).

6.5 Funguje Bluetooth? Jak je na tom video/zvuk/GPIO?

nevím. Článek je o minimální instalaci systému a jeho následném využití jako Wi-Fi routeru.

6.6 Proč všechny články o CentOS/Fedora/RedHat začínají deaktivací SELinuxu?

Protože je systém minimální, nemá ani firewall nebo nástroje pro jeho nastavení. Každý, kdo to potřebuje, si může dodatečně nainstalovat vše potřebné.

6.7 Systém nelze používat, heslo nelze změnit - žádné heslo. Žádný ping, nic!

K dispozici je DNF. Nebo tato možnost instalace není pro vás - použijte distribuční sadu od vývojářů.

6.8 Kde je SWAP? Nemůžu bez něj žít!

Je to pravda? Dobře tedy:

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 Chtěl bych okamžitě stáhnout hotový obrázek s nakonfigurovaným přístupovým bodem Wi-Fi!

Příprava instalačního programu „pro každého“ bude vyžadovat určitý čas a úsilí. Pokud to (najednou!) někomu přijde opravdu zajímavé a potřebné, napište nám a něco vymyslíme.

Skončím s tím.

Přeji všem bezpečné surfování a maximální kontrolu nad infrastrukturou!

Zdroj: www.habr.com

Přidat komentář