Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (tai vadelmareititin, jossa on sininen hattu)

Artikkelissa Raspberry Pi + CentOS = Wi-Fi-hotspot (tai vadelmareititin punaisella hatulla) Puhuin tavasta muuttaa Raspberrysta langattoman tukiaseman käyttämällä CentOS-käyttöjärjestelmää. Kokoamalla kotireitittimeni tämän piirustuksen mukaan tyydytin luovan egoni ja sain mielenrauhaa piristystä kodikkaan infrastruktuurini tärkeästä osasta. Ratkaisun epätäydellisyyden tunne ja sisäinen perfektionismi kuitenkin ahdistivat minua: "työn epätäydellisellä tuloksella ei ole oikeutta olla olemassa." Ajatus, että "ihanne voidaan ja pitäisi saavuttaa" ei jättänyt minua hetkeksikään.

Ja sitten eräänä päivänä eräällä temaattisista foorumeista törmäsin keskusteluun Raspberryn olemassa olevien käyttöjärjestelmien bittisyvyydestä (aarch64 vs armhfp): mikä 64-bittinen käyttöjärjestelmä voi periaatteessa sopia ja toimia Raspberryn versiossa 3 ++?

Rakas CentOS:ni ARM-arkkitehtuurille "Userlandista" ei kiirehtinyt vaihtamaan ytimen uusimpaan versioon ja muuttumaan 64-bittiseksi. Ja Jumala tietää minne ilman digitaalista allekirjoitusta yhdistetty EPEL-arkisto oli painajainen levottomissa unissani...

RPM-pohjaisten jakelujen kannattajana olin yllättynyt siitä, että Raspberryn käyttöjärjestelmä unohdettiin keskusteluissa kokonaan. Fedora! Ja tämä siitä huolimatta, että se julkaistaan
versiosta 28 alkaen se tukee virallisesti Raspberry Pi 3B+:ta 64-bittisessä versiossa!

Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (tai vadelmareititin, jossa on sininen hattu)
Tässä artikkelissa puhun asennusmenetelmästä Fedora (aarch64) päälle Vadelma Pi 3 malli B + в extra minimaalinen suorituskyky. Pysähdyn lyhyesti Wi-Fi-tukipisteen nostamisen ominaisuuksiin, jotka tunnistettiin edellisen kokoonpanoni koekäytön tuloksena 7 CentOS.

0. Mitä tarvitset

Kaikki on sama kuin edellisessä artikkelissa:

  • Raspberry Pi 3 malli B+;
  • microSD >= 4 Gt (myöhemmin voit "siirtää" järjestelmän 2 Gt:n asemaan);
  • Työasema Linuxilla ja microSD-kortinlukijalla;
  • Langallinen verkkoyhteys Raspberryn ja Linux-työaseman välillä (tässä tapauksessa asennusta varten ei tarvita ylimääräistä näyttöä ja näppäimistöä), Internet-yhteys molemmista laitteista;
  • Edistynyt taito Linuxissa (tietää eikä pelätä: erosimme, dd и mkfs).

Samanlainen kuin iteratiivinen LFS-rakentamalla oma Linuxi, käytetään Fedora-jakelukuvaa, jonka pohjalta luodaan minimaalinen järjestelmä (ilman "lähdekoodista kääntämistä").

1. Alkuperäisen jakelun asennus

Järjestelmän raakakuvan koordinaatit Internetissä:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Kun olet tallentanut sen microSD-kortille ja ennen käyttöä, sinun on:

  1. Laajenna tiedostojärjestelmän "juuri" (3. osio, 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. Poista SELinux käytöstä
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Poista ohjattu alkuasetustoiminto:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Salli pääsy ssh:n kautta:
    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
    

Nyt voit ladata "vadelman" microSD-kortilta ja muodostaa yhteyden siihen verkon kautta.

Kylmäkäynnistys kestää noin puolitoista minuuttia. Järjestelmän TTX latauksen jälkeen:

Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (tai vadelmareititin, jossa on sininen hattu)

rpm -qa | wc -l
444

2. Minimaalisen järjestelmän kokoaminen

Valitettavasti kehittäjien "minimaalinen jakelu" osoittautuu resurssien kulutuksessa kaukana vaatimattomimmasta. Järjestelmäkuvaa voidaan pienentää vieläkin pienemmäksi.

Tätä varten sinun on suoritettava komentosarja Malinkassa:

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

Kun komentosarja on suoritettu, nykyiseen hakemistoon luodaan alihakemisto ($P) uuden minimikäyttöjärjestelmän version juuren sisällöllä. Voit sammuttaa Raspberryn ja palauttaa microSD-kortin Linux-työasemaan.

3. Minimaalisen järjestelmän asennus

Asennus tiivistyy siihen, että käyttöjärjestelmän vähimmäiskuvatiedostot (saatu edellisessä vaiheessa) kopioidaan erityisesti valmistetulle microSD-muistikortille sopiviin hakemistoihin.

2GB kortti ja kaksi osiota siinä riittää:

  1. / Boot / efi - EFI+FAT32, käynnistys, 100 Mt;
  2. / (juuri) - ULK4, kaikki jäljellä oleva tila.

Kun olet valmistellut microSD-kortin ja kopioinut tiedostot siihen, sinun on:

  • korjaa käyttöjärjestelmän käynnistys;
  • kytke verkko päälle;
  • määritä pääsy ssh:n kautta.

Käynnistyskorjauksen tarkoituksena on korvata tiedostojen osien UUID:

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

ja parametri saved_entry= viimeisessä tiedostossa

Tiedostossa:

microSD:/etc/fstab

löydät vanhat arvot ja nykyiset (ajantasaiset) arvot komennon lähdöstä:

blkid | grep mmcblk | sort

Vaihtamisen jälkeen sinun tulee myös korjata sisältö fstab microSD-kortilla niin, että liitoskohdat vastaavat uusia osion UUID-tunnuksia.

Verkkotoiminnot, kun kytket Raspberryn päälle ensimmäistä kertaa, voidaan saavuttaa pienellä "sauvolla" - luo linkki (kaaviollisesti):

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

ja tiedosto:

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

Siivoa käynnistys onnistuneen latauksen jälkeen systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Pääkäyttäjän pääsy ssh:n kautta määritetään samalla tavalla kuin vaiheessa 1.

Kun olet tehnyt kaiken huolellisesti ja ilman virheitä, voit siirtää microSD-kortin "vadelmaan" ja aloittaa työskentelyn 64-bittisellä käyttöjärjestelmällä ylimääräisessä minimiversiossa.

4. Valmis järjestelmä

Yllä olevien ohjeiden mukaan luotu "kuva" valmiista järjestelmästä voidaan ladata linkistä:
Fedora-Tiny-31-5.5.7-200.aarch64

Tämä on arkisto, jossa on kaksi tiedostoa: asennuskomentosarja ja TGZ käyttöjärjestelmätiedostoineen. Arkisto on purettava Linux-työasemalla, asetettava microSD-kortti (2 Gt:n kortti riittää) ja suoritettava komentosarja parametrilla - laitteen nimi:

./install /dev/mmcblk0

Ole varovainen!

Ilman varoituksia laite alustetaan ja käyttöjärjestelmä asennetaan siihen.

Skriptin virheettömän suorittamisen jälkeen kortti voidaan järjestää uudelleen "vadelmaan" ja käyttää: catch dhcp:n kautta, salasana - "1".

Järjestelmä on tyhjennetty kaikista tunnuksista ja avaimista, minkä vuoksi jokainen uusi asennus on ainutlaatuinen.

Toistan vielä kerran, järjestelmä - minimaalinen! Siksi älä huolestu: DNF on saatavilla, jotta se toimisi, sinun on "keksittävä" oikea. / Etc / resolv.conf.

Raspberryn kylmäkäynnistys kestää noin 40 sekuntia. Järjestelmän TTX latauksen jälkeen:

Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (tai vadelmareititin, jossa on sininen hattu)

rpm -qa | wc -l
191

5. WiFi

Pysähdyn hieman Wi-Fi-tukiaseman käyttöönoton ominaisuuksiin. Yksityiskohtia varten voit katsoa edellisestäni статье.

EPEL:ää ei enää tarvita - kaikki paketit ovat virallisissa arkistoissa.

Olisi varmaan kannattanut luovuttaa dnsmasq, koska Fedoralla, toisin kuin CentOS:lla, on melko uusi systemd-networkd, jossa on normaalit sisäänrakennetut DHCP/DNS-palvelimet. Mutta tosiasia on, että RHEL8-kehittäjät kieltäytyi tukemasta verkkopinoa millään muulla kuin NM:llä, ei herätä luottamusta projektin valoisaan tulevaisuuteen (huijarit). Lyhyesti sanottuna en ole kokeillut.

Lisäksi sisäänrakennetun Wi-Fi-sovittimen nykyisiä ohjaimia ei voida "varastaa" Raspbian-jakelusta, vaan ne voidaan ladata suoraan GitHub.

Tältä Broadcomin laiteohjelmistotiedostot näyttävät Raspberryssäni (kaaviollisesti):

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

Ilman niitä et saa 5GHz/AC.

Liittymien lukumäärästä ja nimistä. Suosittelen nyt kaikille vahvasti olemaan turvautumatta ohjelmistokytkimien "palveluihin", ellei se ole ehdottoman välttämätöntä (silta), jotka kuormittavat merkittävästi verkkopinoa ja heikentävät reititystä. Jos et aio käyttää useita langattomia sovittimia, sinun tulee käyttää vain fyysisiä liitäntöjä. Minulla on kaksi Wi-Fi-yhteyttä, joten yhdistän vain ne ohjelmistosillaksi (vaikka voit tehdä ilman tätä katsomalla hostapd-asetuksia eri tavalla).

Ja rakastan käyttöliittymien uudelleennimeämistä.

Voit tehdä tämän Fedorassa sinun on luotava symbolinen linkki:

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

ja sitten on mahdollista antaa merkityksellisiä nimiä ilman tuijottamista udev, mutta vain käyttämällä systemd-networkd.

Esimerkiksi reitittimeni verkkosovittimia kutsutaan näin:

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 - sisäänrakennettu, ext - ulkoiset (USB) Wi-Fi-sovittimet, jotka on koottu "sillaksi" lan;
  • kalpea — Ethernet-sovitin, johon Internet on yhdistetty.

Huomasitko? fq_koodi - tosi siisti juttu. Yhdessä tuoreen Linux-ytimen kanssa ne tekevät todellisia ihmeitä langattomalla alueella: raju "torrent-lataus" ei johda äkilliseen nopeuden heikkenemiseen naapureiden keskuudessa. Jopa kodin IP-TV, joka toimii "over the air" ladatulla kanavalla, ei "hajoa" eikä "änki" ollenkaan!

Daemon-palvelutiedostoon on tehty pieniä muutoksia hostapd.

Se näyttää nyt tältä (käyttämällä esimerkkiä sisäänrakennetusta sovittimesta):

[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 "maaginen" hostapd-int.conf työskentelyyn 5 GHz/AC:ssa:

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]

Pieni photoshop, joka tehtiin Ericsson A1018:stani:

(Internet-yhteys - 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (tai vadelmareititin, jossa on sininen hattu)
Ja lopuksi pieni FAQ.

6. Ohje

6.1 Miksi tehdä Wi-Fi-reititin Raspberrylle?

Voidaan vastata yksinkertaisesti: "On mielenkiintoista kokeilla ja kaikkea muuta."

Mutta itse asiassa minusta näyttää siltä, ​​​​että aihe on melko vakava. "Verisen" Internetin aikakaudella reitittimen ostaminen kaupasta ja sen valmistajan panttivangiksi jääminen on erittäin synkkä mahdollisuus. Monet ihmiset ymmärtävät jo, että istuminen CVE:n tai sisäänrakennetun takaoven kanssa ei ole mahdollista.

Tietysti voit siirtyä WRT-laiteohjelmistoon harrastajilta. Heihin luultavasti luotetaan enemmän, mutta jos et halua olla riippuvainen heistä, käytä vain omaa tuotettasi. Ihannetapauksessa täysikokoinen tietokone, jotta kaikki maailmassa voidaan toteuttaa siinä. Reitityksen suhteen tietysti.

Siksi "vadelman" valinta on puhtaasti taloudellinen liike: todellinen tietokone ja samalla edullinen. Tosin ehkä myös - "kaksoisilla" sisällä.

6.2 Mutta Raspberry on "matala reititin": hidas ja yhdellä Ethernet-portilla!

Kodin Wi-Fi-reitittimenä Raspberry on minulle enemmän kuin tyydyttävä. Ilmannopeudesta olen jo puhunut edellä. Ja Ethernet on vain yksi, no, samanlaisessa Applen tuotteessa se on suunnilleen sama!

Mutta vakavasti, tietysti haluaisin enemmän. Ja huolimatta siitä, että kotitaloudessani kaikki laitteet on kytketty langattomasti, joskus tarvitaan silti kupariliitäntä. Tällaisia ​​tapauksia varten minulla on varastossa "mobiilikeskus":

laite - jotain tällaistaRaspberry Pi + Fedora (aarch64) = Wi-Fi-hotspot (tai vadelmareititin, jossa on sininen hattu)

6.3 Jos tämä on reititin, TCP/IP:n "virittämisestä" ei puhuta mitään, koska se on tärkeää!

Verkkopinon (tcp_fastopen, YeAH jne.) lisäksi tämä ja edellinen artikkeli eivät kata muita vivahteita, etenkään prosessia, jossa microSD valmistetaan optimaalista käyttöä varten (vaikka asennusohjelma yrittää alustaa muistikortin hankala tapa). Parannusprosessi on loputon, sinun on vain lopetettava ajoissa.

6.4 Miksi Fedora?

Koska pidän! Fedora on "valtavirran" järjestelmä nörteille, joille tämä artikkeli on todella tarkoitettu. Kirjoitushetkellä ehkä ainoa käyttöjärjestelmä, jota Raspberryn 64-bittisessä versiossa tukee virallisesti huomattava joukko kehittäjiä (joita en malta odottaa ydin 5.6).

6.5 Toimiiko Bluetooth? Millainen on video/ääni/GPIO?

En tiedä. Artikkeli käsittelee järjestelmän minimaalista asennusta ja sen myöhempää käyttöä Wi-Fi-reitittimenä.

6.6 Miksi kaikki CentOS/Fedora/RedHat-artikkelit alkavat SELinuxin poistamisella käytöstä?

Koska järjestelmä on minimaalinen, siinä ei ole edes palomuuria tai apuohjelmia sen määrittämiseksi. Jokainen sitä tarvitseva voi asentaa lisäksi kaiken tarvitsemansa.

6.7 Järjestelmää ei voi käyttää, salasanaa ei voi vaihtaa - ei passwd. Ei pingiä, ei mitään!

On DNF. Tai tämä asennusvaihtoehto ei ole sinua varten - käytä kehittäjien jakelupakettia.

6.8 Missä SWAP on? En voi elää ilman häntä!

Onko se totta? Hyvä on:

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 Haluan heti ladata valmiin kuvan määritetyllä Wi-Fi-tukiasemalla!

Asennusohjelman valmistaminen "kaikkia varten" vaatii aikaa ja vaivaa. Jos (yhtäkkiä!) joku todella pitää tätä mielenkiintoisena ja tarpeellisena, kirjoita meille, niin keksitään jotain.

Lopetan tähän.

Toivotan kaikille turvallista surffausta ja maksimaalista hallintaa infrastruktuurissa!

Lähde: will.com

Lisää kommentti