Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (utawa router raspberry nganggo topi biru)

Ing artikel Raspberry Pi + CentOS = Wi-Fi Hotspot (utawa router raspberry nganggo topi abang) Aku ngomong babagan cara ngowahi Raspberry dadi jalur akses nirkabel nggunakake sistem operasi CentOS. Kanthi ngrakit dalan omahku miturut gambar iki, aku marem ego kreatif lan entuk katentreman atine kanggo unsur kritis infrastruktur sing mulyo. Nanging, rasa ora lengkap saka solusi lan perfeksionisme internal ngganggu aku: "asil karya sing ora sampurna ora duwe hak kanggo ana." Pikiran yen "sing becik bisa lan kudu digayuh" ora ninggalake aku sedina.

Banjur ing sawijining dina, ing salah sawijining forum tematik, aku nemoni diskusi babagan ambane sistem operasi sing ana kanggo Raspberry (aarch64 vs armhfp): sing OS 64-bit bisa, ing prinsip, pas lan bisa digunakake ing versi Raspberry 3. ++?

CentOS sing ditresnani kanggo arsitektur ARM saka "Userland" ora cepet-cepet ngalih menyang versi kernel paling anyar lan dadi 64-bit. Lan repositori EPEL, sing disambungake saka Gusti Allah ngerti ing ngendi tanpa tandha digital, dadi ngipi elek nalika turu ora tenang ...

Ngomong minangka penganut distribusi berbasis RPM, aku kaget yen OS kanggo Raspberry wis dilalekake ing diskusi. Fedora! Lan iki senadyan kasunyatan sing release
saka versi 28 resmi ndhukung Raspberry Pi 3B + ing versi 64-dicokot!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (utawa router raspberry nganggo topi biru)
Ing artikel iki aku bakal ngomong babagan cara instalasi Fedora (aarch64) ing Raspberry Pi 3 Model B + Π² kinerja minimal ekstra. Aku bakal ngrembug babagan fitur ngunggahake titik akses Wi-Fi, sing diidentifikasi minangka asil saka operasi nyoba konfigurasi sadurunge ing CentOS 7.

0. Apa sampeyan kudu

Kabeh padha karo sing kadhaptar ing artikel sadurunge:

  • Raspberry Pi 3 Model B+;
  • microSD> = 4GB (mengko sampeyan bisa "transfer" sistem menyang drive 2GB);
  • Workstation karo maca kertu Linux lan microSD;
  • Konektivitas jaringan kabel antarane Raspberry lan workstation Linux (ing kasus iki, ora perlu monitor lan keyboard tambahan kanggo persiyapan), akses Internet saka piranti loro-lorone;
  • Katrampilan majeng ing Linux (kanggo ngerti lan ora wedi: pisah, dd ΠΈ mkfs).

Mirip iteratif lfs-bangunan Linux dhewe, gambar distribusi Fedora bakal digunakake, banjur adhedhasar, sistem minimal bakal digawe (tanpa "nyusun saka sumber").

1. Instalasi distribusi asli

Koordinat gambar mentah sistem ing Internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Sawise ngrekam ing microSD lan sadurunge nggunakake, sampeyan kudu:

  1. Nggedhekake "root" sistem file (partisi 3rd, 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. Pateni SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Mbusak Wisaya Persiyapan Awal:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Allow akses liwat 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
    

Saiki sampeyan bisa ngundhuh "raspberry" saka microSD lan nyambung menyang jaringan.

A wiwitan kadhemen njupuk bab siji lan setengah menit. TTX sistem sawise loading:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (utawa router raspberry nganggo topi biru)

rpm -qa | wc -l
444

2. Assembling sistem minimal

Sayange, "distribusi minimal" saka pangembang dadi adoh saka konsumsi sumber daya sing paling andhap asor. Gambar sistem bisa digawe luwih cilik.

Kanggo nindakake iki, sampeyan kudu mbukak skrip ing 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

Sawise mbukak skrip, subdirektori bakal digawe ing direktori saiki ($P) kanthi isi oyod edisi OS minimal anyar. Sampeyan bisa mateni Raspberry lan bali microSD menyang workstation Linux.

3. Instalasi sistem minimal

Instalasi mudhun kanggo nyalin file "gambar" OS minimal (dipikolehi ing langkah sadurunge) menyang microSD sing disiapake khusus menyang direktori sing cocog.

Kertu 2GB lan rong partisi cukup:

  1. / boot / efi - EFI+FAT32, boot, 100MB;
  2. / (ROOT) - EXT4, kabeh papan sing isih ana.

Sawise nyiapake microSD lan nyalin file menyang, sampeyan kudu:

  • ndandani OS boot;
  • nguripake jaringan;
  • ngatur akses liwat ssh.

Ndandani boot yaiku ngganti UUID saka bagean ing file:

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

lan parameter disimpen_entri= ing file pungkasan

Ing berkas:

microSD:/etc/fstab

sampeyan bisa nemokake nilai lawas, lan nilai saiki (up-to-date) ing output printah:

blkid | grep mmcblk | sort

Sawise ngganti, sampeyan uga kudu mbenerake isi kasebut fstab ing microSD supaya titik gunung cocog karo UUIDs partisi anyar.

Fungsi jaringan nalika sampeyan pisanan nguripake Raspberry bisa digayuh kanthi "kruk" cilik - nggawe link (secara skematis):

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

lan file:

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

Sawise download sukses, rapih peluncuran systemd-jaringand:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Akses superuser liwat ssh dikonfigurasi padha karo langkah 1.

Sawise nindakake kabeh kanthi ati-ati lan tanpa kesalahan, sampeyan bisa mindhah microSD menyang "raspberry" lan miwiti nggarap OS 64-bit ing versi minimal.

4. Sistem siap

"Gambar" sistem rampung, digawe miturut pandhuan ing ndhuwur, bisa didownload saka link:
Fedora-Tiny-31-5.5.7-200.aarch64

Iki bakal dadi arsip sing ngemot rong file: skrip instalasi lan TGZ karo file OS. Arsip kasebut kudu dibongkar ing workstation Linux, lebokake microSD (kertu 2GB cukup) lan mbukak skrip kanthi parameter - jeneng piranti:

./install /dev/mmcblk0

Ati-ati!

Tanpa bebaya, piranti bakal diformat lan sistem operasi bakal diinstal ing.

Sawise eksekusi skrip tanpa kesalahan, kertu kasebut bisa diatur maneh dadi "raspberry" lan digunakake: nyekel liwat dhcp, sandi - "1".

Sistem wis dibusak saka kabeh ID lan tombol, pramila saben instalasi anyar unik.

Aku mbaleni maneh, sistem - minimal! Mulane, aja kuwatir: DNF kasedhiya, supaya bisa digunakake, sampeyan kudu "nemokake" sing bener /etc/resolv.conf.

Wiwit kadhemen saka Raspberry butuh udakara 40 detik. TTX sistem sawise loading:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (utawa router raspberry nganggo topi biru)

rpm -qa | wc -l
191

5. WiFi

Aku bakal mikir sethithik babagan fitur ngleksanakake titik akses Wi-Fi. Kanggo spesifik, sampeyan bisa ngrujuk menyang sadurunge artikel.

EPEL ora dibutuhake maneh - kabeh paket wis ana ing repositori resmi.

Iku mbokmenawa worth nyerah DNSMASSQ, wiwit Fedora, ora kaya CentOS, nduweni systemd-networkd sing cukup anyar, sing nduweni server DHCP/DNS sing dibangun ing normal. Nanging kasunyatane ing pangembang RHEL8 ora gelem ndhukung tumpukan jaringan karo apa-apa liyane saka NM, ora menehi inspirasi kapercayan ing masa depan sing cerah saka proyek kasebut (bajingan). Ing cendhak, aku durung nyoba.

Kajaba iku, driver saiki kanggo adaptor Wi-Fi sing dibangun ora bisa "dicolong" saka distribusi Raspbian, nanging diundhuh langsung saka GitHub.

Iki kaya file firmware Broadcom ing Raspberryku (secara skematis):

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

Tanpa dheweke, sampeyan ora bakal entuk 5GHz / AC.

Babagan nomer lan jeneng antarmuka. Saiki aku banget menehi saran kanggo kabeh wong supaya ora nggunakake "layanan" switch piranti lunak kajaba pancen perlu (bridge), sing ngenalake beban sing signifikan menyang tumpukan jaringan lan nuntun depress. Yen sampeyan ora rencana duwe sawetara adaptor nirkabel, sampeyan kudu nggunakake mung antarmuka fisik. Aku duwe loro Wi-Fi, mula aku gabungke mung dadi jembatan piranti lunak (sanajan sampeyan bisa nindakake tanpa iki kanthi ndeleng persiyapan hostapd kanthi beda).

Lan aku seneng ngganti jeneng antarmuka.

Kanggo nindakake iki ing Fedora sampeyan kudu nggawe link simbolis:

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

banjur bakal bisa kanggo menehi jeneng migunani tanpa poking watara udev, nanging mung nggunakake systemd-networkd.

Contone, iki sing diarani adaptor jaringan ing routerku:

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 - dibangun ing, ext - adaptor Wi-Fi eksternal (USB) dirakit dadi "jembatan" lan;
  • wan - adaptor Ethernet sing nyambungake Internet.

Digatekake? fq_codel - bab tenan kelangan. Bebarengan karo kernel Linux sing seger, dheweke nindakake keajaiban nyata ing jangkoan nirkabel: "download torrent" sing sengit ora bakal nyebabake degradasi kacepetan ing antarane tanggane. Malah IP-TV omah sing operasi "liwat udhara" kanthi saluran sing dimuat ora "putus" lan ora "gagap"!

File layanan daemon wis ngalami owah-owahan cilik hostapd.

Saiki katon kaya iki (nggunakake conto adaptor sing dibangun):

[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

Lan "sihir" hostapd-int.conf kanggo nggarap 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]

Photoshop cilik sing digawe saka Ericsson A1018s:

(Sambungan Internet - 100Mbit/detik)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (utawa router raspberry nganggo topi biru)
Lan pungkasanipun, FAQ cilik.

6. Pitakonan

6.1 Napa nggawe router Wi-Fi ing Raspberry?

Siji bisa mangsuli mung, kaya "iku menarik kanggo nyoba lan kabeh sing."

Nanging nyatane, misale jek topik kasebut cukup serius. Ing jaman Internet "getih", tuku router ing toko lan isih dadi sandera kanggo pabrikan minangka prospek sing surem. Akeh wong sing wis ngerti yen ora bisa lungguh karo CVE utawa backdoor sing dibangun.

Mesthi wae, sampeyan bisa pindhah menyang firmware WRT saka para penggemar. Mesthine ana luwih dipercaya, nanging yen sampeyan ora pengin gumantung, banjur gunakake produk sampeyan dhewe. Saenipun, komputer lengkap supaya kabeh ing donya bisa dipun ginakaken ing. Ing babagan routing, mesthi.

Mulane, milih "raspberry" minangka langkah ekonomi murni: komputer nyata lan ing wektu sing padha murah. Sanajan, mbok menawa uga - karo "ganda" ing njero.

6.2 Nanging Raspberry minangka "router kurang": alon lan siji port Ethernet!

Minangka router Wi-Fi ngarep, Raspberry luwih saka marem kanggo kula. Aku wis ngomong babagan kecepatan udara ing ndhuwur. Lan mung ana siji Ethernet, uga, ing produk sing padha saka Apple kira-kira padha!

Nanging serius, mesthi aku pengin luwih. Lan sanajan kasunyatane ing omahku kabeh piranti disambungake kanthi nirkabel, kadhangkala sambungan tembaga isih dibutuhake. Kanggo kasus kaya mengkono, aku duwe "hub seluler" ing saham:

piranti - kaya ikiRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (utawa router raspberry nganggo topi biru)

6.3 Yen iki router, banjur ora ngandika bab "tuning" TCP / IP, amarga iki penting!

Saliyane nyetel tumpukan jaringan (tcp_fastopen, YeAH, lsp), iki lan artikel sadurunge ora nutupi nuansa liyane, utamane, proses nyiapake microSD kanggo panggunaan optimal (sanajan installer nyoba ngowahi format kertu memori ing cara sing angel). Proses dandan ora ana telas, sampeyan mung kudu mandheg ing wektu.

6.4 Kenapa Fedora?

Amarga aku seneng! Fedora minangka sistem "mainstream" kanggo geeks, sing dimaksudake kanggo artikel iki. Ing wektu nulis, mbok menawa siji-sijine OS sing kanggo Raspberry ing versi 64-bit resmi didhukung dening staf pangembang sing signifikan (sing ora sabar aku ngenteni. kernel 5.6).

6.5 Apa Bluetooth bisa digunakake? Kepiye video / swara / GPIO?

ora ngerti. Artikel kasebut babagan instalasi minimal sistem lan panggunaan sabanjure minangka router Wi-Fi.

6.6 Napa kabeh artikel babagan CentOS/Fedora/RedHat diwiwiti kanthi mateni SELinux?

Amarga sistem minimal, iku ora malah firewall utawa keperluan kanggo nyetel munggah. Sapa wae sing mbutuhake bisa nginstal tambahan kabeh sing dibutuhake.

6.7 Sistem ora bisa digunakake, sandi ora bisa diganti - ora passwd. Ora ping, ora apa-apa!

Ana DNF. Utawa pilihan instalasi iki dudu kanggo sampeyan - gunakake kit distribusi saka pangembang.

6.8 Ngendi SWAP? Aku ora bisa urip tanpa dheweke!

Apa bener? Oke banjur:

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 Aku pengin langsung ndownload gambar sing wis digawe kanthi titik akses Wi-Fi sing wis dikonfigurasi!

Nyiyapake installer "kanggo kabeh" mbutuhake wektu lan gaweyan. Yen (tiba-tiba!) Wong pancene nemu iki menarik lan perlu, nulis kanggo kita lan kita bakal teka munggah karo soko.

Aku bakal rampung karo iki.

Aku pengin kabeh surfing aman lan kontrol maksimum liwat infrastruktur!

Source: www.habr.com

Add a comment