Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router nga adunay asul nga kalo)

Ang artikulo Raspberry Pi + CentOS = Wi-Fi Hotspot (o raspberry router nga adunay pula nga kalo) Naghisgot ako bahin sa usa ka paagi aron mahimo ang usa ka Raspberry nga usa ka wireless access point gamit ang operating system nga CentOS. Pinaagi sa pag-assemble sa akong router sa balay gamit kini nga disenyo, gitagbaw nako ang akong pagkamamugnaon ug nakadawat og dugang kalinaw sa hunahuna alang sa usa ka kritikal nga elemento sa akong komportable nga imprastraktura. Bisan pa, ang pagbati sa pagkadili kompleto sa solusyon ug ang internal nga pagkaperpeksionismo naghasol kanako: "ang dili hingpit nga resulta sa trabaho walay katungod nga maglungtad." Ang hunahuna nga "ang sulundon mahimo ug kinahanglan nga makab-ot" wala mobiya kanako sa usa ka minuto.

Ug unya usa ka adlaw, sa usa sa mga tema nga forum, nakit-an nako ang usa ka diskusyon bahin sa gamay nga giladmon sa naglungtad nga mga operating system alang sa Raspberry (aarch64 vs armhfp): nga ang 64-bit OS mahimo, sa prinsipyo, mohaum ug magtrabaho sa bersyon sa Raspberry 3 ++?

Ang akong minahal nga CentOS alang sa arkitektura sa ARM gikan sa "Userland" wala magdali sa pagbalhin sa pinakabag-o nga bersyon sa kernel ug mahimong 64-bit. Ug ang EPEL repository, konektado gikan sa Diyos nahibal-an kung diin kung wala’y digital nga pirma, usa ka damgo sa akong wala’y pahulay nga pagkatulog…

Namulong isip usa ka sumusunod sa RPM-based distributions, natingala ko nga ang OS para sa Raspberry hingpit nga nakalimtan sa mga diskusyon. Fedora! Ug kini bisan pa sa kamatuoran nga ang pagpagawas niini
gikan sa bersyon 28 kini opisyal nga nagsuporta sa Raspberry Pi 3B+ sa 64-bit nga bersyon!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router nga adunay asul nga kalo)
Niini nga artikulo maghisgot ako bahin sa pamaagi sa pag-install Fedora (aarch64) sa Raspberry Pi 3 Model B + Π² sobrang gamay nga performance. Ako sa makadiyot maghisgot sa mga bahin sa pagpataas sa usa ka Wi-Fi access point, nga giila isip resulta sa pagsulay nga operasyon sa akong kanhi nga configuration sa CentOS 7.

0. Unsa ang imong gikinahanglan

Ang tanan parehas sa gilista sa miaging artikulo:

  • Raspberry Pi 3 Model B+;
  • microSD>= 4GB (sa ulahi mahimo nimong "ibalhin" ang sistema sa usa ka 2GB drive);
  • Workstation nga adunay Linux ug microSD card reader;
  • Wired network connectivity tali sa Raspberry ug sa usa ka Linux workstation (sa kini nga kaso, walay dugang nga monitor ug keyboard ang gikinahanglan alang sa setup), Internet access gikan sa duha ka mga device;
  • Advanced nga kahanas sa Linux (aron mahibal-an ug dili mahadlok: nagbulag, dd ΠΈ mkfs).

Susama sa iterative lfs-pagtukod sa imong kaugalingon nga Linux, ang imahe sa pag-apod-apod sa Fedora gamiton, ug dayon base niini, usa ka gamay nga sistema ang himuon (nga wala "pag-compile gikan sa gigikanan").

1. Pag-instalar sa orihinal nga pag-apod-apod

Mga koordinasyon sa hilaw nga imahe sa sistema sa Internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Human sa pagrekord niini sa microSD ug sa dili pa kini gamiton, kinahanglan nimo:

  1. Pagpalapad sa "gamut" sa file system (3rd partition, 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. I-disable ang SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Kuhaa ang Initial Setup Wizard:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Tugoti ang pag-access pinaagi sa 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
    

Karon mahimo nimong i-download ang "raspberry" gikan sa microSD ug makonektar kini pinaagi sa network.

Ang bugnaw nga pagsugod mokabat ug usa ug tunga ka minuto. TTX sa sistema pagkahuman sa pagkarga:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router nga adunay asul nga kalo)

rpm -qa | wc -l
444

2. Pag-assemble og gamay nga sistema

Ikasubo, ang "gamay nga pag-apod-apod" gikan sa mga nag-develop nahimo nga layo sa labing kasarangan nga pagkonsumo sa kapanguhaan. Ang imahe sa sistema mahimo nga mas gamay.

Aron mahimo kini, kinahanglan nimo nga ipadagan ang script sa 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

Human sa pagpadagan sa script, usa ka subdirectory ang pagabuhaton sa kasamtangan nga direktoryo ($P) nga adunay mga sulud sa gamut sa bag-ong minimal nga edisyon sa OS. Mahimo nimong i-off ang Raspberry ug ibalik ang microSD sa Linux workstation.

3. Pag-instalar sa gamay nga sistema

Ang pag-install nagsugod sa pagkopya sa gamay nga OS nga "imahe" nga mga file (nakuha sa miaging lakang) sa usa ka espesyal nga giandam nga microSD sa angay nga mga direktoryo.

Ang usa ka 2GB nga kard ug duha ka partisyon niini igo na:

  1. / boot / efi - EFI+FAT32, boot, 100MB;
  2. / (gamut) - EXT4, ang tanan nga nahabilin nga luna.

Pagkahuman sa pag-andam sa microSD ug pagkopya sa mga file niini, kinahanglan nimo:

  • ayuhon ang OS boot;
  • i-on ang network;
  • i-configure ang pag-access pinaagi sa ssh.

Ang pag-ayo sa boot mao ang pag-ilis sa UUID sa mga seksyon sa mga file:

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

ug parameter saved_entry= sa katapusang file

Sa file:

microSD:/etc/fstab

makit-an nimo ang daan nga mga kantidad, ug ang karon (up-to-date) nga mga kantidad sa output sa command:

blkid | grep mmcblk | sort

Human sa pag-ilis, kinahanglan nimo usab nga itul-id ang mga sulod fstab sa microSD aron ang mga mount point motakdo sa bag-ong partition UUIDs.

Ang pag-andar sa network sa una nimo nga pag-on sa Raspberry mahimong makab-ot gamit ang gamay nga "krus" - paghimo usa ka link (sa eskematiko):

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

ug file:

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

Pagkahuman sa usa ka malampuson nga pag-download, limpyohi ang paglansad systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Ang pag-access sa superuser pinaagi sa ssh gi-configure parehas sa lakang 1.

Sa pagbuhat sa tanan nga maampingon ug walay mga kasaypanan, mahimo nimong ibalhin ang microSD ngadto sa "raspberry" ug magsugod sa pagtrabaho sa usa ka 64-bit OS sa usa ka gamay nga bersyon.

4. Andam nga sistema

Ang "larawan" sa nahuman nga sistema, nga gihimo sumala sa mga panudlo sa ibabaw, mahimong ma-download gikan sa link:
Fedora-Tiny-31-5.5.7-200.aarch64

Kini usa ka archive nga adunay duha ka mga file: ang script sa pag-install ug TGZ nga adunay mga file sa OS. Ang archive kinahanglan nga ma-unpack sa usa ka Linux workstation, magsal-ot sa usa ka microSD (usa ka 2GB card igo na) ug ipadagan ang script nga adunay usa ka parameter - ang ngalan sa aparato:

./install /dev/mmcblk0

Pag-amping!

Kung wala’y bisan unsang mga pasidaan, ang aparato ma-format ug ang operating system i-install niini.

Pagkahuman sa wala’y kasaypanan nga pagpatuman sa script, ang kard mahimong mabag-o sa "raspberry" ug magamit: pagdakop pinaagi sa dhcp, password - "1".

Ang sistema gilimpyohan sa tanan nga mga ID ug mga yawe, mao nga ang matag bag-ong instalasyon talagsaon.

Akong balikon sa makausa pa, ang sistema - gamay! Busa, ayaw kabalaka: Ang DNF anaa, aron kini molihok kinahanglan nimo nga "imbento" ang husto /etc/resolv.conf.

Ang bugnaw nga pagsugod sa Raspberry mokabat ug mga 40 segundos. TTX sa sistema pagkahuman sa pagkarga:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router nga adunay asul nga kalo)

rpm -qa | wc -l
191

5. WiFi

Maghisgot ko og gamay sa mga bahin sa pagpatuman sa Wi-Fi access point. Alang sa mga detalye, mahimo nimong i-refer ang akong nauna artikulo.

Dili na kinahanglan ang EPEL - ang tanan nga mga pakete naa sa mga opisyal nga repositoryo.

Lagmit angayan nga moundang dnsmasq, tungod kay ang Fedora, dili sama sa CentOS, adunay bag-o nga systemd-networkd, nga adunay normal nga built-in nga DHCP/DNS servers. Apan ang tinuod mao nga sa RHEL8 developers nagdumili sa pagsuporta sa network stack sa bisan unsa gawas sa NM, dili makadasig sa pagsalig sa masanag nga kaugmaon sa proyekto (mga badlungon). Sa laktod nga pagkasulti, wala pa nako kini gisulayan.

Dugang pa, ang kasamtangan nga mga drayber alang sa built-in nga Wi-Fi adapter dili mahimong "pagkawat" gikan sa pag-apod-apod sa Raspbian, apan direktang i-download gikan sa github.

Kini ang hitsura sa Broadcom firmware files sa akong Raspberry (schematically):

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

Kung wala sila dili ka makakuha og 5GHz/AC.

Mahitungod sa gidaghanon ug mga ngalan sa mga interface. Karon kusganon kong girekomenda sa tanan nga dili mogamit sa "mga serbisyo" sa mga switch sa software gawas kung kinahanglan gyud (tulay), nga nagpaila sa mahinungdanong load sa network stack ug depress routing. Kung wala ka nagplano nga adunay daghang mga wireless adapter, nan kinahanglan nimo nga gamiton lamang ang pisikal nga mga interface. Duna koy duha ka Wi-Fi, mao nga gihiusa ko lang sila sa usa ka tulay sa software (bisan kung mahimo nimo kung wala kini pinaagi sa pagtan-aw sa setup sa hostapd nga lahi).

Ug ganahan ko sa pag-usab sa mga interface.

Aron mahimo kini sa Fedora kinahanglan nimo nga maghimo usa ka simbolo nga link:

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

ug unya kini mahimong posible sa paghatag og makahuluganon nga mga ngalan nga walay pag-ukay-ukay udev, apan gamit lang ang systemd-networkd.

Pananglitan, mao kini ang tawag sa mga adapter sa network sa akong router:

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 - built-in, ext - external (USB) Wi-Fi adapters nga gitigom ngadto sa usa ka "tulay" lan;
  • wan β€” Ethernet adapter diin ang Internet konektado.

Namatikdan ba nimo? fq_codel - usa ka tinuod nga cool nga butang. Kauban sa usa ka lab-as nga Linux kernel, naghimo sila og tinuod nga mga milagro sa wireless range: ang usa ka mabangis nga "torrent download" dili mosangpot sa usa ka kalit nga pagkunhod sa katulin sa mga silingan. Bisan ang usa ka IP-TV sa balay nga nag-operate "sa hangin" nga adunay usa ka puno nga channel dili "mabungkag" ug dili "mag-stutter"!

Ang file sa serbisyo sa daemon nakaagi sa gagmay nga mga pagbag-o hostapd.

Ingon kini karon (gamit ang pananglitan sa usa ka built-in nga adaptor):

[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

Ug ang "magic" hostapd-int.conf para sa pagtrabaho sa 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]

Usa ka gamay nga photoshop nga gihimo gikan sa akong Ericsson A1018s:

(Koneksyon sa Internet - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router nga adunay asul nga kalo)
Ug sa katapusan, usa ka gamay nga FAQ.

6. FAQ

6.1 Ngano nga maghimo usa ka Wi-Fi router sa Raspberry?

Ang usa mahimong yano nga motubag, sama sa "kini makapaikag nga sulayan ug tanan kana."

Pero sa tinuod lang, para nako seryoso kaayo ang topic. Sa panahon sa "dugo" nga Internet, ang pagpalit sa usa ka router sa usa ka tindahan ug ang nahabilin nga pag-hostage sa tiggama niini usa ka dili maayo nga paglaum. Daghang mga tawo ang nakasabut nga ang paglingkod nga adunay CVE o built-in nga backdoor dili mahimo.

Siyempre, mahimo kang molalin sa WRT firmware gikan sa mga mahiligon. Mahimong mas daghan ang pagsalig kanila, apan kung dili nimo gusto nga magdepende kanila, gamita lang ang imong kaugalingon nga produkto. Sa tinuud, usa ka bug-os nga kompyuter aron ang tanan sa kalibutan ma-implementar niini. Sa termino sa routing, siyempre.

Busa, ang pagpili sa usa ka "raspberry" usa ka lunsay nga lakang sa ekonomiya: usa ka tinuod nga kompyuter ug sa samang higayon usa ka dili mahal. Bisan pa, tingali usab - uban ang ilang "doble" sa sulod.

6.2 Apan ang Raspberry usa ka "ubos nga router": hinay ug adunay usa ka Ethernet port!

Ingon usa ka router sa Wi-Fi sa balay, ang Raspberry labi pa nga makatagbaw alang kanako. Nahisgotan na nako ang katulin sa hangin sa ibabaw. Ug adunay usa ra ka Ethernet, maayo, sa parehas nga produkto gikan sa Apple parehas ra kini!

Pero seryoso, syempre mas ganahan ko. Ug bisan pa sa kamatuoran nga sa akong panimalay ang tanan nga mga himan konektado sa wireless, usahay gikinahanglan ang usa ka koneksyon nga tumbaga. Alang sa ingon nga mga kaso, ako adunay usa ka "mobile hub" sa stock:

device - usa ka butang nga sama niiniRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router nga adunay asul nga kalo)

6.3 Kung kini usa ka router, nan wala’y gisulti bahin sa "pag-tune" sa TCP / IP, tungod kay kini hinungdanon!

Gawas pa sa pag-set up sa network stack (tcp_fastopen, YeAH, ug uban pa), kini ug ang miaging artikulo wala maglakip sa ubang mga nuances, ilabi na, ang proseso sa pag-andam sa microSD alang sa kamalaumon nga paggamit (bisan pa ang installer naningkamot sa pag-format sa memory card sa usa ka lisud nga paagi). Ang proseso sa pag-uswag walay katapusan, kinahanglan ra nimo nga mohunong sa oras.

6.4 Ngano nga Fedora?

Kay ganahan ko! Ang Fedora usa ka "mainstream" nga sistema alang sa mga geeks, alang kang kinsa kini nga artikulo sa tinuud gituyo. Sa panahon sa pagsulat, tingali ang bugtong OS nga alang sa Raspberry sa 64-bit nga bersyon opisyal nga gisuportahan sa usa ka mahinungdanong kawani sa mga developers (nga dili ako makahulat. kernel 5.6).

6.5 Nagtrabaho ba ang Bluetooth? Kumusta ang video/tunog/GPIO?

wala kabalo. Ang artikulo mahitungod sa gamay nga pag-instalar sa sistema ug ang sunod nga paggamit niini isip Wi-Fi router.

6.6 Ngano nga ang tanan nga mga artikulo bahin sa CentOS/Fedora/RedHat nagsugod sa pag-disable sa SELinux?

Tungod kay ang sistema gamay ra, wala kini usa ka firewall o mga gamit alang sa pag-set up niini. Bisan kinsa nga nanginahanglan niini mahimo nga mag-install dugang sa tanan nga ilang kinahanglan.

6.7 Ang sistema dili magamit, ang password dili mausab - walay passwd. Walay ping, walay bisan unsa!

Adunay DNF. O kini nga kapilian sa pag-instalar dili alang kanimo - gamita ang distribution kit gikan sa mga developers.

6.8 Asa ang SWAP? Dili ko mabuhi nga wala siya!

Tinuod ba? OK unya:

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 Gusto ko nga i-download dayon ang usa ka andam nga imahe nga adunay gi-configure nga Wi-Fi access point!

Ang pag-andam sa usa ka installer "para sa tanan" magkinahanglan ug panahon ug paningkamot. Kung (kalit!) adunay usa nga nakakaplag niini nga makapaikag ug kinahanglan, pagsulat kanamo ug kami adunay usa ka butang.

Tapuson ko kini.

Nanghinaut ko nga ang tanan luwas nga mag-surf ug labing taas nga kontrol sa imprastraktura!

Source: www.habr.com

Idugang sa usa ka comment