ProHoster > блог > адміністраванне > Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (або малінавы роўтэр у сінім капелюшы)
Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (або малінавы роўтэр у сінім капелюшы)
У артыкуле Raspberry Pi + CentOS = Wi-Fi Hotspot (або малінавы роўтэр у чырвоным капелюшы) я распавёў аб спосабе ператварэння "малінкі" у бесправадную кропку доступу пры дапамозе аперацыйнай сістэмы CentOS. Сабраўшы па такім чарцяжы мой хатні роўтэр, я задаволіў сваё творчае эга і атрымаў зарад спакою за крытычна важны элемент маёй утульнай інфраструктуры. Аднак адчуванне няскончанасці рашэння і ўнутраны перфекцыянізм не давалі спакою: "недасканалы вынік працы не мае права на існаванне". Думка аб тым, "што ідэал можа і павінен быць дасягнуты" не пакідала мяне ні на хвіліну.
І вось аднойчы на адным з тэматычных форумаў я натыкнуўся на абмеркаванне разраднасці існых аперацыйных сістэм для "малінкі" (aarch64 vs armhfp): якія 64-бітныя АС у прынцыпе могуць улезці і зарабіць на Raspberry версіі 3++?
Мая каханая CentOS для архітэктуры ARM ад "Userland" не спяшалася пераходзіць на ядро апошняй версіі і ператварацца ў 64-бітную. А рэпазітар EPEL, падключаны Бог вестку адкуль без лічбавага подпісу, з'яўляўся кашмарам у мой неспакойны сон…
У гэтым артыкуле я раскажу пра спосаб усталёўкі Fedora (aarch64) на Маліна Pi 3 Мадэль B + в экстра мінімальным выкананні. Коратка спынюся на асаблівасцях узняцця Wi-Fi кропкі доступу, выяўленых у выніку доследнай эксплуатацыі маёй папярэдняй канфігурацыі на CentOS 7.
0. Што спатрэбіцца
Усё тое самае, што пералічана ў папярэднім артыкуле:
Raspberry Pi 3 Model B +;
microSD> = 4GB (у наступстве можна «перанесці» сістэму на 2GB назапашвальнік);
Рабочая станцыя з Linux і картрыдарам microSD;
Правадная сеткавая звязанасць "малінкі" і працоўнай станцыі з Linux (у гэтым выпадку не спатрэбяцца дадатковыя манітор і клавіятура для налады), доступ у Інтэрнэт з абодвух прылад;
Прасунуты скіл у Linux (ведаць і не баяцца: рассталіся, dd и mkfs).
Падобна ітэратыўнай LFS-зборцы ўласнага Linux, будзе выкарыстаны дыстрыбутыўны вобраз Fedora, а потым на яго аснове - створана мінімальная сістэма (без "кампіляцыі з зыходнікаў").
Вось зараз можна загрузіць «малінку» з microSD і падлучыцца да яе па сетцы.
Халодны старт займае каля паўтары хвіліны. ТТХ сістэмы пасля загрузкі:
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 у адпаведныя каталогі.
Доступ суперкарыстачу па ssh наладжваецца аналагічна п.1.
Зрабіўшы ўсё акуратна і без памылак, можна перастаўляць microSD у "малінку" і пачынаць працаваць з 64-бітнай АС у экстра мінімальным выкананні.
4. Гатовая сістэма
"Вобраз" гатовай сістэмы, створаны па прыведзенай вышэй інструкцыі, можна спампаваць па спасылцы: Fedora-Tiny-31-5.5.7-200.aarch64
Гэта будзе архіў, які змяшчае ў сабе два файла: скрыпт усталёўкі і TGZ з файламі АС. Архіў трэба распакаваць на працоўнай станцыі Linux, уставіць microSD (дастаткова 2GB карты) і запусціць скрыпт з параметрам - імем прылады:
./install /dev/mmcblk0
Будзьце ўважлівыя!
Без якіх-небудзь папярэджанняў прылада будзе адфарматаваная і на яе - усталявана аперацыйная сістэма.
Пасля беспамылковай адпрацоўкі скрыпту картку можна перастаўляць у "малінку" і карыстацца: лавіць па dhcp, пароль - "1".
Сістэма ачышчана ад усякіх ID і ключоў, з-за чаго кожная новая ўстаноўка - унікальная.
Паўтаруся яшчэ раз, сістэма мінімальная! Таму не палохайцеся: DNF – у наяўнасці, для яго працаздольнасці прыйдзецца «скласці» правільны /etc/resolv.conf.
Халодны старт "малінкі" займае каля 40 секунд. ТТХ сістэмы пасля загрузкі:
rpm -qa | wc -l
191
5. WiFi
Трохі спынюся на асаблівасцях рэалізацыі Wi-Fi кропкі доступу. Па канкрэтыку можна звярнуцца да маёй папярэдняй артыкуле.
EPEL цяпер не спатрэбіцца – усе пакеты ўтрымліваюцца ў афіцыйных рэпазітарах.
Напэўна, варта было б адмовіцца ад dnsmasq, так як у Fedora, у адрозненні ад CentOS, – досыць свежы systemd-networkd, у якім – нармальныя ўбудаваныя DHCP/DNS серверы. Але факт таго, што ў RHEL8 распрацоўшчыкі адмовіліся ад падтрымкі сеткавага стэка чым-небудзь акрамя NM, не ўсяляе ўпэўненасці ў светлай будучыні праекта (нягоднікі). Карацей, не спрабаваў.
Далей, актуальныя драйверы ўбудаванага Wi-Fi адаптара можна не "красці" з дыстрыбутыва Raspbian, а пампаваць напроста з GitHub.
Вось так выглядаюць на маёй "малінцы" файлы прашыўкі Broadcom (схематычна):
Наконт колькасці і назваў інтэрфейсаў. Цяпер я ўжо ўсім настойліва рэкамендую без асаблівай патрэбы не звяртацца да «паслуг» праграмных свічак.мост), якія прыўносяць значную нагрузку ў сеткавы стэк і прыгнятаюць маршрутызацыю. Калі не плануецца некалькі бесправадных адаптараў, то выкарыстоўваць варта выключна фізічныя інтэрфейсы. У мяне – два 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 - убудаваны, доб - вонкавы (USB) Wi-Fi адаптары, сабраныя ў «брыдж» ЛВС;
Ван - Ethernet адаптар, у які падлучаны Інтэрнэт.
Заўважылі? fq_codel - сапраўды заліковая штука. Разам са свежым ядром Linux робяць сапраўдныя цуды ў бесправадным дыяпазоне: люты «торэнт-качак» не прывядзе да раптоўнай дэградацыі хуткасці ў суседзяў. Нават працавальнае "па паветры" хатняе IP-TV пры нагружаным канале не "распадаецца" і не "заікаецца" ад слова наогул!
Зведаў невялікія змены сэрвісны файл дэмана 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
І "чарадзейны" hostapd-int.conf для працы ў 5GHz/AC:
Трохі «фаташопа», зробленага з майго «Ericsson A1018s»:
(падлучэнне да Інтэрнэт - 100Мбіт/сек)
І ў зняволенні невялікі FAQ.
6. FAQ
6.1/XNUMX Навошта рабіць Wi-Fi роўтэр на Raspberry?
Можна было б адказаць проста, маўляў "цікава паспрабаваць і ўсё такое".
Але насамрэч, як мне падаецца, тэма дастаткова сур'ёзная. У эпоху «кровапралітнага» Інтэрнэту купляць роўтэр у краме і заставацца закладнікам яго вытворцы - вельмі маркотны далягляд. Сядзець з CVE-або ўшытым бэкдорам ужо многія разумеюць, што нельга.
Зразумела, можна міграваць на WRT-прашыўкі ад энтузіястаў. Даверу да іх, мусіць, больш, але калі не жадаецца залежаць і ад іх, то толькі — уласны выраб. У ідэале - паўнавартасны кампутар для магчымасці рэалізацыі на ім усяго на свеце. У плане роўтынгу, зразумела.
Таму, выбар «малінкі» – чыста эканамічны ход: сапраўдны кампутар і пры гэтым – недарагі. Хоць, магчыма таксама – са сваімі «дваянамі» усярэдзіне.
6.2 Але ж Raspberry – «недараўтэр»: павольны і з адным Ethernet портам!
Як хатні Wi-Fi роўтар, "малінка" мяне задавальняе больш чым. Пра хуткасць "па паветры" я ўжо расказаў вышэй. А ўсяго адзін Ethernet, ну дык у аналагічным прадукце ад Apple прыкладна сапраўды таксама!
А калі сур'ёзна, то вядома хацелася б больш. І нягледзячы на тое, што ў маёй гаспадарцы ўсе прылады падлучаныя без правадоў, часам усёткі патрабуецца меднае злучэнне. Для такіх выпадкаў у мяне прызапашаны «мабільны хаб»:
дэвайс - тыпу такога
6.3 Калі гэта роўтар, то нічога не сказанае аб "цюнінгу" TCP/IP, бо гэта важна!
Апроч налады сеткавага стэка (tcp_fastopen, YeAH і да т.п.), у гэтым і папярэднім артыкуле не раскрыты іншыя нюансы, у прыватнасці, працэс падрыхтоўкі microSD для аптымальнага выкарыстання (праўда ўсталёўнік спрабуе адфарматаваць карту памяці хітрым спосабам). Працэс удасканалення - бясконцы, трэба толькі своечасова спыніцца.
6.4 Чаму Fedora?
Бо мне падабаецца! Fedora – «мэйнстрым» – сістэма гікаў, для якіх, уласна, і прызначаны гэты артыкул. На момант напісання, мабыць, адзіная АС, якая для Raspberry у 64-бітным выкананні афіцыйна падтрымліваецца важкім штатам распрацоўнікаў (ад якіх ніяк не дачакаюся ядры 5.6).
6.5/XNUMX А Bluetooth працуе? Як там відэа/гук/GPIO?
Не ведаю. Артыкул – пра мінімальную ўстаноўку сістэмы і яе наступнае выкарыстанне ў якасці Wi-Fi роўтара.
6.6 Чаму ўсе артыкулы пра CentOS/Fedora/RedHat пачынаюцца з адключэння SELinux?
Таму што сістэма мінімальная, у ёй няма нават файрвола і ўтыліт па яго наладзе. Каму спатрэбіцца - могуць усталяваць дадаткова ўсё што неабходна.
6.7 Сістэмай немагчыма карыстацца, нельга змяніць пароль - не passwd. Няма ping-а, няма нічога!
Ёсць DNF. Ці гэты варыянт усталёўкі не для вас – скарыстайцеся дыстрыбутывам ад распрацоўнікаў.
6.9 Хацелася б спампаваць адразу гатовы вобраз з настроенай кропкай доступу Wi-Fi!
Для падрыхтоўкі ўсталёўніка «для ўсіх» запатрабуецца некаторая колькасць часу і намаганняў. Калі (раптам!) камусьці гэта сапраўды здасца цікавым і неабходным - пішыце, што-небудзь прыдумаем.
На гэтым - скончу.
Жадаю ўсім бяспечнага серфінгу і максімальнага кантролю над інфраструктурай!