Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (yoki ko'k shlyapali malina router)

maqola Raspberry Pi + CentOS = Wi-Fi Hotspot (yoki qizil shlyapali malina router) Men CentOS operatsion tizimi yordamida Raspberry-ni simsiz kirish nuqtasiga aylantirish usuli haqida gapirdim. Ushbu chizma bo'yicha uy routerimni yig'ish orqali men o'zimning ijodiy egoimni qondirdim va qulay infratuzilmaning muhim elementi uchun xotirjamlikni oldim. Biroq, yechimning to'liq emasligi va ichki mukammallik hissi meni hayratda qoldirdi: "ishning nomukammal natijasi mavjud bo'lishga haqli emas". "Idealga erishish mumkin va kerak" degan fikr meni bir daqiqaga ham tark etmadi.

Va bir kuni, mavzuli forumlardan birida men Raspberry (aarch64 va armhfp) uchun mavjud operatsion tizimlarning bit chuqurligi haqida munozaraga duch keldim: qaysi 64-bitli operatsion tizim, asosan, Raspberry 3-versiyasiga mos kelishi va ishlashi mumkin. ++?

"Userland" dan ARM arxitekturasi uchun mening sevimli CentOS-im yadroning so'nggi versiyasiga o'tishga va 64-bitga o'tishga shoshilmadi. EPEL ombori esa, Xudo biladi, raqamli imzosiz qayerda, mening notinch uyqumda dahshatli tush edi ...

RPM-ga asoslangan tarqatish tarafdori sifatida gapirganda, men Raspberry uchun OS munozaralarda butunlay unutilganini ko'rib hayron bo'ldim. Fedora! Va bu uning chiqarilishiga qaramay
28-versiyadan boshlab u 3-bitli versiyada Raspberry Pi 64B+ ni rasman qo'llab-quvvatlaydi!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (yoki ko'k shlyapali malina router)
Ushbu maqolada men o'rnatish usuli haqida gapiraman Fedora (aarch64) haqida Raspberry Pi 3 Model B + в qo'shimcha minimal ishlash. Men oldingi konfiguratsiyamning sinovdan o'tkazilishi natijasida aniqlangan Wi-Fi kirish nuqtasini ko'tarish xususiyatlariga qisqacha to'xtalib o'taman. CentOS 7.

0. Sizga nima kerak bo'ladi

Hammasi avvalgi maqolada bo'lgani kabi:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (keyinchalik siz tizimni 2GB drayvga "o'tkazishingiz" mumkin);
  • Linux va microSD kartani o'quvchi bilan ish stantsiyasi;
  • Raspberry va Linux ish stantsiyasi o'rtasida simli tarmoq ulanishi (bu holda sozlash uchun qo'shimcha monitor va klaviatura kerak bo'lmaydi), ikkala qurilmadan Internetga kirish;
  • Linuxda ilg'or mahorat (bilish va qo'rqmaslik uchun: xayrlashdi, dd и mkfs).

Iterativga o'xshash lfs-o'z Linuxingizni qurishda Fedora tarqatish tasviridan foydalaniladi, so'ngra uning asosida minimal tizim yaratiladi ("manbadan kompilyatsiya qilmasdan").

1. Asl tarqatishni o'rnatish

Internetdagi tizimning xom tasvirining koordinatalari:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Uni microSD-ga yozib olgandan so'ng va uni ishlatishdan oldin sizga kerak:

  1. Fayl tizimining "ildizi" ni kengaytiring (3-qism, 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-ni o'chirib qo'ying
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Dastlabki sozlash ustasini olib tashlang:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Ssh orqali kirishga ruxsat bering:
    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
    

Endi siz "malina" ni microSD-dan yuklab olishingiz va unga tarmoq orqali ulanishingiz mumkin.

Sovuq boshlanish taxminan bir yarim daqiqa davom etadi. Yuklashdan keyin tizimning TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (yoki ko'k shlyapali malina router)

rpm -qa | wc -l
444

2. Minimal tizimni yig'ish

Afsuski, ishlab chiquvchilarning "minimal taqsimoti" resurslarni iste'mol qilishda eng kamtarona emas. Tizim tasvirini hatto kichikroq qilish mumkin.

Buning uchun siz Malinka-da skriptni ishga tushirishingiz kerak:

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

Skriptni ishga tushirgandan so'ng, joriy katalogda pastki katalog yaratiladi ($P) yangi minimal OS nashri ildizining mazmuni bilan. Raspberry-ni o'chirib, microSD-ni Linux ish stantsiyasiga qaytarishingiz mumkin.

3. Minimal tizimni o'rnatish

O'rnatish minimal OS "tasvir" fayllarini (oldingi bosqichda olingan) maxsus tayyorlangan microSD-ga tegishli kataloglarga nusxalashdan iborat.

2 GB karta va unga ikkita bo'lim etarli:

  1. / boot / efi - EFI+FAT32, yuklash, 100MB;
  2. / (ildiz) - EXT4, qolgan barcha bo'sh joy.

MicroSD-ni tayyorlab, unga fayllarni nusxalashdan so'ng, sizga kerak:

  • OS yuklanishini tuzatish;
  • tarmoqni yoqing;
  • ssh orqali kirishni sozlang.

Yuklashni tuzatish fayllardagi bo'limlarning UUID ni almashtirishdan iborat:

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

va parametr saqlangan_entry= oxirgi faylda

Faylda:

microSD:/etc/fstab

buyruq chiqishida eski qiymatlarni va joriy (yangilangan) qiymatlarni topishingiz mumkin:

blkid | grep mmcblk | sort

O'zgartirgandan so'ng, siz tarkibni ham to'g'rilashingiz kerak fstab microSD-da o'rnatish nuqtalari yangi UUID bo'limiga mos kelishi uchun.

Raspberry-ni birinchi marta yoqqaningizda tarmoq funksiyasiga kichik "tayoqcha" yordamida erishish mumkin - havola yarating (sxematik):

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

va fayl:

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

Muvaffaqiyatli yuklab olingandan so'ng, ishga tushirishni tartibga soling systemd-tarmoqd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Ssh orqali superfoydalanuvchiga kirish 1-bosqichga o'xshash tarzda tuzilgan.

Har bir narsani ehtiyotkorlik bilan va xatosiz bajarganingizdan so'ng, siz microSD-ni "malina" ga ko'chirishingiz va qo'shimcha minimal versiyada 64 bitli OT bilan ishlashni boshlashingiz mumkin.

4. Tayyor tizim

Yuqoridagi ko'rsatmalarga muvofiq yaratilgan tayyor tizimning "tasvirini" havoladan yuklab olish mumkin:
Fedora-Tiny-31-5.5.7-200.aarch64

Bu ikkita faylni o'z ichiga olgan arxiv bo'ladi: o'rnatish skripti va OS fayllari bilan TGZ. Arxivni Linux ish stantsiyasida ochish kerak, microSD (2GB karta etarli) joylashtiring va skriptni parametr bilan ishga tushiring - qurilma nomi:

./install /dev/mmcblk0

Diqqatli bo'ling!

Hech qanday ogohlantirishlarsiz qurilma formatlanadi va unga operatsion tizim o'rnatiladi.

Skript xatosiz bajarilgandan so'ng, kartani "malina" ga qayta joylashtirish va foydalanish mumkin: dhcp orqali ushlang, parol - "1".

Tizim barcha identifikatorlar va kalitlardan tozalangan, shuning uchun har bir yangi o'rnatish noyobdir.

Yana bir bor takrorlayman, tizim - minimal! Shuning uchun, xavotirlanmang: DNF mavjud, uning ishlashi uchun siz to'g'risini "ixtiro qilishingiz" kerak bo'ladi. /etc/resolv.conf.

Raspberry'ning sovuq boshlanishi taxminan 40 soniya davom etadi. Yuklashdan keyin tizimning TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (yoki ko'k shlyapali malina router)

rpm -qa | wc -l
191

5. Wi-fi

Men Wi-Fi kirish nuqtasini amalga oshirish xususiyatlari haqida bir oz to'xtalib o'taman. Aniqroq ma'lumot uchun siz mening oldingi maqolamga murojaat qilishingiz mumkin maqola.

EPEL endi kerak emas - barcha paketlar rasmiy omborlarda mavjud.

Ehtimol, voz kechishga arziydi dnsmasq, chunki Fedora, CentOS-dan farqli o'laroq, oddiy o'rnatilgan DHCP/DNS serverlariga ega bo'lgan juda yangi systemd-tarmoqqa ega. Ammo haqiqat shundaki, RHEL8-da ishlab chiquvchilar NM dan boshqa narsa bilan tarmoq stekini qo'llab-quvvatlashdan bosh tortdi, loyihaning yorqin kelajagiga ishonchni uyg'otmaydi (sharmandalar). Qisqasi, men buni sinab ko'rmadim.

Bundan tashqari, o'rnatilgan Wi-Fi adapteri uchun joriy drayverlarni Raspbian tarqatilishidan "o'g'irlash" mumkin emas, balki to'g'ridan-to'g'ri yuklab olish mumkin emas. Github.

Broadcom proshivka fayllari mening Raspberry-da shunday ko'rinadi (sxematik):

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

Ularsiz siz 5 GHz/AC ni olmaysiz.

Interfeyslar soni va nomlari haqida. Endi men hammaga, agar zarurat bo'lmasa, dasturiy ta'minot kalitlarining "xizmatlariga" murojaat qilmaslikni qat'iy tavsiya qilaman (ko'prik), bu tarmoq stekiga sezilarli yuk olib keladi va marshrutni susaytiradi. Agar siz bir nechta simsiz adapterlarga ega bo'lishni rejalashtirmasangiz, unda siz faqat jismoniy interfeyslardan foydalanishingiz kerak. Menda ikkita Wi-Fi bor, shuning uchun men ularni faqat dasturiy ta'minot ko'prigiga birlashtiraman (garchi hostapd sozlamalarini boshqacha ko'rib chiqsangiz ham, bu holda qila olasiz).

Va men interfeyslarni qayta nomlashni yaxshi ko'raman.

Buni Fedora-da amalga oshirish uchun siz ramziy havola yaratishingiz kerak:

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

keyin esa aylanib o'tirmasdan ma'noli nomlar berish mumkin bo'ladi udev, lekin faqat systemd-networkd yordamida.

Masalan, mening routerimdagi tarmoq adapterlari shunday deb ataladi:

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 - o'rnatilgan, ext - "ko'prik" ga yig'ilgan tashqi (USB) Wi-Fi adapterlari LAN;
  • wan — Internet ulangan Ethernet adapteri.

Siz sezdingizmi? fq_codel - haqiqatan ham ajoyib narsa. Yangi Linux yadrosi bilan birgalikda ular simsiz diapazonda haqiqiy mo''jizalar yaratadilar: qattiq "torrent yuklab olish" qo'shnilar orasida tezlikning keskin pasayishiga olib kelmaydi. Hatto yuklangan kanalga ega "havo orqali" ishlaydigan uy IP-televizori ham "buzilmaydi" va umuman "qoqilmaydi"!

Demon xizmat fayli kichik o'zgarishlarga uchradi hostapd.

Endi u shunday ko'rinadi (o'rnatilgan adapter misolida):

[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

Va 5GHz/AC da ishlash uchun "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-dan tayyorlangan kichik fotoshop:

(Internetga ulanish - 100Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (yoki ko'k shlyapali malina router)
Va nihoyat, kichik FAQ.

6. Tss

6.1 Nega Raspberry-da Wi-Fi router qilish kerak?

Biror kishi oddiygina javob berishi mumkin, masalan, "sinab ko'rish qiziq va bularning barchasi".

Lekin, aslida, menga mavzu ancha jiddiydek tuyuladi. "Qonli" Internet davrida do'konda marshrutizator sotib olish va uning ishlab chiqaruvchisi garovida qolish juda ayanchli istiqboldir. Ko'pchilik allaqachon CVE yoki o'rnatilgan orqa eshik bilan o'tirish mumkin emasligini tushunishadi.

Albatta, siz ishqibozlardan WRT mikrodasturiga o'tishingiz mumkin. Ehtimol, ularga ko'proq ishonch bor, lekin agar siz ularga qaram bo'lishni xohlamasangiz, unda faqat o'zingizning mahsulotingizdan foydalaning. Ideal holda, dunyoda hamma narsa amalga oshirilishi uchun to'liq kompyuter. Marshrutlash nuqtai nazaridan, albatta.

Shuning uchun, "malina" ni tanlash - bu faqat iqtisodiy harakat: haqiqiy kompyuter va ayni paytda arzon. Garchi, ehtimol ham - ichida "juftliklari" bilan.

6.2 Ammo Raspberry - bu "past router": sekin va bitta Ethernet porti bilan!

Uy Wi-Fi routeri sifatida Raspberry men uchun ko'proq qoniqarli. Men yuqorida havo tezligi haqida gapirdim. Va faqat bitta Ethernet bor, Apple-ning shunga o'xshash mahsulotida u taxminan bir xil!

Lekin jiddiy, albatta, men ko'proq narsani xohlayman. Va mening uyimda barcha qurilmalar simsiz ulangan bo'lishiga qaramay, ba'zida mis ulanishi talab qilinadi. Bunday holatlar uchun menda "mobil markaz" mavjud:

qurilma - shunga o'xshash narsaRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (yoki ko'k shlyapali malina router)

6.3 Agar bu marshrutizator bo'lsa, unda TCP/IP-ni "sozlash" haqida hech narsa aytilmaydi, chunki bu muhim!

Tarmoq stekini (tcp_fastopen, YeAH va boshqalar) o'rnatishdan tashqari, ushbu va oldingi maqola boshqa nuanslarni, xususan, microSD-ni optimal foydalanish uchun tayyorlash jarayonini qamrab olmaydi (garchi o'rnatuvchi xotira kartasini formatlash uchun harakat qilsa ham). qiyin yo'l). Yaxshilash jarayoni cheksizdir, siz faqat o'z vaqtida to'xtashingiz kerak.

6.4 Nima uchun Fedora?

Chunki menga yoqadi! Fedora geeks uchun "asosiy" tizim bo'lib, ular uchun ushbu maqola aslida mo'ljallangan. Yozish paytida, ehtimol, Raspberry uchun 64-bitli versiyadagi yagona operatsion tizim ishlab chiquvchilarning muhim xodimlari tomonidan rasmiy ravishda qo'llab-quvvatlanadi (ulardan men kuta olmayman) yadro 5.6).

6.5 Bluetooth ishlaydimi? Video/ovoz/GPIO qanday?

Bilmayman. Maqolada tizimning minimal o'rnatilishi va undan keyin Wi-Fi router sifatida foydalanish haqida.

6.6 Nima uchun CentOS/Fedora/RedHat haqidagi barcha maqolalar SELinux-ni o'chirish bilan boshlanadi?

Tizim minimal bo'lgani uchun uni o'rnatish uchun xavfsizlik devori yoki yordamchi dasturlar ham mavjud emas. Kimga kerak bo'lsa, qo'shimcha ravishda o'ziga kerak bo'lgan hamma narsani o'rnatishi mumkin.

6.7 Tizimdan foydalanib bo'lmaydi, parolni o'zgartirib bo'lmaydi - passwd yo'q. Ping yo'q, hech narsa yo'q!

bor DNF. Yoki ushbu o'rnatish opsiyasi siz uchun emas - ishlab chiquvchilarning tarqatish to'plamidan foydalaning.

6.8 SWAP qayerda? Men usiz yashay olmayman!

Bu rostmi? OK, keyin:

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 Men sozlangan Wi-Fi kirish nuqtasi bilan tayyor tasvirni darhol yuklab olishni xohlayman!

"Hamma uchun" o'rnatuvchini tayyorlash biroz vaqt va kuch talab qiladi. Agar (to'satdan!) kimdir buni haqiqatan ham qiziqarli va zarur deb topsa, bizga yozing va biz nimadir o'ylab topamiz.

Shu bilan tugataman.

Barchaga xavfsiz sörfing va infratuzilma ustidan maksimal nazorat tilayman!

Manba: www.habr.com

a Izoh qo'shish