Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hindbærrouter med en blå hat)

I artiklen Raspberry Pi + CentOS = Wi-Fi Hotspot (eller hindbærrouter med en rød hat) Jeg talte om en måde at forvandle en hindbær til et trådløst adgangspunkt ved hjælp af CentOS-operativsystemet. Ved at samle min hjemmerouter efter denne tegning tilfredsstillede jeg mit kreative ego og fik et boost af ro i sindet for et kritisk element i min hyggelige infrastruktur. Følelsen af ​​løsningens ufuldstændige og indre perfektionisme forfulgte mig imidlertid: "et ufuldkomment resultat af arbejde har ingen ret til at eksistere." Tanken om, at "det ideelle kan og bør opnås" forlod mig ikke et minut.

Og så en dag, på et af de tematiske fora, stødte jeg på en diskussion om bitdybden af ​​eksisterende operativsystemer til Raspberry (aarch64 vs armhfp): hvilket 64-bit OS i princippet kan passe og fungere på Raspberry version 3 ++?

Mit elskede CentOS til ARM-arkitekturen fra "Userland" havde ikke travlt med at skifte til den nyeste version af kernen og blive til 64-bit. Og EPEL-depotet, forbundet fra Gud ved hvor uden en digital signatur, var et mareridt i min urolige søvn...

Som tilhænger af RPM-baserede distributioner var jeg overrasket over at opdage, at OS til Raspberry blev fuldstændig glemt i diskussioner Fedora! Og dette på trods af, at dens udgivelse
fra version 28 understøtter den officielt Raspberry Pi 3B+ i 64-bit version!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hindbærrouter med en blå hat)
I denne artikel vil jeg tale om installationsmetoden Fedora (aarch64)Hindbær Pi 3 Model B + в ekstra minimal ydeevne. Jeg vil kort dvæle ved funktionerne ved at hæve et Wi-Fi-adgangspunkt, identificeret som et resultat af prøvedrift af min tidligere konfiguration på 7 CentOS.

0. Hvad du skal bruge

Alt er det samme som angivet i den forrige artikel:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (senere kan du "overføre" systemet til et 2GB-drev);
  • Arbejdsstation med Linux og microSD-kortlæser;
  • Kablet netværksforbindelse mellem Raspberry og en Linux-arbejdsstation (i dette tilfælde vil der ikke være behov for yderligere skærm og tastatur til opsætning), internetadgang fra begge enheder;
  • Avanceret færdighed i Linux (at kende og ikke være bange: parted, dd и mkfs).

Svarende til iterativ LFS-ved at bygge dit eget Linux, vil Fedora distributionsbilledet blive brugt, og derefter baseret på det, vil et minimalt system blive oprettet (uden at "kompilere fra kilden").

1. Installation af den originale distribution

Koordinater for det rå billede af systemet på internettet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Efter at have optaget det på microSD og før du bruger det, skal du:

  1. Udvid "roden" af filsystemet (3. partition, 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. Deaktiver SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Fjern Initial Setup Wizard:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Tillad adgang 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
    

Nu kan du downloade "hindbær" fra microSD og oprette forbindelse til det via netværket.

En kold start tager cirka halvandet minut. TTX af systemet efter indlæsning:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hindbærrouter med en blå hat)

rpm -qa | wc -l
444

2. Samling af et minimalt system

Desværre viser "minimalfordelingen" fra udviklerne sig at være langt fra den mest beskedne i ressourceforbrug. Systembilledet kan gøres endnu mindre.

For at gøre dette skal du køre scriptet 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

Efter at have kørt scriptet, oprettes en undermappe i den aktuelle mappe ($P) med indholdet af roden af ​​den nye minimale OS-udgave. Du kan slukke for Raspberry og returnere microSD til Linux-arbejdsstationen.

3. Installation af et minimalt system

Installation går ud på at kopiere de minimale OS "image"-filer (opnået i det foregående trin) til et specielt forberedt microSD til de relevante mapper.

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

  1. / Boot / EFI - EFI+FAT32, boot, 100MB;
  2. / (rod) - EXT4, al resterende plads.

Efter at have forberedt microSD og kopieret filer til det, skal du:

  • reparere OS boot;
  • tænd for netværket;
  • konfigurere adgang via ssh.

Opstartsrettelsen er at erstatte UUID af sektionerne i filerne:

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

og parameter gemt_indgang= i den sidste fil

I fil:

microSD:/etc/fstab

du kan finde de gamle værdier og de nuværende (up-to-date) værdier i kommandoudgangen:

blkid | grep mmcblk | sort

Efter udskiftning bør du også rette indholdet fstab på microSD, så monteringspunkterne svarer til de nye partitions UUID'er.

Netværksfunktionalitet, når du først tænder for Raspberry, kan opnås med en lille "krykke" - opret et link (skematisk):

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

Efter en vellykket download skal du rydde op i lanceringen systemd-netværk d:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superbrugeradgang via ssh er konfigureret på samme måde som trin 1.

Efter at have gjort alt omhyggeligt og uden fejl, kan du flytte microSD til "hindbær" og begynde at arbejde med et 64-bit OS i en ekstra minimal version.

4. Klar system

"Billedet" af det færdige system, oprettet i henhold til instruktionerne ovenfor, kan downloades fra linket:
Fedora-Tiny-31-5.5.7-200.aarch64

Dette vil være et arkiv, der indeholder to filer: installationsscriptet og TGZ med OS-filer. Arkivet skal pakkes ud på en Linux-arbejdsstation, indsætte et microSD (et 2GB-kort er nok) og køre scriptet med en parameter - navnet på enheden:

./install /dev/mmcblk0

Pas på!

Uden nogen advarsler vil enheden blive formateret, og operativsystemet vil blive installeret på den.

Efter fejlfri udførelse af scriptet kan kortet omarrangeres til "hindbær" og bruges: fang via dhcp, adgangskode - "1".

Systemet ryddes for alle ID'er og nøgler, hvorfor hver ny installation er unik.

Jeg gentager endnu en gang, systemet - minimal! Vær derfor ikke foruroliget: DNF er tilgængelig, for at det skal virke, skal du "opfinde" den rigtige / Etc / resolv.conf.

Den kolde start af Raspberry tager omkring 40 sekunder. TTX af systemet efter indlæsning:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hindbærrouter med en blå hat)

rpm -qa | wc -l
191

5. Trådløst internet

Jeg vil dvæle lidt ved funktionerne ved implementering af et Wi-Fi-adgangspunkt. For detaljer, kan du henvise til min tidligere artiklen.

EPEL er ikke længere nødvendig - alle pakker er indeholdt i de officielle repositories.

Det ville nok være værd at give op dnsmasq, da Fedora, i modsætning til CentOS, har et ret nyligt systemd-netværk, som har normale indbyggede DHCP/DNS-servere. Men faktum er, at i RHEL8 udviklere nægtede at støtte netværksstakken med andet end NM, indgyder ikke tillid til projektets lyse fremtid (slyngler). Kort sagt, jeg har ikke prøvet det.

Yderligere kan de nuværende drivere til den indbyggede Wi-Fi-adapter ikke "stjæles" fra Raspbian-distributionen, men downloades direkte fra github.

Sådan ser Broadcom-firmwarefilerne ud på min Raspberry (skematisk):

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

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

Med hensyn til antal og navne på grænseflader. Nu anbefaler jeg på det kraftigste til alle ikke at ty til "tjenesterne" af software switches, medmindre det er absolut nødvendigt (bro), som indfører betydelig belastning i netværksstakken og undertrykker routing. Hvis du ikke planlægger at have flere trådløse adaptere, bør du kun bruge fysiske grænseflader. Jeg har to Wi-Fi, så jeg kombinerer kun dem til en softwarebro (selvom du kan undvære dette ved at se anderledes på hostapd-opsætningen).

Og jeg elsker at omdøbe grænseflader.

For at gøre dette i Fedora skal du oprette et symbolsk link:

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

og så bliver det muligt at give meningsfulde navne uden at rode rundt udev, men kun ved hjælp af systemd-networkd.

Dette er for eksempel, hvad netværksadapterne i min router hedder:

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 - indbygget, ext — eksterne (USB) Wi-Fi-adaptere samlet til en "bro" lan;
  • wan — Ethernet-adapter, som internettet er tilsluttet.

Lagde du mærke til det? fq_codel - en rigtig fed ting. Sammen med en frisk Linux-kerne udfører de virkelige mirakler i den trådløse rækkevidde: En voldsom "torrent-download" vil ikke føre til en pludselig forringelse af hastigheden blandt naboer. Selv et hjemme-IP-TV, der fungerer "over the air" med en indlæst kanal, "bryder ikke op" og "stammer" slet ikke!

Daemon-tjenestefilen har undergået mindre ændringer hostapd.

Det ser nu sådan ud (ved at bruge eksemplet med en indbygget 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 til at arbejde 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 lille photoshop lavet af min Ericsson A1018:

(Internetforbindelse - 100Mbit/sek.)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hindbærrouter med en blå hat)
Og til sidst en lille FAQ.

6. FAQ

6.1 Hvorfor lave en Wi-Fi-router på Raspberry?

Man kunne svare simpelt som "det er interessant at prøve og alt det der."

Men faktisk forekommer det mig, at emnet er ret seriøst. I en tid med det "blodige" internet er det en meget dyster udsigt at købe en router i en butik og forblive gidsel for dens producent. Mange mennesker forstår allerede, at det ikke er muligt at sidde med en CVE eller indbygget bagdør.

Selvfølgelig kan du migrere til WRT-firmware fra entusiaster. Der er nok mere tillid til dem, men hvis du ikke vil være afhængig af dem, så brug bare dit eget produkt. Ideelt set en fuldgyldig computer, så alt i verden kan implementeres på den. Med hensyn til routing, selvfølgelig.

Derfor er valget af "hindbær" et rent økonomisk træk: en rigtig computer og samtidig en billig. Selvom, måske også - med deres "double" indeni.

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

Som en hjemme-Wi-Fi-router er Raspberry mere end tilfredsstillende for mig. Jeg har allerede talt om lufthastighed ovenfor. Og der er kun ét Ethernet, ja, i et lignende produkt fra Apple er det omtrent det samme!

Men seriøst, selvfølgelig vil jeg gerne have mere. Og på trods af at alle enheder i min husstand er tilsluttet trådløst, er der nogle gange stadig behov for en kobberforbindelse. Til sådanne tilfælde har jeg en "mobil hub" på lager:

enhed - sådan nogetRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (eller hindbærrouter med en blå hat)

6.3 Hvis dette er en router, så siges der ikke noget om at “tune” TCP/IP, for det er vigtigt!

Ud over at opsætte netværksstakken (tcp_fastopen, YeAH osv.), dækker denne og den forrige artikel ikke andre nuancer, især processen med at forberede microSD til optimal brug (selvom installationsprogrammet forsøger at formatere hukommelseskortet i en vanskelig måde). Forbedringsprocessen er uendelig, du skal bare stoppe i tide.

6.4 Hvorfor Fedora?

Fordi jeg kan lide! Fedora er et "mainstream"-system for nørder, som denne artikel faktisk er beregnet til. I skrivende stund er det måske eneste OS, der for Raspberry i 64-bit version officielt understøttes af en betydelig stab af udviklere (som jeg ikke kan vente fra kerne 5.6).

6.5 Virker Bluetooth? Hvordan er videoen/lyden/GPIO?

Ved ikke. Artiklen handler om den minimale installation af systemet og dets efterfølgende brug som Wi-Fi-router.

6.6 Hvorfor begynder alle artikler om CentOS/Fedora/RedHat med at deaktivere SELinux?

Fordi systemet er minimalt, har det ikke engang en firewall eller hjælpeprogrammer til at konfigurere det. Alle, der har brug for det, kan installere alt, hvad de har brug for.

6.7 Systemet kan ikke bruges, adgangskoden kan ikke ændres - ingen passwd. Intet ping, intet ingenting!

Der er DNF. Eller denne installationsmulighed er ikke noget for dig - brug distributionssættet fra udviklerne.

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

Er det sandt? Ok så:

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 gerne straks downloade et færdigt billede med et konfigureret Wi-Fi-adgangspunkt!

At forberede en installatør "til alle" vil kræve noget tid og kræfter. Hvis (pludselig!) nogen virkelig finder dette interessant og nødvendigt, så skriv til os, så finder vi på noget.

Jeg slutter med det her.

Jeg ønsker alle sikker surfing og maksimal kontrol over infrastrukturen!

Kilde: www.habr.com

Tilføj en kommentar