Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (эсвэл цэнхэр малгайтай бөөрөлзгөнө чиглүүлэгч)

Нийтлэл Raspberry Pi + CentOS = Wi-Fi Hotspot (эсвэл улаан малгайтай бөөрөлзгөнө чиглүүлэгч) Би CentOS үйлдлийн системийг ашиглан Raspberry-г утасгүй хандалтын цэг болгон хувиргах арга замын талаар ярьсан. Энэхүү зургийн дагуу гэрийн чиглүүлэгчээ угсарснаар би өөрийн бүтээлч эго-г хангаж, тухтай дэд бүтцийн чухал элемент болох сэтгэлийн амар амгаланг олж авсан. Гэсэн хэдий ч шийдлийн бүрэн бус мэдрэмж, дотоод төгс төгөлдөр байдал намайг "хөдөлмөрийн төгс бус үр дүн байх эрхгүй" гэж зовоож байв. "Идэвхтэй зүйлд хүрч болно, хүрэх ёстой" гэсэн бодол намайг нэг минут ч орхисонгүй.

Тэгээд нэг өдөр сэдэвчилсэн форумын нэг дээр би Raspberry-д зориулсан одоо байгаа үйлдлийн системүүдийн битийн гүний (aarch64 vs armhfp) тухай хэлэлцүүлэгтэй таарлаа: аль 64 битийн үйлдлийн систем нь зарчмын хувьд Raspberry 3 хувилбар дээр таарч, ажиллах боломжтой. ++?

"Userland"-ийн ARM архитектурт зориулсан миний хайртай CentOS нь цөмийн хамгийн сүүлийн хувилбар руу шилжиж, 64 битийн хувилбар руу шилжих гэж яарсангүй. Мөн дижитал гарын үсэггүйгээр хаанаас нь холбосон EPEL репозитор миний тайван бус нойронд хар дарсан зүүд болж байв...

RPM-д суурилсан түгээлтийн баримтлагчийн хувьд би Raspberry-д зориулсан үйлдлийн системийг хэлэлцүүлгийн үеэр бүрэн мартсанд гайхсан. Федора! Энэ нь хэдийгээр гарсан ч гэсэн
28-р хувилбараас эхлэн 3 битийн хувилбарт Raspberry Pi 64B+-г албан ёсоор дэмждэг!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (эсвэл цэнхэр малгайтай бөөрөлзгөнө чиглүүлэгч)
Энэ нийтлэлд би суулгах аргын талаар ярих болно Федора (aarch64) тухай Raspberry Pi 3 Загвар B + в нэмэлт хамгийн бага гүйцэтгэл. Би өмнөх тохиргооны туршилтын ажиллагааны үр дүнд тодорхойлсон Wi-Fi хандалтын цэгийг нэмэгдүүлэх онцлогуудын талаар товчхон ярих болно. CentOS 7.

0. Танд хэрэгтэй зүйл

Бүх зүйл өмнөх нийтлэлд дурдсантай ижил байна:

  • Raspberry Pi 3 загвар B+;
  • microSD >= 4GB (дараа нь та системийг 2ГБ диск рүү "шилжүүлж" болно);
  • Линукс болон microSD карт уншигчтай ажлын станц;
  • Raspberry болон Linux ажлын станцын хооронд утастай сүлжээний холболт (энэ тохиолдолд тохируулахад нэмэлт дэлгэц, гар хэрэггүй болно), хоёр төхөөрөмжөөс интернетэд нэвтрэх;
  • Линуксийн ахисан түвшний ур чадвар (мэдэх, айхгүй байх: салсан, dd и mkfs).

Давталттай төстэй lfs-Өөрийн Линуксыг бүтээхдээ 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 Hotspot (эсвэл цэнхэр малгайтай бөөрөлзгөнө чиглүүлэгч)

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) OS-ийн шинэ хувилбарын үндсэн агуулгатай. Та Raspberry-г унтрааж, microSD-г Линуксийн ажлын станц руу буцааж өгч болно.

3. Хамгийн бага системийг суурилуулах

Суулгац нь хамгийн бага үйлдлийн системийн "зураг" файлуудыг (өмнөх алхамд авсан) тусгайлан бэлтгэсэн microSD диск рүү зохих лавлах руу хуулах хүртэл хийгддэг.

2 ГБ карт ба хоёр хуваалт хангалттай.

  1. / boot / efi - EFI+FAT32, ачаалах, 100MB;
  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 холбох цэгүүд нь шинэ UUID хуваалтуудтай тохирч байхаар microSD дээр суулгана.

Raspberry-г анх асаахад сүлжээний функцийг жижиг "таяг" ашиглан хийж болно - холбоос үүсгэ (схемийн хувьд):

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 гэсэн хоёр файл агуулсан архив байх болно. Архивыг Линуксийн ажлын станц дээр задалж, microSD (2 ГБ карт хангалттай) оруулж, төхөөрөмжийн нэр гэсэн параметр бүхий скриптийг ажиллуулна уу.

./install /dev/mmcblk0

Анхаар!

Ямар ч анхааруулгагүйгээр төхөөрөмжийг форматлаж, үйлдлийн системийг суулгана.

Скриптийг алдаагүй ажиллуулсны дараа картыг "бөөрөлзгөнө" болгон дахин байрлуулж, ашиглаж болно: dhcp-ээр барих, нууц үг - "1".

Систем нь бүх ID болон түлхүүрээс цэвэрлэгддэг тул шинэ суулгац бүр өвөрмөц байдаг.

Би дахин нэг удаа давтан хэлэхэд систем - хамгийн бага! Тиймээс бүү ай: DNF байгаа тул үүнийг ажиллуулахын тулд та зөвийг нь "зохион бүтээх" хэрэгтэй болно. /etc/resolv.conf.

Raspberry-ийн хүйтэн эхлэхэд 40 секунд зарцуулдаг. Ачаалсны дараа системийн TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (эсвэл цэнхэр малгайтай бөөрөлзгөнө чиглүүлэгч)

rpm -qa | wc -l
191

5. WiFi

Би Wi-Fi хандалтын цэгийг хэрэгжүүлэх онцлогуудын талаар бага зэрэг ярих болно. Тодорхой мэдээлэл авахын тулд та миний өмнөх нийтлэлээс лавлаж болно нийтлэл.

EPEL шаардлагагүй болсон - бүх багцууд нь албан ёсны репозиторуудад байдаг.

Энэ нь бууж өгөх нь зүйтэй болов уу dnsmasq, учир нь Fedora нь CentOS-ээс ялгаатай нь ердийн DHCP/DNS серверүүдтэй нэлээн сүүлийн үеийн systemd-networkd-тэй болсон. Гэхдээ баримт бол 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

Тэдгээргүйгээр та 5GHz/AC авахгүй.

Интерфейсийн тоо, нэрсийн тухайд. Одоо би хүн бүрт онцын шаардлагагүй бол програм хангамжийн шилжүүлэгчийн "үйлчилгээ" рүү хандахгүй байхыг хатуу зөвлөж байна (гүүр), энэ нь сүлжээний стект ихээхэн ачаалал өгч, чиглүүлэлт дарах болно. Хэрэв та олон утасгүй адаптертай байхаар төлөвлөөгүй бол зөвхөн физик интерфэйсийг ашиглах хэрэгтэй. Надад хоёр 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 адаптерууд лан;
  • wan — Интернэт холбогдсон Ethernet адаптер.

Та анзаарсан уу? fq_код - үнэхээр гайхалтай зүйл. Линуксийн шинэ цөмтэй хамт тэд утасгүй сүлжээнд жинхэнэ гайхамшгийг бүтээдэг: ширүүн "torrent татаж авах" нь хөршүүдийн хурдыг гэнэт бууруулахад хүргэхгүй. Ачаалал ихтэй сувагтай "агаараар" ажилладаг гэрийн 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

Мөн 5GHz/AC дээр ажиллах "шидэт" 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 Hotspot (эсвэл цэнхэр малгайтай бөөрөлзгөнө чиглүүлэгч)
Эцэст нь, жижиг түгээмэл асуултууд.

6 дугаартай. Асуулт

6.1 Яагаад Raspberry дээр Wi-Fi чиглүүлэгч хийх хэрэгтэй вэ?

"Оролдоод үзэхэд сонирхолтой, энэ бүхэн" гэх мэт энгийн хариултыг өгч болно.

Гэхдээ үнэндээ энэ сэдэв нэлээд ноцтой юм шиг санагдаж байна. "Цуст" интернетийн эрин үед дэлгүүрт чиглүүлэгч худалдаж аваад үйлдвэрлэгчийн барьцаанд үлдэх нь маш гунигтай ирээдүй юм. Олон хүмүүс CVE эсвэл суурилуулсан арын хаалгатай суух боломжгүй гэдгийг аль хэдийн ойлгосон.

Мэдээжийн хэрэг, та сонирхогчдоос WRT програм хангамж руу шилжиж болно. Тэдэнд итгэх итгэл илүү байгаа байх, гэхдээ та тэднээс хамааралтай байхыг хүсэхгүй байгаа бол зөвхөн өөрийнхөө бүтээгдэхүүнийг ашигла. Хамгийн тохиромжтой нь дэлхийн бүх зүйлийг үүн дээр хэрэгжүүлэх бүрэн хэмжээний компьютер юм. Маршрутын хувьд мэдээжийн хэрэг.

Тиймээс "бөөрөлзгөнө" сонгох нь цэвэр эдийн засгийн алхам юм: жинхэнэ компьютер, тэр үед хямдхан. Хэдийгээр дотор нь "давхар" -тай байж магадгүй юм.

6.2 Гэхдээ Raspberry бол "бага чиглүүлэгч" юм: удаан бөгөөд нэг Ethernet порттой!

Гэрийн Wi-Fi чиглүүлэгчийн хувьд Raspberry нь миний хувьд сэтгэл хангалуун байдаг. Би дээр агаарын хурдны талаар аль хэдийн ярьсан. Зөвхөн нэг Ethernet байдаг, Apple-ийн ижил төстэй бүтээгдэхүүнд бараг ижил байдаг!

Гэхдээ нухацтай хэлэхэд би илүү ихийг хүсч байна. Миний гэрт бүх төхөөрөмжүүд утасгүй холбогдсон байдаг ч заримдаа зэс холболт шаардлагатай хэвээр байна. Ийм тохиолдолд надад "хөдөлгөөнт төв" байгаа:

төхөөрөмж - үүнтэй төстэй зүйлRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (эсвэл цэнхэр малгайтай бөөрөлзгөнө чиглүүлэгч)

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

сэтгэгдэл нэмэх