Raspberry Pi + Fedora (aarch64) = dostopna točka Wi-Fi (ali usmerjevalnik maline z modrim klobukom)

V članku Raspberry Pi + CentOS = Wi-Fi Hotspot (ali malinasti usmerjevalnik z rdečim klobukom) Govoril sem o načinu, kako spremeniti Raspberry v brezžično dostopno točko z uporabo operacijskega sistema CentOS. S sestavo domačega usmerjevalnika po tej risbi sem potešil svoj ustvarjalni ego in dobil več brezskrbnosti za kritični element moje udobne infrastrukture. Vendar me je preganjal občutek nedokončanosti rešitve in notranjega perfekcionizma: »nepopoln rezultat dela nima pravice do obstoja«. Misel, da je »ideal mogoče in treba doseči«, me ni zapustila niti za minuto.

In potem sem nekega dne na enem od tematskih forumov naletel na razpravo o bitni globini obstoječih operacijskih sistemov za Raspberry (aarch64 proti armhfp): kateri 64-bitni OS se lahko načeloma prilega in deluje na Raspberry različici 3 ++?

Moj ljubljeni CentOS za arhitekturo ARM iz "Userland" se ni mudilo, da bi preklopil na najnovejšo različico jedra in prešel na 64-bitno. In EPEL repozitorij, povezan od bog ve kje brez digitalnega podpisa, je bil nočna mora v mojem nemirnem spancu ...

Kot pristaš distribucij, ki temeljijo na RPM, sem bil presenečen, ko sem ugotovil, da je bil OS za Raspberry v razpravah popolnoma pozabljen Fedora! In to kljub dejstvu, da je njegova izdaja
od različice 28 uradno podpira Raspberry Pi 3B+ v 64-bitni različici!

Raspberry Pi + Fedora (aarch64) = dostopna točka Wi-Fi (ali usmerjevalnik maline z modrim klobukom)
V tem članku bom govoril o načinu namestitve Fedora (aarch64) o Malina Pi 3 Model B + в ekstra minimalna zmogljivost. Na kratko se bom osredotočil na značilnosti dviga dostopne točke Wi-Fi, ugotovljene kot rezultat poskusnega delovanja moje prejšnje konfiguracije na 7 CentOS.

0. Kaj boste potrebovali

Vse je enako, kot je navedeno v prejšnjem članku:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (kasneje lahko sistem “prenesete” na 2GB disk);
  • Delovna postaja z Linuxom in čitalnikom kartic microSD;
  • Žična omrežna povezava med Raspberry in delovno postajo Linux (v tem primeru za nastavitev ne bosta potrebna dodaten monitor in tipkovnica), dostop do interneta iz obeh naprav;
  • Napredno znanje Linuxa (znati in se ne bati: razdeljen, dd и mkfs).

Podobno kot iterativni LFS-pri izdelavi lastnega Linuxa bo uporabljena distribucijska slika Fedora, nato pa bo na njeni osnovi ustvarjen minimalen sistem (brez “prevajanja iz vira”).

1. Namestitev izvirne distribucije

Koordinate neobdelane slike sistema na internetu:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Po snemanju na microSD in pred uporabo morate:

  1. Razširite »koren« datotečnega sistema (3. particija, 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. Onemogoči SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Odstranite čarovnika za začetno namestitev:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Dovoli dostop prek 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
    

Zdaj lahko prenesete "malino" iz microSD in se povežete z njo prek omrežja.

Hladen zagon traja približno minuto in pol. TTX sistema po nalaganju:

Raspberry Pi + Fedora (aarch64) = dostopna točka Wi-Fi (ali usmerjevalnik maline z modrim klobukom)

rpm -qa | wc -l
444

2. Sestavljanje minimalnega sistema

Na žalost se "minimalna distribucija" razvijalcev izkaže za daleč od najbolj skromne pri porabi virov. Sistemsko sliko lahko še pomanjšamo.

Če želite to narediti, morate zagnati skript na Malinki:

#!/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 zagonu skripta bo v trenutnem imeniku ustvarjen podimenik ($P) z vsebino korena nove minimalne izdaje OS. Lahko izklopite Raspberry in vrnete microSD na delovno postajo Linux.

3. Vgradnja minimalnega sistema

Namestitev se zmanjša na kopiranje minimalnih datotek "slike" OS (dobljenih v prejšnjem koraku) na posebej pripravljeno kartico microSD v ustrezne imenike.

Dovolj je 2GB kartica in dve particiji na njej:

  1. / boot / efi - EFI+FAT32, zagon, 100MB;
  2. / (root) - EXT4, ves preostali prostor.

Ko pripravite kartico microSD in nanjo kopirate datoteke, morate:

  • popraviti zagon OS;
  • vklopite omrežje;
  • konfigurirajte dostop prek ssh.

Popravek zagona je zamenjava UUID razdelkov v datotekah:

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

in parameter shranjen_vnos= v zadnji datoteki

V datoteki:

microSD:/etc/fstab

lahko najdete stare vrednosti in trenutne (ažurirane) vrednosti v izhodu ukaza:

blkid | grep mmcblk | sort

Po zamenjavi morate popraviti tudi vsebino fstab na microSD, tako da točke priklopa ustrezajo UUID-jem novih particij.

Funkcionalnost omrežja, ko prvič vklopite Raspberry, lahko dosežete z majhno "berglo" - ustvarite povezavo (shematsko):

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

in datoteka:

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

Po uspešnem prenosu pospravite zagon systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Dostop superuporabnika prek ssh je konfiguriran podobno kot v 1. koraku.

Ko vse naredite previdno in brez napak, lahko microSD premaknete v "malino" in začnete delati s 64-bitnim OS v dodatni minimalni različici.

4. Pripravljen sistem

“Sliko” končnega sistema, ustvarjenega po zgornjih navodilih, lahko prenesete s povezave:
Fedora-Tiny-31-5.5.7-200.aarch64

To bo arhiv, ki vsebuje dve datoteki: namestitveni skript in TGZ z datotekami OS. Arhiv je treba razpakirati na delovni postaji Linux, vstaviti microSD (kartica 2 GB je dovolj) in zagnati skript s parametrom - imenom naprave:

./install /dev/mmcblk0

Bodite previdni!

Brez kakršnih koli opozoril bo naprava formatirana in nanjo nameščen operacijski sistem.

Po brezhibnem izvajanju skripta lahko kartico preuredite v "malino" in uporabite: ujemite prek dhcp, geslo - "1".

Sistem je očiščen vseh ID-jev in ključev, zato je vsaka nova namestitev unikatna.

Še enkrat ponavljam, sistem - minimalno! Zato ne bodite prestrašeni: DNF je na voljo, da bo deloval, boste morali »izumiti« pravega / Etc / resolv.conf.

Hladen zagon Raspberryja traja približno 40 sekund. TTX sistema po nalaganju:

Raspberry Pi + Fedora (aarch64) = dostopna točka Wi-Fi (ali usmerjevalnik maline z modrim klobukom)

rpm -qa | wc -l
191

5. Wifi

Malo se bom osredotočil na značilnosti implementacije dostopne točke Wi-Fi. Za podrobnosti se lahko obrnete na moje prejšnje članek.

EPEL ni več potreben - vsi paketi so v uradnih skladiščih.

Verjetno bi bilo vredno obupati dnsmasq, saj ima Fedora za razliko od CentOS dokaj nov systemd-networkd, ki ima običajne vgrajene strežnike DHCP/DNS. Toda dejstvo je, da v RHEL8 razvijalci zavrnil podporo omrežnega sklada s čim drugim kot z NM, ne vzbuja zaupanja v svetlo prihodnost projekta (nepridipravi). Skratka, nisem poskusil.

Poleg tega trenutnih gonilnikov za vgrajeni adapter Wi-Fi ni mogoče "ukrasti" iz distribucije Raspbian, temveč jih prenesti neposredno iz github.

Tako izgledajo datoteke vdelane programske opreme Broadcom na moji Raspberry (shematično):

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

Brez njih ne boste dobili 5GHz/AC.

Glede števila in imen vmesnikov. Vsem močno priporočam, da se ne zatekajo k "storitvam" programskih stikal, razen če je to nujno potrebno (most), ki znatno obremenijo omrežni sklad in zavirajo usmerjanje. Če ne nameravate imeti več brezžičnih adapterjev, uporabite samo fizične vmesnike. Imam dva Wi-Fi-ja, zato samo njiju združim v programski most (čeprav lahko brez tega storite, če pogledate nastavitev hostapd drugače).

In obožujem preimenovanje vmesnikov.

Če želite to narediti v Fedori, morate ustvariti simbolično povezavo:

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

in potem bo mogoče dajati smiselna imena, ne da bi se pogovarjali udev, vendar le z uporabo systemd-networkd.

Na primer, tako se imenujejo omrežne kartice v mojem usmerjevalniku:

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 - vgrajena, ext — zunanji (USB) Wi-Fi adapterji, sestavljeni v "most" lan;
  • wan — Ethernet adapter, v katerega je povezan internet.

Ste opazili? fq_codel - res kul stvar. Skupaj s svežim jedrom Linuxa delajo prave čudeže v brezžičnem dosegu: hud »prenos hudournika« ne bo povzročil nenadnega zmanjšanja hitrosti med sosedi. Tudi domača IP-TV, ki deluje "po zraku" z naloženim kanalom, se ne "razbije" in sploh ne "zatika"!

Storitvena datoteka demona je bila podvržena manjšim spremembam hostapd.

Zdaj je videti tako (na primeru vgrajenega adapterja):

[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

In "čarobni" hostapd-int.conf za delo 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]

Majhen photoshop narejen iz mojega Ericssona A1018s:

(Internetna povezava - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = dostopna točka Wi-Fi (ali usmerjevalnik maline z modrim klobukom)
In končno, majhna pogosta vprašanja.

6. Pogosta vprašanja

6.1 Zakaj narediti usmerjevalnik Wi-Fi na Raspberry?

Lahko bi odgovorili preprosto, kot "zanimivo je poskusiti in vse to."

A v resnici se mi zdi, da je tema kar resna. V dobi "krvavega" interneta je nakup usmerjevalnika v trgovini in ostati talec njegovega proizvajalca zelo žalostna možnost. Veliko ljudi že razume, da sedenje s CVE ali vgrajenim backdoorjem ni mogoče.

Seveda lahko od navdušencev preidete na vdelano programsko opremo WRT. Verjetno je več zaupanja v njih, a če ne želite biti odvisni od njih, potem uporabite svoj izdelek. V idealnem primeru polnopravni računalnik, tako da je na njem mogoče implementirati vse na svetu. V smislu usmerjanja, seveda.

Zato je izbira "maline" čisto ekonomska poteza: pravi računalnik in hkrati poceni. Čeprav morda tudi - s svojimi "dvojniki" v notranjosti.

6.2 Toda Raspberry je "low router": počasen in z enim Ethernet priključkom!

Kot domači Wi-Fi usmerjevalnik mi je Raspberry več kot zadovoljiv. O hitrosti zraka sem že govoril zgoraj. In obstaja samo en Ethernet, no, v podobnem izdelku Apple je približno enako!

Ampak resno, seveda bi si želel več. In kljub temu, da so v mojem gospodinjstvu vse naprave povezane brezžično, je včasih vseeno potrebna bakrena povezava. Za take primere imam na zalogi “mobilno vozlišče”:

naprava - nekaj takegaRaspberry Pi + Fedora (aarch64) = dostopna točka Wi-Fi (ali usmerjevalnik maline z modrim klobukom)

6.3 Če je to usmerjevalnik, potem ni omenjeno nič o "uglaševanju" TCP/IP, ker je to pomembno!

Poleg nastavitve omrežnega sklada (tcp_fastopen, YeAH itd.) Ta in prejšnji članek ne zajemata drugih odtenkov, zlasti postopka priprave microSD za optimalno uporabo (čeprav namestitveni program poskuša formatirati pomnilniško kartico v zapleten način). Proces izboljševanja je neskončen, le pravočasno se morate ustaviti.

6.4 Zakaj Fedora?

Ker mi je všeč! Fedora je "mainstream" sistem za geeke, katerim je ta članek pravzaprav namenjen. V času pisanja morda edini OS, ki ga za Raspberry v 64-bitni različici uradno podpira veliko število razvijalcev (od katerih komaj čakam jedro 5.6).

6.5 Ali Bluetooth deluje? Kakšen je video/zvok/GPIO?

ne vem Članek govori o minimalni namestitvi sistema in njegovi kasnejši uporabi kot usmerjevalnika Wi-Fi.

6.6 Zakaj se vsi članki o CentOS/Fedora/RedHat začnejo z onemogočanjem SELinuxa?

Ker je sistem minimalen, nima niti požarnega zidu ali pripomočkov za njegovo nastavitev. Kdor potrebuje, lahko dodatno namesti vse, kar potrebuje.

6.7 Sistema ni mogoče uporabljati, gesla ni mogoče spremeniti - ni gesla. Ni pinga, nič!

Obstaja DNF. Ali pa ta možnost namestitve ni za vas - uporabite distribucijski komplet razvijalcev.

6.8 Kje je SWAP? Ne morem živeti brez njega!

Ali je res? OK potem:

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 Takoj želim prenesti že pripravljeno sliko s konfigurirano dostopno točko Wi-Fi!

Priprava namestitvenega programa "za vsakogar" bo zahtevala nekaj časa in truda. Če se komu (nenadoma!) zdi to res zanimivo in potrebno, nam pišite in nekaj bomo našli.

Končal bom s tem.

Vsem želim varno deskanje in maksimalen nadzor nad infrastrukturo!

Vir: www.habr.com

Dodaj komentar