Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ose ruter raspberry me një kapelë blu)

Në artikull Raspberry Pi + CentOS = Wi-Fi Hotspot (ose ruter raspberry me një kapele të kuqe) Unë fola për një mënyrë për ta kthyer një Raspberry në një pikë aksesi me valë duke përdorur sistemin operativ CentOS. Duke montuar ruterin tim të shtëpisë sipas këtij vizatimi, kënaqa egon time krijuese dhe mora një paqe mendore për një element kritik të infrastrukturës sime komode. Sidoqoftë, ndjenja e paplotësimit të zgjidhjes dhe perfeksionizmit të brendshëm më përndiqte: "një rezultat i papërsosur i punës nuk ka të drejtë të ekzistojë". Mendimi se “ideali mund dhe duhet të arrihet” nuk më la asnjë minutë.

Dhe pastaj një ditë, në një nga forumet tematike, hasa në një diskutim në lidhje me thellësinë bit të sistemeve operative ekzistuese për Raspberry (aarch64 vs armhfp): cili OS 64-bit, në parim, mund të përshtatet dhe të funksionojë në versionin 3 të Raspberry ++?

CentOS-i im i dashur për arkitekturën ARM nga "Userland" nuk po nxitonte të kalonte në versionin më të fundit të kernelit dhe të kthehej në 64-bit. Dhe depoja EPEL, e lidhur nga Zoti e di ku pa një nënshkrim dixhital, ishte një makth në gjumin tim të shqetësuar...

Duke folur si aderues i shpërndarjeve të bazuara në RPM, u befasova kur zbulova se OS për Raspberry ishte harruar plotësisht në diskutime Fedora! Dhe kjo përkundër faktit se lirimi i saj
nga versioni 28 ai zyrtarisht mbështet Raspberry Pi 3B+ në versionin 64-bit!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ose ruter raspberry me një kapelë blu)
Në këtë artikull do të flas për metodën e instalimit Fedora (aarch64) mbi Raspberry Pi 3 Model B + в performancë shtesë minimale. Do të ndalem shkurtimisht në veçoritë e ngritjes së një pike aksesi Wi-Fi, të identifikuara si rezultat i funksionimit provë të konfigurimit tim të mëparshëm në CentOS 7.

0. Çfarë do t'ju duhet

Gjithçka është e njëjtë me atë të renditur në artikullin e mëparshëm:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4 GB (më vonë mund ta "transferoni" sistemin në një disk 2 GB);
  • Stacioni i punës me Linux dhe lexues kartash microSD;
  • Lidhja e rrjetit me tel midis Raspberry dhe një stacioni pune Linux (në këtë rast, nuk do të nevojiten monitor dhe tastierë shtesë për konfigurim), akses në internet nga të dyja pajisjet;
  • Aftësi të avancuara në Linux (të dish dhe të mos kesh frikë: i ndarë, dd и MFSK).

Ngjashëm me përsëritësin AFP-duke ndërtuar Linux-in tuaj, do të përdoret imazhi i shpërndarjes së Fedora-s dhe më pas në bazë të tij do të krijohet një sistem minimal (pa "përpilim nga burimi").

1. Instalimi i shpërndarjes origjinale

Koordinatat e imazhit të papërpunuar të sistemit në internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Pasi ta regjistroni në microSD dhe përpara se ta përdorni, duhet:

  1. Zgjero "rrënjën" e sistemit të skedarëve (ndarja e tretë, ext3)
    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. Çaktivizo Selinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Hiqni magjistarin fillestar të konfigurimit:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Lejo qasjen nëpërmjet 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
    

Tani mund ta shkarkoni "mjedrën" nga microSD dhe të lidheni me të përmes rrjetit.

Një fillim i ftohtë zgjat rreth një minutë e gjysmë. TTX e sistemit pas ngarkimit:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ose ruter raspberry me një kapelë blu)

rpm -qa | wc -l
444

2. Montimi i një sistemi minimal

Fatkeqësisht, "shpërndarja minimale" nga zhvilluesit rezulton të jetë larg nga ajo më modeste në konsumin e burimeve. Imazhi i sistemit mund të bëhet edhe më i vogël.

Për ta bërë këtë, duhet të ekzekutoni skenarin në 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

Pas ekzekutimit të skriptit, do të krijohet një nëndrejtori në drejtorinë aktuale ($P) me përmbajtjen e rrënjës së edicionit të ri minimal të OS. Mund të fikni Raspberry dhe ta ktheni microSD në stacionin e punës Linux.

3. Instalimi i një sistemi minimal

Instalimi zbret në kopjimin e skedarëve minimalë të "imazhit" të OS (të marra në hapin e mëparshëm) në një microSD të përgatitur posaçërisht në drejtoritë e duhura.

Një kartë 2 GB dhe dy ndarje në të janë të mjaftueshme:

  1. / boot / efi - EFI+FAT32, boot, 100MB;
  2. / (rrënja) - EXT4, e gjithë hapësira e mbetur.

Pas përgatitjes së microSD dhe kopjimit të skedarëve në të, duhet të:

  • rregulloni nisjen e OS;
  • aktivizoni rrjetin;
  • konfiguroni aksesin përmes ssh.

Rregullimi i nisjes është të zëvendësojë UUID-në e seksioneve në skedarë:

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

dhe parametri hyrja e ruajtur= në dosjen e fundit

Në skedar:

microSD:/etc/fstab

mund të gjeni vlerat e vjetra dhe vlerat aktuale (të përditësuara) në daljen e komandës:

blkid | grep mmcblk | sort

Pas zëvendësimit, duhet të korrigjoni gjithashtu përmbajtjen fstab në microSD në mënyrë që pikat e montimit të korrespondojnë me UUID-të e reja të ndarjes.

Funksionaliteti i rrjetit kur ndizni për herë të parë Raspberry mund të arrihet me një "paterica" ​​të vogël - krijoni një lidhje (në mënyrë skematike):

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

dhe skedari:

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

Pas një shkarkimi të suksesshëm, rregulloni nisjen systemd-networked:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Qasja e superpërdoruesit nëpërmjet ssh është konfiguruar në mënyrë të ngjashme me hapin 1.

Pasi të keni bërë gjithçka me kujdes dhe pa gabime, mund ta zhvendosni microSD në "mjedër" dhe të filloni të punoni me një OS 64-bit në një version ekstra minimal.

4. Sistemi gati

"Imazhi" i sistemit të përfunduar, i krijuar sipas udhëzimeve të mësipërme, mund të shkarkohet nga lidhja:
Fedora-Tiny-31-5.5.7-200.aarch64

Ky do të jetë një arkiv që përmban dy skedarë: skriptin e instalimit dhe TGZ me skedarë OS. Arkivi duhet të shpaketohet në një stacion pune Linux, të futni një microSD (mjafton një kartë 2 GB) dhe të ekzekutoni skriptin me një parametër - emrin e pajisjes:

./install /dev/mmcblk0

Kini kujdes!

Pa asnjë paralajmërim, pajisja do të formatohet dhe sistemi operativ do të instalohet në të.

Pas ekzekutimit pa gabime të skenarit, karta mund të riorganizohet në "mjedër" dhe të përdoret: kapni përmes dhcp, fjalëkalimi - "1".

Sistemi pastrohet nga të gjitha ID-të dhe çelësat, prandaj çdo instalim i ri është unik.

E përsëris edhe një herë, sistemi - minimale! Prandaj, mos u shqetësoni: DNF është në dispozicion, që të funksionojë do të duhet të "shpikni" atë të duhurin. /etc/resolv.conf.

Fillimi i ftohtë i Raspberry zgjat rreth 40 sekonda. TTX e sistemit pas ngarkimit:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ose ruter raspberry me një kapelë blu)

rpm -qa | wc -l
191

5. WiFi

Do të ndalem pak në veçoritë e zbatimit të një pike aksesi Wi-Fi. Për detaje, mund t'i referoheni të mëparshmes sime artikull.

EPEL nuk është më i nevojshëm - të gjitha paketat gjenden në depot zyrtare.

Ndoshta do të ia vlente të hiqnim dorë dnsmasq, meqenëse Fedora, ndryshe nga CentOS, ka një rrjet sistemor mjaft të fundit, i cili ka serverë normalë të integruar DHCP/DNS. Por fakti është se në zhvilluesit RHEL8 refuzoi të mbështeste grupin e rrjetit me ndonjë gjë tjetër përveç NM, nuk ngjall besim në të ardhmen e ndritur të projektit (të poshtër). Me pak fjalë, nuk e kam provuar.

Më tej, drejtuesit aktualë për përshtatësin e integruar Wi-Fi nuk mund të "vidhen" nga shpërndarja Raspbian, por të shkarkohen direkt nga Github.

Kështu duken skedarët e firmuerit Broadcom në Raspberry tim (në mënyrë skematike):

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

Pa to nuk do të merrni 5 GHz/AC.

Në lidhje me numrin dhe emrat e ndërfaqeve. Tani unë rekomandoj fuqimisht për të gjithë që të mos përdorin "shërbimet" e çelsave të softuerit përveç nëse është absolutisht e nevojshme (urë), të cilat sjellin ngarkesë të konsiderueshme në grupin e rrjetit dhe shtypin rrugëzimin. Nëse nuk planifikoni të keni shumë adaptorë me valë, atëherë duhet të përdorni vetëm ndërfaqe fizike. Unë kam dy Wi-Fi, kështu që i kombinoj vetëm ato në një urë softuerike (edhe pse mund ta bëni pa këtë duke parë konfigurimin e hostapd-it ndryshe).

Dhe më pëlqen të riemërtoj ndërfaqet.

Për ta bërë këtë në Fedora ju duhet të krijoni një lidhje simbolike:

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

dhe më pas do të jetë e mundur të jepen emra kuptimplotë pa u vërdallë udev, por vetëm duke përdorur systemd-networkd.

Për shembull, kështu quhen përshtatësit e rrjetit në ruterin tim:

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 - i integruar, ext — përshtatës të jashtëm (USB) Wi-Fi të montuar në një "urë" lan;
  • i vranët — Përshtatës Ethernet në të cilin është lidhur interneti.

E keni vënë re? fq_codel - një gjë vërtet e lezetshme. Së bashku me një kernel të ri Linux, ata bëjnë mrekulli të vërteta në rangun pa tel: një "shkarkim i ashpër torrent" nuk do të çojë në një degradim të papritur të shpejtësisë midis fqinjëve. Edhe një IP-TV në shtëpi që funksionon "në ajër" me një kanal të ngarkuar nuk "shpërthehet" dhe nuk "belbëzon" fare!

Skedari i shërbimit daemon ka pësuar ndryshime të vogla hostapd.

Tani duket kështu (duke përdorur shembullin e një përshtatësi të integruar):

[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

Dhe hostapd-int.conf "magjik" për të punuar në 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]

Një photoshop i vogël i bërë nga Ericsson A1018s tim:

(Lidhja në internet - 100 Mbit/sek)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ose ruter raspberry me një kapelë blu)
Dhe së fundi, një FAQ e vogël.

6. FAQ

6.1 Pse të bëni një ruter Wi-Fi në Raspberry?

Dikush mund të përgjigjet thjesht, si "është interesante të provosh dhe gjithçka".

Por në fakt më duket se tema është mjaft serioze. Në epokën e internetit "të përgjakshme", blerja e një ruteri në një dyqan dhe mbajtja peng i prodhuesit të tij është një perspektivë shumë e mjerueshme. Shumë njerëz tashmë e kuptojnë se të ulesh me një CVE ose një derë të pasme të integruar nuk është e mundur.

Sigurisht, ju mund të migroni në firmware WRT nga entuziastët. Ndoshta ka më shumë besim tek ata, por nëse nuk doni të vareni prej tyre, atëherë thjesht përdorni produktin tuaj. Idealisht, një kompjuter i plotë, në mënyrë që gjithçka në botë të mund të zbatohet në të. Për sa i përket rrugës, natyrisht.

Prandaj, zgjedhja e një "mjedër" është një veprim thjesht ekonomik: një kompjuter i vërtetë dhe në të njëjtën kohë një i lirë. Edhe pse, ndoshta edhe - me "dyshe" e tyre brenda.

6.2 Por Raspberry është një "ruter i ulët": i ngadalshëm dhe me një portë Ethernet!

Si një ruter Wi-Fi në shtëpi, Raspberry është më se i kënaqshëm për mua. Unë kam folur tashmë për shpejtësinë e ajrit më lart. Dhe ka vetëm një Ethernet, mirë, në një produkt të ngjashëm nga Apple është pothuajse e njëjta gjë!

Por seriozisht, sigurisht që do të doja më shumë. Dhe përkundër faktit se në familjen time të gjitha pajisjet janë të lidhura me valë, ndonjëherë kërkohet ende një lidhje bakri. Për raste të tilla, unë kam një "qendër celulare" në magazinë:

pajisja - diçka e tillëRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ose ruter raspberry me një kapelë blu)

6.3 Nëse ky është një ruter, atëherë nuk thuhet asgjë për "akordimin" e TCP/IP, sepse kjo është e rëndësishme!

Përveç konfigurimit të grupit të rrjetit (tcp_fastopen, YeAH, etj.), Ky dhe artikulli i mëparshëm nuk mbulojnë nuanca të tjera, në veçanti, procesin e përgatitjes së microSD për përdorim optimal (megjithëse instaluesi përpiqet të formatojë kartën e kujtesës në një mënyrë e ndërlikuar). Procesi i përmirësimit është i pafund, ju vetëm duhet të ndaloni në kohë.

6.4 Pse Fedora?

Sepse me pelqen! Fedora është një sistem "mainstream" për geeks, për të cilët ky artikull është menduar në të vërtetë. Në kohën e shkrimit, ndoshta i vetmi OS që për Raspberry në versionin 64-bit mbështetet zyrtarisht nga një staf i konsiderueshëm zhvilluesish (nga të cilët mezi pres bërthama 5.6).

6.5 A funksionon Bluetooth? Si është video/tingulli/GPIO?

nuk e di. Artikulli ka të bëjë me instalimin minimal të sistemit dhe përdorimin e tij të mëvonshëm si një ruter Wi-Fi.

6.6 Pse të gjithë artikujt rreth CentOS/Fedora/RedHat fillojnë me çaktivizimin e SELinux?

Për shkak se sistemi është minimal, ai nuk ka as një mur zjarri ose shërbime për konfigurimin e tij. Kushdo që ka nevojë mund të instalojë gjithashtu gjithçka që i nevojitet.

6.7 Sistemi nuk mund të përdoret, fjalëkalimi nuk mund të ndryshohet - pa passwd. Pa ping, pa asgjë!

Ka DNF. Ose ky opsion instalimi nuk është për ju - përdorni kompletin e shpërndarjes nga zhvilluesit.

6.8 Ku është SWAP? Unë nuk mund të jetoj pa të!

A është e vërtetë? Mire atehere:

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 Do të doja të shkarkoja menjëherë një imazh të gatshëm me një pikë aksesi të konfiguruar Wi-Fi!

Përgatitja e një instaluesi "për të gjithë" do të kërkojë pak kohë dhe përpjekje. Nëse (papritmas!) dikush e gjen vërtet këtë interesante dhe të nevojshme, na shkruani dhe ne do të dalim me diçka.

Do të përfundoj me këtë.

I uroj të gjithëve surfim të sigurt dhe kontroll maksimal mbi infrastrukturën!

Burimi: www.habr.com

Shto një koment