Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia ya bluu)

Katika makala Raspberry Pi + CentOS = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia nyekundu) Nilizungumza juu ya njia ya kugeuza Raspberry kuwa sehemu ya ufikiaji isiyo na waya kwa kutumia mfumo wa uendeshaji wa CentOS. Kwa kuunganisha kipanga njia changu cha nyumbani kulingana na mchoro huu, nilitosheleza ubinafsi wangu wa ubunifu na nikapata nyongeza ya amani ya akili kwa kipengele muhimu cha miundombinu yangu laini. Hata hivyo, hisia ya kutokamilika kwa suluhisho na ukamilifu wa ndani ilinisumbua: "matokeo yasiyo kamili ya kazi hayana haki ya kuwepo." Wazo la kwamba "lazima linaweza na linapaswa kupatikana" halikuniacha kwa dakika moja.

Na kisha siku moja, kwenye moja ya mabaraza ya mada, nilikutana na mjadala juu ya kina kidogo cha mifumo ya uendeshaji iliyopo ya Raspberry (aarch64 vs armhfp): ambayo 64-bit OS inaweza, kimsingi, kutoshea na kufanya kazi kwenye toleo la 3 la Raspberry. ++?

CentOS yangu mpendwa ya usanifu wa ARM kutoka "Userland" haikuwa na haraka ya kubadili toleo la hivi karibuni la kernel na kugeuka kuwa 64-bit. Na hazina ya EPEL, iliyounganishwa kutoka kwa Mungu anajua ni wapi bila saini ya dijiti, ilikuwa ndoto mbaya katika usingizi wangu usio na utulivu ...

Nikizungumza kama mfuasi wa usambazaji wa msingi wa RPM, nilishangaa kupata kuwa OS ya Raspberry ilisahaulika kabisa kwenye majadiliano. Fedora! Na hii licha ya ukweli kwamba kutolewa kwake
kutoka kwa toleo la 28 inasaidia rasmi Raspberry Pi 3B+ katika toleo la 64-bit!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia ya bluu)
Katika makala hii nitazungumzia kuhusu njia ya ufungaji Fedora (aarch64) juu ya Raspberry Pi 3 Mfano B + Π² utendaji mdogo wa ziada. Nitazingatia kwa ufupi vipengele vya kuinua eneo la ufikiaji la Wi-Fi, iliyotambuliwa kama matokeo ya uendeshaji wa majaribio ya usanidi wangu wa awali kwenye CentOS 7.

0. Utahitaji nini

Kila kitu ni sawa na ilivyoorodheshwa katika makala iliyotangulia:

  • Raspberry Pi 3 Model B+;
  • microSD > = 4GB (baadaye unaweza "kuhamisha" mfumo kwenye gari la 2GB);
  • Kituo cha kazi na Linux na kisoma kadi ya microSD;
  • Uunganisho wa mtandao wa waya kati ya Raspberry na kituo cha kazi cha Linux (katika kesi hii, hakuna ufuatiliaji wa ziada na kibodi utahitajika kwa ajili ya kuanzisha), upatikanaji wa mtandao kutoka kwa vifaa vyote viwili;
  • Ujuzi wa hali ya juu katika Linux (kujua na usiogope: kugawanyika, dd ΠΈ mkfs).

Sawa na kurudia LFS-kujenga Linux yako mwenyewe, picha ya usambazaji wa Fedora itatumika, na kisha kwa kuzingatia, mfumo mdogo utaundwa (bila "kukusanya kutoka kwa chanzo").

1. Ufungaji wa usambazaji wa awali

Kuratibu za picha mbichi ya mfumo kwenye mtandao:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Baada ya kurekodi kwenye microSD na kabla ya kuitumia, unahitaji:

  1. Panua "mzizi" wa mfumo wa faili (kizigeu cha 3, 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. Zima SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Ondoa Mchawi wa Usanidi wa Awali:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Ruhusu ufikiaji kupitia 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
    

Sasa unaweza kupakua "raspberry" kutoka kwa microSD na kuunganisha nayo kupitia mtandao.

Kuanza kwa baridi huchukua kama dakika moja na nusu. TTX ya mfumo baada ya kupakia:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia ya bluu)

rpm -qa | wc -l
444

2. Kukusanya mfumo mdogo

Kwa bahati mbaya, "usambazaji mdogo" kutoka kwa watengenezaji hugeuka kuwa mbali na matumizi ya kawaida ya rasilimali. Picha ya mfumo inaweza kufanywa hata ndogo.

Ili kufanya hivyo, unahitaji kuendesha hati kwenye 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

Baada ya kuendesha hati, saraka ndogo itaundwa kwenye saraka ya sasa ($P) na yaliyomo kwenye mzizi wa toleo jipya la OS. Unaweza kuzima Raspberry na kurudisha microSD kwenye kituo cha kazi cha Linux.

3. Ufungaji wa mfumo mdogo

Ufungaji unatokana na kunakili faili ndogo za "picha" za OS (zilizopatikana katika hatua ya awali) kwenye microSD iliyoandaliwa maalum kwenye saraka zinazofaa.

Kadi ya 2GB na sehemu mbili juu yake zinatosha:

  1. Boot / efi - EFI + FAT32, boot, 100MB;
  2. / (mizizi) - EXT4, nafasi yote iliyobaki.

Baada ya kuandaa microSD na kunakili faili kwake, unahitaji:

  • rekebisha boot ya OS;
  • fungua mtandao;
  • sanidi ufikiaji kupitia ssh.

Marekebisho ya buti ni kuchukua nafasi ya UUID ya sehemu kwenye faili:

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

na parameter ingizo_iliyohifadhiwa= katika faili ya mwisho

Katika faili:

microSD:/etc/fstab

unaweza kupata maadili ya zamani, na maadili ya sasa (sasisha) kwenye pato la amri:

blkid | grep mmcblk | sort

Baada ya uingizwaji, unapaswa pia kusahihisha yaliyomo fstab kwenye microSD ili sehemu za kupachika zilingane na UUID mpya za kizigeu.

Utendaji wa mtandao unapowasha Raspberry mara ya kwanza unaweza kupatikana kwa "crutch" ndogo - unda kiunga (kimkakati):

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

na faili:

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

Baada ya upakuaji uliofaulu, safisha uzinduzi systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Ufikiaji wa mtumiaji mkuu kupitia ssh umesanidiwa sawa na hatua ya 1.

Baada ya kufanya kila kitu kwa uangalifu na bila makosa, unaweza kuhamisha microSD kwenye "raspberry" na kuanza kufanya kazi na 64-bit OS katika toleo la ziada la chini.

4. Mfumo tayari

"Picha" ya mfumo uliomalizika, iliyoundwa kulingana na maagizo hapo juu, inaweza kupakuliwa kutoka kwa kiunga:
Fedora-Tiny-31-5.5.7-200.aarch64

Hii itakuwa kumbukumbu iliyo na faili mbili: hati ya usakinishaji na TGZ iliyo na faili za OS. Kumbukumbu inahitaji kufunguliwa kwenye kituo cha kazi cha Linux, ingiza microSD (kadi ya 2GB inatosha) na uendesha hati kwa kigezo - jina la kifaa:

./install /dev/mmcblk0

Kuwa makini!

Bila maonyo yoyote, kifaa kitaundwa na mfumo wa uendeshaji utasakinishwa juu yake.

Baada ya utekelezaji wa hati bila hitilafu, kadi inaweza kupangwa upya katika "raspberry" na kutumika: catch kupitia dhcp, nenosiri - "1".

Mfumo umefutwa kwa vitambulisho na funguo zote, ndiyo sababu kila usakinishaji mpya ni wa kipekee.

Narudia tena, mfumo - Ndogo! Kwa hivyo, usiogope: DNF inapatikana, ili ifanye kazi utalazimika "kubuni" iliyo sahihi /etc/resolv.conf.

Kuanza kwa baridi kwa Raspberry huchukua sekunde 40. TTX ya mfumo baada ya kupakia:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia ya bluu)

rpm -qa | wc -l
191

5. WiFi

Nitakaa kidogo juu ya vipengele vya kutekeleza hatua ya kufikia Wi-Fi. Kwa maelezo, unaweza kurejelea yaliyotangulia Ibara ya.

EPEL haihitajiki tena - vifurushi vyote viko kwenye hazina rasmi.

Pengine ingefaa kukata tamaa dnsmasq, kwa kuwa Fedora, tofauti na CentOS, ina systemd-networkd ya hivi karibuni, ambayo ina seva za kawaida za DHCP/DNS zilizojengwa. Lakini ukweli ni kwamba katika watengenezaji wa RHEL8 alikataa kuunga mkono rundo la mtandao na kitu kingine chochote isipokuwa NM, haina kuhamasisha ujasiri katika siku zijazo mkali wa mradi (scoundrels). Kwa kifupi, sijajaribu.

Zaidi ya hayo, viendeshi vya sasa vya adapta ya Wi-Fi iliyojengwa haiwezi "kuibiwa" kutoka kwa usambazaji wa Raspbian, lakini kupakuliwa moja kwa moja kutoka. github.

Hivi ndivyo faili za firmware za Broadcom zinavyoonekana kwenye Raspberry yangu (kimkakati):

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

Bila hizo huwezi kupata 5GHz/AC.

Kuhusu nambari na majina ya violesura. Sasa ninapendekeza sana kwa kila mtu asigeuke kwa "huduma" za swichi za programu isipokuwa lazima kabisa (daraja), ambayo huleta mzigo mkubwa kwenye safu ya mtandao na uelekezaji wa mfadhaiko. Ikiwa huna mpango wa kuwa na adapters nyingi zisizo na waya, basi unapaswa kutumia interfaces za kimwili tu. Nina Wi-Fi mbili, kwa hivyo ninazichanganya tu kwenye daraja la programu (ingawa unaweza kufanya bila hii kwa kuangalia usanidi wa hostapd tofauti).

Na ninapenda kubadilisha jina la violesura.

Ili kufanya hivyo katika Fedora unahitaji kuunda kiunga cha mfano:

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

na hapo itawezekana kutoa majina yenye maana bila kuzuga udev, lakini kwa kutumia systemd-networkd pekee.

Kwa mfano, hivi ndivyo adapta za mtandao kwenye kipanga njia changu huitwa:

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 - iliyojengwa ndani, ext - Adapta za nje (USB) za Wi-Fi zimekusanywa kwenye "daraja" lan;
  • wan β€” Adapta ya Ethaneti ambamo Mtandao umeunganishwa.

Je, umeona? fq_code - jambo la kupendeza sana. Pamoja na kernel safi ya Linux, hufanya miujiza halisi katika safu ya wireless: "kupakua kwa torrent" kali haitasababisha uharibifu wa ghafla wa kasi kati ya majirani. Hata IP-TV ya nyumbani inayofanya kazi "juu ya hewa" na kituo kilichopakiwa haina "kuvunja" na haina "kugugumia" hata kidogo!

Faili ya huduma ya daemon imefanyiwa mabadiliko madogo mwenyeji.

Sasa inaonekana kama hii (kwa kutumia mfano wa adapta iliyojengwa):

[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

Na "uchawi" hostapd-int.conf ya kufanya kazi katika 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 ndogo iliyotengenezwa kutoka kwa Ericsson A1018s yangu:

(Muunganisho wa Mtandao - 100Mbit/sek)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia ya bluu)
Na hatimaye, Maswali madogo madogo.

6. Maswali

6.1 Kwa nini utengeneze kipanga njia cha Wi-Fi kwenye Raspberry?

Mtu anaweza kujibu kwa urahisi, kama "inafurahisha kujaribu na hayo yote."

Lakini kwa kweli, inaonekana kwangu kuwa mada hiyo ni mbaya sana. Katika enzi ya mtandao "umwagaji damu", kununua kipanga njia kwenye duka na kubaki mateka kwa mtengenezaji wake ni matarajio mabaya sana. Watu wengi tayari wanaelewa kuwa kukaa na CVE au mlango wa nyuma uliojengwa hauwezekani.

Bila shaka, unaweza kuhamia firmware ya WRT kutoka kwa wapendaji. Pengine kuna imani zaidi kwao, lakini ikiwa hutaki kuwategemea, basi tumia tu bidhaa yako mwenyewe. Kwa kweli, kompyuta kamili ili kila kitu ulimwenguni kiweze kutekelezwa juu yake. Kwa upande wa uelekezaji, bila shaka.

Kwa hiyo, kuchagua "raspberry" ni hatua ya kiuchumi: kompyuta halisi na wakati huo huo ni ya gharama nafuu. Ingawa, labda pia - na "mara mbili" yao ndani.

6.2 Lakini Raspberry ni "router ya chini": polepole na yenye bandari moja ya Ethernet!

Kama kipanga njia cha nyumbani cha Wi-Fi, Raspberry inaniridhisha zaidi. Tayari nimezungumza juu ya kasi ya hewa hapo juu. Na kuna Ethernet moja tu, vizuri, katika bidhaa sawa kutoka kwa Apple ni sawa!

Lakini kwa umakini, bila shaka ningependa zaidi. Na licha ya ukweli kwamba katika kaya yangu vifaa vyote vinaunganishwa bila waya, wakati mwingine uunganisho wa shaba bado unahitajika. Kwa hali kama hizi, nina "kitovu cha rununu" kwenye hisa:

kifaa - kitu kama hikiRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia ya bluu)

6.3 Ikiwa hii ni router, basi hakuna kinachosemwa kuhusu "tuning" TCP / IP, kwa sababu hii ni muhimu!

Mbali na kusanidi kifurushi cha mtandao (tcp_fastopen, YeAH, n.k.), nakala hii na iliyotangulia haijumuishi nuances zingine, haswa, mchakato wa kuandaa microSD kwa matumizi bora (ingawa kisakinishi kinajaribu kuunda kadi ya kumbukumbu ndani. njia ngumu). Mchakato wa uboreshaji hauna mwisho, unahitaji tu kuacha kwa wakati.

6.4 Kwa nini Fedora?

Kwa sababu napenda! Fedora ni mfumo "wa kawaida" wa geeks, ambao makala haya yamekusudiwa. Wakati wa kuandika, labda OS pekee ambayo kwa Raspberry katika toleo la 64-bit inasaidiwa rasmi na wafanyakazi muhimu wa watengenezaji (ambao siwezi kusubiri punje 5.6).

6.5 Je, Bluetooth inafanya kazi? Je, video/sauti/GPIO vipi?

Sijui. Nakala hiyo inahusu usakinishaji mdogo wa mfumo na matumizi yake ya baadaye kama kipanga njia cha Wi-Fi.

6.6 Kwa nini makala yote kuhusu CentOS/Fedora/RedHat huanza kwa kuzima SELinux?

Kwa sababu mfumo ni mdogo, hauna hata firewall au huduma za kuiweka. Yeyote anayehitaji anaweza kusakinisha kila kitu anachohitaji.

6.7 Mfumo hauwezi kutumika, nenosiri haliwezi kubadilishwa - hakuna passwd. Hakuna ping, hakuna chochote!

Kuna DNF. Au chaguo hili la ufungaji sio kwako - tumia vifaa vya usambazaji kutoka kwa watengenezaji.

6.8 SWAP iko wapi? Siwezi kuishi bila yeye!

Ni ukweli? Sawa basi:

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 Ningependa kupakua mara moja picha iliyotengenezwa tayari na eneo la ufikiaji la Wi-Fi lililosanidiwa!

Kuandaa kisakinishi "kwa kila mtu" itahitaji muda na jitihada. Ikiwa (ghafla!) Mtu anapata hii ya kuvutia na ya lazima, tuandikie na tutakuja na kitu.

Nitamaliza na hili.

Napenda kila mtu kutumia salama na udhibiti wa juu wa miundombinu!

Chanzo: mapenzi.com

Kuongeza maoni