Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ili raspberry ruter sa plavim šeširom)

Clanak Raspberry Pi + CentOS = Wi-Fi Hotspot (ili raspberry ruter sa crvenim šeširom) Govorio sam o načinu pretvaranja Raspberryja u bežičnu pristupnu tačku pomoću CentOS operativnog sistema. Sastavljanjem kućnog rutera prema ovom crtežu, zadovoljio sam svoj kreativni ego i dobio sam poticaj za kritični element moje udobne infrastrukture. Međutim, proganjao me je osjećaj nedovršenosti rješenja i unutrašnjeg perfekcionizma: „nesavršen rezultat rada nema pravo na postojanje“. Pomisao da se „ideal može i treba postići“ nije me napuštala ni na minut.

A onda sam jednog dana, na jednom od tematskih foruma, naišao na diskusiju o bitnoj dubini postojećih operativnih sistema za Raspberry (aarch64 vs armhfp): koji 64-bitni OS može, u principu, stati i raditi na Raspberry verziji 3 ++?

Moj voljeni CentOS za ARM arhitekturu iz “Userlanda” nije žurio da se prebaci na najnoviju verziju kernela i pretvori u 64-bitni. A EPEL repozitorijum, povezan od Bog zna odakle bez digitalnog potpisa, bio je noćna mora u mom nemirnom snu...

Govoreći kao pristalica distribucija zasnovanih na RPM-u, bio sam iznenađen kada sam otkrio da je OS za Raspberry potpuno zaboravljen u diskusijama fedora! I to uprkos činjenici da je njegovo izdanje
od verzije 28 zvanično podržava Raspberry Pi 3B+ u 64-bitnoj verziji!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ili raspberry ruter sa plavim šeširom)
U ovom članku ću govoriti o načinu instalacije Fedora (aarch64) na Malina Pi 3 Model B + в ekstra minimalne performanse. Ukratko ću se zadržati na karakteristikama podizanja Wi-Fi pristupne tačke, identifikovanih kao rezultat probnog rada moje prethodne konfiguracije na CentOS 7.

0. Šta će vam trebati

Sve je isto kao što je navedeno u prethodnom članku:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (kasnije možete „prebaciti“ sistem na disk od 2GB);
  • Radna stanica s Linuxom i čitačem microSD kartica;
  • Žičana mrežna veza između Raspberry-a i Linux radne stanice (u ovom slučaju za podešavanje neće biti potrebni dodatni monitor i tastatura), pristup Internetu sa oba uređaja;
  • Napredna vještina u Linuxu (znati i ne plašiti se: podijeljen, dd и mkfs).

Slično iterativnom ARS-izgradnjom vlastitog Linuxa, koristit će se slika Fedora distribucije, a zatim će se na osnovu nje kreirati minimalni sistem (bez “kompajliranja iz izvora”).

1. Instalacija originalne distribucije

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

Nakon snimanja na microSD i prije korištenja, potrebno je:

  1. Proširite "korijen" sistema datoteka (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. Onemogućite SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Uklonite čarobnjaka za početno podešavanje:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Dozvolite pristup putem ssh-a:
    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
    

Sada možete preuzeti “raspberry” sa microSD kartice i povezati se na nju putem mreže.

Hladan start traje oko minut i po. TTX sistema nakon učitavanja:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ili raspberry ruter sa plavim šeširom)

rpm -qa | wc -l
444

2. Sastavljanje minimalnog sistema

Nažalost, pokazalo se da je „minimalna distribucija“ programera daleko od najskromnije potrošnje resursa. Slika sistema može biti još manja.

Da biste to učinili, morate pokrenuti skriptu 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

Nakon pokretanja skripte, poddirektorij će biti kreiran u trenutnom direktoriju ($P) sa sadržajem root-a novog minimalnog izdanja OS-a. Možete isključiti Raspberry i vratiti microSD na Linux radnu stanicu.

3. Instalacija minimalnog sistema

Instalacija se svodi na kopiranje minimalnih OS fajlova „image“ (dobijenih u prethodnom koraku) na posebno pripremljenu microSD karticu u odgovarajuće direktorijume.

Dovoljna je kartica od 2GB i dvije particije na njoj:

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

Nakon što pripremite microSD i kopirate fajlove na njega, potrebno je da:

  • popraviti OS boot;
  • uključite mrežu;
  • konfigurišite pristup preko ssh-a.

Popravak pokretanja je zamjena UUID-a sekcija u datotekama:

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

i parametar saved_entry= u poslednjem fajlu

U fajlu:

microSD:/etc/fstab

možete pronaći stare vrijednosti i trenutne (ažurne) vrijednosti u izlazu naredbe:

blkid | grep mmcblk | sort

Nakon zamjene također treba ispraviti sadržaj fstab na microSD tako da tačke montiranja odgovaraju novim UUID-ovima particije.

Mrežna funkcionalnost kada prvi put uključite Raspberry može se postići malom "štakom" - kreirajte vezu (šematski):

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

i fajl:

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

Nakon uspješnog preuzimanja, sredite lansiranje systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Pristup superkorisnika preko ssh-a je konfigurisan slično kao u koraku 1.

Nakon što ste sve obavili pažljivo i bez grešaka, možete premjestiti microSD u "malina" i početi raditi sa 64-bitnim OS-om u ekstra minimalnoj verziji.

4. Spreman sistem

„Sliku“ gotovog sistema, kreiranu prema gore navedenim uputstvima, možete preuzeti sa linka:
Fedora-Tiny-31-5.5.7-200.aarch64

Ovo će biti arhiva koja sadrži dvije datoteke: instalacijsku skriptu i TGZ sa OS datotekama. Arhivu je potrebno raspakirati na Linux radnoj stanici, umetnuti microSD (dovoljna je kartica od 2GB) i pokrenuti skriptu s parametrom - imenom uređaja:

./install /dev/mmcblk0

Budite oprezni!

Bez ikakvih upozorenja, uređaj će biti formatiran i na njemu će biti instaliran operativni sistem.

Nakon izvršavanja skripte bez grešaka, kartica se može preurediti u "malinu" i koristiti: catch preko dhcp-a, lozinka - "1".

Sistem je očišćen od svih ID-ova i ključeva, zbog čega je svaka nova instalacija jedinstvena.

Ponavljam još jednom, sistem - minimalno! Stoga, nemojte se uznemiravati: DNF je dostupan, da bi funkcionisao morat ćete „izmisliti“ pravi /etc/resolv.conf.

Hladni start Raspberry-a traje oko 40 sekundi. TTX sistema nakon učitavanja:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ili raspberry ruter sa plavim šeširom)

rpm -qa | wc -l
191

5. WiFi

Zadržat ću se malo na karakteristikama implementacije Wi-Fi pristupne točke. Za pojedinosti, možete pogledati moj prethodni članak.

EPEL više nije potreban - svi paketi se nalaze u službenim repozitorijumima.

Vjerovatno bi vrijedilo odustati dnsmasq, budući da Fedora, za razliku od CentOS-a, ima prilično noviji systemd-networkd, koji ima normalno ugrađene DHCP/DNS servere. Ali činjenica je da u RHEL8 programeri odbio da podrži mrežni stog sa bilo čim drugim osim NM-om, ne uliva povjerenje u svijetlu budućnost projekta (podlaci). Ukratko, nisam probao.

Nadalje, trenutni drajveri za ugrađeni Wi-Fi adapter ne mogu se "ukrati" iz Raspbian distribucije, već preuzeti direktno sa GitHub.

Ovako izgledaju fajlovi firmvera Broadcom na mom Raspberryju (šematski):

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 njih nećete dobiti 5GHz/AC.

Što se tiče broja i naziva interfejsa. Sada toplo preporučujem svima da ne pribjegavaju "uslugama" softverskih prekidača osim ako je apsolutno neophodno (most), koji unose značajno opterećenje u mrežni stog i smanjuju rutiranje. Ako ne planirate imati više bežičnih adaptera, trebali biste koristiti samo fizička sučelja. Imam dva Wi-Fi-ja, pa samo njih kombinujem u softverski most (iako možete i bez toga ako drugačije pogledate postavku hostapd-a).

I volim preimenovanje interfejsa.

Da biste to učinili u Fedori, morate kreirati simboličku vezu:

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

i tada će biti moguće davati smislena imena bez čačkanja udev, ali samo koristeći systemd-networkd.

Na primjer, ovako se zovu mrežni adapteri u mom ruteru:

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 - ugrađeni, ext — eksterni (USB) Wi-Fi adapteri sastavljeni u “most” lan;
  • wan — Ethernet adapter na koji je povezan Internet.

Jeste li primijetili? fq_codel - stvarno kul stvar. Zajedno sa svježim Linux kernelom, oni čine prava čuda u bežičnom dometu: žestoko “torrent preuzimanje” neće dovesti do iznenadne degradacije brzine među susjedima. Čak se i kućni IP-TV koji radi „preko zraka“ s učitanim kanalom ne „razbija“ i uopće ne „muca“!

Daemon servisni fajl je pretrpio manje promjene hostapd.

Sada izgleda ovako (koristeći primjer ugrađenog adaptera):

[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

I “magični” hostapd-int.conf za rad na 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]

Mali photoshop napravljen od mog Ericssona A1018s:

(Internet veza - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ili raspberry ruter sa plavim šeširom)
I na kraju, mala FAQ.

6. FAQ

6.1 Zašto napraviti Wi-Fi ruter na Raspberryju?

Moglo bi se jednostavno odgovoriti, kao "zanimljivo je probati i sve to."

Ali u stvari, čini mi se da je tema prilično ozbiljna. U eri “krvavog” interneta, kupiti ruter u trgovini i ostati talac njegovog proizvođača je vrlo sumorna perspektiva. Mnogi ljudi već razumiju da sjedenje sa CVE-om ili ugrađenim backdoor-om nije moguće.

Naravno, možete migrirati na WRT firmware od entuzijasta. Vjerovatno postoji više povjerenja u njih, ali ako ne želite ovisiti o njima, onda samo koristite svoj proizvod. Idealno, punopravni kompjuter tako da se na njemu može implementirati sve na svijetu. U smislu rutiranja, naravno.

Stoga je odabir "maline" čisto ekonomski potez: pravi kompjuter i istovremeno jeftin. Mada, možda i - sa svojim "dvojnicima" unutra.

6.2 Ali Raspberry je „niski ruter“: spor i sa jednim Ethernet portom!

Kao kućni Wi-Fi ruter, Raspberry je za mene više nego zadovoljavajući. O brzini vazduha sam već govorio gore. I postoji samo jedan Ethernet, pa, u sličnom Appleovom proizvodu je otprilike isto!

Ali ozbiljno, naravno da bih voleo više. I uprkos činjenici da su u mom domaćinstvu svi uređaji povezani bežično, ponekad je i dalje potrebna bakarna veza. Za takve slučajeve imam na lageru “mobilno čvorište”:

uređaj - ovako neštoRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ili raspberry ruter sa plavim šeširom)

6.3 Ako je ovo ruter, onda se ništa ne govori o “podešavanju” TCP/IP-a, jer je ovo važno!

Osim podešavanja mrežnog stoga (tcp_fastopen, YeAH, itd.), ovaj i prethodni članak ne pokrivaju druge nijanse, posebno proces pripreme microSD-a za optimalno korištenje (iako instalater pokušava formatirati memorijsku karticu u lukav način). Proces poboljšanja je beskonačan, samo treba stati na vrijeme.

6.4 Zašto Fedora?

Jer volim! Fedora je “mainstream” sistem za štreberke, kojima je ovaj članak zapravo namijenjen. U vrijeme pisanja, možda jedini OS koji je za Raspberry u 64-bitnoj verziji službeno podržan od strane značajnog osoblja programera (od kojih jedva čekam kernel 5.6).

6.5 Radi li Bluetooth? Kako je video/zvuk/GPIO?

Ne znam. Članak govori o minimalnoj instalaciji sistema i njegovoj naknadnoj upotrebi kao Wi-Fi rutera.

6.6 Zašto svi članci o CentOS/Fedora/RedHat počinju s onemogućavanjem SELinuxa?

Budući da je sistem minimalan, nema čak ni zaštitni zid ili uslužne programe za njegovo postavljanje. Svako kome je to potrebno može dodatno ugraditi sve što mu je potrebno.

6.7 Sistem se ne može koristiti, lozinka se ne može promijeniti - nema passwd. Nema pinga, nema ničega!

Postoje DNF. Ili ova opcija instalacije nije za vas - koristite distribucijski komplet od programera.

6.8 Gdje je SWAP? Ne mogu živjeti bez njega!

Da li je istina? Uredu onda:

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 Želio bih odmah preuzeti gotovu sliku sa konfiguriranom Wi-Fi pristupnom tačkom!

Priprema instalatera "za sve" zahtijevat će malo vremena i truda. Ako (iznenada!) nekome ovo bude zaista zanimljivo i potrebno, pišite nam pa ćemo nešto smisliti.

Završiću sa ovim.

Želim svima sigurno surfanje i maksimalnu kontrolu nad infrastrukturom!

izvor: www.habr.com

Dodajte komentar