Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of frambozenrouter met een blauwe hoed)

In het artikel Raspberry Pi + CentOS = Wi-Fi Hotspot (of frambozenrouter met rode hoed) Ik had het over een manier om van een Raspberry een draadloos toegangspunt te maken met behulp van het CentOS-besturingssysteem. Door mijn thuisrouter volgens deze tekening in elkaar te zetten, bevredigde ik mijn creatieve ego en kreeg ik een boost aan gemoedsrust voor een cruciaal onderdeel van mijn gezellige infrastructuur. Het gevoel van onvolledigheid van de oplossing en het interne perfectionisme achtervolgden mij echter: “een onvolmaakt resultaat van werk heeft geen bestaansrecht.” De gedachte dat “het ideaal verwezenlijkt kan en moet worden” liet mij geen minuut los.

En toen kwam ik op een dag op een van de thematische forums een discussie tegen over de bitdiepte van bestaande besturingssystemen voor Raspberry (aarch64 versus armhfp): welk 64-bit besturingssysteem kan in principe passen en werken op Raspberry versie 3 ++?

Mijn geliefde CentOS voor de ARM-architectuur van "Userland" had geen haast om over te schakelen naar de nieuwste versie van de kernel en deze in 64-bit te veranderen. En de EPEL-repository, verbonden vanuit God weet waar zonder een digitale handtekening, was een nachtmerrie in mijn rusteloze slaap...

Sprekend als aanhanger van op RPM gebaseerde distributies, was ik verrast toen ik ontdekte dat het besturingssysteem voor Raspberry volledig werd vergeten in discussies Fedora! En dit ondanks het feit dat het vrijkomt
vanaf versie 28 ondersteunt het officieel Raspberry Pi 3B+ in 64-bit versie!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of frambozenrouter met een blauwe hoed)
In dit artikel zal ik het hebben over de installatiemethode Fedora (aarch64) op Framboos Pi 3 Model B + в extra minimale prestaties. Ik zal kort stilstaan ​​bij de kenmerken van het opzetten van een Wi-Fi-toegangspunt, geïdentificeerd als resultaat van het proefdraaien van mijn vorige configuratie op 7 CentOS.

0. Wat je nodig hebt

Alles is hetzelfde als vermeld in het vorige artikel:

  • Framboos Pi 3 Model B+;
  • microSD >= 4GB (later kunt u het systeem “overzetten” naar een schijf van 2 GB);
  • Werkstation met Linux en microSD-kaartlezer;
  • Bekabelde netwerkverbinding tussen de Raspberry en een Linux-werkstation (in dit geval zijn er geen extra monitor en toetsenbord nodig voor de installatie), internettoegang vanaf beide apparaten;
  • Geavanceerde vaardigheden in Linux (weten en niet bang zijn: gescheiden, dd и mkfs).

Vergelijkbaar met iteratief LFS-je eigen Linux bouwen, het Fedora distributie-image zal worden gebruikt, en op basis daarvan zal een minimaal systeem worden gemaakt (zonder “compileren vanaf de bron”).

1. Installatie van de originele distributie

Coördinaten van het ruwe beeld van het systeem op internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Nadat u het op microSD hebt opgenomen en voordat u het gebruikt, moet u:

  1. Vouw de “root” van het bestandssysteem uit (3e partitie, 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. Schakel SELinux uit
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Verwijder de initiële installatiewizard:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Toegang toestaan ​​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 kunt u de “framboos” downloaden van microSD en er via het netwerk verbinding mee maken.

Een koude start duurt ongeveer anderhalve minuut. TTX van het systeem na het laden:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of frambozenrouter met een blauwe hoed)

rpm -qa | wc -l
444

2. Een minimaal systeem samenstellen

Helaas blijkt de “minimale distributie” van de ontwikkelaars verre van de meest bescheiden in het verbruik van hulpbronnen. Het systeemimage kan nog kleiner worden gemaakt.

Om dit te doen, moet je het script op Malinka uitvoeren:

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

Na het uitvoeren van het script wordt er een submap aangemaakt in de huidige map ($P) met de inhoud van de root van de nieuwe minimale OS-editie. U kunt de Raspberry uitschakelen en de microSD terugbrengen naar het Linux-werkstation.

3. Installatie van een minimaal systeem

De installatie komt neer op het kopiëren van de minimale “image”-bestanden van het besturingssysteem (verkregen in de vorige stap) naar een speciaal voorbereide microSD in de juiste mappen.

Een kaart van 2 GB en twee partities erop zijn voldoende:

  1. / Boot / efi - EFI+FAT32, opstarten, 100 MB;
  2. / (root) - EXT4, alle resterende ruimte.

Nadat u de microSD hebt voorbereid en de bestanden ernaar hebt gekopieerd, moet u het volgende doen:

  • het opstarten van het besturingssysteem repareren;
  • schakel het netwerk in;
  • configureer de toegang via ssh.

De opstartfix is ​​om de UUID van de secties in de bestanden te vervangen:

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

en parameter opgeslagen_invoer= in het laatste bestand

In bestand:

microSD:/etc/fstab

je kunt de oude waarden en de huidige (actuele) waarden vinden in de opdrachtuitvoer:

blkid | grep mmcblk | sort

Na vervanging dient u ook de inhoud te corrigeren fstab op microSD zodat de koppelpunten overeenkomen met de nieuwe partitie-UUID's.

Netwerkfunctionaliteit wanneer u de Raspberry voor het eerst inschakelt, kan worden bereikt met een kleine "kruk" - maak een link (schematisch):

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

en bestand:

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

Na een succesvolle download ruimt u de lancering op systemd-netwerkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superuser-toegang via ssh is op dezelfde manier geconfigureerd als stap 1.

Nadat je alles zorgvuldig en zonder fouten hebt gedaan, kun je de microSD naar de "framboos" verplaatsen en gaan werken met een 64-bits besturingssysteem in een extra minimale versie.

4. Klaar systeem

De “image” van het voltooide systeem, gemaakt volgens de bovenstaande instructies, kan worden gedownload via de link:
Fedora-Tiny-31-5.5.7-200.aarch64

Dit wordt een archief met twee bestanden: het installatiescript en TGZ met OS-bestanden. Het archief moet worden uitgepakt op een Linux-werkstation, een microSD plaatsen (een kaart van 2 GB is voldoende) en het script uitvoeren met een parameter: de naam van het apparaat:

./install /dev/mmcblk0

Wees voorzichtig!

Zonder enige waarschuwing wordt het apparaat geformatteerd en wordt het besturingssysteem erop geïnstalleerd.

Na een foutloze uitvoering van het script kan de kaart worden herschikt in de “framboos” en worden gebruikt: catch via dhcp, wachtwoord - “1”.

Het systeem wordt ontdaan van alle ID's en sleutels, waardoor elke nieuwe installatie uniek is.

Ik herhaal nogmaals: het systeem - minimaal! Wees daarom niet ongerust: DNF is beschikbaar, om het te laten werken, moet je de juiste “uitvinden” / Etc / resolv.conf.

De koude start van de Raspberry duurt ongeveer 40 seconden. TTX van het systeem na het laden:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of frambozenrouter met een blauwe hoed)

rpm -qa | wc -l
191

5. Wifi

Ik zal even stilstaan ​​bij de kenmerken van het implementeren van een Wi-Fi-toegangspunt. Voor details kunt u mijn vorige raadplegen статье.

EPEL is niet langer nodig - alle pakketten bevinden zich in de officiële repositories.

Het zou waarschijnlijk de moeite waard zijn om op te geven dnsmasq, omdat Fedora, in tegenstelling tot CentOS, een vrij recent systemd-networkd heeft, dat normale ingebouwde DHCP/DNS-servers heeft. Maar het feit is dat bij RHEL8-ontwikkelaars weigerde de netwerkstack te ondersteunen met iets anders dan NM, wekt geen vertrouwen in de mooie toekomst van het project (schurken). Kortom, ik heb het niet geprobeerd.

Verder kunnen de huidige stuurprogramma's voor de ingebouwde Wi-Fi-adapter niet worden "gestolen" uit de Raspbian-distributie, maar rechtstreeks worden gedownload van GitHub.

Zo zien de Broadcom-firmwarebestanden eruit op mijn Raspberry (schematisch):

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

Zonder deze krijg je geen 5GHz/AC.

Wat betreft het aantal en de namen van interfaces. Nu raad ik iedereen ten zeerste aan om geen toevlucht te nemen tot de “diensten” van softwareswitches, tenzij dit absoluut noodzakelijk is (brug), die een aanzienlijke belasting in de netwerkstack introduceren en de routering verminderen. Als u niet van plan bent meerdere draadloze adapters te hebben, moet u alleen fysieke interfaces gebruiken. Ik heb twee Wi-Fi, dus ik combineer ze alleen in een softwarebridge (hoewel je dit ook zonder kunt doen door anders naar de hostapd-configuratie te kijken).

En ik hou ervan om interfaces te hernoemen.

Om dit in Fedora te doen, moet je een symbolische link maken:

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

en dan is het mogelijk betekenisvolle namen te geven zonder rond te snuffelen udev, maar alleen met systemd-networkd.

Zo heten de netwerkadapters in mijn router bijvoorbeeld:

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 - ingebouwd, ext — externe (USB) Wi-Fi-adapters gemonteerd in een “brug” lan;
  • gemaakt — Ethernet-adapter waarop internet is aangesloten.

Merkte op? fq_codel - echt een cool ding. Samen met een frisse Linux-kernel verrichten ze echte wonderen in het draadloze bereik: een felle “torrent-download” zal niet leiden tot een plotselinge snelheidsdaling bij buren. Zelfs een IP-TV thuis die “via de ether” werkt met een geladen kanaal, valt niet uit elkaar en “stottert” helemaal niet!

Het daemon-servicebestand heeft kleine wijzigingen ondergaan hostapd.

Het ziet er nu zo uit (aan de hand van het voorbeeld van een ingebouwde 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

En de “magische” hostapd-int.conf voor het werken in 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]

Een kleine photoshop gemaakt van mijn Ericsson A1018s:

(Internetverbinding - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of frambozenrouter met een blauwe hoed)
En tot slot nog een kleine FAQ.

6. FAQ

6.1 Waarom een ​​Wi-Fi-router op Raspberry maken?

Je zou eenvoudig kunnen antwoorden, in de trant van: “Het is interessant om het te proberen en zo.”

Maar eigenlijk lijkt het mij dat het onderwerp behoorlijk serieus is. In het tijdperk van het ‘bloedige’ internet is het kopen van een router in een winkel en gegijzeld blijven door de fabrikant een zeer somber vooruitzicht. Veel mensen begrijpen al dat zitten met een CVE of ingebouwde achterdeur niet mogelijk is.

Natuurlijk kun je migreren naar WRT-firmware van liefhebbers. Er is waarschijnlijk meer vertrouwen in hen, maar als je er niet afhankelijk van wilt zijn, gebruik dan gewoon je eigen product. Idealiter een volwaardige computer zodat alles van de wereld erop geïmplementeerd kan worden. Qua routering natuurlijk.

Daarom is het kiezen van een "framboos" een puur economische zet: een echte computer en tegelijkertijd een goedkope. Hoewel, misschien ook - met hun "dubbels" erin.

6.2 Maar Raspberry is een “low router”: langzaam en met één Ethernet-poort!

Als wifi-router voor thuis is de Raspberry voor mij meer dan bevredigend. Ik heb hierboven al gesproken over de luchtsnelheid. En er is maar één Ethernet, nou ja, in een soortgelijk product van Apple is het ongeveer hetzelfde!

Maar serieus, ik zou natuurlijk meer willen. En ondanks dat in mijn huishouden alle apparaten draadloos met elkaar verbonden zijn, is er soms toch een koperverbinding nodig. Voor dergelijke gevallen heb ik een “mobiele hub” op voorraad:

apparaat - zoiets als ditRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (of frambozenrouter met een blauwe hoed)

6.3 Als dit een router is, wordt er niets gezegd over het “tunen” van TCP/IP, omdat dit belangrijk is!

Naast het instellen van de netwerkstack (tcp_fastopen, YeAH, enz.), behandelen dit en het vorige artikel geen andere nuances, in het bijzonder het proces van het voorbereiden van microSD voor optimaal gebruik (hoewel het installatieprogramma probeert de geheugenkaart te formatteren in een lastige manier). Het verbeteringsproces is eindeloos, je hoeft alleen maar op tijd te stoppen.

6.4 Waarom Fedora?

Omdat ik het leuk vind! Fedora is een “mainstream” systeem voor nerds, voor wie dit artikel eigenlijk bedoeld is. Op het moment van schrijven is misschien wel het enige besturingssysteem dat voor Raspberry in 64-bit versie officieel wordt ondersteund door een aanzienlijke staf van ontwikkelaars (van wie ik niet kan wachten kernel 5.6).

6.5 Werkt Bluetooth? Hoe is het beeld/geluid/GPIO?

Weet het niet. Het artikel gaat over de minimale installatie van het systeem en het daaropvolgende gebruik ervan als Wi-Fi-router.

6.6 Waarom beginnen alle artikelen over CentOS/Fedora/RedHat met het uitschakelen van SELinux?

Omdat het systeem minimaal is, heeft het niet eens een firewall of hulpprogramma's om het in te stellen. Iedereen die het nodig heeft, kan bovendien alles installeren wat hij nodig heeft.

6.7 Het systeem kan niet worden gebruikt, het wachtwoord kan niet worden gewijzigd - geen passwd. Geen ping, niets!

Er is DNF. Of deze installatieoptie is niets voor jou - gebruik de distributiekit van de ontwikkelaars.

6.8 Waar is SWAP? Ik kan niet zonder hem leven!

Is het waar? Oke dan:

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 Ik wil graag meteen een kant-en-klaar image downloaden met een geconfigureerd Wi-Fi-toegangspunt!

Het voorbereiden van een installateur “voor iedereen” zal enige tijd en moeite vergen. Als iemand dit (plotseling!) echt interessant en noodzakelijk vindt, schrijf ons dan, dan bedenken we iets.

Ik zal hiermee eindigen.

Ik wens iedereen veilig surfen en maximale controle over de infrastructuur!

Bron: www.habr.com

Voeg een reactie