Raspberry Pi + Fedora (aarch64) = Wi-Fi tīklājs (vai aveņu maršrutētājs ar zilu cepuri)

Rakstā Raspberry Pi + CentOS = Wi-Fi tīklājs (vai aveņu maršrutētājs ar sarkanu cepuri) Es runāju par veidu, kā pārvērst Raspberry par bezvadu piekļuves punktu, izmantojot CentOS operētājsistēmu. Saliekot savu mājas maršrutētāju pēc šī zīmējuma, es apmierināju savu radošo ego un saņēmu sirdsmieru stimulu par svarīgu manas mājīgās infrastruktūras elementu. Taču risinājuma nepabeigtības sajūta un iekšējais perfekcionisms mani vajā: "nepilnīgam darba rezultātam nav tiesību pastāvēt." Doma, ka “ideālu var un vajag sasniegt” mani nepameta ne uz minūti.

Un tad kādu dienu vienā no tematiskajiem forumiem es saskāros ar diskusiju par Raspberry esošo operētājsistēmu bitu dziļumu (aarch64 vs armhfp): kura 64 bitu operētājsistēma principā var būt piemērota un darboties Raspberry 3. ++?

Mans mīļais CentOS ARM arhitektūrai no “Userland” nesteidzās pārslēgties uz jaunāko kodola versiju un pārvērsties par 64 bitu. Un EPEL krātuve, kas savienota no Dievs zina, kur bez ciparparaksta, manā nemierīgajā miegā bija murgs...

Runājot kā uz RPM balstītu izplatīšanu piekritējs, es biju pārsteigts, atklājot, ka Raspberry operētājsistēma diskusijās tika pilnībā aizmirsta. Fedora! Un tas neskatoties uz to, ka tā izlaišana
no versijas 28 tas oficiāli atbalsta Raspberry Pi 3B+ 64 bitu versijā!

Raspberry Pi + Fedora (aarch64) = Wi-Fi tīklājs (vai aveņu maršrutētājs ar zilu cepuri)
Šajā rakstā es runāšu par instalēšanas metodi Fedora (aarch64) par Aveņu Pi 3 B + modelis в īpaši minimāla veiktspēja. Es īsi pakavēšos pie Wi-Fi piekļuves punkta paaugstināšanas funkcijām, kas tika identificētas manas iepriekšējās konfigurācijas izmēģinājuma darbības rezultātā 7 CentOS.

0. Kas jums būs nepieciešams

Viss ir tāds pats kā iepriekšējā rakstā:

  • Raspberry Pi 3 modelis B+;
  • microSD >= 4GB (vēlāk varēsiet “pārnest” sistēmu uz 2GB disku);
  • Darbstacija ar Linux un microSD karšu lasītāju;
  • Vadu tīkla savienojums starp Raspberry un Linux darbstaciju (šajā gadījumā iestatīšanai nebūs nepieciešams papildu monitors un tastatūra), piekļuve internetam no abām ierīcēm;
  • Padziļinātas Linux prasmes (zināt un nebaidīties: šķīrās, dd и mkfs).

Līdzīgi iteratīvajam LFS-veidojot savu Linux, tiks izmantots Fedora izplatīšanas attēls, un pēc tam, pamatojoties uz to, tiks izveidota minimāla sistēma (bez “kompilēšanas no avota”).

1. Sākotnējā izplatīšanas instalēšana

Sistēmas neapstrādātā attēla koordinātas internetā:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Pēc ierakstīšanas microSD kartē un pirms lietošanas, jums ir nepieciešams:

  1. Paplašiniet failu sistēmas “sakni” (3. nodalījums, 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. Atspējot SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Noņemiet sākotnējās iestatīšanas vedni:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Atļaut piekļuvi, izmantojot 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
    

Tagad jūs varat lejupielādēt “aveņu” no microSD un izveidot savienojumu ar to, izmantojot tīklu.

Aukstā palaišana aizņem apmēram pusotru minūti. Sistēmas TTX pēc ielādes:

Raspberry Pi + Fedora (aarch64) = Wi-Fi tīklājs (vai aveņu maršrutētājs ar zilu cepuri)

rpm -qa | wc -l
444

2. Minimālās sistēmas salikšana

Diemžēl izstrādātāju “minimālais sadalījums” ir tālu no pieticīgākā resursu patēriņa ziņā. Sistēmas attēlu var padarīt vēl mazāku.

Lai to izdarītu, Malinka ir jāpalaiž skripts:

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

Pēc skripta palaišanas pašreizējā direktorijā tiks izveidots apakšdirektorijs ($P) ar jaunā minimālā OS izdevuma saknes saturu. Varat izslēgt Raspberry un atgriezt microSD karti Linux darbstacijā.

3. Minimālās sistēmas uzstādīšana

Instalēšana ir saistīta ar minimālo OS “attēla” failu (iegūto iepriekšējā solī) kopēšanu uz īpaši sagatavotu microSD atbilstošajos direktorijos.

Pietiek ar 2 GB karti un diviem nodalījumiem tajā:

  1. / boot / efi - EFI+FAT32, sāknēšana, 100 MB;
  2. / (sakne) - EXT4, visa atlikušā vieta.

Pēc microSD sagatavošanas un failu kopēšanas tajā, jums ir nepieciešams:

  • labot OS sāknēšanu;
  • ieslēdziet tīklu;
  • konfigurēt piekļuvi, izmantojot ssh.

Sāknēšanas labojums ir aizstāt failu sadaļu UUID:

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

un parametrs saved_entry= pēdējā failā

Failā:

microSD:/etc/fstab

komandas izvadē varat atrast vecās vērtības un pašreizējās (jaunākās) vērtības:

blkid | grep mmcblk | sort

Pēc nomaiņas jums vajadzētu arī izlabot saturu fstab microSD, lai pievienošanas punkti atbilstu jaunajiem nodalījumu UUID.

Tīkla funkcionalitāti, pirmo reizi ieslēdzot Raspberry, var sasniegt ar nelielu “kruķi” - izveidojiet saiti (shēmiski):

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

un fails:

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

Pēc veiksmīgas lejupielādes sakārtojiet palaišanu systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Superlietotāja piekļuve, izmantojot ssh, ir konfigurēta līdzīgi kā 1. darbībā.

Paveicot visu rūpīgi un bez kļūdām, varat pārvietot microSD uz "aveņu" un sākt strādāt ar 64 bitu OS papildu minimālajā versijā.

4. Gatava sistēma

Gatavās sistēmas “attēlu”, kas izveidots saskaņā ar iepriekš sniegtajiem norādījumiem, var lejupielādēt no saites:
Fedora-Tiny-31-5.5.7-200.aarch64

Šis būs arhīvs, kurā būs divi faili: instalācijas skripts un TGZ ar OS failiem. Arhīvs ir jāizpako Linux darbstacijā, jāievieto microSD (pietiek ar 2GB karti) un jāpalaiž skripts ar parametru - ierīces nosaukumu:

./install /dev/mmcblk0

Esi uzmanīgs!

Bez brīdinājumiem ierīce tiks formatēta un tajā tiks instalēta operētājsistēma.

Pēc skripta izpildes bez kļūdām karti var pārkārtot "avenē" un izmantot: noķert caur dhcp, parole - "1".

Sistēma ir atbrīvota no visiem ID un atslēgām, tāpēc katra jauna instalācija ir unikāla.

Es atkārtoju vēlreiz, sistēma - minimāls! Tāpēc neuztraucieties: DNF ir pieejams, lai tas darbotos, jums būs “jāizgudro” pareizais. / Etc / resolv.conf.

Raspberry aukstā palaišana aizņem apmēram 40 sekundes. Sistēmas TTX pēc ielādes:

Raspberry Pi + Fedora (aarch64) = Wi-Fi tīklājs (vai aveņu maršrutētājs ar zilu cepuri)

rpm -qa | wc -l
191

5. Bezvadu internets

Es nedaudz pakavēšos pie Wi-Fi piekļuves punkta ieviešanas funkcijām. Lai iegūtu sīkāku informāciju, varat skatīt manu iepriekšējo raksts.

EPEL vairs nav vajadzīgs - visas pakotnes atrodas oficiālajos repozitorijos.

Droši vien būtu vērts atteikties dnsmasq, jo Fedora, atšķirībā no CentOS, ir diezgan nesens systemd-networkd, kurā ir normāli iebūvēti DHCP/DNS serveri. Bet fakts ir tāds, ka RHEL8 izstrādātājiem atteicās atbalstīt tīkla steku ar jebko citu, izņemot NM, nevieš pārliecību par projekta gaišo nākotni (neliešiem). Īsāk sakot, neesmu mēģinājis.

Turklāt pašreizējos iebūvētā Wi-Fi adaptera draiverus nevar “nozagt” no Raspbian izplatīšanas, bet gan lejupielādēt tieši no GitHub.

Šādi izskatās Broadcom programmaparatūras faili manā Raspberry (shēmiski):

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

Bez tiem jūs nesaņemsit 5 GHz/AC.

Par saskarņu skaitu un nosaukumiem. Tagad es stingri iesaku visiem neizmantot programmatūras slēdžu “pakalpojumus”, ja vien tas nav absolūti nepieciešams (tilts), kas rada ievērojamu slodzi tīkla stekam un nomāc maršrutēšanu. Ja neplānojat izmantot vairākus bezvadu adapterus, izmantojiet tikai fiziskās saskarnes. Man ir divi Wi-Fi, tāpēc es apvienoju tikai tos programmatūras tiltā (lai gan jūs varat iztikt bez tā, citādi aplūkojot hostapd iestatījumus).

Un man patīk pārdēvēt saskarnes.

Lai to izdarītu programmā Fedora, jums ir jāizveido simboliska saite:

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

un tad varēs jēdzīgus vārdus dot bez bakstīšanās udev, bet tikai izmantojot systemd-networkd.

Piemēram, šādi tiek saukti tīkla adapteri manā maršrutētājā:

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 - iebūvēts, ext — ārējie (USB) Wi-Fi adapteri, kas samontēti “tiltā” lan;
  • bāls — Ethernet adapteris, kuram ir pievienots internets.

Vai pamanījāt? fq_code - tiešām forša lieta. Kopā ar jaunu Linux kodolu tie rada īstus brīnumus bezvadu diapazonā: sīva "torrent lejupielāde" neizraisīs pēkšņu ātruma samazināšanos kaimiņu vidū. Pat mājas IP-TV, kas darbojas "pa ēterā" ar ielādētu kanālu, "nesadalās" un vispār "nestostās"!

Dēmona pakalpojuma failā ir veiktas nelielas izmaiņas hostapd.

Tagad tas izskatās šādi (izmantojot iebūvētā adaptera piemēru):

[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

Un “maģiskais” hostapd-int.conf darbam ar 5 GHz/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]

Neliels fotošops no maniem Ericsson A1018s:

(Interneta savienojums - 100Mbit/sek)Raspberry Pi + Fedora (aarch64) = Wi-Fi tīklājs (vai aveņu maršrutētājs ar zilu cepuri)
Un visbeidzot neliels FAQ.

6. Bieži uzdotie jautājumi

6.1 Kāpēc izveidot Wi-Fi maršrutētāju vietnē Raspberry?

Varētu atbildēt vienkārši, piemēram, "ir interesanti izmēģināt un viss."

Bet patiesībā man šķiet, ka tēma ir diezgan nopietna. “Asiņainā” interneta laikmetā maršrutētāja iegāde veikalā un tā ražotāja ķīlnieka palikšana ir ļoti drūma perspektīva. Daudzi jau saprot, ka sēdēt ar CVE vai iebūvētām aizmugures durvīm nav iespējams.

Protams, jūs varat migrēt uz WRT programmaparatūru no entuziastiem. Iespējams, ka viņiem ir lielāka uzticība, taču, ja nevēlaties no viņiem paļauties, izmantojiet tikai savu produktu. Ideālā gadījumā pilnvērtīgs dators, lai tajā varētu realizēt visu pasaulē. Protams, maršrutēšanas ziņā.

Tāpēc “aveņu” izvēle ir tīri ekonomisks solis: īsts dators un tajā pašā laikā lēts. Lai gan, iespējams, arī - ar saviem “dubultiem” iekšā.

6.2 Bet Raspberry ir “zems maršrutētājs”: lēns un ar vienu Ethernet portu!

Kā mājas Wi-Fi maršrutētājs Raspberry man ir vairāk nekā apmierinošs. Iepriekš jau runāju par gaisa ātrumu. Un ir tikai viens Ethernet, labi, līdzīgā Apple produktā tas ir aptuveni vienāds!

Bet ja nopietni, protams, gribētos vairāk. Un, neskatoties uz to, ka manā mājsaimniecībā visas ierīces ir savienotas bezvadu režīmā, dažkārt joprojām ir nepieciešams vara savienojums. Šādiem gadījumiem man ir pieejams “mobilais centrmezgls”:

ierīce - kaut kas līdzīgs šimRaspberry Pi + Fedora (aarch64) = Wi-Fi tīklājs (vai aveņu maršrutētājs ar zilu cepuri)

6.3 Ja tas ir maršrutētājs, tad nekas nav teikts par TCP/IP “noskaņošanu”, jo tas ir svarīgi!

Papildus tīkla steka iestatīšanai (tcp_fastopen, YeAH utt.) šis un iepriekšējais raksts neaptver citas nianses, jo īpaši microSD sagatavošanas procesu optimālai lietošanai (lai gan instalētājs mēģina formatēt atmiņas karti sarežģīts veids). Uzlabošanas process ir bezgalīgs, jums vienkārši jāapstājas laikā.

6.4 Kāpēc Fedora?

Tapec ka man patik! Fedora ir “mainstream” sistēma dīķiem, kuriem šis raksts patiesībā ir paredzēts. Rakstīšanas laikā, iespējams, vienīgā OS, kuru Raspberry 64 bitu versijā oficiāli atbalsta ievērojams izstrādātāju personāls (no kuriem es nevaru sagaidīt kodols 5.6).

6.5 Vai Bluetooth darbojas? Kā ir ar video/skaņu/GPIO?

Nezinu. Raksts ir par sistēmas minimālo uzstādīšanu un turpmāko izmantošanu kā Wi-Fi maršrutētāju.

6.6. Kāpēc visi raksti par CentOS/Fedora/RedHat sākas ar SELinux atspējošanu?

Tā kā sistēma ir minimāla, tai pat nav ugunsmūra vai utilītu tās iestatīšanai. Ikviens, kam tas ir nepieciešams, var papildus uzstādīt visu nepieciešamo.

6.7 Sistēmu nevar izmantot, paroli nevar mainīt - no passwd. Nav ping, nav nekā!

Ir DNF. Vai arī šī instalēšanas opcija nav paredzēta jums - izmantojiet izstrādātāju izplatīšanas komplektu.

6.8 Kur ir SWAP? Es nevaru dzīvot bez viņa!

Tā ir patiesība? Tad labi:

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 Vēlos nekavējoties lejupielādēt gatavu attēlu ar konfigurētu Wi-Fi piekļuves punktu!

Lai sagatavotu uzstādītāju “visiem”, būs vajadzīgs zināms laiks un pūles. Ja (pēkšņi!) kādam tas tiešām šķiet interesants un vajadzīgs, rakstiet mums un mēs kaut ko izdomāsim.

Es pabeigšu ar šo.

Novēlu visiem drošu sērfošanu un maksimālu kontroli pār infrastruktūru!

Avots: www.habr.com

Pievieno komentāru