Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun blua ĉapelo)

En la artikolo Raspberry Pi + CentOS = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun ruĝa ĉapelo) Mi parolis pri maniero igi Raspberry en sendratan alirpunkton uzante la mastruman sistemon CentOS. Kunvenante mian hejman enkursigilon laŭ ĉi tiu desegno, mi kontentigis mian krean egoon kaj ricevis trankvilon por kritika elemento de mia komforta infrastrukturo. Tamen, la sento de nekompleteco de la solvo kaj interna perfektismo hantis min: "neperfekta rezulto de laboro ne rajtas ekzisti." La penso, ke "la idealo povas kaj devas esti atingita" ne forlasis min eĉ unu minuton.

Kaj tiam iun tagon, en unu el la temaj forumoj, mi renkontis diskuton pri la bitprofundo de ekzistantaj operaciumoj por Raspberry (aarch64 vs armhfp): kiu 64-bita OS povas, principe, adapti kaj labori sur Raspberry versio 3. ++?

Mia amata CentOS por la ARM-arkitekturo de "Userland" ne hastis ŝanĝi al la plej nova versio de la kerno kaj iĝi 64-bit. Kaj la deponejo de EPEL, konektita de Dio scias kie sen cifereca subskribo, estis koŝmaro en mia maltrankvila dormo...

Parolante kiel adepto de RPM-bazitaj distribuoj, mi surprizis trovi, ke la OS por Raspberry estis tute forgesita en diskutoj. Fedora! Kaj ĉi tio malgraŭ la fakto, ke ĝia liberigo
de la versio 28 ĝi oficiale subtenas Raspberry Pi 3B+ en 64-bita versio!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun blua ĉapelo)
En ĉi tiu artikolo mi parolos pri la instala metodo Fedora (aarch64) sur Frambo Pi 3 Modelo B + в ekstra minimuma rendimento. Mi mallonge pritraktos la funkciojn de altigi Wi-Fian alirpunkton, identigitan kiel rezulto de prova funkciado de mia antaŭa agordo sur CentOS 7.

0. Kion vi bezonos

Все тоже самое, что перечислено в предыдущей статье:

  • Raspberry Pi 3 Modelo B+;
  • microSD >= 4GB (poste vi povas "transloki" la sistemon al 2GB-disko);
  • Laborstacio kun Linukso kaj leganto de kartoj microSD;
  • Kablita retkonektebleco inter la Raspberry kaj Linuksa laborstacio (en ĉi tiu kazo, neniu kroma monitoro kaj klavaro estos bezonataj por aranĝo), Interreta aliro de ambaŭ aparatoj;
  • Altnivela kapablo en Linukso (por scii kaj ne timi: disigita, dd и mkfs).

Simila al ripeta lfs-konstruante vian propran Linukso, la distribua bildo Fedora estos uzata, kaj tiam surbaze de ĝi, minimuma sistemo estos kreita (sen "kompilo el fonto").

1. Instalado de la originala distribuo

Koordinatoj de la kruda bildo de la sistemo en la Interreto:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Post registri ĝin sur microSD kaj antaŭ uzi ĝin, vi devas:

  1. Vastigu la "radikon" de la dosiersistemo (3a subdisko, 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. Malebligu SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Forigu la Komencan Agordan Sorĉiston:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Permesu aliron per 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
    

Nun vi povas elŝuti la "frambon" de microSD kaj konekti al ĝi per la reto.

Malvarma ekfunkciigo daŭras ĉirkaŭ unu kaj duono minutoj. TTX de la sistemo post ŝarĝo:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun blua ĉapelo)

rpm -qa | wc -l
444

2. Kunmeti minimuman sistemon

Bedaŭrinde, la "minimuma distribuo" de la programistoj montriĝas malproksime de la plej modesta en konsumo de rimedoj. La sistema bildo povas esti eĉ pli malgranda.

Por fari tion, vi devas ruli la skripton sur 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

Post rulado de la skripto, subdosierujo estos kreita en la nuna dosierujo ($P) kun la enhavo de la radiko de la nova minimuma OS-eldono. Vi povas malŝalti la Raspberry kaj resendi la microSD al la Linuksa laborstacio.

3. Instalado de minimuma sistemo

Instalado resumas al kopiado de la minimumaj OS "bildaj" dosieroj (akiritaj en la antaŭa paŝo) sur speciale pretan microSD en la taŭgajn dosierujojn.

2GB-karto kaj du sekcioj sur ĝi sufiĉas:

  1. / boot / efi - EFI+FAT32, ekkuro, 100MB;
  2. / (radiko) - EXT4, tuta restanta spaco.

Post prepari la microSD kaj kopii dosierojn al ĝi, vi devas:

  • починить загрузку ОС;
  • ŝalti la reton;
  • agordi aliron per ssh.

La ekfunkciigo estas anstataŭigi la UUID de la sekcioj en la dosieroj:

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

kaj parametro konservita_eniro= en la lasta dosiero

En dosiero:

microSD:/etc/fstab

vi povas trovi la malnovajn valorojn, kaj la nunajn (ĝisdatajn) valorojn en la komanda eligo:

blkid | grep mmcblk | sort

Post anstataŭigo, vi ankaŭ devus korekti la enhavon fstab sur microSD tiel ke la muntaj punktoj korespondas al la novaj dispartigaj UUIDoj.

Reta funkcieco kiam vi unue ŝaltas la Frambon, povas esti atingita per malgranda "lambastono" - kreu ligilon (skeme):

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

kaj dosiero:

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

Post sukcesa elŝuto, ordigu la lanĉon systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superuzanta aliro per ssh estas agordita simile al paŝo 1.

Farinte ĉion zorge kaj sen eraroj, vi povas movi la microSD en la "frambon" kaj komenci labori kun 64-bita OS en ekstra minimuma versio.

4. Preta sistemo

La "bildo" de la finita sistemo, kreita laŭ la supraj instrukcioj, povas esti elŝutita de la ligilo:
Fedora-Tiny-31-5.5.7-200.aarch64

Ĉi tio estos arkivo enhavanta du dosierojn: la instala skripto kaj TGZ kun OS-dosieroj. La arkivo devas esti malpakita sur Linuksa laborstacio, enmeti microSD (2GB-karto sufiĉas) kaj ruli la skripton kun parametro - la nomo de la aparato:

./install /dev/mmcblk0

Atentu!

Sen avertoj, la aparato estos formatita kaj la operaciumo estos instalita sur ĝi.

Post senerara ekzekuto de la skripto, la karto povas esti rearanĝita en la "frambo" kaj uzata: kapti per dhcp, pasvorto - "1".

La sistemo estas forigita de ĉiuj identigiloj kaj ŝlosiloj, tial ĉiu nova instalaĵo estas unika.

Mi ripetas denove, la sistemo - minimuma! Tial, ne maltrankviliĝu: DNF estas disponebla, por ke ĝi funkciu, vi devos "inventi" la ĝustan /etc/resolv.conf.

La malvarma komenco de la Frambo daŭras ĉirkaŭ 40 sekundojn. TTX de la sistemo post ŝarĝo:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun blua ĉapelo)

rpm -qa | wc -l
191

5. Wifi

Mi iom detenos pri la funkcioj de efektivigo de WiFi-alirpunkto. Por detaloj, vi povas raporti al mia antaŭa artikolo.

EPEL ne plu estas bezonata - ĉiuj pakaĵoj estas enhavitaj en la oficialaj deponejoj.

Verŝajne valorus rezigni dnsmasq, ĉar Fedora, male al CentOS, havas sufiĉe lastatempan systemd-networkd, kiu havas normalajn enkonstruitajn DHCP/DNS-servilojn. Sed la fakto estas, ke en RHEL8 programistoj rifuzis subteni la retan stakon per io ajn krom NM, ne inspiras fidon je la brila estonteco de la projekto (kanajloj). Resume, mi ne provis ĝin.

Plue, la nunaj ŝoforoj por la enkonstruita WiFi-adaptilo ne povas esti "ŝtelitaj" de la Raspbian-distribuo, sed elŝutitaj rekte de GitHub.

Jen kiel aspektas la firmware-dosieroj de Broadcom sur mia Raspberry (skeme):

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

Sen ili vi ne ricevos 5GHz/AC.

Pri la nombro kaj nomoj de interfacoj. Nun mi forte rekomendas al ĉiuj ne recurrir al la "servoj" de programaraj ŝaltiloj krom se nepre necese (ponto), kiuj enkondukas signifan ŝarĝon en la retan stakon kaj subigas vojigon. Se vi ne planas havi plurajn sendratajn adaptilojn, tiam vi devus uzi nur fizikajn interfacojn. Mi havas du Wi-Fi, do mi kombinas nur ilin en programaran ponton (kvankam vi povas fari sen tio rigardante la hostapd-agordon alie).

Kaj mi amas renomi interfacojn.

Por fari tion en Fedora vi devas krei simbolan ligon:

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

kaj tiam eblos doni signifoplenajn nomojn sen ĉirkaŭpiki udev, sed nur uzante systemd-networkd.

Ekzemple, jen kiel nomiĝas la retaj adaptiloj en mia enkursigilo:

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 - enkonstruita, ext - eksteraj (USB) WiFi-adaptiloj kunvenitaj en "ponton" lan;
  • wan — Ethernet-adaptilo en kiu la Interreto estas konektita.

Ĉu vi rimarkis? fq_kodo - vere bonega afero. Kune kun freŝa Linukso-kerno, ili faras verajn miraklojn en la sendrata gamo: furioza "torenta elŝuto" ne kondukos al subita malkresko de rapideco inter najbaroj. Eĉ hejma IP-televido funkcianta "super la aero" kun ŝarĝita kanalo ne "rompas" kaj tute ne "balbutiĝas"!

La demona servodosiero spertis etajn ŝanĝojn hostapd.

Ĝi nun aspektas jene (uzante la ekzemplon de enkonstruita adaptilo):

[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

Kaj la "magia" hostapd-int.conf por labori en 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]

Eta photoshop farita de mia Ericsson A1018s:

(Interreta konekto - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun blua ĉapelo)
Kaj finfine, malgranda Oftaj Demandoj.

6 Oftaj Demandoj

6.1 Kial fari Wifi-enkursigilon sur Raspberry?

Oni povus respondi simple, kiel "estas interese provi kaj ĉion ĉi."

Sed fakte, ŝajnas al mi, ke la temo estas sufiĉe serioza. En la epoko de la "sanga" Interreto, aĉeti enkursigilon en vendejo kaj resti ostaĝo de ĝia fabrikanto estas tre malgaja perspektivo. Multaj homoj jam komprenas, ke sidi kun CVE aŭ enkonstruita malantaŭa pordo ne eblas.

Kompreneble, vi povas migri al WRT-firmvaro de entuziasmuloj. Verŝajne estas pli da fido al ili, sed se vi ne volas dependi de ili, tiam simple uzu vian propran produkton. Ideale, plenrajta komputilo por ke ĉio en la mondo povas esti efektivigita sur ĝi. Koncerne enrutadon, kompreneble.

Tial, elekti "frambon" estas pure ekonomia movo: vera komputilo kaj samtempe malmultekosta. Kvankam, eble ankaŭ - kun iliaj "duobloj" interne.

6.2 Sed Raspberry estas "malalta enkursigilo": malrapida kaj kun unu Ethernet-haveno!

Kiel hejma Wifi-enkursigilo, la Raspberry estas pli ol kontentiga por mi. Pri aerrapideco mi jam parolis supre. Kaj estas nur unu Eterreto, nu, en simila produkto de Apple temas pri la sama!

Sed serioze, kompreneble mi ŝatus pli. Kaj malgraŭ tio, ke en mia hejmo ĉiuj aparatoj estas sendrate konektitaj, foje ankoraŭ necesas kupra konekto. Por tiaj kazoj, mi havas "poŝtelefonon" en stoko:

aparato - io tiaRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (aŭ frambo-enkursigilo kun blua ĉapelo)

6.3 Se ĉi tio estas enkursigilo, tiam nenio estas dirita pri "agordado" TCP/IP, ĉar ĉi tio estas grava!

Krom agordi la retan stakon (tcp_fastopen, YeAH, ktp.), ĉi tiu kaj la antaŭa artikolo ne kovras aliajn nuancojn, precipe la procezon de preparado de microSD por optimuma uzo (kvankam la instalilo provas formati la memorkarton en malfacila maniero). La procezo de plibonigo estas senfina, vi nur bezonas ĉesi ĝustatempe.

6.4 Kial Fedora?

Ĉar mi ŝatas! Fedora estas "ĉefa" sistemo por geeks, por kiuj ĉi tiu artikolo estas fakte celita. En la momento de la skribado, eble la sola OS, kiu por Raspberry en 64-bita versio estas oficiale subtenata de signifa stabo de programistoj (de kiuj mi ne povas atendi. kerno 5.6).

6.5 Ĉu Bluetooth funkcias? Kiel fartas la video/sono/GPIO?

Ne scias. La artikolo temas pri la minimuma instalado de la sistemo kaj ĝia posta uzo kiel Wi-Fi-enkursigilo.

6.6 Kial ĉiuj artikoloj pri CentOS/Fedora/RedHat komenciĝas per malŝalto de SELinux?

Ĉar la sistemo estas minimuma, ĝi eĉ ne havas fajroŝirmilon aŭ ilojn por agordi ĝin. Ĉiu, kiu bezonas ĝin, povas instali aldone ĉion, kion ili bezonas.

6.7 La sistemo ne povas esti uzata, la pasvorto ne estas ŝanĝita - sen passwd. Neniu ping, neniu nenio!

Ekzistas DNF. Aŭ ĉi tiu instala opcio ne estas por vi - uzu la distribuan ilaron de la programistoj.

6.8 Kie estas SWAP? Mi ne povas vivi sen li!

Правда? Ну, хорошо:

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 Mi ŝatus tuj elŝuti pretan bildon kun agordita WiFi-alirpunkto!

Prepari instalilon "por ĉiuj" postulos iom da tempo kaj peno. Se (subite!) iu vere trovas tion interesa kaj necesa, skribu al ni kaj ni elpensos ion.

На этом — закончу.

Mi deziras al ĉiuj sekuran surfadon kaj maksimuman kontrolon super la infrastrukturo!

fonto: www.habr.com

Aldoni komenton