Raspberry Pi + Fedora (aarch64) = Pikë aksesi Wi-Fi (ose routeret me koperin blu)

Në artikullin Raspberry Pi + CentOS = Wi-Fi Hotspot (ose routeri i malinës në kapelen e kuqe) Unë tregova për një mënyrë për të transformuar "malinën" në një pikë aksesi pa kabllo duke përdorur sistemin operativ CentOS. Duke ndërtuar routerin tim shtëpiak sipas këtij projekti, kënaqësia e egos sime kreative u plotësua dhe mora një ndjenjë qetësie për një element kritik të infrastrukturës sime komode. Megjithatë, ndjenja e papërfunduar dhe perfeksionizmi i brendshëm nuk më linin të qetë: "rezultati i papërsosur i punës nuk ka të drejtë të ekzistojë". Mendimi se "ideali mund dhe duhet të arrihet" nuk më braktisi asnjë minutë.

Një ditë, në një nga forumet tematike, u ndesha me një diskutim mbi arkitekturën e sistemeve operative aktuale për "malinën" (aarch64 vs armhfp): cilat sisteme operative 64-bit mund të instalohet dhe të punojnë në versionin 3++ të Raspberry?

CentOS im i preferuar për arkitekturën ARM nga "Userland" nuk kishte ndërmend të kalonte në bërthamën e fundit dhe të bëhej 64-bit. Dhe depoja EPEL, e cila ishte e lidhur nën dija të Zotit pa nënshkrim digjital, ishte një makth në ëndrrat e mia të shqetësuara


Si një adhurues i distribucioneve RPM-based, me habi zbuloja se në diskutimet për sistemet operative për "malinën" ishte tërësisht harruar Fedora! Dhe kjo ndodhi, edhe pse lëshimi i saj
nga versioni 28 zyrtarisht mbështet Raspberry Pi 3B+ në formato 64-bit!

Raspberry Pi + Fedora (aarch64) = Pikë aksesi Wi-Fi (ose routeret me koperin blu)
Në këtë artikull do të flas për mënyrën e instalimit Fedora (aarch64) në Raspberry Pi 3 Model B+ në në një version ultra minimal. Do të ndaloj pak te karakteristikat e ngritjes së pikës së aksesit Wi-Fi, të zbuluara si rezultat i eksperiencës time me konfigurimin tim të mëparshëm në CentOS 7.

0. ÇfarĂ« do tĂ« nevojitet

E njëjta gjë që është përmendur në artikullin e mëparshëm:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (mĂ« pas mund tĂ« "transferohet" sistemi nĂ« njĂ« ruajtĂ«s 2GB);
  • NjĂ« stacion pune me Linux dhe njĂ« letrar microSD;
  • PĂ«r lidhje tĂ« kablluar midis "malinĂ«s" dhe stacionit tim tĂ« punĂ«s me Linux (nĂ« kĂ«tĂ« rast, nuk do tĂ« nevojiten monitor dhe tastierĂ« tĂ« tjera pĂ«r konfigurim), qasje nĂ« internet me tĂ« dy pajisjet;
  • AftĂ«si tĂ« avancuara nĂ« Linux (tĂ« dish dhe tĂ« mos kesh frikĂ«: parted, dd dhe mkfs).

Si një iteracion LFS- ndërtimit të një Linuxi të personalizuar, do të përdoret imazhi i distribucionit të Fedora, dhe më pas do të krijohet një sistem minimal (pa "kompilim nga burimet").

1. Instalimi i distribucionit origjinal

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

Pasi është regjistruar në microSD dhe para fillimit të përdorimit duhet:

  1. Të zgjasësh "rrënjën" e sistemit të skedarëve (shkalla 3, ext4)
    parted /dev/mmcblk0 resizepart 3 100%
    e2fsck -f /dev/mmcblk0p3; resize2fs /dev/mmcblk0p3; e2fsck -f /dev/mmcblk0p3
    për i në 1 2 3; bëj mkdir -p /mnt/$i; ngjiti /dev/mmcblk0p$i /mnt/$i; bërë
    

  2. Çaktivizo SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Fshij Asistentin e Konfigurimit Fillestar:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Lejo qasje përmes 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ë ngarkohet "malinka" me microSD dhe të lidhesh me të përmes rrjetit.

Një fillim i ftohtë zgjat rreth një minutë e gjysmë. Të dhënat teknike të sistemit pas ngarkimit:

Raspberry Pi + Fedora (aarch64) = Pikë aksesi Wi-Fi (ose routeret me koperin blu)

rpm -qa | wc -l
444

2. Ndërtimi i sistemit minimal

Fatkeqësisht, "distribucioni minimal" nga zhvilluesit është shumë larg të qenit modest në konsumimin e burimeve. Imazhi i sistemit mund të bëhet edhe më i vogël.

Për këtë, duhet të ekzekutohet skripti 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 përfundimit të skriptit, do të krijohet një nënkatalog në katalogun aktual ($P) me përmbajtjen e rrënjës së redaksisë së re minimale të OS. Mund të fiket "malinka" dhe të kthehet microSD në stacionin e punës Linux.

3. Instalimi i sistemit minimal

Instalimi reduktohet në kopjimin e skedarëve të "imazhit" minimal të OS (të marra në hapin e mëparshëm) 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, boot, 100MB;
  2. / (rrĂ«njĂ«s) — EXT4, gjithĂ« hapĂ«sira e mbetur.

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

  • tĂ« riparosh ngarkimin e OS;
  • tĂ« aktivizosh rrjetin;
  • tĂ« konfiguroni qasje pĂ«rmes ssh.

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

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

dhe parametri saved_entry= në skedarin e fundit

NĂ« skedarin:

microSD:/etc/fstab

mund të gjenden vlerat e vjetra, ndërsa ato aktualet (të saktat) në daljen e komandës:

blkid | grep mmcblk | sort

Pas zëvendësimit, gjithashtu duhet të përmirësohet përmbajtja fstab në microSD, që pikat e montimit të përputhen me UUID-të e rinj të pjesëve.

Funksionaliteti i rrjetit nĂ« ngarkimin e parĂ« tĂ« "malinkĂ«s" mund tĂ« arrihet me njĂ« "zgjidhje" tĂ« vogĂ«l — krijo njĂ« lidhje (sipas skemĂ«s):

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 ngarkimit tĂ« suksesshĂ«m — rregullo nisjen systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Aksesi në superpërdorues përmes ssh konfiguroni në mënyrë të ngjashme me p.1.

Pas një punimi të saktë dhe pa gabime, mund të vendosni microSD në "malinkë" dhe të filloni të punoni me OS-në 64-bit në një realizim ekstra minimal.

4. Sistemi i gatshëm

"Imazhi" i sistemit të gatshëm, i krijuar sipas udhëzimeve të mësipërme, mund të shkarkohet në lidhjen:
Fedora-Tiny-31-5.5.7-200.aarch64

Ky do tĂ« jetĂ« njĂ« arkiv qĂ« pĂ«rmban dy skedarĂ«: skripti i instalimit dhe TGZ me skedarĂ«t e OS-sĂ«. Arkivi duhet tĂ« shkarkohet nĂ« stacionin e punĂ«s Linux, tĂ« vendoset microSD (nĂ« dispozitĂ« Ă«shtĂ« mjaft njĂ« kartĂ« 2GB) dhe tĂ« ekzekutohet skripti me parametrin — emrin e pajisjes:

./install /dev/mmcblk0

Këshillohuni!

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

Pas pĂ«rfundimit korrekt tĂ« skriptit, karta mund tĂ« vendoset nĂ« "malinkĂ«" dhe tĂ« pĂ«rdoret: kapni pĂ«rmes dhcp, fjalĂ«kalimi — "1."

Sistemi është pastruar nga çdo ID dhe çelës, duke e bërë çdo instalim të ri unik.

TĂ« them prapĂ«, sistemi — minimal! Prandaj mos u trembni: DNF Ă«shtĂ« nĂ« dispozicion, pĂ«r funksionimin e tij do tĂ« duhet tĂ« "shkruani" njĂ« tĂ« saktĂ« /etc/resolv.conf.

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

Raspberry Pi + Fedora (aarch64) = Pikë aksesi Wi-Fi (ose routeret me koperin blu)

rpm -qa | wc -l
191

5. Wi-Fi

Do të ndalem pak në veçoritë e zbatimit të pikës së qasjes Wi-Fi. Për detaje mund të referoheni te e kaluara ime. artikullin.

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

Ndoshta do tĂ« ishte mirĂ« tĂ« hiqnim dorĂ« nga dnsmasq, sepse nĂ« Fedora, ndryshe nga CentOS, — ekziston njĂ« systemd-networkd mjaft i freskĂ«t, nĂ« tĂ« cilin — ka serverĂ« tĂ« integruar DHCP/DNS normalĂ«. Por fakti qĂ« nĂ« RHEL8 zhvilluesit hoqĂ«n dorĂ« nga mbĂ«shtetje pĂ«r stakun rrjetor pĂ«rveç NM, nuk jep besim pĂ«r njĂ« tĂ« ardhme tĂ« ndritur tĂ« projektit (kĂ«ta tĂ« kĂ«qij). NĂ« pĂ«rfundim, nuk e kam provuar.

Pastaj, drejtuesit aktual të adaptorit të integruar Wi-Fi mund të mos "vjedhim" nga disitribucioni Raspbian, por t'i shkarkojmë drejtpërdrejt nga github.

Ja si duken në "malinkën" time skedarët e firmware-t Broadcom (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 këto nuk do të funksionojë 5GHz/AC.

Sa për numrin dhe emrat e interfazëve. Tani e rekomandoj me ngulm të gjithë që pa ndonjë nevojë të mos përdorin "shërbimet" e kalimtarëve programorë (ura), që sjellin një ngarkesë të konsiderueshme në grilën e rrjetit dhe shtypin ruterin. Nëse nuk parashihet përdorimi i disa adaptuesve wireless, atëherë duhet të përdoren vetëm ndërfaqe fizike. Unë kam dy Wi-Fi, kështu që vetëm ato i bashkoj në një urë programore (edhe pse kjo mund të arrihet edhe pa të, duke e parë ndryshe konfigurimin e hostapd).

Dhe më pëlqen të ribashkoj ndërfaqet.

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

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

dhe kështu mund të jepni emra domethënës pa u ngatërruar në udev, por vetëm përmes mjeteve të systemd-networkd.

Ja si quhen, për shembull, adaptuesit e rrjetit në routerin 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 — adaptues Wi-Fi tĂ« jashtĂ«m (USB), tĂ« grumbulluar nĂ« njĂ« 'bridge' lan;
  • wan — adaptues Ethernet, nĂ« tĂ« cilin Ă«shtĂ« i lidhur Interneti.

Vini re? fq_codel — me tĂ« vĂ«rtetĂ« njĂ« gjĂ« e shkĂ«lqyer. SĂ« bashku me bĂ«rthamĂ«n mĂ« tĂ« re tĂ« Linux, krijojnĂ« mrekulli tĂ« vĂ«rteta nĂ« gamĂ«n wireless: njĂ« 'download' i ashpĂ«r nga torrente nuk do ta sjellĂ« njĂ« degradim tĂ« papritur tĂ« shpejtĂ«sisĂ« tek fqinjĂ«t. Edhe IPTV-ja shtĂ«piake qĂ« punon 'nĂ« ajĂ«r' nuk 'çoroditet' dhe nuk 'frenon' aspak, jo fare!

Dosja e shërbimit të demonit ka kaluar disa ndryshime hostapd.

Duket tani kështu (në shembullin e adaptuesit 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 'magjiku' hostapd-int.conf për punë 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 'Photoshop', i bërë nga 'Ericsson A1018s' im.

(lidhi me internetin — 100Mbit/s)Raspberry Pi + Fedora (aarch64) = PikĂ« aksesi Wi-Fi (ose routeret me koperin blu)
Dhe në përfundim një pyetje të vogël.

6. FAQ

6.1 Pse të krijosh një router Wi-Fi me Raspberry?

Mund të përgjigjemi thjesht, duke thënë "është interesante ta provojmë dhe kështu me radhë".

Por nĂ« tĂ« vĂ«rtetĂ«, siç mendoj, tema Ă«shtĂ« mjaft serioze. NĂ« epokĂ«n e internetit "tĂ« egĂ«r", tĂ« blesh njĂ« router nĂ« dyqan dhe tĂ« mbetesh njĂ« peng i prodhuesit tĂ« tij — Ă«shtĂ« njĂ« perspektivĂ« e mĂ«rzitshme. TĂ« qĂ«ndrosh me njĂ« CVE- ose njĂ« backdoor tĂ« integruar, tani shumĂ« e kuptojnĂ« se nuk Ă«shtĂ« e pranueshme.

Natyrisht, mund tĂ« migrosh nĂ« firmware WRT nga entuziastĂ«t. Besimi nĂ« to Ă«shtĂ« ndoshta mĂ« i madh, por nĂ«se nuk dĂ«shiron tĂ« varet nga ata, atĂ«herĂ« vetĂ«m - prodhimi yt personal. NĂ« mĂ«nyrĂ« ideale – njĂ« kompjuter i plotĂ« pĂ«r tĂ« realizuar çdo gjĂ«. Sigurisht, nĂ« fushĂ«n e routing-ut.

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 "dualizme" brenda.

6.2 Por, a nuk Ă«shtĂ« Raspberry – "jo router": i ngadaltĂ« dhe me njĂ« port Ethernet!

Si një router Wi-Fi shtëpiak, "malinka" më kënaq më shumë se sa mendoja. Për shpejtësinë "në ajër" e kam përmendur më sipër. Dhe një Ethernet, mirë, ashtu siç është në produktin e ngjashëm nga Apple, është po ashtu kështu!

Por nëse flasim seriozisht, do të doja më shumë. Dhe megjithëse në shtëpinë time të gjitha pajisjet janë të lidhura pa kabllo, ndonjëherë është e nevojshme një lidhje me fiber. Për këto raste, kam rezervuar një "hub mobil":

njĂ« pajisje — diçka si kjoRaspberry Pi + Fedora (aarch64) = PikĂ« aksesi Wi-Fi (ose routeret me koperin blu)

6.3 Nëse është router, atëherë nuk është thënë asgjë për "tunimin" TCP/IP, sepse kjo është e rëndësishme!

PĂ«rveç konfigurimit tĂ« stakut rrjetor (tcp_fastopen, YeAH etj.), nĂ« kĂ«tĂ« artikull dhe nĂ« atĂ« tĂ« mĂ«parshĂ«m nuk janĂ« zbuluar nuanca tĂ« tjera, veçanĂ«risht procesi i pĂ«rgatitjes sĂ« microSD pĂ«r pĂ«rdorim optimal (pavarĂ«sisht se instaluesi pĂ«rpiqet ta formatizojĂ« kartĂ«n e memories nĂ« njĂ« mĂ«nyrĂ« tĂ« zgjuar). Procesi i pĂ«rmirĂ«simit – Ă«shtĂ« pafund, Ă«shtĂ« e nevojshme vetĂ«m tĂ« ndalosh nĂ« momentin e duhur.

6.4 Pse Fedora?

Sepse mĂ« pĂ«lqen! Fedora Ă«shtĂ« "mainstream" — sistemi i geekĂ«ve, pĂ«r tĂ« cilĂ«t, nĂ« thelb, Ă«shtĂ« shkruar ky artikull. NĂ« momentin e shkrimit, ndoshta, sistemi i vetĂ«m operativ qĂ« pĂ«r Raspberry nĂ« versionin 64-bit mbĂ«shtetet zyrtarisht nga njĂ« ekip i konsiderueshĂ«m zhvilluesish (nga tĂ« cilĂ«t nuk po pres dot) nĂ« kernelin 5.6).

6.5 A punon Bluetooth? Si e ka 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 çaktivizimin e SELinux?

Sepse sistemi është minimal, nuk ka as firewall dhe as njësi për konfigurimin e tij. Ata që kanë nevojë, mund të instalojnë gjithçka që nevojitet shtesë.

6.7 Nuk Ă«shtĂ« e mundur tĂ« pĂ«rdorĂ«sh sistemin, nuk mund tĂ« ndryshosh fjalĂ«kalimin — s’ka passwd. S’ka ping, s’ka asgjĂ«!

Ka DNF. Ose ky variant instalimi nuk Ă«shtĂ« pĂ«r ju – pĂ«rdorni distribucionin nga zhvilluesit.

6.8 Po ku është SWAP? Nuk mund të jetoj pa të!

Vërtet? Mirë, atëherë:

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 një imazh gati me pikën e qasjes Wi-Fi të konfiguruar!

PĂ«r pĂ«rgatitjen e instaluesit "pĂ«r tĂ« gjithĂ«" do tĂ« nevojitet njĂ« kohĂ« dhe pĂ«rpjekje e caktuar. NĂ«se (ndonjĂ«herĂ«!) dikujt i duket vĂ«rtet interesante dhe e nevojshme – shkruani, do tĂ« mendojmĂ« pĂ«r diçka.

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

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

Burimi: habr.com

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