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

Članak Raspberry Pi + CentOS = Wi-Fi Hotspot (ili raspberry router s crvenim šeširom) Govorio sam o načinu da se Raspberry pretvori u bežičnu pristupnu točku pomoću CentOS operativnog sustava. Sastavljajući svoj kućni ruter prema ovom crtežu, zadovoljio sam svoj kreativni ego i dobio poticaj za mir za kritični element moje udobne infrastrukture. No, proganjao me osjećaj nedovršenosti rješenja i unutarnjeg perfekcionizma: „nesavršen rezultat rada nema pravo na postojanje“. Misao da se “ideal može i treba postići” nije me napuštala ni na minutu.

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

Moj voljeni CentOS za ARM arhitekturu iz "Userlanda" nije se žurio prebaciti na najnoviju verziju kernela i pretvoriti u 64-bitnu. A EPEL repozitorij, spojen Bog zna odakle bez digitalnog potpisa, bio je noćna mora u mom nemirnom snu...

Govoreći kao pristaša distribucija temeljenih na RPM-u, iznenadio sam se kada sam otkrio da je OS za Raspberry potpuno zaboravljen u raspravama Fedora! I to unatoč činjenici da je njegovo izdanje
od verzije 28 službeno podržava Raspberry Pi 3B+ u 64-bitnoj verziji!

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

0. Što će vam trebati

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

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (kasnije možete “prebaciti” sustav na disk od 2GB);
  • Radna stanica s Linuxom i čitačem microSD kartica;
  • Žičana mrežna povezanost između Raspberry i Linux radne stanice (u ovom slučaju neće biti potreban dodatni monitor i tipkovnica za postavljanje), pristup Internetu s oba uređaja;
  • Napredna vještina u Linuxu (znati i ne bojati se: slomljen, dd и mkfs).

Slično iterativnom ARS-izgradnjom vlastitog Linuxa koristit će se Fedora distribucijska slika, a zatim će se na temelju nje kreirati minimalni sustav (bez “kompiliranja iz izvora”).

1. Instalacija izvorne distribucije

Koordinate sirove slike sustava 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" datotečnog sustava (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ći SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Uklonite čarobnjak za početno postavljanje:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Dopusti 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 "malinu" s microSD kartice i spojiti se na nju putem mreže.

Hladno pokretanje traje oko jednu i pol minutu. TTX sustava nakon učitavanja:

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

rpm -qa | wc -l
444

2. Sastavljanje minimalnog sustava

Nažalost, "minimalna distribucija" programera pokazala se daleko od najskromnije u potrošnji resursa. Slika sustava može biti još manja.

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

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

3. Ugradnja minimalnog sustava

Instalacija se svodi na kopiranje minimalnih datoteka "slike" OS-a (dobivenih u prethodnom koraku) na posebno pripremljenu microSD karticu u odgovarajuće direktorije.

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 datoteke na njega, trebate:

  • popraviti pokretanje OS-a;
  • uključiti mrežu;
  • konfigurirajte pristup putem ssh-a.

Popravak pokretanja je zamjena UUID-a odjeljaka u datotekama:

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

i parametar spremljen_unos= u posljednjoj datoteci

U datoteci:

microSD:/etc/fstab

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

blkid | grep mmcblk | sort

Nakon zamjene trebate ispraviti i sadržaj fstab na microSD tako da točke montiranja odgovaraju novim UUID-ovima particija.

Funkcionalnost mreže kada prvi put uključite Raspberry možete postići malom “štakom” - napravite link (shematski):

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

i datoteka:

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 pokretanje systemd-mreža:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Pristup superkorisnika putem ssh konfiguriran je slično kao u 1. koraku.

Nakon što ste sve učinili pažljivo i bez grešaka, možete premjestiti microSD u "malinu" i početi raditi s 64-bitnim OS-om u dodatnoj minimalnoj verziji.

4. Spremni sustav

“Sliku” gotovog sustava, kreiranu prema gornjim uputama, možete preuzeti na poveznici:
Fedora-Tiny-31-5.5.7-200.aarch64

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

./install /dev/mmcblk0

Budite oprezni!

Bez ikakvih upozorenja, uređaj će se formatirati i na njega će se instalirati operativni sustav.

Nakon izvođenja skripte bez grešaka, kartica se može preurediti u "malinu" i koristiti: uhvatiti putem dhcp-a, lozinka - "1".

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

Ponavljam još jednom, sustav - minimalan! Stoga, nemojte se uznemiriti: DNF je dostupan, da bi radio morat ćete „izmisliti“ ispravan / Etc / resolv.conf.

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

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

rpm -qa | wc -l
191

5. WiFi

Zadržat ću se malo na značajkama 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 repozitorijima.

Vjerojatno bi vrijedilo odustati dnsmasq, budući da Fedora, za razliku od CentOS-a, ima prilično novi systemd-networkd, koji ima normalne ugrađene DHCP/DNS poslužitelje. Ali činjenica je da u RHEL8 programeri odbio je podržati mrežni stog s bilo čim drugim osim NM-a, ne ulijeva povjerenje u svijetlu budućnost projekta (podlaci). Ukratko, nisam probala.

Nadalje, trenutni upravljački programi za ugrađeni Wi-Fi adapter ne mogu se "ukrasti" iz Raspbian distribucije, već preuzeti izravno s Github.

Ovako izgledaju Broadcom firmware datoteke na mom Raspberryju (shematski):

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 sučelja. Sada toplo preporučam svima da ne pribjegavaju "uslugama" softverskih prekidača osim ako je to apsolutno neophodno (most), koji unose značajno opterećenje u mrežni stog i smanjuju usmjeravanje. Ako ne planirate imati više bežičnih adaptera, trebali biste koristiti samo fizička sučelja. Imam dva Wi-Fi-ja, pa kombiniram samo njih u softverski most (iako možete i bez toga ako drugačije pogledate postavku hostapd-a).

I volim preimenovati sučelja.

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

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

i tada će biti moguće davati smislena imena bez čeprkanja udev, ali samo pomoću 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 — vanjski (USB) Wi-Fi adapteri sastavljeni u "most" lan;
  • blijed — Ethernet adapter na koji je povezan Internet.

Jeste li primijetili? fq_codel - stvarno super stvar. Zajedno sa svježim Linux kernelom, oni rade prava čuda u bežičnom dometu: žestoko "preuzimanje torrenta" neće dovesti do naglog pada brzine među susjedima. Čak i kućna IP-TV koja radi "preko zraka" s učitanim kanalom ne "raspada" i uopće ne "muca"!

Servisna datoteka demona pretrpjela je manje izmjene hostapd.

Sada izgleda ovako (na primjeru 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 "čarobni" hostapd-int.conf za rad u 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 router s plavim šeširom)
I na kraju, mali FAQ.

6. Pitanja

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

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

Ali zapravo, čini mi se da je tema prilično ozbiljna. U eri "krvavog" interneta, kupnja usmjerivača u trgovini i ostati talac njegovog proizvođača vrlo je tužna perspektiva. Mnogi ljudi već razumiju da sjediti s CVE-om ili ugrađenim stražnjim vratima nije moguće.

Naravno, možete migrirati na WRT firmware od entuzijasta. Vjerojatno postoji više povjerenja u njih, ali ako ne želite ovisiti o njima, onda samo koristite svoj proizvod. U idealnom slučaju, punopravno računalo kako bi se na njemu moglo implementirati sve na svijetu. U smislu rutiranja, naravno.

Stoga je odabir "maline" čisto ekonomski potez: pravo računalo, a ujedno i jeftino. Iako, možda također - sa svojim "dvojnicima" unutra.

6.2 Ali Raspberry je "niski usmjerivač": spor i s jednim Ethernet priključkom!

Kao kućni Wi-Fi router, Raspberry mi je više nego zadovoljavajući. Gore sam već govorio o brzini zraka. I postoji samo jedan Ethernet, pa, u sličnom Appleovom proizvodu to je otprilike isto!

Ali ozbiljno, naravno da bih želio više. I unatoč činjenici da su u mom kućanstvu svi uređaji povezani bežično, ponekad je ipak potreban bakreni priključak. Za takve slučajeve imam na zalihi “mobilno čvorište”:

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

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

Osim postavljanja mrežnog skupa (tcp_fastopen, YeAH, itd.), ovaj i prethodni članak ne pokrivaju druge nijanse, posebice proces pripreme microSD kartice za optimalnu upotrebu (iako instalacijski program pokušava formatirati memorijsku karticu u lukav način). Proces usavršavanja je beskrajan, samo treba stati na vrijeme.

6.4 Zašto Fedora?

Jer mi se sviđa! Fedora je “mainstream” sustav za geekove, kojima je ovaj članak zapravo i namijenjen. U trenutku pisanja, možda jedini OS koji za Raspberry u 64-bitnoj verziji službeno podržava značajan broj programera (od kojih jedva čekam kernel 5.6).

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

ne znam U članku se govori o minimalnoj instalaciji sustava i njegovoj naknadnoj upotrebi kao Wi-Fi usmjerivača.

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

Budući da je sustav minimalan, nema čak ni vatrozid ili pomoćne programe za njegovo postavljanje. Tko treba može dodatno ugraditi sve što mu treba.

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

Tu je DNF. Ili ova opcija instalacije nije za vas - koristite distribucijski komplet programera.

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

To je istina? OK 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 s konfiguriranom Wi-Fi pristupnom točkom!

Priprema instalacijskog programa "za svakoga" zahtijevat će određeno vrijeme i trud. Ako (iznenada!) nekome ovo stvarno bude zanimljivo i potrebno, pišite nam i mi ćemo nešto smisliti.

Završit ću s ovim.

Svima želim sigurno surfanje i maksimalnu kontrolu nad infrastrukturom!

Izvor: www.habr.com

Dodajte komentar