Raspberry Pi + Fedora (aarch64) = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su mėlyna skrybėle)

Straipsnis Raspberry Pi + CentOS = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su raudona kepure) Aš kalbėjau apie būdą, kaip Raspberry paversti belaidžiu prieigos tašku naudojant CentOS operacinę sistemą. Surinkęs savo namų maršrutizatorių pagal šį brėžinį, patenkinau savo kūrybinį ego ir gavau ramybės postūmį dėl svarbios savo jaukios infrastruktūros dalies. Tačiau persekiojo sprendimo neužbaigtumo jausmas ir vidinis perfekcionizmas: „netobulas darbo rezultatas neturi teisės egzistuoti“. Mintis, kad „idealą galima ir reikia pasiekti“, neapleido nė minutės.

Ir tada vieną dieną viename iš teminių forumų aptikau diskusiją apie esamų Raspberry operacinių sistemų (aarch64 vs armhfp) bitų gylį: kuri 64 bitų OS iš esmės gali tikti ir veikti su Raspberry 3 versija. ++?

Mano mylimas CentOS, skirtas ARM architektūrai iš „Userland“, neskubėjo pereiti prie naujausios branduolio versijos ir paversti 64 bitų. O EPEL saugykla, be skaitmeninio parašo prijungta iš Dieva žino kur, buvo košmaras mano neramiuose mieguose...

Kalbėdamas kaip RPM pagrįstų platinimų šalininkas, nustebau, kad diskusijose Raspberry OS buvo visiškai pamiršta. Minkšta fetrinė skrybėlė! Ir tai nepaisant to, kad jis buvo išleistas
nuo 28 versijos ji oficialiai palaiko Raspberry Pi 3B+ 64 bitų versijoje!

Raspberry Pi + Fedora (aarch64) = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su mėlyna skrybėle)
Šiame straipsnyje kalbėsiu apie diegimo būdą Fedora (aarch64) apie Avietė Pi 3 Modelis B + в ypač minimalus našumas. Trumpai pakalbėsiu apie „Wi-Fi“ prieigos taško pakėlimo ypatybes, nustatytas bandant ankstesnę konfigūraciją 7 Centos.

0. Ko tau prireiks

Viskas yra taip pat, kaip nurodyta ankstesniame straipsnyje:

  • Raspberry Pi 3 modelis B+;
  • microSD >= 4GB (vėliau galėsite „perkelti“ sistemą į 2GB diską);
  • Darbo stotis su Linux ir microSD kortelių skaitytuvu;
  • Laidinis tinklo ryšys tarp Raspberry ir Linux darbo stoties (šiuo atveju nustatymui nereikės papildomo monitoriaus ir klaviatūros), interneto prieiga iš abiejų įrenginių;
  • Pažangūs Linux įgūdžiai (žinoti ir nebijoti: išsiskyrė, dd и mkfs).

Panašus į iteracinį LFS-kuriant savo Linux, bus naudojamas Fedora platinimo vaizdas, o tada jo pagrindu bus sukurta minimali sistema (be "kompiliavimo iš šaltinio").

1. Originalaus platinimo diegimas

Neapdoroto sistemos vaizdo koordinatės internete:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Įrašę jį į microSD ir prieš naudodami, turite:

  1. Išplėskite failų sistemos šaknį (3-asis skaidinys, 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. Išjungti SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Pašalinkite pradinės sąrankos vedlį:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Leisti pasiekti per 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
    

Dabar galite atsisiųsti „raspberry“ iš „microSD“ ir prisijungti prie jo per tinklą.

Šaltas paleidimas trunka apie pusantros minutės. Sistemos TTX po įkėlimo:

Raspberry Pi + Fedora (aarch64) = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su mėlyna skrybėle)

rpm -qa | wc -l
444

2. Minimalios sistemos surinkimas

Deja, „minimalus paskirstymas“ iš kūrėjų pasirodo toli gražu ne pats kukliausias išteklių suvartojimo atžvilgiu. Sistemos vaizdas gali būti dar mažesnis.

Norėdami tai padaryti, turite paleisti scenarijų Malinkoje:

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

Paleidus scenarijų, dabartiniame kataloge bus sukurtas pakatalogis ($P) su naujojo minimalaus OS leidimo šaknies turiniu. Galite išjungti Raspberry ir grąžinti „microSD“ į „Linux“ darbo vietą.

3. Minimalios sistemos įrengimas

Diegimas apsiriboja minimalių OS „vaizdo“ failų (gautų ankstesniame žingsnyje) nukopijavimu į specialiai paruoštą „microSD“ kortelę į atitinkamus katalogus.

Pakanka 2 GB kortelės ir dviejų joje esančių skaidinių:

  1. / boot / efi - EFI+FAT32, įkrova, 100 MB;
  2. / (šaknis) - EXT4, visa likusi vieta.

Paruošę „microSD“ ir nukopijavę failus į jį, turite:

  • pataisyti OS įkrovą;
  • įjungti tinklą;
  • sukonfigūruoti prieigą per ssh.

Įkrovos taisymas yra pakeisti failų sekcijų UUID:

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

ir parametras saved_entry= paskutiniame faile

Faile:

microSD:/etc/fstab

Komandos išvestyje galite rasti senas reikšmes ir dabartines (atnaujintas) reikšmes:

blkid | grep mmcblk | sort

Pakeitę taip pat turėtumėte pataisyti turinį fstab „microSD“, kad prijungimo taškai atitiktų naujo skaidinio UUID.

Tinklo funkcionalumą pirmą kartą įjungus Raspberry galima pasiekti naudojant mažą „ramentą“ - sukurkite nuorodą (schematiškai):

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

ir failas:

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

Po sėkmingo atsisiuntimo sutvarkykite paleidimą sisteminis tinklas:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Supervartotojo prieiga per ssh sukonfigūruojama panašiai kaip 1 veiksme.

Atlikę viską kruopščiai ir be klaidų, galite perkelti „microSD“ į „avietę“ ir pradėti dirbti su 64 bitų OS papildoma minimalia versija.

4. Paruošta sistema

Paruoštos sistemos „vaizdą“, sukurtą pagal aukščiau pateiktas instrukcijas, galima atsisiųsti iš nuorodos:
Fedora-Tiny-31-5.5.7-200.aarch64

Tai bus archyvas, kuriame yra du failai: diegimo scenarijus ir TGZ su OS failais. Archyvą reikia išpakuoti „Linux“ darbo vietoje, įdėti „microSD“ (pakanka 2 GB kortelės) ir paleisti scenarijų su parametru - įrenginio pavadinimu:

./install /dev/mmcblk0

Būk atsargus!

Be jokių įspėjimų įrenginys bus suformatuotas ir jame įdiegta operacinė sistema.

Be klaidų įvykdžius scenarijų, kortelę galima pertvarkyti į „avietę“ ir naudoti: gaudyti per dhcp, slaptažodis - „1“.

Sistema išvalyta nuo visų ID ir raktų, todėl kiekvienas naujas diegimas yra unikalus.

Dar kartą kartoju, sistema - minimalus! Todėl nesijaudinkite: DNF yra, kad jis veiktų, turėsite „sugalvoti“ tinkamą. / Etc / resolv.conf.

Šaltas Raspberry paleidimas trunka apie 40 sekundžių. Sistemos TTX po įkėlimo:

Raspberry Pi + Fedora (aarch64) = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su mėlyna skrybėle)

rpm -qa | wc -l
191

5. „Wi-Fi“

Šiek tiek gyvensiu ties „Wi-Fi“ prieigos taško diegimo ypatybėmis. Norėdami sužinoti daugiau, galite peržiūrėti mano ankstesnį straipsnis.

EPEL nebereikia – visi paketai yra oficialiose saugyklose.

Turbūt vertėtų pasiduoti dnsmasq, nes „Fedora“, skirtingai nei „CentOS“, turi gana naują systemd-networkd, kuriame yra įprasti įmontuoti DHCP/DNS serveriai. Tačiau faktas yra tas, kad RHEL8 kūrėjai atsisakė palaikyti tinklo krūvą niekuo kitu, išskyrus NM, nekelia pasitikėjimo šviesia projekto ateitimi (niekšai). Trumpai tariant, aš to nebandžiau.

Be to, dabartinės integruoto „Wi-Fi“ adapterio tvarkyklės negali būti „pavogtos“ iš Raspbian platinimo, o atsisiunčiamos tiesiai iš GitHub.

Štai kaip „Broadcom“ programinės įrangos failai atrodo mano Raspberry (schematiškai):

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

Be jų jūs negausite 5 GHz/AC.

Dėl sąsajų skaičiaus ir pavadinimų. Dabar visiems primygtinai rekomenduoju nesinaudoti programinės įrangos jungiklių „paslaugomis“, nebent tai absoliučiai būtina (tiltas), kurios labai apkrauna tinklo krūvą ir slopina maršruto parinkimą. Jei neplanuojate turėti kelių belaidžių adapterių, turėtumėte naudoti tik fizines sąsajas. Turiu du „Wi-Fi“, todėl sujungiu tik juos į programinės įrangos tiltą (nors galite apsieiti ir be to, kitaip žiūrėdami į „hostapd“ sąranką).

Ir man patinka pervadinti sąsajas.

Norėdami tai padaryti Fedora, turite sukurti simbolinę nuorodą:

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

o tada bus galima duoti prasmingus vardus nesikišant udev, bet tik naudojant systemd-networkd.

Pavyzdžiui, mano maršrutizatoriaus tinklo adapteriai vadinami taip:

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 - įmontuotas, ext — išoriniai (USB) „Wi-Fi“ adapteriai, surinkti į „tiltą“ LAN;
  • bekraujis — Ethernet adapteris, prie kurio prijungtas internetas.

Ar tu pastebėjai? fq_kodas - Tikrai šaunus dalykas. Kartu su nauju „Linux“ branduoliu jie daro tikrus stebuklus belaidžiame diapazone: nuožmus „torrent atsisiuntimas“ nesukels staigaus greičio sumažėjimo tarp kaimynų. Net „per eterį“ veikianti namų IP televizija su pakrautu kanalu „nesuyra“ ir visai „nemikčioja“!

Demono tarnybos failas buvo šiek tiek pakeistas įkaitais.

Dabar tai atrodo taip (naudojant įmontuoto adapterio pavyzdį):

[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

Ir „stebuklingas“ hostapd-int.conf, skirtas darbui 5 GHz/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]

Mažas fotošopas, pagamintas iš mano Ericsson A1018:

(Interneto ryšys – 100Mbit/sek)Raspberry Pi + Fedora (aarch64) = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su mėlyna skrybėle)
Ir galiausiai, nedidelis DUK.

6. DUK

6.1 Kodėl „Raspberry“ sukurti „Wi-Fi“ maršruto parinktuvą?

Galima būtų atsakyti paprastai: „Įdomu išbandyti ir visa kita“.

Bet iš tikrųjų man atrodo, kad tema gana rimta. „Kruvinojo“ interneto eroje nusipirkti maršrutizatorių parduotuvėje ir likti jo gamintojo įkaitu yra labai liūdna perspektyva. Daugelis žmonių jau supranta, kad sėdėti su CVE ar įtaisytomis užpakalinėmis durimis negalima.

Žinoma, entuziastai galite pereiti prie WRT programinės įrangos. Tikriausiai jais labiau pasitikima, bet jei nenorite nuo jų priklausyti, tiesiog naudokite savo gaminį. Idealiu atveju pilnavertis kompiuteris, kad jame būtų galima įgyvendinti viską pasaulyje. Kalbant apie maršrutą, žinoma.

Todėl „avietės“ ​​pasirinkimas yra grynai ekonominis žingsnis: tikras kompiuteris ir tuo pačiu nebrangus. Nors, galbūt, taip pat - su savo „dubliais“ viduje.

6.2 Tačiau Raspberry yra „žemas maršrutizatorius“: lėtas ir su vienu Ethernet prievadu!

Kaip namų „Wi-Fi“ maršrutizatorius, „Raspberry“ mane labiau nei tenkina. Apie oro greitį jau kalbėjau aukščiau. Ir yra tik vienas Ethernet, na, panašiame „Apple“ gaminyje jis yra maždaug tas pats!

Bet jei rimtai, žinoma, norėčiau daugiau. Ir nepaisant to, kad mano buityje visi įrenginiai jungiami belaidžiu būdu, kartais vis tiek prireikia varinės jungties. Tokiais atvejais turiu „mobilųjį centrą“:

prietaisas - kažkas panašausRaspberry Pi + Fedora (aarch64) = „Wi-Fi“ viešosios interneto prieigos taškas (arba aviečių maršrutizatorius su mėlyna skrybėle)

6.3 Jei tai maršrutizatorius, nieko nesakoma apie TCP/IP „tiuningavimą“, nes tai svarbu!

Be tinklo dėklo nustatymo (tcp_fastopen, YeAH ir tt), šis ir ankstesnis straipsnis neapima kitų niuansų, ypač „microSD“ paruošimo optimaliam naudojimui proceso (nors diegimo programa bando formatuoti atminties kortelę sudėtingas būdas). Tobulėjimo procesas yra begalinis, tik reikia laiku sustoti.

6.4 Kodėl „Fedora“?

Nes aš mėgstu! „Fedora“ yra „pagrindinė“ sistema geekams, kuriems šis straipsnis iš tikrųjų skirtas. Rašymo metu bene vienintelė OS, kurią Raspberry 64 bitų versijoje oficialiai palaiko nemažas kūrėjų personalas (kurių nekantrauju laukti branduolys 5.6).

6.5 Ar „Bluetooth“ veikia? Kaip vaizdo/garso/GPIO?

Nežinau. Straipsnis yra apie minimalų sistemos įdiegimą ir vėlesnį jos naudojimą kaip „Wi-Fi“ maršrutizatorių.

6.6 Kodėl visi straipsniai apie CentOS/Fedora/RedHat prasideda išjungus SELinux?

Kadangi sistema yra minimali, joje net nėra ugniasienės ar paslaugų, skirtų ją nustatyti. Kam reikia, gali papildomai sumontuoti viską, ko reikia.

6.7 Sistema negali būti naudojama, slaptažodžio pakeisti negalima – paswd nėra. Jokio pingo, nieko!

Yra DNF. Arba ši diegimo parinktis jums netinka – naudokite kūrėjų platinimo rinkinį.

6.8 Kur yra SWAP? Aš negaliu gyventi be jo!

Ar tai tiesa? Gerai tada:

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 Norėčiau nedelsiant atsisiųsti paruoštą vaizdą su sukonfigūruotu „Wi-Fi“ prieigos tašku!

Montuotojo paruošimas „visiems“ pareikalaus šiek tiek laiko ir pastangų. Jei (staiga!) kam nors tai tikrai įdomu ir reikalinga, parašykite mums ir mes ką nors sugalvosime.

Aš baigsiu tuo.

Linkiu visiems saugaus naršymo ir maksimalios infrastruktūros kontrolės!

Šaltinis: www.habr.com

Добавить комментарий