Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (vĂ”i vaarikaroider sinises mĂŒtsis)

Artiklis Raspberry Pi + CentOS = Wi-Fi Hotspot (vĂ”i malina ruuter punases kĂŒbaras) RÀÀkisin, kuidas muuta «malina» traadita juurdepÀÀsupunktiks operatsioonisĂŒsteemi CentOS abil. Kogudes sellise plaani jĂ€rgi oma kodurouteri, rahuldasin oma loova ego ja sain rahu, teades, et mul onotsustava tĂ€htsusega element minu mugavas infrastruktuuris. Kuid lahenduse lĂ”petamatuse tunne ja sisemine perfektsionism ei andnud rahu: „ebatĂ€iuslik töö ei tohi eksisteerida”. MĂ”te, et „ideaali vĂ”ib ja peab saavutama”, ei lahkunud minust hetkekski.

Ning ĂŒhel pĂ€eval sattusin ĂŒhel temaatilisel foorumil arutelu keskele, kus rÀÀgiti olemasolevate operatsioonisĂŒsteemide arhitektuuride sobivusest «malinale» (aarch64 vs armhfp): millised 64-bitised operatsioonisĂŒsteemid saavad ĂŒldse mahutada ja töötada Raspberry Pi 3++ versioonil?

Minu lemmik CentOS ARM arhitektuuri jaoks «Userlandilt» ei kiirustanud viimase versiooni kerneli kasutuselevÔtuga, et muutuda 64-bitiseks. Ja EPEL hoidla, mille aktiivsus ei olnud digitallooja jÀrgi, oli ööunes mu rahutute unede kauge hirm...

RPM-pĂ”histe distributiivide pooldajana olin ĂŒllatunud, et aruteludes «malina» operatsioonisĂŒsteemidest oli tĂ€iesti unustatud Fedora! Ja see, et tema vĂ€ljaanne
versioonist 28 toetab ametlikult Raspberry Pi 3B+ 64-bitises variandis!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (vĂ”i vaarikaroider sinises mĂŒtsis)
Selles artiklis rÀÀgin paigaldamise viisist Fedora (aarch64) jĂ€rgnevaga Raspberry Pi 3 Model B+ ĂŒhes ĂŒlimalt minimalistlikus variandis. LĂŒhidalt kĂ€sitlen Wi-Fi juurdepÀÀsupunkti tĂ”stmise iseĂ€rasusi, mis ilmnesid minu eelneva konfiguratsiooni proovimise kĂ€igus CentOS 7.

0. Mida on vaja

KÔik, mis on loetletud eelnevas artiklis:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (hiljem vĂ”ib sĂŒsteemi viia 2GB mĂ€luseadmesse);
  • Töötav tööjaam Linuxi ja microSD kaardilugejaga;
  • Traadiga vĂ”rguĂŒhendus «malina» ja töötava Linuxi tööjaama vahel (sellisel juhul ei ole tĂ€iendavat monitori ja klaviatuuri seadistamist vaja), internetiĂŒhendus mĂ”lemas seadmes;
  • EdasijĂ”udnud Linuxi oskus (teada ja mitte karta: parted, dd ja mkfs).

Nagu iteratiivne LFS- oma Linuxi ĂŒlesehitamine, kasutatakse distributiivset pilti Fedora, mille pĂ”hjal luuakse minimaalne sĂŒsteem (ilma «allika koode» kompileerimiseta).

1. Originaalse distributiivi paigaldamine

SĂŒsteemi raw-pildi koordinaadid veebis:
https://
/fedora-secondary/releases/
/Spins/aarch64/images/Fedora-Minimal-
xz

PĂ€rast selle kirjutamist microSD-le ja enne kasutamise alustamist tuleb:

  1. SĂŒsteemi faili sĂŒsteemi juur (3. osa, ext4) laiendada
    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. Keen vÀlja SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Eemalda Esialgse seadistamise Meister:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Lubage SSH ligipÀÀs:
    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 saab „malina“ kĂ€ivitada microSD-lt ja sellele vĂ”rgus ĂŒhenduda.

KĂŒlm kĂ€ivitamine vĂ”tab aega umbes poolteist minutit. SĂŒsteemi tehnilised andmed kĂ€ivitumise jĂ€rel:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (vĂ”i vaarikaroider sinises mĂŒtsis)

rpm -qa | wc -l
444

2. Minimaalse sĂŒsteemi ĂŒlesehitamine

Kahjuks osutub arendajate „minimaalseks distributiiviks” kaugelt mitte kĂ”ige tagasihoidlikumaks ressursside kasutuses. SĂŒsteemi kuju saab teha veel vĂ€iksemaks.

Selleks tuleb „malinal“ kĂ€ivitada skript:

#!/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 tĂ€itmist luuakse praeguses kataloogis alamkataloog ($P) uue minimaalse OS redaktsiooni juure sisuga. Saab vĂ€lja lĂŒlitada „malina“ ja viia microSD tagasi Linuxi tööjaama.

3. Minimaalse sĂŒsteemi paigaldamine

Paigaldamine seisneb minimaalsete „piltide” failide (mis saadi eelmisel sammul) kopeerimises spetsiaalselt ette valmistatud microSD-le vastavatesse kataloogidesse.

Piisab 2GB kaardist ja kahest jaotist:

  1. /boot/efi — EFI+FAT32, kĂ€ivitus, 100MB;
  2. / (juur) — EXT4, kĂ”ik ĂŒlejÀÀnud ruum.

PĂ€rast microSD ettevalmistamist ja failide kopeerimist sellele tuleb:

  • parandada OS kĂ€ivitamist;
  • lĂŒĂŒa vĂ”rku;
  • seada SSH ligipÀÀs.

KĂ€ivitamise parandamine seisneb jaotiste UUID-de asendamises failides:

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

ja parameetrites saved_entry= viimases failis

Failis:

microSD:/etc/fstab

vÔib leida vanad vÀÀrtused, aga praegused (aktiivsed) vÀÀrtused on kÀskluse vÀljundis:

blkid | grep mmcblk | sort

PĂ€rast asendamist tuleb ka kohandada sisu fstab microSD-l, et montaaĆŸikohad vastaksid uutele UUID-dele.

Esimese kĂ€ivitamise aeg on vĂ”imalik tagada vĂ€ikese „lotoga” — luua link (skeemiliselt):

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 eduka kĂ€ivitamist — viia sĂŒsteem kĂ€ivitamine korda systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superkasutaja ssh-ĂŒlevaade seade sarnaneb p.1-ga.

Kui kĂ”ik tehakse korralikult ja ilma vigadeta, saab microSD kaardi "malinikku" paigutada ja alustada 64-bitise operatsioonisĂŒsteemiga töötamist ÀÀrmiselt minimalistlikus vormis.

4. Valmis sĂŒsteem

Valmis sĂŒsteemi "pilt", mis on loodud eespooltoodud juhiste pĂ”hjal, on saadaval allolevalt lingilt:
Fedora-Tiny-31-5.5.7-200.aarch64

See on arhiiv, mis sisaldab kahte faili: installatsiooniskript ja TGZ opsĂŒsteemi failidega. Arhiiv tuleb Linuxi tööjaama vĂ€lja pakkida, sisestada microSD (piisab 2GB kaardist) ja kĂ€ivitada skript parameetriga — seadme nimega:

./install /dev/mmcblk0

Olge ettevaatlik!

Ilma igasuguste hoiatusteta vormindatakse seade ja sellele installeeritakse operatsioonisĂŒsteem.

PĂ€rast skripti tĂ”rgeteta töötamist saab kaardi tagasi "malinikku" paigutada ja kasutada: vĂ”tke dhcp kaudu, parool — "1".

SĂŒsteem on vabanenud kĂ”igist ID-dest ja vĂ”tmetest, mistĂ”ttu iga uus installatsioon on unikaalne.

Kordan veel kord, et sĂŒsteem — minimalistlik! Seega Ă€rge muretsege: DNF on saadaval, tema tööks tuleb "vĂ€ljamĂ”elda" Ă”ige /etc/resolv.conf.

Malini kĂŒlm start kestab umbes 40 sekundit. SĂŒsteemi tehnilised andmed pĂ€rast kĂ€ivitamist:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (vĂ”i vaarikaroider sinises mĂŒtsis)

rpm -qa | wc -l
191

5. Wi-Fi

Veidi peatuge Wi-Fi juurdepÀÀsupunkti rakenduse omadustel. Üksikasjade jaoks vĂ”ite pöörduda minu eelneva artiklis.

EPEL ei ole enam vajalik — kĂ”ik paketid sisaldavad ametlikud repod.

VÔib-olla oleks mÔistlik loobuda dnsmasq, kuna Fedora's on, erinevalt CentOS'ist, piisavalt uus systemd-networkd, kus on normaalsed sisseehitatud DHCP/DNS serverid. Kuid fakt, et RHEL8 arendajad loobusid vÔrgu stacki toetamisest midagi muud kui NM, ei inspireeri usaldust projekti helge tuleviku osas (kurja). KokkuvÔttes, ei proovinud.

Edasi, praegused sisseehitatud Wi-Fi adapteri draiverid ei pea "varastama" Raspbiani ja laadige otse github.

Nii nÀevad minu "maliniku" Broadcomi tarkvarafailid vÀlja (skema),

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 5GHz/AC.

KĂŒsimus arvestuste ja interface nimede osas. NĂŒĂŒd soovitan kĂ”igil ilmselgelt mitte kasutada tarkvaralisi sĂ”lme (sild), mis lisavad mĂ€rkimisvÀÀrset koormust vĂ”rgu stackile ja takistavad marsruutimist. Kui ei plaanita mitut traadita adapterit, tuleks kasutada ainult fĂŒĂŒsilisi liideseid. Minu puhul on kaks Wi-Fi-d, seega ainult neid ma koondan tarkvaraliseks sillaks (kuigi saab ka ilma, vaadates hostapd seadistust teistmoodi).

Ja ma armastan liideseid ĂŒmber nimetada.

Selleks peab Fedora's looma sĂŒmboolse lingi:

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

ja siis saab sisutihedaid nimetusi anda, mitte nokitsedes udev, vaid “systemd-networkd” vahenditega.

NÀiteks on minu ruuteri vÔrgukaartide nimed:

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 — vĂ€line (USB) Wi-Fi adapterid, mis on ĂŒhendatud "sillaga" lan;
  • wan — Ethernet adapter, kuhu on ĂŒhendatud Internet.

Kas mĂ€rkate? fq_codel — on tĂ”eliselt Ă€ge asi. Koos vĂ€rske Linuxi kĂ€rgiga teevad tĂ”elisi imesid traadita vahemikus: intensiivne "torrent allalaadimine" ei pĂ”hjusta naabrite jĂ”udlas kiiruseta eeliseid. Isegi kodune IP-TV, mis töötab "Ă”hu kaudu", ei "lagune" ega "hakkaks" sĂ”na otseses mĂ”ttes!

Teenindusfail demonile tegi vÀikeseid muudatusi hostapd.

NĂŒĂŒd nĂ€eb see vĂ€lja nii (sisseehitatud adapteri nĂ€itel):

[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 "mĂŒrgine" hostapd-int.conf, et toimida 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]

Veidi "fototööd" minu "Ericsson A1018s"-lt:

(ĂŒhendamine Interneti — 100Mbit/sek)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (vĂ”i vaarikaroider sinises mĂŒtsis)
Ja vÀike FAQ kokkuvÔte.

6. FAQ

6.1 Miks kasutada Raspberry't Wi-Fi ruuterina?

Saaks lihtsalt vastata, et "huvitav proovida ja nii edasi".

Aga tegelikult, nagu ma arvan, on teema piisavalt tĂ”sine. Veretuks muutunud interneti ajastul, on poe ruuteri ostmine ja selle tootjaga sunniviise seotud jÀÀmine ĂŒsna tuhm tulevik. Paljud hakkavad aru saama, et ei tohi kasutada CVE-dega vĂ”i sisse ehitatud tagauksedega seadmeid.

Muidugi, saab migratsiooni teha WRT-firmware’ide peale entusiastidelt. Neile on vĂ”ib-olla rohkem usaldust, kuid kui sa ei soovi neist sĂ”ltuda, siis ainus lahendus on — ise valminud toode. Ideaalis – tĂ€iskomplektne arvuti, et seda saaks kasutada kĂ”ikide vĂ”imaluste rakendamiseks. Ruutimise kontekstis, muidugi.

Seega, Raspberry valik — puhtalt majanduslik valik: tĂ”eline arvuti ja samas — odav. Kuigi, vĂ”imalik, et sellel on ka oma "kahtlused".

6.2 Aga Raspberry – "mitte-ruuter": aeglane ja ainult ĂŒhe Etherneti portiga!

Koduseks Wi-Fi ruuteriks rahuldab "malaika" mind rohkem kui piisavalt. Kiirusest "Ă”hus" olen juba rÀÀkimas ĂŒleval. Ja ainult ĂŒks Ethernet, noh, samasuguses tootearenduses Apple'ilt on ka peaaegu tĂ€pselt sama!

Aga tĂ”siselt, muidugi oleks hea rohkem. Ja hoolimata sellest, et minu majapidamises on kĂ”ik seadmed traadita ĂŒhenduses, mĂ”nikord on siiski vaja kaablilised ĂŒhendused. Selliste juhtumite jaoks on mul varuks "mobiliteet hub":

seade — midagi sellistRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (vĂ”i vaarikaroider sinises mĂŒtsis)

6.3 Kui see on ruuter, siis ei öeldud midagi TCP/IP „tuning'st“, mis on oluline!

Lisaks vĂ”rgu staki seadistamisele (tcp_fastopen, YeAH jne) ei ole selles ega eelnevas artiklis kajastatud teisi nĂŒansse, sealhulgas microSD ettevalmistamise protsessi optimaalset kasutamist (kuigi installer pĂŒĂŒab salvestusseadet nutikalt vormata). TĂ€iustamisprotsess on lĂ”putu, tuleb lihtsalt Ă”igel ajal peatuda.

6.4 Miks Fedora?

Sest see meeldib mulle! Fedora — "peavool" — sĂŒsteem geeke, kellele selle artikli compendium ka mĂ”eldud. Kirjutamishetkel kindlalt ainus operatsioonisĂŒsteem, millel toetatakse Raspberry't ametlikult 64-bitises vormis arvestatava arendajate meeskonna poolt (keda ma ei ole suutnud Ă€ra oodata kernel 5.6).

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

Ma ei tea. Artikkel kĂ€sitleb minimaalset sĂŒsteemi installimist ja selle jĂ€rgmist kasutamist Wi-Fi ruuterina.

6.6 Miks kÔik artiklid CentOS/Fedora/RedHat'is algavad SELinux'i keelamisest?

SellepĂ€rast, et sĂŒsteem on minimaalne, seal ei ole isegi tulemĂŒĂŒr ega seadistamise utiliidid. Kes vajab – vĂ”ivad paigaldada kĂ”ik vajalikud vahendid.

6.7 SĂŒsteemiga on vĂ”imatu töötada, parooli ei saa muuta — passwd puudub. Pole ping'i, pole midagi!

On DNF. VĂ”i see installimise variant ei ole sinu jaoks – kasuta arendajate distributsiooni.

6.8 Aga kus on SWAP? Ilma selleta ei suuda ma elada!

TÔesti? Noh, hÀsti:

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 Tahaksin alla laadida kohe valmis pildi, seadistatud Wi-Fi pÀÀsupunktiga!

Installer 'kĂ”igile' valmistamine nĂ”uab teatud aega ja pingutust. Kui (juhtumisi!) kellelegi see tĂ”esti tundub huvitav ja vajalik – kirjutage, mĂ”tleme midagi vĂ€lja.

Sellega lÔpetan.

Soovin kĂ”igile ohutut surfamist ja maksimaalset kontrolli oma infrastruktuuri ĂŒle!

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster