Raspberry Pi + Fedora (aarch64) = Wi-Fi leviala (või sinise mütsiga vaarika ruuter)

Artikkel Raspberry Pi + CentOS = Wi-Fi leviala (või punase mütsiga vaarika ruuter) Rääkisin viisist, kuidas muuta Raspberry CentOS-i operatsioonisüsteemi abil traadita pääsupunktiks. Selle joonise järgi oma koduruuteri kokku pannes rahuldasin oma loomingulise ego ja sain hingerahu tõuke oma hubase taristu kriitilise elemendi jaoks. Küll aga kummitas mind lahenduse mittetäielikkuse tunne ja sisemine perfektsionism: "töö ebatäiuslikul tulemusel pole õigust eksisteerida." Mõte, et “ideaali saab ja tuleb saavutada”, ei jätnud mind hetkekski.

Ja siis ühel päeval sattusin ühel temaatilisel foorumil arutelule Raspberry olemasolevate operatsioonisüsteemide bitisügavuse üle (aarch64 vs armhfp): milline 64-bitine OS võib põhimõtteliselt sobida ja töötada Raspberry versiooniga 3. ++?

Minu armastatud CentOS ARM-arhitektuuri jaoks kasutajalt “Userland” ei kiirustanud lülituma kerneli uusimale versioonile ja muutuma 64-bitiseks. Ja jumal teab kust ilma digiallkirjata ühendatud EPEL repositoorium oli mu rahutu une õudusunenägu...

RPM-põhiste distributsioonide järgijana rääkides avastasin üllatusega, et Raspberry OS unustati aruteludes täielikult. Fedora! Ja seda hoolimata asjaolust, et selle vabastamine
Alates versioonist 28 toetab see ametlikult Raspberry Pi 3B+ 64-bitises versioonis!

Raspberry Pi + Fedora (aarch64) = Wi-Fi leviala (või sinise mütsiga vaarika ruuter)
Selles artiklis räägin installimeetodist Fedora (aarch64) edasi Vaarika Pi 3 mudel B + в ekstra minimaalne jõudlus. Peatun lühidalt Wi-Fi pääsupunkti tõstmise funktsioonidel, mis tuvastati minu eelmise konfiguratsiooni proovitöö tulemusena 7 CentOS.

0. Mida te vajate

Kõik on sama, mis eelmises artiklis:

  • Raspberry Pi 3 mudel B+;
  • microSD >= 4 GB (hiljem saate süsteemi "üle kanda" 2 GB kettale);
  • Linuxi ja microSD-kaardi lugejaga tööjaam;
  • Juhtmega võrguühendus Raspberry ja Linuxi tööjaama vahel (sel juhul pole seadistamiseks vaja täiendavat monitori ja klaviatuuri), Interneti-ühendus mõlemast seadmest;
  • Täiustatud oskused Linuxis (teada ja mitte karta: lahus, dd и mkfs).

Sarnaselt iteratiivsele LFS-ehitades oma Linuxi, kasutatakse Fedora distributsioonipilti ja seejärel luuakse selle põhjal minimaalne süsteem (ilma “allikast kompileerimata”).

1. Algse distributsiooni installimine

Süsteemi toorpildi koordinaadid Internetis:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Pärast selle salvestamist microSD-le ja enne selle kasutamist peate:

  1. Laiendage failisüsteemi "juur" (3. partitsioon, 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. Keela SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Eemaldage algseadistuse viisard:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Luba juurdepääs ssh kaudu:
    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
    

Nüüd saate alla laadida "vaarika" microSD-lt ja sellega võrgu kaudu ühenduse luua.

Külmkäivitus võtab aega umbes poolteist minutit. Süsteemi TTX pärast laadimist:

Raspberry Pi + Fedora (aarch64) = Wi-Fi leviala (või sinise mütsiga vaarika ruuter)

rpm -qa | wc -l
444

2. Minimaalse süsteemi kokkupanek

Kahjuks ei osutu arendajate “minimaalne jaotus” ressursside tarbimise osas kaugeltki kõige tagasihoidlikumaks. Süsteemi pilti saab veelgi väiksemaks muuta.

Selleks peate Malinkas skripti käivitama:

#!/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

Pärast skripti käivitamist luuakse praeguses kataloogis alamkataloog ($P) uue minimaalse OS-i väljaande juure sisuga. Saate Raspberry välja lülitada ja microSD-kaardi Linuxi tööjaama tagasi saata.

3. Minimaalse süsteemi paigaldamine

Installimine taandub minimaalsete OS-i "pildi" failide (saadud eelmises etapis) kopeerimisega spetsiaalselt ettevalmistatud microSD-le vastavatesse kataloogidesse.

Piisab 2 GB kaardist ja kahest sektsioonist:

  1. / boot / efi - EFI+FAT32, alglaadimine, 100 MB;
  2. / (juur) – EXT4, kogu ülejäänud ruum.

Pärast microSD-kaardi ettevalmistamist ja failide sellele kopeerimist peate:

  • OS-i alglaadimise parandamine;
  • lülitage võrk sisse;
  • konfigureerige juurdepääs ssh-i kaudu.

Alglaadimisparandus on asendada failide jaotiste UUID:

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

ja parameeter saved_entry= viimases failis

Failis:

microSD:/etc/fstab

käsu väljundist leiate vanad väärtused ja praegused (ajakohased) väärtused:

blkid | grep mmcblk | sort

Pärast asendamist peaksite ka sisu parandama fstab microSD-le, et kinnituspunktid vastaksid uutele partitsioonide UUID-dele.

Võrgu funktsionaalsust Raspberry esmakordsel sisselülitamisel saab saavutada väikese karguga - looge link (skemaatiliselt):

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

ja fail:

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

Pärast edukat allalaadimist korrastage käivitamine systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superkasutaja juurdepääs ssh-i kaudu on konfigureeritud sarnaselt sammuga 1.

Olles teinud kõik hoolikalt ja vigadeta, saate microSD-kaardi „vaarika” teisaldada ja alustada tööd 64-bitise operatsioonisüsteemiga minimaalses minimaalses versioonis.

4. Valmis süsteem

Ülaltoodud juhiste järgi loodud valmis süsteemi "pildi" saab alla laadida lingilt:
Fedora-Tiny-31-5.5.7-200.aarch64

See on arhiiv, mis sisaldab kahte faili: installiskript ja TGZ OS-failidega. Arhiiv tuleb Linuxi tööjaamas lahti pakkida, sisestada microSD (piisab 2 GB kaardist) ja käivitada skript parameetriga - seadme nimi:

./install /dev/mmcblk0

Olge ettevaatlik!

Ilma hoiatusteta seade vormindatakse ja sellele installitakse operatsioonisüsteem.

Pärast skripti veatut täitmist saab kaardi ümber korraldada vaarikaks ja kasutada: püüda dhcp kaudu, parool - "1".

Süsteem on puhastatud kõigist ID-dest ja võtmetest, mistõttu on iga uus install ainulaadne.

Kordan veel kord, süsteem - minimaalne! Seetõttu ärge kartke: DNF on saadaval, selle toimimiseks peate "leiutama" õige / Etc / resolv.conf.

Raspberry külmkäivitus võtab aega umbes 40 sekundit. Süsteemi TTX pärast laadimist:

Raspberry Pi + Fedora (aarch64) = Wi-Fi leviala (või sinise mütsiga vaarika ruuter)

rpm -qa | wc -l
191

5. WiFi

Ma peatun veidi Wi-Fi pääsupunkti juurutamise funktsioonidel. Täpsemalt saate vaadata minu eelmist siit.

EPEL-i pole enam vaja – kõik paketid asuvad ametlikes hoidlates.

Ilmselt tasuks loobuda dnsmasq, kuna erinevalt CentOS-ist on Fedoral üsna värske systemd-networkd, millel on tavalised sisseehitatud DHCP/DNS-serverid. Kuid fakt on see, et RHEL8 arendajatel keeldus toetamast võrgupinu millegi muuga peale NM-i, ei ärata kindlustunnet projekti helge tuleviku suhtes (kelmid). Ühesõnaga, ma pole proovinud.

Lisaks ei saa sisseehitatud Wi-Fi-adapteri praeguseid draivereid Raspbiani distributsioonist "varastada", vaid need saab otse veebisaidilt alla laadida. github.

Sellised näevad Broadcomi püsivara failid minu Raspberryl välja (skemaatiliselt):

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

Ilma nendeta ei saa te 5 GHz/AC.

Liideste arvu ja nimetuste kohta. Nüüd soovitan kõigil tungivalt mitte kasutada tarkvaralülitite "teenuseid", kui see pole tingimata vajalik (sild), mis koormavad oluliselt võrgupinu ja pärsivad marsruutimist. Kui te ei plaani omada mitut traadita adapterit, peaksite kasutama ainult füüsilisi liideseid. Mul on kaks WiFi-t, nii et ühendan ainult need tarkvarasillaks (kuigi saate ilma selleta hakkama, kui vaatate hostapdi seadistust erinevalt).

Ja mulle meeldib liideste ümbernimetamine.

Selleks peate Fedoras looma sümboolse lingi:

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

ja siis saab ilma tuhnimata tähendusrikkaid nimesid panna udev, kuid ainult systemd-networkd abil.

Näiteks minu ruuteri võrguadaptereid nimetatakse nii:

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 - sisseehitatud, ext — sillaks kokku pandud välised (USB) Wi-Fi-adapterid lan;
  • nõrk — Etherneti adapter, millega on ühendatud Internet.

Kas sa märkasid? fq_kood - väga lahe asi. Koos värske Linuxi tuumaga teevad nad traadita ühenduses tõelisi imesid: äge "torrenti allalaadimine" ei too kaasa naabrite kiiruse järsku halvenemist. Isegi laetud kanaliga "eetri kaudu" töötav kodune IP-TV ei "murdu" ega "kokuta" üldse!

Deemoni teenuse failis on tehtud väikesed muudatused hostapd.

Nüüd näeb see välja selline (kasutades sisseehitatud adapteri näidet):

[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

Ja "maagiline" hostapd-int.conf 5 GHz/AC töötamiseks:

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]

Väike photoshop minu Ericsson A1018-st:

(Interneti-ühendus - 100Mbit/sek)Raspberry Pi + Fedora (aarch64) = Wi-Fi leviala (või sinise mütsiga vaarika ruuter)
Ja lõpuks väike KKK.

6. KKK-d

6.1 Miks teha Raspberryle WiFi-ruuter?

Võiks vastata lihtsalt, nagu "huvitav on proovida ja kõik muu."

Aga tegelikult tundub mulle, et teema on päris tõsine. "Verise" Interneti ajastul on poest ruuteri ostmine ja selle tootja pantvangi jäämine väga nukker väljavaade. Paljud inimesed juba mõistavad, et CVE või sisseehitatud tagauksega istumine pole võimalik.

Loomulikult saate entusiastidelt WRT püsivarale üle minna. Tõenäoliselt usaldatakse neid rohkem, kuid kui te ei soovi neist sõltuda, kasutage lihtsalt oma toodet. Ideaalis täisväärtuslik arvuti, et selles saaks rakendada kõike maailmas. Marsruutimise osas muidugi.

Seetõttu on “vaarika” valimine puhtalt majanduslik samm: tõeline arvuti ja samal ajal odav. Ehkki võib-olla ka - nende “kahekordistutega” sees.

6.2 Kuid Raspberry on "madal ruuter": aeglane ja ühe Etherneti pordiga!

Koduse WiFi-ruuterina on Raspberry minu jaoks enam kui rahuldav. Õhukiirusest olen juba eespool rääkinud. Ja seal on ainult üks Ethernet, noh, sarnases Apple'i tootes on see umbes sama!

Aga kui tõsiselt rääkida, siis tahaks muidugi rohkem. Ja hoolimata sellest, et minu majapidamises on kõik seadmed juhtmevabalt ühendatud, on mõnikord vaskühendus ikkagi vajalik. Sellisteks puhkudeks on mul laos mobiilne jaotur:

seade - midagi sellistRaspberry Pi + Fedora (aarch64) = Wi-Fi leviala (või sinise mütsiga vaarika ruuter)

6.3 Kui tegemist on ruuteriga, siis TCP/IP häälestamise kohta ei öelda midagi, sest see on oluline!

Lisaks võrgupinu seadistamisele (tcp_fastopen, YeAH jne) ei käsitle see ega eelmine artikkel muid nüansse, eriti microSD optimaalseks kasutamiseks ettevalmistamise protsessi (kuigi installija püüab mälukaarti vormindada keeruline viis). Paranemisprotsess on lõputu, peate lihtsalt õigel ajal peatuma.

6.4 Miks Fedora?

Sest mulle meeldib! Fedora on "peavoolu" süsteem nohikutele, kellele see artikkel tegelikult mõeldud on. Kirjutamise ajal võib-olla ainus OS, mida Raspberry 64-bitise versiooni puhul toetab ametlikult märkimisväärne hulk arendajaid (kellelt ma ei jõua ära oodata kernel 5.6).

6.5 Kas Bluetooth töötab? Kuidas on video/heli/GPIO?

Ei tea. Artikkel käsitleb süsteemi minimaalset installimist ja selle hilisemat kasutamist Wi-Fi ruuterina.

6.6 Miks algavad kõik CentOS/Fedora/RedHati käsitlevad artiklid SELinuxi keelamisega?

Kuna süsteem on minimaalne, pole sellel isegi tulemüüri ega utiliite selle seadistamiseks. Kõik, kes seda vajavad, saavad kõik vajaliku lisaks paigaldada.

6.7 Süsteemi ei saa kasutada, parooli muuta - passwd pole. Ei pingi, ei midagi!

On DNF. Või pole see installivalik teie jaoks - kasutage arendajate jaotuskomplekti.

6.8 Kus on SWAP? Ma ei saa ilma temata elada!

Kas see on tõsi? Olgu siis:

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 Soovin kohe alla laadida valmis pildi koos seadistatud Wi-Fi pääsupunktiga!

Paigaldaja "kõigile" ettevalmistamine nõuab aega ja vaeva. Kui (äkki!) kellelegi see tõesti huvitav ja vajalik tundub, siis kirjutage meile ja leiame midagi välja.

Ma lõpetan sellega.

Soovin kõigile turvalist surfamist ja maksimaalset kontrolli infrastruktuuri üle!

Allikas: www.habr.com

Lisa kommentaar