Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller bringebærruter med blå hatt)

Artikkelen Raspberry Pi + CentOS = Wi-Fi Hotspot (eller bringebærruter med rød lue) Jeg snakket om en måte å gjøre en bringebær til et trådløst tilgangspunkt ved å bruke CentOS-operativsystemet. Ved å sette sammen hjemmeruteren min i henhold til denne tegningen, tilfredsstilte jeg mitt kreative ego og fikk et løft av sinnsro for et kritisk element i den koselige infrastrukturen min. Imidlertid hjemsøkte følelsen av ufullstendighet av løsningen og intern perfeksjonisme meg: "et ufullkommen resultat av arbeid har ingen rett til å eksistere." Tanken om at "det ideelle kan og bør oppnås" forlot meg ikke et minutt.

Og så en dag, på et av de tematiske foraene, kom jeg over en diskusjon om bitdybden til eksisterende operativsystemer for Raspberry (aarch64 vs armhfp): hvilket 64-bit OS som i prinsippet kan passe og fungere på Raspberry versjon 3 ++?

Min elskede CentOS for ARM-arkitekturen fra "Userland" hadde ikke hastverk med å bytte til den nyeste versjonen av kjernen og bli til 64-bit. Og EPEL-lageret, koblet fra Gud vet hvor uten en digital signatur, var et mareritt i min urolige søvn...

Når jeg snakker som en tilhenger av RPM-baserte distribusjoner, ble jeg overrasket over å finne at OS for Raspberry ble helt glemt i diskusjoner Fedora! Og dette til tross for at utgivelsen
fra versjon 28 støtter den offisielt Raspberry Pi 3B+ i 64-bit versjon!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller bringebærruter med blå hatt)
I denne artikkelen vil jeg snakke om installasjonsmetoden Fedora (aarch64)Raspberry Pi 3 Modell B + в ekstra minimal ytelse. Jeg vil kort dvele ved funksjonene ved å heve et Wi-Fi-tilgangspunkt, identifisert som et resultat av prøvedrift av min forrige konfigurasjon på 7 CentOS.

0. Hva du trenger

Alt er det samme som oppført i forrige artikkel:

  • Raspberry Pi 3 modell B+;
  • microSD >= 4GB (senere kan du "overføre" systemet til en 2GB-stasjon);
  • Arbeidsstasjon med Linux og microSD-kortleser;
  • Kablet nettverkstilkobling mellom Raspberry og en Linux-arbeidsstasjon (i dette tilfellet vil ingen ekstra skjerm og tastatur være nødvendig for oppsett), Internett-tilgang fra begge enhetene;
  • Avansert ferdighet i Linux (å vite og ikke være redd: skiltes, dd и mkfs).

Ligner på iterativ AKU-ved å bygge din egen Linux, vil Fedora-distribusjonsbildet bli brukt, og deretter basert på det, vil et minimalt system bli opprettet (uten å "kompilere fra kilden").

1. Installasjon av den originale distribusjonen

Koordinater for det rå bildet av systemet på Internett:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Etter å ha tatt det opp på microSD og før du bruker det, må du:

  1. Utvid "roten" til filsystemet (tredje partisjon, ext3)
    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. Deaktiver SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Fjern veiviseren for første oppsett:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Tillat tilgang via 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
    

Nå kan du laste ned "bringebær" fra microSD og koble til den via nettverket.

En kaldstart tar omtrent ett og et halvt minutt. TTX av systemet etter lasting:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller bringebærruter med blå hatt)

rpm -qa | wc -l
444

2. Montering av et minimalt system

Dessverre viser "minimalfordelingen" fra utviklerne seg å være langt fra den mest beskjedne i ressursforbruk. Systembildet kan gjøres enda mindre.

For å gjøre dette må du kjøre skriptet på Malinka:

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

Etter å ha kjørt skriptet, vil en underkatalog bli opprettet i gjeldende katalog ($P) med innholdet i roten til den nye minimale OS-utgaven. Du kan slå av Raspberry og returnere microSD-en til Linux-arbeidsstasjonen.

3. Installasjon av et minimalt system

Installasjonen koker ned til å kopiere de minimale OS-bildefilene (hentet i forrige trinn) til en spesielt forberedt microSD til de riktige katalogene.

Et 2 GB-kort og to partisjoner på det er nok:

  1. / støvel / efi - EFI+FAT32, oppstart, 100MB;
  2. / (root) - EXT4, all gjenværende plass.

Etter å ha klargjort microSD-en og kopiert filer til den, må du:

  • fikse OS-oppstart;
  • slå på nettverket;
  • konfigurere tilgang via ssh.

Oppstartsreparasjonen er å erstatte UUID for seksjonene i filene:

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

og parameter saved_entry= i den siste filen

I filen:

microSD:/etc/fstab

du kan finne de gamle verdiene og de nåværende (oppdaterte) verdiene i kommandoutgangen:

blkid | grep mmcblk | sort

Etter utskifting bør du også rette på innholdet fstab på microSD slik at monteringspunktene tilsvarer de nye partisjonens UUID-er.

Nettverksfunksjonalitet når du først slår på Raspberry kan oppnås med en liten "krykke" - lag en lenke (skjematisk):

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

og fil:

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

Etter en vellykket nedlasting, rydde opp i lanseringen systemd-nettverkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superbrukertilgang via ssh er konfigurert på samme måte som trinn 1.

Etter å ha gjort alt nøye og uten feil, kan du flytte microSD til "bringebær" og begynne å jobbe med et 64-bits OS i en ekstra minimal versjon.

4. Klart system

"Bildet" av det ferdige systemet, opprettet i henhold til instruksjonene ovenfor, kan lastes ned fra lenken:
Fedora-Tiny-31-5.5.7-200.aarch64

Dette vil være et arkiv som inneholder to filer: installasjonsskriptet og TGZ med OS-filer. Arkivet må pakkes ut på en Linux-arbeidsstasjon, sette inn en microSD (et 2GB-kort er nok) og kjøre skriptet med en parameter - navnet på enheten:

./install /dev/mmcblk0

Vær forsiktig!

Uten noen advarsler vil enheten bli formatert og operativsystemet vil bli installert på den.

Etter feilfri utførelse av skriptet, kan kortet omorganiseres til "bringebær" og brukes: fange via dhcp, passord - "1".

Systemet er tømt for alle IDer og nøkler, og derfor er hver ny installasjon unik.

Jeg gjentar nok en gang, systemet - minimal! Vær derfor ikke skremt: DNF er tilgjengelig, for at det skal fungere må du "oppfinne" den riktige / Etc / resolv.conf.

Kaldstarten til Raspberry tar omtrent 40 sekunder. TTX av systemet etter lasting:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller bringebærruter med blå hatt)

rpm -qa | wc -l
191

5. WiFi

Jeg vil dvele litt på funksjonene ved å implementere et Wi-Fi-tilgangspunkt. For detaljer, kan du referere til min forrige artikkel.

EPEL er ikke lenger nødvendig - alle pakker finnes i de offisielle depotene.

Det ville nok vært verdt å gi opp dnsmasq, siden Fedora, i motsetning til CentOS, har et ganske nylig systemd-nettverk, som har normale innebygde DHCP/DNS-servere. Men faktum er at i RHEL8 utviklere nektet å støtte nettverksstakken med noe annet enn NM, vekker ikke tillit til prosjektets lysende fremtid (slyngler). Kort sagt, jeg har ikke prøvd det.

Videre kan de nåværende driverne for den innebygde Wi-Fi-adapteren ikke "stjeles" fra Raspbian-distribusjonen, men lastes ned direkte fra GitHub.

Dette er hvordan Broadcom-fastvarefilene ser ut på min Raspberry (skjematisk):

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

Uten dem får du ikke 5GHz/AC.

Angående antall og navn på grensesnitt. Nå anbefaler jeg på det sterkeste til alle å ikke ty til "tjenestene" til programvarebrytere med mindre det er absolutt nødvendig (bro), som introduserer betydelig belastning i nettverksstakken og trykker ned ruting. Hvis du ikke planlegger å ha flere trådløse adaptere, bør du kun bruke fysiske grensesnitt. Jeg har to Wi-Fi, så jeg kombinerer bare dem til en programvarebro (selv om du kan klare deg uten dette ved å se på hostapd-oppsettet annerledes).

Og jeg elsker å gi nytt navn til grensesnitt.

For å gjøre dette i Fedora må du lage en symbolsk lenke:

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

og da vil det være mulig å gi meningsfulle navn uten å rote rundt udev, men bare ved å bruke systemd-networkd.

Dette er for eksempel hva nettverkskortene i ruteren min heter:

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 - innebygd, ext - eksterne (USB) Wi-Fi-adaptere satt sammen til en "bro" lan;
  • wan — Ethernet-adapter som Internett er koblet til.

La du merke til? fq_codel - en veldig kul ting. Sammen med en fersk Linux-kjerne, gjør de virkelige mirakler i det trådløse området: en voldsom "torrent-nedlasting" vil ikke føre til en plutselig degradering av hastigheten blant naboer. Selv en hjemme-IP-TV som opererer "over luften" med en lastet kanal "bryter opp" og "stammer" ikke i det hele tatt!

Daemon-tjenestefilen har gjennomgått mindre endringer hostapd.

Det ser nå slik ut (ved å bruke eksempelet på en innebygd adapter):

[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

Og den "magiske" hostapd-int.conf for arbeid i 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]

En liten photoshop laget av min Ericsson A1018:

(Internett-tilkobling - 100Mbit/sek.)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller bringebærruter med blå hatt)
Og til slutt en liten FAQ.

6. FAQ

6.1 Hvorfor lage en Wi-Fi-ruter på Raspberry?

Man kan svare enkelt, som "det er interessant å prøve og alt det der."

Men faktisk virker det på meg som at temaet er ganske alvorlig. I en tid med det "blodige" Internett, er det et veldig dystert perspektiv å kjøpe en ruter i en butikk og forbli som gissel for produsenten. Mange forstår allerede at det ikke er mulig å sitte med en CVE eller innebygd bakdør.

Selvfølgelig kan du migrere til WRT-firmware fra entusiaster. Det er sannsynligvis mer tillit til dem, men hvis du ikke vil være avhengig av dem, er det bare å bruke ditt eget produkt. Ideelt sett en fullverdig datamaskin slik at alt i verden kan implementeres på den. Når det gjelder ruting, selvfølgelig.

Derfor er å velge en "bringebær" et rent økonomisk trekk: en ekte datamaskin og samtidig en billig. Skjønt, kanskje også - med sine "dobler" inni.

6.2 Men Raspberry er en "lav ruter": treg og med én Ethernet-port!

Som en hjemme-Wi-Fi-ruter er Raspberry mer enn tilfredsstillende for meg. Jeg har allerede snakket om lufthastighet ovenfor. Og det er bare ett Ethernet, vel, i et lignende produkt fra Apple er det omtrent det samme!

Men seriøst, selvfølgelig vil jeg gjerne ha mer. Og til tross for at i min husstand er alle enheter tilkoblet trådløst, noen ganger er det fortsatt nødvendig med en kobbertilkobling. For slike tilfeller har jeg en "mobilhub" på lager:

enhet - noe sånt som detteRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller bringebærruter med blå hatt)

6.3 Hvis dette er en ruter, sies det ingenting om "tuning" av TCP/IP, fordi dette er viktig!

I tillegg til å sette opp nettverksstakken (tcp_fastopen, YeAH, etc.), dekker ikke denne og forrige artikkelen andre nyanser, spesielt prosessen med å forberede microSD for optimal bruk (selv om installasjonsprogrammet prøver å formatere minnekortet i en vanskelig måte). Forbedringsprosessen er uendelig, du trenger bare å stoppe i tide.

6.4 Hvorfor Fedora?

Fordi jeg liker! Fedora er et "mainstream"-system for nerder, som denne artikkelen faktisk er ment for. I skrivende stund er kanskje det eneste operativsystemet som for Raspberry i 64-bit versjon offisielt støttet av en betydelig stab av utviklere (som jeg ikke kan vente fra kjerne 5.6).

6.5 Fungerer Bluetooth? Hvordan er videoen/lyden/GPIOen?

Vet ikke. Artikkelen handler om den minimale installasjonen av systemet og dets påfølgende bruk som en Wi-Fi-ruter.

6.6 Hvorfor begynner alle artikler om CentOS/Fedora/RedHat med å deaktivere SELinux?

Fordi systemet er minimalt, har det ikke engang en brannmur eller verktøy for å sette det opp. Alle som trenger det kan installere i tillegg alt de trenger.

6.7 Systemet kan ikke brukes, passordet kan ikke endres - ingen passwd. Ingen ping, ingen ingenting!

Det er DNF. Eller dette installasjonsalternativet er ikke for deg - bruk distribusjonssettet fra utviklerne.

6.8 Hvor er SWAP? Jeg kan ikke leve uten ham!

Er det sant? OK da:

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 Jeg vil umiddelbart laste ned et ferdig bilde med et konfigurert Wi-Fi-tilgangspunkt!

Å forberede en installatør "for alle" vil kreve litt tid og krefter. Hvis (plutselig!) noen virkelig finner dette interessant og nødvendig, skriv til oss, så finner vi på noe.

Jeg avslutter med dette.

Jeg ønsker alle trygg surfing og maksimal kontroll over infrastrukturen!

Kilde: www.habr.com

Legg til en kommentar