Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela urdin batekin)

Artikulua Raspberry Pi + CentOS = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela gorri batekin) CentOS sistema eragilea erabiliz Raspberry haririk gabeko sarbide puntu bihurtzeko modu bati buruz hitz egin nuen. Nire etxeko bideratzailea marrazki honen arabera muntatuz, nire sormen egoa asetu nuen eta lasaitasun bultzada bat jaso nuen nire azpiegitura atseginaren elementu kritiko batengatik. Hala ere, konponbidearen osaezintasun sentimenduak eta barne perfekzionismoak aztoratu ninduen: "lanaren emaitza inperfektu batek ez du existitzeko eskubiderik". “Ideal hori lortu daiteke eta lortu behar da” pentsatzeak ez nau minutu batean utzi.

Eta orduan, egun batean, gaikako foroetako batean, Raspberryrako dauden sistema eragileen bit-sakonerari buruzko eztabaida bat topatu nuen (aarch64 vs armhfp): zein 64 biteko OS, printzipioz, Raspberry 3 bertsioan moldatu eta lan egin dezakeen. ++?

Nire CentOS maiteak "Userland"-eko ARM arkitekturarako ez zuen presarik nukleoaren azken bertsiora aldatzeko eta 64 biteko bihurtzeko. Eta EPEL biltegia, Jainkoak daki nondik sinadura digitalik gabe konektatuta, amesgaizto bat izan zen nire lo egonezinan...

RPM-n oinarritutako banaketen atxikimendu gisa hitz egitean, harritu egin nintzen eztabaidetan Raspberryrako OS guztiz ahaztuta zegoela ikusteak. Fedora! Eta hau askatzea izan arren
28 bertsiotik ofizialki Raspberry Pi 3B+ onartzen du 64 biteko bertsioan!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela urdin batekin)
Artikulu honetan instalazio metodoari buruz hitz egingo dut Fedora (aarch64) on Raspberry Pi 3 B + eredua в gutxieneko errendimendu gehigarria. Wi-Fi sarbide-puntu bat igotzeko ezaugarriei buruz hitz egingo dut laburki, nire aurreko konfigurazioaren probako funtzionamenduaren ondorioz identifikatuta. CentOS 7.

0. Zer beharko duzu

Dena aurreko artikuluan zerrendatutako berdina da:

  • Raspberry Pi 3 B+ eredua;
  • microSD >= 4GB (geroago sistema 2GBko disko batera "transferitu" dezakezu);
  • Lanpostua Linux eta microSD txartel irakurgailuarekin;
  • Raspberry eta Linux lan-estazio baten arteko kable bidezko sare-konektibitatea (kasu honetan, ez da monitore eta teklatu gehigarririk beharko konfiguratzeko), bi gailuetatik Interneterako sarbidea;
  • Linux-en trebetasun aurreratua (jakitea eta beldurrik ez izateko: parted, dd и mkfs).

Iteratiboaren antzekoa LFS-zure Linux eraikiz, Fedora banaketa-irudia erabiliko da, eta, ondoren, horretan oinarrituta, sistema minimo bat sortuko da («iturburutik konpilatu» gabe).

1. Jatorrizko banaketaren instalazioa

Interneten sistemaren irudi gordinaren koordenatuak:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

MicroSD-n grabatu ondoren eta erabili aurretik, hau egin behar duzu:

  1. Zabaldu fitxategi-sistemaren "erroa" (3. partizioa, 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. Desgaitu SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Kendu hasierako konfigurazio morroia:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Baimendu ssh bidez sarbidea:
    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
    

Orain "mugurdia" microSDtik deskarga dezakezu eta sarearen bidez konektatu zaitezke.

Irteera hotz batek minutu eta erdi inguru behar du. Sistemaren TTX kargatu ondoren:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela urdin batekin)

rpm -qa | wc -l
444

2. Sistema minimo bat muntatzea

Zoritxarrez, garatzaileen "banaketa minimoa" baliabideen kontsumoan apalagotik urrun geratzen da. Sistemaren irudia are txikiagoa egin daiteke.

Horretarako, scripta exekutatu behar duzu Malinkan:

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

Scripta exekutatu ondoren, uneko direktorioan azpidirektorio bat sortuko da ($P) gutxieneko OS edizio berriaren erroaren edukiarekin. Raspberry itzali eta microSD Linux lan-estaziora itzul dezakezu.

3. Sistema minimo bat instalatzea

Instalazioa OS gutxieneko "irudi" fitxategiak (aurreko urratsean lortutakoak) bereziki prestatutako microSD batean kopiatzean datza, direktorio egokietan.

2GB txartela eta bi partizio nahikoa dira:

  1. / Boot / EFI - EFI+FAT32, abioa, 100MB;
  2. / (root) - EXT4, geratzen den espazio guztia.

MicroSDa prestatu eta bertan fitxategiak kopiatu ondoren, hau egin behar duzu:

  • konpondu OS abiarazte;
  • sarea piztu;
  • konfiguratu sarbidea ssh bidez.

Abioko konponketa fitxategietako atalen UUID-a ordezkatzea da:

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

eta parametroa gordetako_sarrera= azken fitxategian

Fitxategian:

microSD:/etc/fstab

balio zaharrak eta uneko balioak (eguneratuak) aurki ditzakezu komandoaren irteeran:

blkid | grep mmcblk | sort

Ordezkatu ondoren, edukia ere zuzendu beharko zenuke fstab microSD-n, muntatze-puntuak partizio UUID berriei dagozkion.

Raspberry lehen aldiz pizten duzunean sarearen funtzionaltasuna "makulu" txiki batekin lor daiteke - sortu esteka (eskematikoki):

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

eta fitxategia:

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

Deskarga arrakastatsua egin ondoren, txukundu abiarazteko systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Ssh bidez supererabiltzaileen sarbidea 1. urratsaren antzera konfiguratuta dago.

Dena kontu handiz eta akatsik gabe egin ondoren, microSDa "mugurdira" eraman dezakezu eta 64 biteko OS batekin lan egiten has zaitezke bertsio minimo gehigarrian.

4. Prest sistema

Amaitutako sistemaren "irudia", goiko argibideen arabera sortutakoa, estekatik deskargatu daiteke:
Fedora-Tiny-31-5.5.7-200.aarch64

Bi fitxategi dituen artxibo bat izango da: instalazioaren scripta eta TGZ OS fitxategiekin. Artxiboa Linux lan-estazio batean deskonprimitu behar da, microSD bat sartu (2 GBko txartela nahikoa da) eta gidoia exekutatu parametro batekin - gailuaren izena:

./install /dev/mmcblk0

Kontuz!

Inolako abisurik gabe, gailua formateatu eta sistema eragilea instalatuko da bertan.

Scripta akatsik gabe exekutatu ondoren, txartela "mugurdi"-ra berrantola daiteke eta erabili: dhcp bidez harrapatu, pasahitza - "1".

Sistemak ID eta gako guztiak garbitzen ditu, horregatik instalazio berri bakoitza bakarra da.

Berriro errepikatzen dut, sistema - minimoa! Beraz, ez kezkatu: DNF eskuragarri dago, funtziona dezan zuzena "asmatu" beharko duzu /etc/resolv.conf.

Raspberry-ren hasiera hotza 40 segundo inguru irauten du. Sistemaren TTX kargatu ondoren:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela urdin batekin)

rpm -qa | wc -l
191

5. Wifi

Wi-Fi sarbide-puntu bat ezartzearen ezaugarrietan pixka bat luzatuko naiz. Zehaztasunetarako, nire aurrekora jo dezakezu Artikulu.

Jada ez da beharrezkoa EPEL - pakete guztiak biltegi ofizialetan daude.

Ziurrenik mereziko luke amore ematea dnsmasq, Fedorak, CentOS ez bezala, systemd-networkd nahiko berria duelako, DHCP/DNS zerbitzari normalak dituena. Baina kontua da RHEL8 garatzaileetan sareko pila NM ez den beste gauza batekin onartzeari uko egin zion, ez du konfiantzarik pizten proiektuaren etorkizun distiratsuan (zitalak). Laburbilduz, ez dut probatu.

Gainera, integratutako Wi-Fi egokigailuaren egungo kontrolatzaileak ezin dira "lapurtu" Raspbian banaketatik, baina zuzenean deskargatu. GitHub.

Hau da Broadcom firmware fitxategiak nire Raspberry-n (eskematikoki):

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

Horiek gabe ez duzu 5GHz/AC lortuko.

Interfazeen kopuruari eta izenei dagokienez. Orain guztioi gomendatzen diet software-etengailuen "zerbitzuetara" ez jotzea guztiz beharrezkoa ez bada (zubia), sareko pilan karga handia sartzen dutenak eta bideraketa deprimitzen dutenak. Haririk gabeko egokitzaile anitz edukitzeko asmoa ez baduzu, interfaze fisikoak soilik erabili beharko dituzu. Bi Wi-Fi ditut, beraz, horiek bakarrik konbinatzen ditut software-zubi batean (nahiz eta hori gabe egin dezakezu hostapd konfigurazioa beste modu batera begiratuz).

Eta interfazeen izena aldatzea gustatzen zait.

Fedoran egiteko esteka sinboliko bat sortu behar duzu:

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

eta gero posible izango da izen esanguratsuak ematea inguruan zulatu gabe udev, baina systemd-networkd bakarrik erabiliz.

Adibidez, honela deitzen dira nire bideratzaileko sare-egokigailuak:

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 - barneratua, ext - kanpoko (USB) Wi-Fi egokigailuak "zubi" batean muntatuta lan;
  • wan — Internetera konektatuta dagoen Ethernet egokigailua.

Konturatu al zara? fq_codel - Oso gauza polita. Linux kernel berri batekin batera, benetako mirariak egiten dituzte haririk gabeko barrutian: "torrent deskarga" gogor batek ez du bizilagunen bat-bateko abiadura hondatzea ekarriko. Kanal kargatu batekin "airean" funtzionatzen duen etxeko IP-TV bat ere ez da "hasten" eta ez da batere "totelka" egiten!

Daemon zerbitzuaren fitxategiak aldaketa txikiak izan ditu hostapd.

Honela dirudi orain (eraikitako egokitzaile baten adibidea erabiliz):

[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

Eta hostapd-int.conf "magikoa" 5GHz/AC-n lan egiteko:

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]

Nire Ericsson A1018s-ekin egindako photoshop txiki bat:

(Interneteko konexioa - 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela urdin batekin)
Eta azkenik, FAQ txiki bat.

6. ohiko galderak

6.1 Zergatik egin Wi-Fi bideratzaile bat Raspberry-n?

Besterik gabe erantzun liteke, "saiatzea interesgarria da eta hori guztia".

Baina egia esan, gaia nahiko serioa dela iruditzen zait. Internet "odoltsuaren" garaian, bideratzaile bat denda batean erostea eta bere fabrikatzailearen bahituta geratzea oso aukera txarra da. Jende askok dagoeneko ulertzen du CVE batekin edo atzeko atzeko atearekin eserita ez dela posible.

Jakina, WRT firmwarera migra dezakezu zaleen eskutik. Seguruenik, konfiantza handiagoa dago haiengan, baina haiengandik menpe egon nahi ez baduzu, erabili zure produktua. Egokiena, erabateko ordenagailu bat, munduko guztia bertan inplementatu ahal izateko. Bideratze aldetik, noski.

Hori dela eta, "mugurdia" aukeratzea mugimendu ekonomiko hutsa da: benetako ordenagailua eta, aldi berean, merkea. Nahiz eta, beharbada ere, - beren "bikoitzak" barruan.

6.2 Baina Raspberry "bideratzaile baxua" da: motela eta Ethernet ataka batekin!

Etxeko Wi-Fi bideratzaile gisa, Raspberry pozgarria da niretzat. Airearen abiadurari buruz hitz egin dut dagoeneko. Eta Ethernet bakarra dago, tira, Appleren antzeko produktu batean berdina da!

Baina serio, noski gehiago gustatuko litzaidake. Eta nire etxean gailu guztiak haririk gabe konektatuta egon arren, batzuetan kobrezko konexioa behar da oraindik. Horrelako kasuetarako, "mugikorretarako hub" bat daukat stockean:

gailua - horrelako zerbaitRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela urdin batekin)

6.3 Hau bideratzailea bada, ez da ezer esaten TCP/IP "sintonizatzeari buruz", hau garrantzitsua baita!

Sare-pila konfiguratzeaz gain (tcp_fastopen, YeAH, etab.), honek eta aurreko artikuluek ez dute beste ñabardurarik hartzen, bereziki, microSD erabilera optimorako prestatzeko prozesua (instalatzailea memoria txartela formateatzen saiatzen den arren. modu delikatua). Hobekuntza prozesua amaigabea da, denboran gelditu besterik ez duzu behar.

6.4 Zergatik Fedora?

Gustatzen zaidalako! Fedora frikientzako sistema "normala" da, artikulu hau benetan zuzenduta dagoena. Idazteko unean, beharbada Raspberryrentzat 64 biteko bertsioan duen sistema eragile bakarra garatzaileen talde garrantzitsu batek onartzen du ofizialki (ezin dut itxaron). nukleoa 5.6).

6.5 Bluetooth-ak funtzionatzen du? Nola dago bideoa/soinua/GPIOa?

Ez dakit. Artikulua sistemaren gutxieneko instalazioari eta gero Wi-Fi bideratzaile gisa erabiltzeari buruzkoa da.

6.6 Zergatik hasten dira CentOS/Fedora/RedHat-i buruzko artikulu guztiak SELinux desgaitzen?

Sistema gutxienekoa denez, ez du suebakirik edo konfiguratzeko utilitaterik ere. Behar duenak behar duen guztia instala dezake.

6.7 Sistema ezin da erabili, pasahitza ezin da aldatu - pasahitzarik gabe. Ez ping, ez ezer!

Ez dago DNF. Edo instalazio-aukera hau ez da zuretzat - erabili garatzaileen banaketa kit-a.

6.8 Non dago SWAP? Ezin naiz bera gabe bizi!

Egia da? Ados orduan:

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 Berehala deskargatu nahiko nuke prest egindako irudi bat konfiguratutako Wi-Fi sarbide puntu batekin!

"Denontzako" instalatzaile bat prestatzeak denbora eta ahalegin pixka bat eskatuko du. Norbaiti (bat-batean!) benetan interesgarria eta beharrezkoa iruditzen bazaio, idatzi iezaguzu eta zerbait asmatuko dugu.

Honekin amaituko dut.

Guztiei surf segurua eta azpiegituraren gaineko kontrol handiena opa diet!

Iturria: www.habr.com

Gehitu iruzkin berria