Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router na may asul na sumbrero)

Sa artikulo Raspberry Pi + CentOS = Wi-Fi Hotspot (o raspberry router na may pulang sumbrero) Nag-usap ako tungkol sa isang paraan upang gawing wireless access point ang isang Raspberry gamit ang CentOS operating system. Sa pamamagitan ng pag-assemble ng aking home router gamit ang disenyong ito, nasiyahan ako sa aking malikhaing kaakuhan at nakatanggap ng pagpapalakas ng kapayapaan ng isip para sa isang kritikal na elemento ng aking komportableng imprastraktura. Gayunpaman, ang pakiramdam ng hindi kumpleto ng solusyon at panloob na pagiging perpekto ay nagmumulto sa akin: "isang hindi perpektong resulta ng trabaho ay walang karapatang umiral." Ang pag-iisip na "ang ideal ay maaari at dapat na makamit" ay hindi iniwan sa akin ng isang minuto.

At pagkatapos ay isang araw, sa isa sa mga pampakay na forum, nakatagpo ako ng isang talakayan tungkol sa kaunting lalim ng umiiral na mga operating system para sa Raspberry (aarch64 vs armhfp): kung saan ang 64-bit OS ay maaaring, sa prinsipyo, magkasya at gumana sa Raspberry bersyon 3 ++?

Ang aking minamahal na CentOS para sa arkitektura ng ARM mula sa "Userland" ay hindi nagmamadaling lumipat sa pinakabagong bersyon ng kernel at maging 64-bit. At ang EPEL repository, konektado mula sa Diyos ay nakakaalam kung saan walang digital signature, ay isang bangungot sa aking hindi mapakali na pagtulog...

Sa pagsasalita bilang isang sumusunod sa mga distribusyon na nakabatay sa RPM, nagulat ako nang makitang ang OS para sa Raspberry ay ganap na nakalimutan sa mga talakayan Fedora! At ito sa kabila ng katotohanan na ang paglabas nito
mula sa bersyon 28, opisyal nitong sinusuportahan ang Raspberry Pi 3B+ sa 64-bit na bersyon!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router na may asul na sumbrero)
Sa artikulong ito ay magsasalita ako tungkol sa paraan ng pag-install Fedora (aarch64) sa Raspberry Pi 3 Model B + Π² sobrang minimal na performance. Sa madaling sabi ay tatalakayin ko ang mga feature ng pagpapataas ng Wi-Fi access point, na natukoy bilang resulta ng pagsubok na operasyon ng aking nakaraang configuration sa CentOS 7.

0. Ano ang kakailanganin mo

Ang lahat ay pareho sa nakalista sa nakaraang artikulo:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (mamaya maaari mong "ilipat" ang system sa isang 2GB drive);
  • Workstation na may Linux at microSD card reader;
  • Wired network connectivity sa pagitan ng Raspberry at isang Linux workstation (sa kasong ito, walang karagdagang monitor at keyboard ang kakailanganin para sa pag-setup), Internet access mula sa parehong device;
  • Advanced na kasanayan sa Linux (para malaman at huwag matakot: nahati, dd ΠΈ mkfs).

Katulad ng umuulit LFS-pagbuo ng iyong sariling Linux, ang imahe ng pamamahagi ng Fedora ay gagamitin, at pagkatapos ay batay dito, isang minimal na sistema ang malilikha (nang walang "pag-compile mula sa pinagmulan").

1. Pag-install ng orihinal na pamamahagi

Mga coordinate ng hilaw na imahe ng system sa Internet:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Pagkatapos i-record ito sa microSD at bago ito gamitin, kailangan mong:

  1. Palawakin ang "root" ng 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. Huwag paganahin ang SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

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

  4. Payagan ang pag-access sa pamamagitan ng 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
    

Ngayon ay maaari mong i-download ang "raspberry" mula sa microSD at kumonekta dito sa pamamagitan ng network.

Ang malamig na pagsisimula ay tumatagal ng halos isa't kalahating minuto. TTX ng system pagkatapos mag-load:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router na may asul na sumbrero)

rpm -qa | wc -l
444

2. Pagtitipon ng isang minimal na sistema

Sa kasamaang palad, ang "minimal na pamamahagi" mula sa mga developer ay lumalabas na malayo sa pinaka-katamtaman sa pagkonsumo ng mapagkukunan. Ang imahe ng system ay maaaring gawing mas maliit.

Upang gawin ito, kailangan mong patakbuhin 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

Pagkatapos patakbuhin ang script, isang subdirectory ang gagawin sa kasalukuyang direktoryo ($P) kasama ang mga nilalaman ng ugat ng bagong minimal na edisyon ng OS. Maaari mong i-off ang Raspberry at ibalik ang microSD sa Linux workstation.

3. Pag-install ng isang minimal na sistema

Ang pag-install ay nagmumula sa pagkopya ng kaunting OS na "image" na mga file (nakuha sa nakaraang hakbang) sa isang espesyal na inihandang microSD sa naaangkop na mga direktoryo.

Ang isang 2GB card at dalawang partisyon dito ay sapat na:

  1. / boot / efi - EFI+FAT32, boot, 100MB;
  2. / (ugat) - EXT4, lahat ng natitirang espasyo.

Pagkatapos ihanda ang microSD at kopyahin ang mga file dito, kailangan mong:

  • ayusin ang OS boot;
  • i-on ang network;
  • i-configure ang pag-access sa pamamagitan ng ssh.

Ang pag-aayos ng boot ay upang palitan ang UUID ng mga seksyon sa mga file:

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

at parameter saved_entry= sa huling file

Sa file:

microSD:/etc/fstab

mahahanap mo ang mga lumang halaga, at ang kasalukuyang (na-update) na mga halaga sa output ng command:

blkid | grep mmcblk | sort

Pagkatapos ng pagpapalit, dapat mo ring itama ang mga nilalaman fstab sa microSD upang ang mga mount point ay tumutugma sa mga bagong partition na UUID.

Ang pag-andar ng network kapag una mong binuksan ang Raspberry ay maaaring makamit gamit ang isang maliit na "saklay" - lumikha ng isang link (sa eskematiko):

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

at file:

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

Pagkatapos ng matagumpay na pag-download, ayusin ang paglulunsad systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Ang pag-access ng superuser sa pamamagitan ng ssh ay na-configure nang katulad sa hakbang 1.

Matapos magawa ang lahat nang maingat at walang mga error, maaari mong ilipat ang microSD sa "raspberry" at magsimulang magtrabaho kasama ang isang 64-bit OS sa isang dagdag na minimal na bersyon.

4. Ready system

Ang "larawan" ng tapos na sistema, na nilikha ayon sa mga tagubilin sa itaas, ay maaaring ma-download mula sa link:
Fedora-Tiny-31-5.5.7-200.aarch64

Ito ay magiging isang archive na naglalaman ng dalawang file: ang script ng pag-install at TGZ na may mga OS file. Ang archive ay kailangang i-unpack sa isang Linux workstation, magpasok ng microSD (sapat na ang isang 2GB card) at patakbuhin ang script na may isang parameter - ang pangalan ng device:

./install /dev/mmcblk0

Mag-ingat!

Nang walang anumang mga babala, ang aparato ay mai-format at ang operating system ay mai-install dito.

Pagkatapos ng walang error na pagpapatupad ng script, ang card ay maaaring muling ayusin sa "raspberry" at gamitin: catch sa pamamagitan ng dhcp, password - "1".

Na-clear ang system sa lahat ng ID at key, kaya naman natatangi ang bawat bagong pag-install.

Uulitin ko muli, ang sistema - minimal! Samakatuwid, huwag maalarma: Available ang DNF, para gumana ito, kailangan mong "imbento" ang tama /etc/resolv.conf.

Ang malamig na simula ng Raspberry ay tumatagal ng mga 40 segundo. TTX ng system pagkatapos mag-load:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router na may asul na sumbrero)

rpm -qa | wc -l
191

5. WiFi

Pag-isipan ko nang kaunti ang mga feature ng pagpapatupad ng Wi-Fi access point. Para sa mga detalye, maaari kang sumangguni sa aking nakaraan Artikulo.

Hindi na kailangan ang EPEL - lahat ng mga pakete ay nakapaloob sa mga opisyal na repositoryo.

Malamang na sulit na sumuko dnsmasq, dahil ang Fedora, hindi tulad ng CentOS, ay may medyo kamakailang systemd-networkd, na may normal na built-in na DHCP/DNS server. Ngunit ang katotohanan ay sa mga developer ng RHEL8 tumanggi na suportahan ang network stack sa anumang bagay maliban sa NM, ay hindi nagbibigay inspirasyon sa pagtitiwala sa magandang kinabukasan ng proyekto (mga scoundrel). In short, hindi ko pa nasusubukan.

Dagdag pa, ang kasalukuyang mga driver para sa built-in na Wi-Fi adapter ay hindi maaaring "nakawin" mula sa pamamahagi ng Raspbian, ngunit direktang i-download mula sa github.

Ito ang hitsura ng mga file ng Broadcom firmware sa aking Raspberry (sa eskematiko):

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 ang mga ito hindi ka makakakuha ng 5GHz/AC.

Tungkol sa bilang at pangalan ng mga interface. Ngayon mariing inirerekumenda ko sa lahat na huwag gumamit ng "mga serbisyo" ng mga switch ng software maliban kung talagang kinakailangan (tulay), na nagpapakilala ng makabuluhang pagkarga sa network stack at pinipigilan ang pagruruta. Kung hindi mo planong magkaroon ng maramihang mga wireless adapter, dapat mong gamitin lamang ang mga pisikal na interface. Mayroon akong dalawang Wi-Fi, kaya pinagsasama-sama ko lamang ang mga ito sa isang tulay ng software (bagaman magagawa mo nang wala ito sa pamamagitan ng pagtingin sa setup ng hostapd nang naiiba).

At gustung-gusto kong palitan ang pangalan ng mga interface.

Upang gawin ito sa Fedora kailangan mong lumikha ng isang simbolikong link:

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

at pagkatapos ay magiging posible na magbigay ng mga makabuluhang pangalan nang hindi kumukunot-noo udev, ngunit gumagamit lamang ng systemd-networkd.

Halimbawa, ito ang tawag sa mga network adapter sa aking 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 β€” mga external (USB) na Wi-Fi adapter na pinagsama sa isang "tulay" lan;
  • wan β€” Ethernet adapter kung saan nakakonekta ang Internet.

Napansin mo ba? fq_codel - isang talagang cool na bagay. Kasama ang isang sariwang kernel ng Linux, gumagawa sila ng mga tunay na himala sa wireless range: ang isang mabangis na "torrent download" ay hindi hahantong sa isang biglaang pagkasira ng bilis sa mga kapitbahay. Kahit na ang isang home IP-TV na tumatakbo "sa hangin" na may isang load na channel ay hindi "nasira" at hindi "nauutal" sa lahat!

Ang file ng serbisyo ng daemon ay sumailalim sa maliliit na pagbabago hostapd.

Mukhang ganito na ngayon (gamit ang halimbawa ng built-in na 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

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

Isang maliit na photoshop na ginawa mula sa aking Ericsson A1018s:

(Koneksyon sa Internet - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router na may asul na sumbrero)
At sa wakas, isang maliit na FAQ.

6. FAQ

6.1 Bakit gumawa ng Wi-Fi router sa Raspberry?

Ang isa ay maaaring sumagot nang simple, tulad ng "kagiliw-giliw na subukan at lahat ng iyon."

Ngunit sa katunayan, para sa akin ay medyo seryoso ang paksa. Sa panahon ng "madugong" Internet, ang pagbili ng isang router sa isang tindahan at ang natitirang hostage sa tagagawa nito ay isang napakalungkot na pag-asa. Naiintindihan na ng maraming tao na hindi posible ang pag-upo na may CVE o built-in na backdoor.

Siyempre, maaari kang lumipat sa WRT firmware mula sa mga mahilig. Marahil ay may higit na tiwala sa kanila, ngunit kung ayaw mong umasa sa kanila, gamitin mo na lang ang iyong sariling produkto. Sa isip, isang ganap na computer upang ang lahat ng bagay sa mundo ay maipatupad dito. Sa mga tuntunin ng pagruruta, siyempre.

Samakatuwid, ang pagpili ng isang "raspberry" ay isang purong pang-ekonomiyang paglipat: isang tunay na computer at sa parehong oras ay isang mura. Bagaman, marahil din - kasama ang kanilang mga "doble" sa loob.

6.2 Ngunit ang Raspberry ay isang "mababang router": mabagal at may isang Ethernet port!

Bilang isang home Wi-Fi router, ang Raspberry ay higit na kasiya-siya para sa akin. Napag-usapan ko na ang tungkol sa bilis ng hangin sa itaas. At mayroon lamang isang Ethernet, mabuti, sa isang katulad na produkto mula sa Apple ito ay halos pareho!

Pero seryoso, syempre mas gusto ko. At sa kabila ng katotohanan na sa aking sambahayan ang lahat ng mga aparato ay konektado nang wireless, kung minsan ang isang tansong koneksyon ay kinakailangan pa rin. Para sa mga ganitong kaso, mayroon akong stock na "mobile hub":

device - isang katulad nitoRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (o raspberry router na may asul na sumbrero)

6.3 Kung ito ay isang router, walang sinabi tungkol sa "pag-tune" ng TCP/IP, dahil ito ay mahalaga!

Bilang karagdagan sa pag-set up ng network stack (tcp_fastopen, YeAH, atbp.), ito at ang nakaraang artikulo ay hindi sumasaklaw sa iba pang mga nuances, lalo na, ang proseso ng paghahanda ng microSD para sa pinakamainam na paggamit (bagaman sinusubukan ng installer na i-format ang memory card sa isang nakakalito na paraan). Ang proseso ng pagpapabuti ay walang katapusang, kailangan mo lamang na huminto sa oras.

6.4 Bakit Fedora?

Dahil gusto ko! Ang Fedora ay isang "mainstream" na sistema para sa mga geeks, kung kanino talaga nilalayon ang artikulong ito. Sa oras ng pagsulat, marahil ang tanging OS na para sa Raspberry sa 64-bit na bersyon ay opisyal na sinusuportahan ng isang makabuluhang kawani ng mga developer (kung kanino hindi ako makapaghintay kernel 5.6).

6.5 Gumagana ba ang Bluetooth? Kamusta ang video/tunog/GPIO?

hindi ko alam. Ang artikulo ay tungkol sa kaunting pag-install ng system at ang kasunod na paggamit nito bilang isang Wi-Fi router.

6.6 Bakit nagsisimula ang lahat ng artikulo tungkol sa CentOS/Fedora/RedHat sa hindi pagpapagana ng SELinux?

Dahil minimal ang system, wala itong firewall o mga utility para sa pag-set up nito. Maaaring i-install ng sinumang nangangailangan nito ang lahat ng kailangan nila.

6.7 Hindi magagamit ang system, hindi mababago ang password - walang passwd. Walang ping, walang wala!

Mayroon DNF. O hindi para sa iyo ang opsyon sa pag-install na ito - gamitin ang distribution kit mula sa mga developer.

6.8 Nasaan ang SWAP? Hindi ko kayang mabuhay ng wala siya!

Totoo ba? Sige:

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 kong mag-download kaagad ng isang yari na larawan na may naka-configure na Wi-Fi access point!

Ang paghahanda ng isang installer "para sa lahat" ay mangangailangan ng ilang oras at pagsisikap. Kung (bigla-bigla!) ang isang tao ay talagang nakahanap na ito ay kawili-wili at kinakailangan, sumulat sa amin at magkakaroon kami ng isang bagay.

Tatapusin ko na ito.

Nais kong ligtas ang lahat sa pag-surf at maximum na kontrol sa imprastraktura!

Pinagmulan: www.habr.com

Magdagdag ng komento