I artiklen Jeg har fortalt om, hvordan man kan omdanne en "Raspberry Pi" til et trådløst adgangspunkt ved hjælp af operativsystemet CentOS. Ved at samle min hjemme-router efter sådan et diagram, tilfredsstillede jeg mit kreative ego og fik en følelse af ro over det kritisk vigtige element i min hyggelige infrastruktur. Men følelsen af ufuldstændighed i løsningen og min indre perfektionisme lod mig ikke i fred: "et ufuldkomment resultat har ikke ret til at eksistere." Tankerne om, at "idealet kan og skal opnås," forlod mig ikke et øjeblik.
En dag stødte jeg på et tema på et forum, hvor der blev diskuteret bitdybden af de nuværende operativsystemer til "Raspberry Pi" (aarch64 vs armhfp): hvilke 64-bit OS'er kan overhovedet passe ind og fungere på Raspberry version 3++?
Min yndlings CentOS til ARM-arkitektur fra "Userland" var ikke hurtig til at opgradere til den nyeste kernel og blive 64-bit. Og EPEL-repositoriet, tilknyttet Gud ved hvor uden digital signatur, var et mareridt i min urolige søvn...
Som tilhænger af RPM-baserede distributioner blev jeg overrasket over at opdage, at en helt glemt FedoraOS ikke blev nævnt i diskussionerne! Og det er på trods af at dens udgivelse

I denne artikel vil jeg fortælle om, hvordan man installerer Fedora (aarch64) og få en fungerende kommando. Raspberry Pi 3 Model B+ i i en ekstra minimal udførelse. Jeg vil kort gennemgå de særlige egenskaber ved oprettelsen af et Wi-Fi-adgangspunkt, som blev opdaget som følge af praktisk erfaring med min tidligere konfiguration på .
0. Hvad du har brug for
Det samme som nævnt i den forrige artikel:
- Raspberry Pi 3 Model B+;
- microSD >= 4GB (senere kan systemet "overføres" til et 2GB drev);
- En arbejdsstation med Linux og en microSD-kortlæser;
- Kablet netværk mellem "Raspberry Pi" og arbejdsstationen med Linux (i dette tilfælde er der ikke brug for ekstra monitor og tastatur til opsætning), internetadgang fra begge enheder;
- Avanceret færdighed i Linux (at vide og ikke være bange for: , og ).
Som i en iterativ -samling af eget Linux, vil distributionsbilledet Fedora blive brugt, og dernæst vil der blive oprettet et minimalt system (uden "kompilering fra kildekode").
1. Installation af den originale distribution
Koordinaterne til systemets rå billede på nettet:
Efter at have skrevet den til microSD og før brug skal der gøres følgende:
- Udvide «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 - Deaktivere SELinux
echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config - Fjerne Master for første opsætning:
find /mnt/3/etc/systemd/ -iname initial-setup.service -delete - Tillade 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 starte «malinen» fra microSD og oprette forbindelse til den over netværket.
Kold opstart tager omkring halvanden minut. Systemets ydeevne efter opstart:

rpm -qa | wc -l
444
2. Bygning af et minimalt system
Desværre er «minimal distribution» fra udviklerne ikke den mest sparsomme i ressourceforbrug. Systembilledet kan laves endnu mindre.
For at gøre dette skal der køres et script på «malinen»:
#!/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 scriptet er kørt, vil der blive oprettet en undermappe i den aktuelle katalog ($P) med indholdet af roden til den nye minimale udgave af OS. Du kan slukke «malinen» og sætte microSD tilbage i din Linux arbejdsstation.
3. Installation af det minimale system
Installationen består i at kopiere filerne fra det minimale «billede» af OS (fået fra det foregående trin) til en specielt forberedt microSD i de relevante kataloger.
Et 2GB kort med to partitioner er tilstrækkeligt:
- /boot/efi — EFI+FAT32, bootbar, 100MB;
- / (rod) — EXT4, alt det resterende plads.
Efter forberedelse af microSD og kopiering af filer til den, skal der gøres følgende:
- fikse OS-opstart;
- aktivere netværket;
- konfigurere ssh-adgang.
Reparation af opstarten involverer at ændre UUID'erne for partitionerne i filerne:
microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv
og parameteren saved_entry= i den sidste fil
I filen:
microSD:/etc/fstab
kan de gamle værdier findes, mens de aktuelle (gældende) er i outputtet fra kommandoen:
blkid | grep mmcblk | sort
Efter ændringen skal indholdet af fstab på microSD også rettes, så monteringspunkterne svarer til de nye UUID'er for partitionerne.
Netværksarbejdsevne ved første opstart af «malinen» kan opnås ved en lille «hurtigløsning» — oprette et link (skematisk):
ln -s /usr/lib/systemd/system/systemd-networkd.service
microSD:/etc/systemd/system/multi-user.target.wants
og filen:
mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF
Efter en vellykket opstart — bringe opstarten i orden :
systemctl disable systemd-networkd
systemctl enable systemd-networkd
Superbrugeradgang via ssh konfigureres på samme måde som punkt 1.
Når alt er gjort omhyggeligt og uden fejl, kan du tage microSD-kortet ud af 'malinchen' og begynde at arbejde med det 64-bit OS i ultra-minimalistisk form.
4. Det færdige system
‘Billedet’ af det færdige system, oprettet efter ovenstående instruktion, kan downloades via linket:
Dette vil være et arkiv, der indeholder to filer: installationsscript og TGZ med OS-filerne. Arkivet skal udpakkes på arbejdsstationen Linux, indsætte microSD (et 2GB kort er tilstrækkeligt) og køre scriptet med parameteren — enhedsnavnet:
.\/install \/dev\/mmcblk0
Vær opmærksom!
Uden nogen advarsler vil enheden blive formateret, og operativsystemet bliver installeret på den.
Efter at scriptet har kørt uden fejl, kan kortet tages ud og sættes i 'malinchen', så kan du bruge det: modtage via dhcp, adgangskode — ‘1’.
Systemet er renset for alle ID'er og nøgler, hvilket gør hver ny installation unik.
Jeg gentager igen, systemet — minimalistisk! Så vær ikke bange: DNF er til stede, og for dets funktionalitet skal der ‘komponeres’ det rigtige .
Kold opstart af 'malinchen' tager cirka 40 sekunder. Systemets tekniske specifikationer efter opstart:

rpm -qa | wc -l
191
5. Wi-Fi
Lad mig kort berøre detaljerne ved implementeringen af Wi-Fi-adgangspunktet. Du kan henvise til min tidligere .
EPEL er ikke længere nødvendig — alle pakker findes i de officielle repositories.
Det ville nok have været bedre at undgå , da Fedora, i modsætning til CentOS, har en tilstrækkelig ny systemd-networkd, hvor der er normale indbyggede DHCP/DNS-servere. Men det faktum, at udviklerne i RHEL8 , giver ikke meget tillid til projektets lysere fremtid (narhvaler). Kort sagt, jeg har ikke prøvet det.
Desuden kan du hente de relevante drivere til det indbyggede Wi-Fi-adapter direkte fra .
Sådan ser Broadcom-firmwarefilerne ud på min 'malinchen' (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 vil 5GHz/AC ikke fungere.
Angående antallet og navnene på interface. Nu anbefaler jeg stærkt alle at undgå‘ tjenester’ fra software-switches uden særlige behov.), som påfører netværksstakken en betydelig belastning og undertrykker routing. Hvis der ikke planlægges flere trådløse adaptere, skal der udelukkende benyttes fysiske grænseflader. Jeg har to Wi-Fi, så jeg kombinerer kun dem i en softwarebro (selvom det også kan klares uden dette ved at se anderledes på konfigurationen af hostapd).
Og jeg kan godt lide 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å kan du give betydningsfulde navne uden at rode rundt i , men kun ved hjælp af systemd-networkd.
Sådan hedder netværksadapterne i min router:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: wan: mtu 1500 qdisc fq_codel state UP group default qlen 1000
3: lan: mtu 1500 qdisc noqueue state UP group default qlen 1000
4: int: mtu 1500 qdisc fq_codel master lan state UP group default qlen 1000
5: ext: mtu 1500 qdisc mq master lan state UP group default qlen 1000
- int — indbygget, ext — eksterne (USB) Wi-Fi-adaptere, samlet i en "bro" lan;
- wan — Ethernet-adapter, som er tilsluttet internettet.
Læg mærke til det? — er virkelig en fantastisk ting. Sammen med det nyeste Linux-kerne gør det ægte mirakler i det trådløse bånd: en intens "torrent-download" vil ikke pludselig medføre en hastighedsnedgang for naboerne. Selv det hjemlige IP-TV, der "fungerer over luften", går ikke "i stykker" eller "hakker" overhovedet, selv ved en belastet kanal!
Servicefilen for dæmonen har fået små ændringer .
Det ser nu sådan ud (med indbygget adapter som eksempel):
[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]
Lidt "photoshopping" lavet med min "Ericsson A1018s":
(forbindelse til internettet - 100 Mbit/s)
Og til sidst en lille FAQ.
6. FAQ
6.1 Hvorfor lave en Wi-Fi-router på Raspberry?
Man kunne blot svare, at «det er spændende at prøve og sådan noget».
Men faktisk virker emnet ret seriøst for mig. I en tid med «blodige» internettet er det en temmelig trist perspektiv at købe en router i butikken og blive en fange af producenten. Mange forstår allerede, at man ikke kan sidde med en CVE- eller indbygget bagdør.
Selvfølgelig kan man migrere til WRT-firmware fra entusiaster. Tilliden til dem er nok større, men hvis man ikke ønsker at være afhængig af dem, så kun – sit eget produkt. Ideelt set – en fuld computer for muligheden for at realisere alt muligt. Hvad angår routing, selvfølgelig.
Derfor er valget af «malinen» ren økonomisk fornuft: en ægte computer og samtidig – overkommelig. Selvom, muligvis også – med sine egne «tvivlsomme» aspekter.
6.2 Men Raspberry er en «billig router»: langsom og med én Ethernet-port!
Som hjemme-Wi-Fi-router tilfredsstiller «malinen» mig mere end nok. Om hastigheden «i luften» har jeg allerede fortalt ovenfor. Og med kun én Ethernet-port, nå men i et lignende produkt fra Apple er det omtrent det samme!
Og hvis vi skal være seriøse, så ville man selvfølgelig gerne have mere. Og på trods af at alle mine enheder er forbundet trådløst, er det nogle gange nødvendigt med en kablet forbindelse. Til sådanne tilfælde har jeg en «mobil hub»:
device – sådan noget
6.3 Hvis det er en router, så er der ikke sagt noget om «tuning» af TCP/IP, for det er vigtigt!
Udover konfigurationen af netværksstakken (tcp_fastopen, YeAH osv.), er der ikke blevet afdækket andre nuancer i denne og den tidligere artikel, især processen med at forberede microSD til optimal brug (selv om installationsprogrammet forsøger at formatere hukommelseskortet på en smart måde). Forbedringsprocessen er uendelig, man skal bare stoppe i tide.
6.4 Hvorfor Fedora?
Fordi jeg kan lide det! Fedora er «mainstream» - et system for nørder, som denne artikel er tiltænkt. På tidspunktet for skrivelsen, er det muligvis den eneste OS, der officielt understøttes af et stort team af udviklere i 64-bit version for Raspberry (som jeg på ingen måde har set) ).
6.5 Fungerer Bluetooth? Hvordan med video/lyd/GPIO?
Jeg ved det ikke. Artiklen handler om den minimale installation af systemet og dets efterfølgende brug som Wi-Fi-router.
6.6 Hvorfor starter alle artikler om CentOS/Fedora/RedHat med at deaktivere SELinux?
Fordi systemet er minimalt, der er ikke engang en firewall eller værktøjer til at konfigurere det. De, der har brug for det, kan installere alt nødvendigt separat.
6.7 Det er umuligt at bruge systemet, man kan ikke ændre password - der er ingen passwd. Der er ingen ping, der er intet!
Der er . Eller hvis denne installationsmetode ikke er for dig - brug distributionsversionen fra udviklerne.
6.8 Jamen, hvor er SWAP? Jeg kan ikke leve uden det!
Virkelig? Nå, godt:
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 ville gerne downloade et færdigt billede med den konfigurerede Wi-Fi-adgangspunkt!
For at forberede en installer 'til alle' kræves der en vis mængde tid og indsats. Hvis (pludselig!) nogen finder det virkelig interessant og nødvendigt - skriv, så finder vi på noget.
Hermed vil jeg afslutte.
Jeg ønsker alle sikker surfing og maksimal kontrol over infrastrukturen!
Kilde: habr.com
