Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (apo routeri me kapelen blu)

Në artikullin Raspberry Pi + CentOS = Wi-Fi Hotspot (ose router me shenjë të kuqe) Unë tregova për mënyrën si ta shndërroje "malinën" në një pikë qasjeje pa tel me sistemin operativ CentOS. Duke ndërtuar routerin tim të shtëpisë sipas këtij skedari, kënaqa egon time krijuese dhe mora një ndjenjë qetësie për një element kritik të infrastrukturës sime të ngrohtë. Megjithatë, ndjenja e papërfundimin dhe perfeksionizmi tim nuk më lejuan të qetësohem: "nuk ka të drejtë të ekzistojë rezultati i papërsosur i punës". Mendimi se "ideali mund dhe duhet të arrihet" nuk më braktisi për asnjë çast.

Dhe kështu, një ditë në një nga forumet tematike, ndesha një diskutim mbi versionet ekzistuese të sistemeve operative për "malinën" (aarch64 vs armhfp): cilat sisteme operative 64-bit mund të instalohen dhe të funksionojnë në Raspberry versioni 3++?

CentOS, e preferuara ime për arkitekturën ARM nga "Userland", nuk po nxitohej të kalonte në kernelin e versionit të fundit dhe të shndërrohej në 64-bit. Dhe depoja EPEL, e lidhur nuk dihet se nga ku pa nënshkrim digjital, ishte një makth në ëndrrat e mia të paqes...

Duke qenë një adhurues i distribucioneve të bazuara në RPM, u habit kur zbulova se në diskutimet për sistemet operative për "malinën" ishte plotësisht e harruar Fedora! Dhe kjo, duke pasur parasysh se versioni i saj
nga versioni 28 zyrtarisht mbështet Raspberry Pi 3B+ në variantin 64-bit!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (apo routeri me kapelen blu)
Në këtë artikull, unë do të flas për mënyrën e instalimit të Fedora (aarch64) në Raspberry Pi 3 Model B+ në me një përmbajtje ekstra minimale. Shpejt do të ndalemi te veçoritë e ngritjes së pikës së qasjes Wi-Fi, të identifikuara si rezultat i përdorimit të mëparshëm të konfigurimit tim në CentOS 7.

0. ÇfarĂ« do tĂ« nevojitet

Të gjithë të njëjtat gjëra që janë përmendur në artikullin e mëparshëm:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (dhe mĂ« vonĂ« mund ta "transferosh" sistemin nĂ« njĂ« kujtesĂ« 2GB);
  • NjĂ« stacion pune me Linux dhe lexues microSD;
  • Lidhje e kablluar midis "malinĂ«s" dhe stacionit tĂ« punĂ«s me Linux (nĂ« kĂ«tĂ« rast nuk do tĂ« nevojiten monitor dhe tastierĂ« shtesĂ« pĂ«r konfigurimin), akses nĂ« internet nga tĂ« dy pajisjet;
  • AftĂ«si tĂ« avancuara nĂ« Linux (tĂ« dish dhe tĂ« mos kesh frikĂ«: parted, dd dhe mkfs).

Siç është iterativja LFS- ndërtimi i një Linux-i personal, do të përdoret imazhi i distribucionit të Fedora-s dhe pastaj mbi të - do të krijohet një sistem minimal (pa "kompilim nga burimi").

1. Instalimi i distribucionit origjinal

Koordinatat e imazhit raw të sistemit në Rrjet:
https://
/fedora-secondary/releases/
/Spins/aarch64/images/Fedora-Minimal-
xz

Pas regjistrimit të tij në microSD dhe para fillimit të përdorimit, ju duhet të:

  1. Zgjeroni ‘rrĂ«njĂ«n’ e sistemit tĂ« skedarĂ«ve (pjesa e tretĂ«, 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. Çaktivizoni SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Fshini Masterin e Konfigurimit të Parë:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Lejoni aksesin për 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 tĂ« ngarkoni ‘malinkĂ«n’ nga microSD dhe tĂ« lidhni me tĂ« pĂ«rmes rrjetit.

Ngritja e ftohtë zgjat rreth një minutë e gjysmë. Të dhënat e sistemit pas ngarkimit:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (apo routeri me kapelen blu)

rpm -qa | wc -l
444

2. Ndërto një sistem minimal

FatkeqĂ«sisht, ‘distribucioni minimal’ nga zhvilluesit rezulton tĂ« mos jetĂ« aq i skromtĂ« nĂ« konsumimin e burimeve. NjĂ« imazh sistemi mund tĂ« jetĂ« edhe mĂ« i vogĂ«l.

PĂ«r kĂ«tĂ«, nĂ« ‘malinkë’ duhet tĂ« ekzekutoni skriptin:

#!/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 pĂ«rfundimit tĂ« skriptit, nĂ« katalogun aktual do tĂ« krijohet njĂ« nĂ«ndegĂ« ($P) me pĂ«rmbajtjen e rrĂ«njĂ«s sĂ« versionit tĂ« ri minimal tĂ« OS-sĂ«. Mund tĂ« fikni ‘malinkĂ«n’ dhe tĂ« ktheheni nĂ« workstation-in tuaj Linux me microSD.

3. Instaloni sistemin minimal

Instalimi pĂ«rfshin kopjimin e skedarĂ«ve tĂ« ‘imazhit’ minimal tĂ« OS-sĂ« (tĂ« marrĂ« nga hapi paraprak) nĂ« microSD tĂ« pĂ«rgatitur posaçërisht nĂ« katalogĂ«t pĂ«rkatĂ«s.

Mjafton një kartë 2GB dhe dy pjesë në të:

  1. /boot/efi — EFI+FAT32, ngarkuese, 100MB;
  2. / (rrĂ«nja) — EXT4, gjithĂ« hapĂ«sira e mbetur.

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

  • riparoni ngarkimin e OS-sĂ«;
  • aktivizoni rrjetin;
  • konfiguroni aksesin pĂ«r ssh.

Riparimi i ngarkimit përfshin zëvendësimin e UUID-ve të pjesëve në skedarët:

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

dhe parametrin saved_entry= në skedarin e fundit

NĂ« skedarin:

microSD:/etc/fstab

mund të gjeni vlerat e vjetra, ndërsa aktualet (të sakta) janë në daljen e komandës:

blkid | grep mmcblk | sort

Pas zëvendësimit, duhet gjithashtu të rregulloni përmbajtjen fstab në microSD, në mënyrë që pikat e montimit të përputhen me UUID-të e rinj të pjesëve.

PĂ«r tĂ« siguruar funksionalitetin e rrjetit nĂ« fillim tĂ« ‘malinkĂ«s’, mund tĂ« pĂ«rdorni njĂ« ‘truk’ tĂ« vogĂ«l — krijoni njĂ« lidhje (schematically):

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 pasjes sĂ« suksesshĂ«m — vendosni nĂ« rend fillimin systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Pronarimi i super përdoruesit për ssh konfigurohet si në p.1.

Duke e bërë gjithçka me kujdes dhe pa gabime, mund të vendosni microSD në "malinka" dhe të filloni të punoni me një OS 64-bit në një version super minimal.

4. Sistema e gatshme

"Imazhi" i sistemit të gatshëm, i krijuar sipas udhëzimeve të përmendura më sipër, mund të shkarkohet përmes lidhjes:
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Ă«t e OS. Arkivi duhet tĂ« nxirret nĂ« stacionin e punĂ«s Linux, vendosni microSD (ndihmon njĂ« kartĂ« prej 2GB) dhe nisi skriptin me parametrin — emrin e pajisjes:

.\/install \/dev\/mmcblk0

Kujdes!

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

Pas ekzekutimit pa gabime tĂ« skriptit, karta mund tĂ« vendoset nĂ« "malinka" dhe tĂ« pĂ«rdoret: kapni nga dhcp, fjalĂ«kalimi — "1".

Sistemi Ă«shtĂ« pastruar nga çdo ID dhe çelĂ«s, pĂ«r shkak tĂ« cilĂ«s çdo instalim i ri – Ă«shtĂ« unik.

PĂ«rsĂ«ris edhe njĂ« herĂ«, sistemi — minimal! Prandaj, mos u friksoni: DNF — Ă«shtĂ« nĂ« dispozicion, pĂ«r funksionimin e tij do t'ju duhet tĂ« "shkruani" njĂ« tĂ« drejtĂ« /etc/resolv.conf.

Nisja e ftohtë e "malinkës" zgjat rreth 40 sekonda. Të dhënat e sistemit pas ngarkimit:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (apo routeri me kapelen blu)

rpm -qa | wc -l
191

5. Wi-Fi

Do të ndalem pak në veçoritë e implementimit të pikës së aksesit Wi-Fi. Për detajet mund të referoheni në artikullin tim të mëparshëm artikulli ynë.

EPEL tani nuk do tĂ« nevojitet — tĂ« gjithĂ« paketat gjenden nĂ« depot zyrtare.

Ndoshta do tĂ« ishte mirĂ« tĂ« hiqja dorĂ« nga dnsmasq, pasi nĂ« Fedora, ndryshe nga CentOS, — ka njĂ« systemd-networkd mjaft tĂ« freskĂ«t, ku — janĂ« serverĂ«t e integruar DHCP/DNS tĂ« mirĂ«. Por fakti qĂ« nĂ« RHEL8 zhvilluesit hoqĂ«n dorĂ« nga mbĂ«shtetje e stekĂ«ve rrjetĂ«rore pĂ«r ndonjĂ« gjĂ« tjetĂ«r pĂ«rveç NM, nuk ngjall besim pĂ«r tĂ« ardhmen e ndritur tĂ« projektit (pĂ«rfaqĂ«sues tĂ« kĂ«qij). NĂ« pĂ«rfundim, nuk kam provuar.

Pastaj, drejtorët aktualë të adaptorit të integruar Wi-Fi nuk mund të "vjedhen" nga distribucioni Raspbian, por mund të shkarkohen drejtpërdrejt nga github.

Kështu duken në "malinkën" time skedarët e firmware-t Broadcom (në skemë):

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ë funksionojë 5GHz/AC.

Në lidhje me numrin dhe emrat e ndërfaqeve. Tani, unë tashmë rekomandoj fort të gjithëve që të mos përdorin "shërbimet" e kalimeve software pa një nevojë të veçantë (bridge), të cilat sjellin një ngarkesë të konsiderueshme në shtresën rrjet dhe pengojnë rutimin. Nëse nuk planifikohen disa adapatorë dhebularë, duhet përdorur vetëm ndërfaqet fizike. Unë kam dy Wi-Fi, prandaj vetëm ato i bashkoj në një urë software (në të vërtetë, mund të shkonte pa këtë, duke e parë ndryshe konfigurimin e hostapd).

Unë gjithashtu e pëlqej të riemëroj ndërfaqet.

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

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

dhe atëherë do të jetë e mundur të jepen emra me kuptim pa u mërzit me udev, por vetëm me mjete systemd-networkd.

Ja, për shembull, si quhen adapatorët rrjet në router-in tim:

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 — tĂ« integruar, ext — adapatorĂ« Wi-Fi tĂ« jashtĂ«m (USB) tĂ« mbledhur nĂ« "bridge" lan;
  • wan — adapator Ethernet, nĂ« tĂ« cilin Ă«shtĂ« i lidhur interneti.

E vrejtĂ«t? fq_codel — me tĂ« vĂ«rtetĂ« Ă«shtĂ« njĂ« gjĂ« e shkĂ«lqyer. SĂ« bashku me bĂ«rthamĂ«n e re tĂ« Linux-it, bĂ«jnĂ« mrekulli tĂ« vĂ«rteta nĂ« diapazonin e wireless: njĂ« "torrent-download" i fuqishĂ«m nuk do tĂ« shkaktojĂ« degradimin e papritur tĂ« shpejtĂ«sisĂ« te fqinjĂ«t. Edhe IP-TV-ja shtĂ«piake "nĂ« ajĂ«r" nuk "shkĂ«putet" dhe nuk "thotĂ«" fjalĂ« fare kur kanali Ă«shtĂ« i ngarkuar!

Ka përjetuar disa ndryshime të vogla skedari shërbimi për demonin hostapd.

Tani duket kështu (në shembullin e adapatorit 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 "magjik" hostapd-int.conf për funksionimin në 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]

Pak sa njĂ« pak “fotoshop”, bĂ«rĂ« me “Ericsson A1018s”:

(lidhja nĂ« internet — 100Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (apo routeri me kapelen blu)
Dhe përfundimisht një FAQ të vogël.

6. FAQ

6.1 Pse të bësh një router Wi-Fi në Raspberry?

Mund tĂ« pĂ«rgjigjemi thjesht, se â€œĂ«shtĂ« interesante tĂ« provohet dhe gjĂ«ra tĂ« tilla”.

Por nĂ« tĂ« vĂ«rtetĂ«, siç mendoj, tema Ă«shtĂ« mjaft serioze. NĂ« epokĂ«n e Internetit “tĂ« tmerrshĂ«m”, tĂ« blĂ«sh njĂ« router nĂ« dyqan dhe tĂ« mbetesh peng i prodhuesit tĂ« tij — Ă«shtĂ« njĂ« perspektivĂ« mjaft e trishtueshme. Tani shumĂ« e dinĂ« se nuk mund tĂ« jesh nĂ« njĂ« situatĂ« me CVE apo me njĂ« backdoor tĂ« inkorporuar.

Natyrisht, mund tĂ« kalosh nĂ« firmuerĂ« WRT nga entuziastĂ«t. Ka mĂ« shumĂ« besim tek ta, ndoshta, por nĂ«se nuk dĂ«shiron tĂ« varet nga ata ashtu, atĂ«herĂ« vetĂ«m — produkti yt i vet. NĂ« mĂ«nyrĂ« ideale - njĂ« kompjuter i plotĂ« pĂ«r tĂ« realizuar gjithçka.

Prandaj, zgjedhja e “malinkĂ«s” Ă«shtĂ« njĂ« lĂ«vizje krejtĂ«sisht ekonomike: njĂ« kompjuter i vĂ«rtetĂ« dhe njĂ«kohĂ«sisht — i lirĂ«. MegjithatĂ«, ndoshta gjithashtu — me disa “dyzime” brenda.

6.2 Por a nuk Ă«shtĂ« Raspberry njĂ« “jo-router”: i ngadalshĂ«m dhe me njĂ« port Ethernet!

Si njĂ« router Wi-Fi i shtĂ«pisĂ«, “malinka” mĂ« kĂ«naq mĂ« shumĂ« se aq. PĂ«r shpejtĂ«sinĂ« “nĂ« ajĂ«r”, e kam treguar mĂ« lart. Dhe njĂ« port Ethernet, mirĂ«, po ashtu si nĂ« njĂ« produkt tĂ« ngjashĂ«m nga Apple!

Dhe nĂ«se flasim seriozisht, sigurisht do tĂ« dĂ«shiroja mĂ« shumĂ«. Dhe pavarĂ«sisht se nĂ« shtĂ«pinĂ« time tĂ« gjitha pajisjet janĂ« tĂ« lidhura pa tela, ndonjĂ«herĂ« Ă«shtĂ« e nevojshme njĂ« lidhje me tel. PĂ«r kĂ«to raste kam ruajtur njĂ« “hub mobil”:

pajisja — diçka si kjoRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (apo routeri me kapelen blu)

6.3 NĂ«se kjo Ă«shtĂ« njĂ« router, atĂ«herĂ« nuk Ă«shtĂ« thĂ«nĂ« asgjĂ« pĂ«r “tuning” TCP/IP, sepse kjo Ă«shtĂ« e rĂ«ndĂ«sishme!

Përveç konfigurimit të stack-ut rrjetor (tcp_fastopen, YeAH etj.), në këtë dhe artikullin e mëparshëm nuk janë zbuluar nuanca të tjera, në veçanti, procesi i përgatitjes së microSD për përdorim optimal (ndonëse installeri përpiqet të formatojë kartën e memories në një mënyrë të zgjuar). Procesi i përmirësimit është i pafund, thjesht duhet të ndaloni në kohë.

6.4 Pse Fedora?

Sepse më pëlqen! Fedora është një sistem 'mashtrimesh' për geek-un, për të cilin, në thelb, është shkruar ky artikull. Në momentin e shkruar, ndoshta është sistemi i vetëm operativ që për Raspberry, në versionin 64-bit, mbështetet zyrtarisht nga një ekip i madh zhvilluesish (nga të cilët nuk po pres dot). në bërthamën 5.6).

6.5 A funksionon Bluetooth? Si është video/zëri/GPIO?

Nuk e di. Artikulli është për instalimin minimal të sistemit dhe përdorimin e tij të mëvonshëm si një router Wi-Fi.

6.6 Pse të gjitha artikujt mbi CentOS/Fedora/RedHat fillojnë me shkyçjen e SELinux?

Sepse sistemi është minimal, nuk ka as një firewall dhe as utilitete për konfigurimin e tij. Kush ka nevojë, mund të instalojë gjithçka që nevojitet.

6.7 Sistemi nuk mund tĂ« pĂ«rdoret, nuk mund tĂ« ndryshohet fjalĂ«kalimi — nuk ka passwd. Nuk ka ping, nuk ka asgjĂ«!

Ka DNF. Ose ky opsion instalimi nuk Ă«shtĂ« pĂ«r ju – pĂ«rdorni njĂ« distribucion nga zhvilluesit.

6.8 Ku është SWAP? Nuk mund të jetoj pa të!

Vërtet? Mirë, mirë:

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 pikën e aksesit Wi-Fi të konfiguruar!

PĂ«rgatitja e installer-it "pĂ«r tĂ« gjithĂ«" do tĂ« kĂ«rkojĂ« njĂ« kohĂ« dhe pĂ«rpjekje tĂ« caktuara. NĂ«se (papritur!) dikujt kjo do t'i duket vĂ«rtet interesante dhe e nevojshme – shkruani, do tĂ« mendojmĂ« diçka.

Me kĂ«tĂ« – pĂ«rfundoj.

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

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster