Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (və ya mavi papaqlı moruq marşrutlaşdırıcısı)

Məqalədə Raspberry Pi + CentOS = Wi-Fi Hotspot (və ya qırmızı papaqlı moruq marşrutlaşdırıcısı) CentOS əməliyyat sistemindən istifadə edərək Raspberry-ni simsiz giriş nöqtəsinə çevirməyin bir yolu haqqında danışdım. Ev marşrutlaşdırıcımı bu cizgiyə uyğun yığaraq, mən yaradıcı eqomu təmin etdim və rahat infrastrukturumun kritik elementi üçün rahatlıq qazandım. Ancaq həllin natamamlığı və daxili mükəmməllik hissi məni təqib etdi: "əməyin qeyri-kamil nəticəsinin mövcud olmağa haqqı yoxdur." “İdeal əldə edilə bilər və edilməlidir” fikri məni bir dəqiqə belə tərk etmədi.

Və sonra bir gün tematik forumların birində Raspberry (aarch64 vs armhfp) üçün mövcud əməliyyat sistemlərinin bit dərinliyi ilə bağlı müzakirəyə rast gəldim: hansı 64 bitlik əməliyyat sistemi prinsipcə Raspberry 3-ə uyğunlaşa və işləyə bilər. ++?

"Userland" dan ARM arxitekturası üçün sevimli CentOS, nüvənin ən son versiyasına keçməyə və 64 bitə çevrilməyə tələsmirdi. Və EPEL anbarı, Allah bilir, rəqəmsal imza olmadan harda, narahat yuxumda kabus idi...

RPM əsaslı paylamaların tərəfdarı kimi danışarkən, Raspberry üçün OS-nin müzakirələrdə tamamilə unudulduğunu görəndə təəccübləndim. Fedora! Və bu, buraxılmasına baxmayaraq
28-ci versiyadan o, rəsmi olaraq 3-bit versiyada Raspberry Pi 64B+-ı dəstəkləyir!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (və ya mavi papaqlı moruq marşrutlaşdırıcısı)
Bu yazıda quraşdırma üsulu haqqında danışacağam Fedora (aarch64) haqqında Moruq Pi 3 Model B + в əlavə minimal performans. Əvvəlki konfiqurasiyamın sınaq əməliyyatı nəticəsində müəyyən edilmiş Wi-Fi giriş nöqtəsinin artırılması xüsusiyyətlərinə qısaca toxunacağam. CentOS 7.

0. Nəyə ehtiyacınız olacaq

Hər şey əvvəlki məqalədə sadalanan kimidir:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (daha sonra sistemi 2GB sürücüyə “köçürə” bilərsiniz);
  • Linux və microSD kart oxuyucusu ilə iş stansiyası;
  • Raspberry və Linux iş stansiyası arasında simli şəbəkə bağlantısı (bu halda quraşdırma üçün əlavə monitor və klaviatura tələb olunmayacaq), hər iki cihazdan İnternetə çıxış;
  • Linux-da qabaqcıl bacarıq (bilmək və qorxmamaq üçün: ayrıldı, dd и mkfs).

İterativ kimi LFS-öz Linuxunuzu qurarkən, Fedora paylama təsvirindən istifadə ediləcək və sonra onun əsasında minimal sistem yaradılacaq ("mənbədən tərtib etmədən").

1. Orijinal paylamanın quraşdırılması

İnternetdəki sistemin xam görüntüsünün koordinatları:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Onu microSD-də qeyd etdikdən sonra və istifadə etməzdən əvvəl sizə lazımdır:

  1. Fayl sisteminin "kökünü" genişləndirin (3-cü bölmə, 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-u söndürün
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. İlkin Quraşdırma Sihirbazını çıxarın:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Ssh vasitəsilə girişə icazə verin:
    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
    

İndi siz “moruq”u microSD-dən yükləyə və şəbəkə vasitəsilə ona qoşula bilərsiniz.

Soyuq bir başlanğıc təxminən bir yarım dəqiqə çəkir. Yüklədikdən sonra sistemin TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (və ya mavi papaqlı moruq marşrutlaşdırıcısı)

rpm -qa | wc -l
444

2. Minimal sistemin yığılması

Təəssüf ki, tərtibatçıların "minimal paylanması" resurs istehlakında ən təvazökarlıqdan uzaqdır. Sistem şəkli daha da kiçik edilə bilər.

Bunu etmək üçün skripti Malinka-da işlətməlisiniz:

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

Skripti işə saldıqdan sonra cari qovluqda alt kataloq yaradılacaq ($P) yeni minimal OS nəşrinin kökünün məzmunu ilə. Siz Raspberry-ni söndürə və microSD-ni Linux iş stansiyasına qaytara bilərsiniz.

3. Minimal sistemin quraşdırılması

Quraşdırma əməliyyat sisteminin minimal “şəkil” fayllarını (əvvəlki addımda əldə edilmiş) xüsusi hazırlanmış microSD-yə müvafiq qovluqlara köçürməkdən ibarətdir.

2 GB kart və onun üzərində iki bölmə kifayətdir:

  1. / boot / efi - EFI+FAT32, yükləmə, 100MB;
  2. / (kök) - EXT4, bütün qalan boşluq.

MicroSD hazırladıqdan və ona faylları kopyaladıqdan sonra sizə lazımdır:

  • OS açılışını düzəltmək;
  • şəbəkəni yandırın;
  • ssh vasitəsilə girişi konfiqurasiya edin.

Yükləmə düzəlişi, fayllardakı bölmələrin UUID-ni əvəz etməkdir:

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

və parametr saxlanılan_giriş= son faylda

Faylda:

microSD:/etc/fstab

komanda çıxışında köhnə dəyərləri və cari (yeni) dəyərləri tapa bilərsiniz:

blkid | grep mmcblk | sort

Dəyişdirildikdən sonra məzmunu da düzəltməlisiniz fstab microSD-də quraşdırma nöqtələri yeni UUID bölmələrinə uyğun olsun.

Moruqu ilk dəfə yandırdığınız zaman şəbəkə funksionallığına kiçik bir "köpək" ilə nail olmaq olar - bir əlaqə yaradın (şematik olaraq):

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

və fayl:

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

Uğurlu yükləmədən sonra işə salınmanı səliqəyə salın systemd-şəbəkə:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Ssh vasitəsilə super istifadəçi girişi 1-ci addıma bənzər şəkildə konfiqurasiya edilmişdir.

Hər şeyi diqqətlə və səhvsiz etdikdən sonra, microSD-ni "moruq" a köçürə və əlavə minimal versiyada 64 bitlik OS ilə işə başlaya bilərsiniz.

4. Hazır sistem

Yuxarıdakı təlimatlara uyğun olaraq yaradılmış bitmiş sistemin "şəklini" linkdən yükləmək olar:
Fedora-Tiny-31-5.5.7-200.aarch64

Bu, iki fayldan ibarət arxiv olacaq: quraşdırma skripti və OS faylları olan TGZ. Arxiv Linux iş stansiyasında açılmalı, microSD daxil edilməlidir (2 GB kart kifayətdir) və skripti parametrlə - cihazın adı ilə işə salın:

./install /dev/mmcblk0

Ehtiyatlı olun!

Heç bir xəbərdarlıq edilmədən cihaz formatlaşdırılacaq və ona əməliyyat sistemi quraşdırılacaq.

Skript səhvsiz icra edildikdən sonra, kart "moruq" a yerləşdirilə və istifadə edilə bilər: dhcp vasitəsilə tutmaq, parol - "1".

Sistem bütün identifikatorlardan və açarlardan təmizlənir, buna görə də hər yeni quraşdırma unikaldır.

Bir daha təkrar edirəm, sistem - minimal! Buna görə narahat olmayın: DNF mövcuddur, onun işləməsi üçün düzgün olanı "icad etməlisiniz" /etc/resolv.conf.

Raspberry-nin soyuq başlanğıcı təxminən 40 saniyə çəkir. Yüklədikdən sonra sistemin TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (və ya mavi papaqlı moruq marşrutlaşdırıcısı)

rpm -qa | wc -l
191

5. WiFi

Wi-Fi giriş nöqtəsinin tətbiqi xüsusiyyətləri üzərində bir az dayanacağam. Konkret məlumat üçün əvvəlkilərimə müraciət edə bilərsiniz məqalə.

EPEL artıq lazım deyil - bütün paketlər rəsmi depolarda saxlanılır.

Çox güman ki, imtina etməyə dəyər dnsmasq, çünki Fedora, CentOS-dan fərqli olaraq, normal daxili DHCP/DNS serverləri olan kifayət qədər yeni systemd-şəbəkəsinə malikdir. Ancaq fakt budur ki, RHEL8 tərtibatçılarında şəbəkə yığınını NM-dən başqa bir şeylə dəstəkləməkdən imtina etdi, layihənin parlaq gələcəyinə inam yaratmır (alçaqlar). Bir sözlə, sınamamışam.

Bundan əlavə, quraşdırılmış Wi-Fi adapterinin cari sürücüləri Raspbian paylanmasından "oğurlana bilməz", lakin birbaşa yüklənə bilməz. GitHub.

Broadcom proqram təminatı faylları mənim Raspberry-də belə görünür (şematik olaraq):

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

Onlarsız 5GHz/AC əldə etməyəcəksiniz.

İnterfeyslərin sayı və adları ilə bağlı. İndi hər kəsə çox zərurət olmadıqca proqram açarlarının "xidmətlərinə" müraciət etməməyi tövsiyə edirəm (körpü), bu, şəbəkə yığınına əhəmiyyətli yük gətirir və marşrutlaşdırmanı azaldır. Birdən çox simsiz adapterə sahib olmağı planlaşdırmırsınızsa, onda yalnız fiziki interfeyslərdən istifadə etməlisiniz. Məndə iki Wi-Fi var, ona görə də mən onları yalnız proqram körpüsündə birləşdirirəm (baxmayaraq ki, hostapd konfiqurasiyasına fərqli baxaraq, onsuz da edə bilərsiniz).

Mən interfeyslərin adını dəyişməyi sevirəm.

Fedora-da bunu etmək üçün simvolik bir əlaqə yaratmalısınız:

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

sonra ovuşdurmadan mənalı adlar vermək mümkün olacaq udev, lakin yalnız systemd-networkd istifadə edərək.

Məsələn, mənim marşrutlaşdırıcımdakı şəbəkə adapterləri belə adlanır:

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 - quraşdırılmış, ext — “körpü”yə yığılmış xarici (USB) Wi-Fi adapterləri lan;
  • wan — İnternetin qoşulduğu Ethernet adapteri.

Siz fərq etdiniz? fq_kod - həqiqətən gözəl bir şey. Təzə Linux nüvəsi ilə birlikdə simsiz diapazonda əsl möcüzələr yaradırlar: şiddətli "torrent yükləmə" qonşular arasında sürətin qəfil azalmasına səbəb olmayacaq. Hətta yüklənmiş bir kanalla "havada" işləyən ev IP-TV belə "parçalanmır" və ümumiyyətlə "kəkəmir"!

Daemon xidmət faylı kiçik dəyişikliklərə məruz qalıb hostapd.

İndi belə görünür (daxili adapter nümunəsindən istifadə etməklə):

[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

Və 5GHz/AC-də işləmək üçün "sehrli" 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 A1018s-dən hazırlanmış kiçik bir fotoşop:

(İnternet bağlantısı - 100Mbit/san)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (və ya mavi papaqlı moruq marşrutlaşdırıcısı)
Və nəhayət, kiçik bir FAQ.

6. FAQ

6.1 Niyə Raspberry-də Wi-Fi router etmək lazımdır?

Biri “sınamaq maraqlıdır və bütün bunlar” kimi sadə cavab verə bilər.

Amma əslində, mənə elə gəlir ki, mövzu kifayət qədər ciddidir. "Qanlı" İnternet dövründə bir mağazada bir router almaq və onun istehsalçısının girovluğunda qalmaq çox acınacaqlı bir perspektivdir. Bir çox insanlar artıq başa düşür ki, CVE və ya daxili arxa qapı ilə oturmaq mümkün deyil.

Əlbəttə ki, həvəskarlardan WRT proqram təminatına köçə bilərsiniz. Yəqin ki, onlara daha çox inam var, amma onlardan asılı olmaq istəmirsinizsə, sadəcə öz məhsulunuzdan istifadə edin. İdeal olaraq, tam hüquqlu bir kompüter, dünyada hər şey onun üzərində həyata keçirilə bilər. Marşrutlaşdırma baxımından, əlbəttə.

Buna görə də, "moruq" seçmək sırf iqtisadi bir hərəkətdir: real kompüter və eyni zamanda ucuz. Baxmayaraq ki, bəlkə də - içərisində "ikiqatları" ilə.

6.2 Lakin Raspberry “aşağı marşrutlaşdırıcı”dır: yavaş və bir Ethernet portu ilə!

Bir ev Wi-Fi marşrutlaşdırıcısı olaraq, Raspberry mənim üçün daha qənaətbəxşdir. Artıq yuxarıda hava sürətindən danışdım. Yalnız bir Ethernet var, Apple-ın oxşar məhsulunda təxminən eynidir!

Amma ciddi olaraq, əlbəttə ki, daha çox istərdim. Evimdə bütün cihazların simsiz qoşulmasına baxmayaraq, bəzən mis əlaqə hələ də tələb olunur. Belə hallar üçün ehtiyatımda "mobil mərkəz" var:

cihaz - bu kimi bir şeyRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (və ya mavi papaqlı moruq marşrutlaşdırıcısı)

6.3 Əgər bu marşrutlaşdırıcıdırsa, TCP/IP-nin “tənzimləməsi” haqqında heç nə deyilmir, çünki bu vacibdir!

Şəbəkə yığınının (tcp_fastopen, YeAH və s.) qurulması ilə yanaşı, bu və əvvəlki məqalə digər nüansları, xüsusən də microSD-nin optimal istifadəyə hazırlanması prosesini əhatə etmir (baxmayaraq ki, quraşdırıcı yaddaş kartını formatlaşdırmağa çalışır. çətin bir yol). Təkmilləşdirmə prosesi sonsuzdur, sadəcə vaxtında dayandırmaq lazımdır.

6.4 Niyə Fedora?

Çünki bəyənirəm! Fedora, bu məqalənin əslində nəzərdə tutulduğu geeks üçün "əsas" sistemdir. Yazı zamanı, bəlkə də 64 bitlik versiyada Raspberry üçün yeganə OS, əhəmiyyətli bir tərtibatçı heyəti tərəfindən rəsmi olaraq dəstəklənir (mən gözləyə bilmirəm nüvə 5.6).

6.5 Bluetooth işləyirmi? Video/səs/GPIO necədir?

bilmirəm. Məqalə sistemin minimal quraşdırılması və sonradan Wi-Fi marşrutlaşdırıcısı kimi istifadəsi haqqındadır.

6.6 Nə üçün CentOS/Fedora/RedHat haqqında bütün məqalələr SELinux-u söndürməklə başlayır?

Sistem minimal olduğundan, onu qurmaq üçün təhlükəsizlik divarı və ya yardımçı proqramları belə yoxdur. Ehtiyacı olan hər kəs əlavə olaraq ehtiyac duyduğu hər şeyi quraşdıra bilər.

6.7 Sistemdən istifadə edilə bilməz, parol dəyişdirilə bilməz - passwd yoxdur. Ping yoxdur, heç nə yoxdur!

Yoxdur DNF. Və ya bu quraşdırma seçimi sizin üçün deyil - tərtibatçıların paylama dəstindən istifadə edin.

6.8 SWAP haradadır? Mən onsuz yaşaya bilmərəm!

Doğrudurmu? Oldu:

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 Mən konfiqurasiya edilmiş Wi-Fi giriş nöqtəsi olan hazır şəkli dərhal yükləmək istərdim!

“Hər kəs üçün” quraşdırıcının hazırlanması müəyyən vaxt və səy tələb edəcəkdir. Əgər (birdən!) kimsə bunu həqiqətən maraqlı və lazımlı hesab edərsə, bizə yazın və biz bir şey tapacağıq.

Bununla bitirəcəm.

Hər kəsə təhlükəsiz sörfinq və infrastruktura maksimum nəzarət arzulayıram!

Mənbə: www.habr.com

Добавить комментарий