Raspberry Pi + Fedora (aarch64) = Wi-Fi қосылу нүктесі (немесе көк қалпақшасы бар таңқурай маршрутизаторы)

Мақалада Raspberry Pi + CentOS = Wi-Fi қосылу нүктесі (немесе қызыл қалпақшасы бар таңқурай маршрутизаторы) Мен CentOS операциялық жүйесі арқылы таңқурайды сымсыз кіру нүктесіне айналдыру әдісі туралы айттым. Осы сызбаға сәйкес үйдегі маршрутизаторды жинай отырып, мен өзімнің шығармашылық эгомды қанағаттандырдым және жайлы инфрақұрылымымның маңызды элементі үшін жан тыныштығына ие болдым. Дегенмен, шешімнің толық еместігі және ішкі перфекционизм мені алаңдатты: «еңбектің жетілмеген нәтижесі өмір сүруге құқығы жоқ». «Идеалға қол жеткізуге болады және керек» деген ой мені бір минутқа қалдырған жоқ.

Содан кейін бір күні тақырыптық форумдардың бірінде мен Raspberry (aarch64 vs armhfp) үшін бар операциялық жүйелердің бит тереңдігі туралы пікірталасқа тап болдым: ол 64 биттік ОЖ негізінен Raspberry 3 нұсқасына сай және жұмыс істей алады. ++?

Менің сүйікті ARM архитектурасына арналған «Userland» CentOS ядроның соңғы нұсқасына ауысуға және 64-биттікке ауысуға асықпады. Ал EPEL репозиторийі ЭЦҚ-сыз қайдан бір құдайға қосылды, менің мазасыз ұйқымдағы қорқынышты түс болды...

RPM негізіндегі дистрибутивтерді ұстанушы ретінде айта отырып, мен Raspberry операциялық жүйесі талқылауларда мүлдем ұмытылғанына таң қалдым. Fedora! Және бұл оның шығарылуына қарамастан
28 нұсқасынан бастап ол 3 биттік нұсқада Raspberry Pi 64B+ ресми түрде қолдайды!

Raspberry Pi + Fedora (aarch64) = Wi-Fi қосылу нүктесі (немесе көк қалпақшасы бар таңқурай маршрутизаторы)
Бұл мақалада мен орнату әдісі туралы айтатын боламын Федора (aarch64) туралы Raspberry Pi 3 моделі B + в қосымша минималды өнімділік. Мен алдыңғы конфигурациямның сынақ жұмысының нәтижесінде анықталған Wi-Fi кіру нүктесін көтеру мүмкіндіктеріне қысқаша тоқталамын. CentOS 7.

0. Сізге не қажет болады

Барлығы алдыңғы мақалада көрсетілгендей:

  • Raspberry Pi 3 B+ үлгісі;
  • microSD >= 4 ГБ (кейіннен жүйені 2 ГБ дискіге «тасымалдауға» болады);
  • Linux және microSD картасын оқу құрылғысы бар жұмыс станциясы;
  • Raspberry және Linux жұмыс станциясы арасындағы сымды желі қосылымы (бұл жағдайда орнату үшін қосымша монитор мен пернетақта қажет болмайды), екі құрылғыдан да Интернетке қол жеткізу;
  • Linux жүйесінде жоғары біліктілік (білу және қорықпау үшін: бөлінді, dd и mkfs).

Итеративтіге ұқсас LFS-өз Linux-ті құрастыру үшін Fedora тарату кескіні пайдаланылады, содан кейін оның негізінде минималды жүйе жасалады («көзден құрастырусыз»).

1. Түпнұсқа таратуды орнату

Интернеттегі жүйенің өңделмеген кескінінің координаттары:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Оны microSD картасына жазғаннан кейін және оны пайдаланбас бұрын сізге қажет:

  1. Файлдық жүйенің «түбірін» кеңейтіңіз (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. SELinux өшіру
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Бастапқы орнату шеберін жою:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. 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
    

Енді сіз «таңқурайды» microSD картасынан жүктеп алып, оған желі арқылы қосыла аласыз.

Суық бастау шамамен бір жарым минутты алады. Жүктелгеннен кейін жүйенің TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi қосылу нүктесі (немесе көк қалпақшасы бар таңқурай маршрутизаторы)

rpm -qa | wc -l
444

2. Минималды жүйені құрастыру

Өкінішке орай, әзірлеушілер тарапынан «минималды үлестіру» ресурстарды тұтынудағы ең қарапайымдылықтан алыс болып шықты. Жүйе кескінін одан да кішірейтуге болады.

Мұны істеу үшін сіз Малинкадағы сценарийді іске қосуыңыз керек:

#!/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

Сценарийді іске қосқаннан кейін ағымдағы каталогта ішкі каталог жасалады ($P) жаңа минималды ОЖ басылымының түбірінің мазмұнымен. Таңқурайды өшіріп, microSD дискісін Linux жұмыс станциясына қайтаруға болады.

3. Минималды жүйені орнату

Орнату операциялық жүйенің ең аз «кескін» файлдарын (алдыңғы қадамда алынған) арнайы дайындалған microSD дискісіне тиісті каталогтарға көшіруге дейін созылады.

2 ГБ картасы және оған екі бөлім жеткілікті:

  1. / boot / efi - EFI+FAT32, жүктеу, 100 МБ;
  2. / (түбір) - EXT4, барлық қалған бос орын.

MicroSD картасын дайындап, оған файлдарды көшіргеннен кейін сізге қажет:

  • ОЖ жүктелуін түзету;
  • желіні қосыңыз;
  • ssh арқылы қол жеткізуді теңшеңіз.

Жүктеуді түзету файлдардағы бөлімдердің UUID кодын ауыстыру болып табылады:

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

және параметр сақталған_енгізу= соңғы файлда

Файлда:

microSD:/etc/fstab

пәрмен шығысында ескі мәндерді және ағымдағы (жаңартылған) мәндерді таба аласыз:

blkid | grep mmcblk | sort

Ауыстырудан кейін мазмұнды да түзету керек fstab microSD дискісінде орнату нүктелері жаңа UUID бөлімдеріне сәйкес болуы үшін.

Таңқурайды алғаш қосқан кезде желілік функцияға кішкене «балдақ» арқылы қол жеткізуге болады - сілтеме жасаңыз (сызба бойынша):

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

және файл:

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

Сәтті жүктеп алғаннан кейін іске қосуды реттеңіз systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

ssh арқылы суперпайдаланушы қатынасы 1-қадамға ұқсас конфигурацияланған.

Барлығын мұқият және қатесіз орындағаннан кейін, сіз microSD картасын «таңқурайға» жылжытып, қосымша минималды нұсқада 64 биттік ОЖ-мен жұмыс істей бастай аласыз.

4. Дайын жүйе

Жоғарыдағы нұсқауларға сәйкес жасалған дайын жүйенің «бейнесін» мына сілтемеден жүктеп алуға болады:
Fedora-Tiny-31-5.5.7-200.aarch64

Бұл екі файлды қамтитын мұрағат болады: орнату сценарийі және ОЖ файлдары бар TGZ. Мұрағатты Linux жұмыс станциясында ашу керек, microSD салыңыз (2 ГБ карта жеткілікті) және сценарийді құрылғының атымен бірге іске қосыңыз:

./install /dev/mmcblk0

Сақ болыңыз!

Ешқандай ескертусіз құрылғы пішімделеді және оған операциялық жүйе орнатылады.

Сценарий қатесіз орындалғаннан кейін картаны «таңқурайға» қайта орналастыруға және пайдалануға болады: dhcp арқылы ұстау, құпия сөз - «1».

Жүйе барлық идентификаторлар мен кілттерден тазартылған, сондықтан әрбір жаңа орнату бірегей.

Мен тағы бір рет қайталаймын, жүйе - минималды! Сондықтан үрейленбеңіз: DNF бар, ол жұмыс істеуі үшін сізге дұрысын «ойлап шығару» керек. /etc/resolv.conf.

Таңқурайдың суық басталуы шамамен 40 секундты алады. Жүктелгеннен кейін жүйенің TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi қосылу нүктесі (немесе көк қалпақшасы бар таңқурай маршрутизаторы)

rpm -qa | wc -l
191

5. Сымсыз дәлдiк

Мен Wi-Fi кіру нүктесін енгізу мүмкіндіктеріне аздап тоқталамын. Нақтырақ айтсақ, менің алдыңғы нұсқама сілтеме жасай аласыз мақала.

EPEL енді қажет емес - барлық пакеттер ресми репозиторийлерде бар.

Бұл бас тартуға тұрарлық шығар dnsmasq, өйткені Fedora, CentOS-тен айырмашылығы, әдеттегі кірістірілген DHCP/DNS серверлері бар жүйелік желіге жақында бар. Бірақ бұл RHEL8 әзірлеушілерінде желі стегін NM-ден басқа ештеңемен қолдаудан бас тартты, жобаның жарқын болашағына сенім ұялатпайды (шұбарлар). Қысқасы, мен оны сынап көрмедім.

Сонымен қатар, кірістірілген Wi-Fi адаптеріне арналған ағымдағы драйверлерді Raspbian дистрибутивінен «ұрлауға» болмайды, бірақ оны тікелей жүктеуге болады. GitHub.

Broadcom микробағдарлама файлдары менің Raspberry-де осылай көрінеді (сызба бойынша):

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

Оларсыз сіз 5 ГГц/АС ала алмайсыз.

Интерфейстердің саны мен атауларына қатысты. Енді мен барлығына өте қажет болмаса, бағдарламалық қамтамасыз ету қосқыштарының «қызметтеріне» жүгінбеуді қатты ұсынамын (көпір), бұл желі стекіне айтарлықтай жүктеме енгізеді және маршруттауды азайтады. Бірнеше сымсыз адаптерлерді пайдалануды жоспарламасаңыз, тек физикалық интерфейстерді пайдалану керек. Менде екі Wi-Fi бар, сондықтан мен оларды тек бағдарламалық құрал көпіріне біріктіремін (бірақ сіз hostapd орнатуына басқаша қарау арқылы онсыз жасай аласыз).

Мен интерфейстердің атын өзгертуді жақсы көремін.

Мұны Fedora-да орындау үшін символдық сілтеме жасау керек:

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

сосын тырп еткізбей мағыналы атаулар беруге болады удев, бірақ тек systemd-networkd арқылы.

Мысалы, менің маршрутизаторымдағы желілік адаптерлер осылай аталады:

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 - кіріктірілген, EXT — «көпірге» жиналған сыртқы (USB) Wi-Fi адаптерлері LAN;
  • wan — Интернет қосылған Ethernet адаптері.

Сіз байқадыңыз ба? fq_код - шынымен керемет нәрсе. Жаңа Linux ядросымен бірге олар сымсыз диапазонда нағыз ғажайыптар жасайды: қатал «торрент жүктеп алу» көршілер арасында жылдамдықтың кенет төмендеуіне әкелмейді. Тіпті жүктелген арнасы бар «әуе арқылы» жұмыс істейтін үйдегі IP-теледидар да «үзілмейді» және мүлде «кекірмейді»!

Демон қызметінің файлы шамалы өзгерістерге ұшырады hostapd.

Енді ол келесідей көрінеді (кіріктірілген адаптердің мысалын пайдалана отырып):

[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

Және 5 ГГц/АС жиілігінде жұмыс істеуге арналған «сиқырлы» hostapd-int.conf:

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]

Менің Ericsson A1018 құрылғыларымнан жасалған шағын фотошоп:

(Интернет қосылымы - 100 Мбит/сек)Raspberry Pi + Fedora (aarch64) = Wi-Fi қосылу нүктесі (немесе көк қалпақшасы бар таңқурай маршрутизаторы)
Соңында, шағын жиі қойылатын сұрақтар.

6. Жиі қойылатын сұрақтар

6.1 Неліктен Raspberry-де Wi-Fi маршрутизаторын жасау керек?

Қарапайым жауап беруге болады, мысалы, «бәрі де қызық».

Бірақ, шындығында, маған тақырып айтарлықтай салмақты сияқты. Интернеттің «қанды» дәуірінде дүкенде маршрутизаторды сатып алу және оны өндірушінің кепілінде қалу - бұл өте қайғылы перспектива. Көптеген адамдар CVE немесе кірістірілген бэкдормен отыру мүмкін емес екенін түсінеді.

Әрине, энтузиастардан WRT микробағдарламасына көшуге болады. Оларға көбірек сенім артатын шығар, бірақ егер сіз оларға тәуелді болғыңыз келмесе, өз өніміңізді пайдаланыңыз. Ең дұрысы, әлемдегі барлық нәрсені іске асыруға болатын толыққанды компьютер. Маршруттау тұрғысынан, әрине.

Сондықтан «таңқурайды» таңдау - бұл таза экономикалық қадам: нақты компьютер және сонымен бірге арзан. Дегенмен, мүмкін, сонымен қатар - ішіндегі «қостарымен».

6.2 Бірақ Raspberry - бұл «төмен маршрутизатор»: баяу және бір Ethernet порты бар!

Үйдегі Wi-Fi маршрутизаторы ретінде таңқурай мен үшін қанағаттанарлық. Мен жоғарыда ауа жылдамдығы туралы айттым. Бір ғана Ethernet бар, Apple компаниясының ұқсас өнімінде ол шамамен бірдей!

Бірақ шындап айтсам, мен, әрине, көбірек алғым келеді. Менің үй шаруашылығымдағы барлық құрылғылар сымсыз қосылғанына қарамастан, кейде мыс қосылымы қажет. Мұндай жағдайларда менде «мобильді хаб» бар:

құрылғы - осындай нәрсеRaspberry Pi + Fedora (aarch64) = Wi-Fi қосылу нүктесі (немесе көк қалпақшасы бар таңқурай маршрутизаторы)

6.3 Егер бұл маршрутизатор болса, онда TCP/IP «баптау» туралы ештеңе айтылмайды, өйткені бұл маңызды!

Желілік стек (tcp_fastopen, YeAH және т.б.) орнатудан басқа, осы және алдыңғы мақала басқа нюанстарды қамтымайды, атап айтқанда, оңтайлы пайдалануға microSD дайындау процесі (бірақ орнатушы жад картасын пішімдеуге тырысады. қиын жол). Жақсарту процесі шексіз, тек уақытында тоқтау керек.

6.4 Неліктен Fedora?

Өйткені маған ұнайды! Fedora - бұл мақала шын мәнінде арналған гектерге арналған «негізгі» жүйе. Жазу кезінде, мүмкін, Raspberry үшін 64 биттік нұсқадағы жалғыз ОЖ-ны әзірлеушілердің айтарлықтай құрамы ресми түрде қолдайды (мен оларды күте алмаймын) ядро 5.6).

6.5 Bluetooth жұмыс істей ме? Бейне/дыбыс/GPIO қалай?

Білмеймін. Мақалада жүйені ең аз орнату және оны Wi-Fi маршрутизаторы ретінде кейіннен пайдалану туралы.

6.6 Неліктен CentOS/Fedora/RedHat туралы барлық мақалалар SELinux-ты өшіруден басталады?

Жүйе минималды болғандықтан, оны орнатуға арналған желіаралық қалқан немесе утилиталар да жоқ. Оны қажет ететін кез келген адам өзіне қажет нәрсенің бәрін қосымша орната алады.

6.7 Жүйені пайдалану мүмкін емес, құпия сөзді өзгерту мүмкін емес - passwd жоқ. Пинг жоқ, ештеңе жоқ!

бар DNF. Немесе бұл орнату опциясы сіз үшін емес - әзірлеушілердің тарату жинағын пайдаланыңыз.

6.8 SWAP қайда орналасқан? Мен онсыз өмір сүре алмаймын!

Бұл рас па? Ал жақсы:

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 Мен конфигурацияланған Wi-Fi кіру нүктесі бар дайын кескінді дереу жүктеп алғым келеді!

Орнатушыны «барлығына» дайындау біраз уақыт пен күш жұмсайды. Егер (кенеттен!) біреу мұны шынымен қызықты және қажет деп тапса, бізге жазыңыз, біз бірдеңе ойлап табамыз.

Мен мұнымен аяқтаймын.

Барлығына қауіпсіз серфинг және инфрақұрылымды барынша бақылауды тілеймін!

Ақпарат көзі: www.habr.com

пікір қалдыру