ProHoster > Blog > administracja > Raspberry Pi + Fedora (aarch64) = Hotspot Wi-Fi (lub router malinowy z niebieską czapką)
Raspberry Pi + Fedora (aarch64) = Hotspot Wi-Fi (lub router malinowy z niebieską czapką)
Artykuł Raspberry Pi + CentOS = Hotspot Wi-Fi (lub router malinowy z czerwoną czapką) Mówiłem o sposobie przekształcenia Raspberry w bezprzewodowy punkt dostępowy za pomocą systemu operacyjnego CentOS. Montując mój domowy router zgodnie z tym rysunkiem, zaspokoiłem swoje twórcze ego i uzyskałem zastrzyk spokoju ducha dla krytycznego elementu mojej przytulnej infrastruktury. Dręczyło mnie jednak poczucie niekompletności rozwiązania i wewnętrzny perfekcjonizm: „niedoskonały wynik pracy nie ma prawa istnieć”. Myśl, że „ideał można i należy osiągnąć” nie opuściła mnie ani na chwilę.
I wtedy pewnego dnia na jednym z forów tematycznych natknąłem się na dyskusję na temat głębi bitowej istniejących systemów operacyjnych dla Raspberry (aarch64 vs armhfp): który system 64-bitowy w zasadzie może pasować i działać na Raspberry w wersji 3 ++?
Mój ukochany CentOS na architekturę ARM od „Userland” nie spieszył się z przejściem na najnowszą wersję jądra i przejściem na 64-bitowy. A repozytorium EPEL, połączone nie wiadomo skąd bez podpisu cyfrowego, było dla mnie koszmarem w niespokojnym śnie…
W tym artykule omówię metodę instalacji Fedora (aarch64) na Raspberry Pi Model B + 3 в wyjątkowo minimalna wydajność. Pokrótce omówię funkcje podnoszenia punktu dostępu Wi-Fi, zidentyfikowane w wyniku próbnego działania mojej poprzedniej konfiguracji na 7 CentOS.
0. Czego będziesz potrzebować
Wszystko jest takie samo, jak opisano w poprzednim artykule:
Raspberry Pi 3 Model B+;
microSD >= 4 GB (później można „przenieść” system na dysk 2 GB);
Stacja robocza z systemem Linux i czytnikiem kart microSD;
Przewodowa łączność sieciowa pomiędzy Raspberry a stacją roboczą z systemem Linux (w tym przypadku do konfiguracji nie będzie potrzebny dodatkowy monitor i klawiatura), dostęp do Internetu z obu urządzeń;
Zaawansowana znajomość Linuksa (wiedzieć i nie bać się: rozstał się, dd и mkfs).
Podobny do iteracyjnego LFS-budując własnego Linuksa, zostanie wykorzystany obraz dystrybucji Fedory, a następnie na jego podstawie zostanie stworzony minimalny system (bez „kompilacji ze źródeł”).
Teraz możesz pobrać „malinę” z karty microSD i połączyć się z nią przez sieć.
Zimny start trwa około półtorej minuty. TTX systemu po załadowaniu:
rpm -qa | wc -l
444
2. Montaż minimalnego systemu
Niestety „minimalna dystrybucja” od programistów okazuje się daleka od najskromniejszej pod względem zużycia zasobów. Obraz systemu można jeszcze zmniejszyć.
W tym celu należy uruchomić skrypt na Malince:
#!/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
Po uruchomieniu skryptu w bieżącym katalogu zostanie utworzony podkatalog ($P) z zawartością katalogu głównego nowej minimalnej wersji systemu operacyjnego. Możesz wyłączyć Raspberry i zwrócić kartę microSD do stacji roboczej z systemem Linux.
3. Instalacja systemu minimalnego
Instalacja sprowadza się do skopiowania minimalnych plików „obrazu” systemu operacyjnego (pozyskanych w poprzednim kroku) na specjalnie przygotowaną kartę microSD do odpowiednich katalogów.
Wystarczy karta 2GB i dwie partycje na niej:
/ boot / efi - EFI+FAT32, rozruch, 100MB;
/ (root) - EXT4, cała pozostała przestrzeń.
Po przygotowaniu karty microSD i skopiowaniu na nią plików należy:
naprawić rozruch systemu operacyjnego;
włącz sieć;
skonfiguruj dostęp przez ssh.
Poprawka rozruchowa polega na zastąpieniu UUID sekcji w plikach:
Dostęp administratora przez ssh konfiguruje się podobnie jak w kroku 1.
Po wykonaniu wszystkiego ostrożnie i bez błędów możesz przenieść kartę microSD do „maliny” i rozpocząć pracę z 64-bitowym systemem operacyjnym w wyjątkowo minimalnej wersji.
Będzie to archiwum zawierające dwa pliki: skrypt instalacyjny i TGZ z plikami systemu operacyjnego. Archiwum należy rozpakować na stacji roboczej Linux, włożyć kartę microSD (wystarczy karta 2 GB) i uruchomić skrypt z parametrem - nazwą urządzenia:
./install /dev/mmcblk0
Bądź ostrożny!
Bez żadnych ostrzeżeń urządzenie zostanie sformatowane i zainstalowany zostanie na nim system operacyjny.
Po bezbłędnym wykonaniu skryptu kartę można uporządkować w „malinkę” i zastosować: catch via dhcp, hasło - „1”.
System jest wyczyszczony ze wszystkich identyfikatorów i kluczy, dlatego każda nowa instalacja jest niepowtarzalna.
Powtarzam jeszcze raz, system - minimalny! Dlatego nie przejmuj się: DNF jest dostępny, aby zadziałał, będziesz musiał „wymyślić” właściwy / Etc / resolv.conf.
Zimny start Raspberry trwa około 40 sekund. TTX systemu po załadowaniu:
rpm -qa | wc -l
191
5. Wi-Fi
Zatrzymam się trochę na funkcjach wdrażania punktu dostępu Wi-Fi. Aby uzyskać szczegółowe informacje, możesz odwołać się do mojego poprzedniego Artykuł.
EPEL nie jest już potrzebny – wszystkie pakiety znajdują się w oficjalnych repozytoriach.
Chyba warto byłoby odpuścić dnsmasq, ponieważ Fedora, w przeciwieństwie do CentOS, ma całkiem nową sieć systemową, która ma normalne wbudowane serwery DHCP/DNS. Ale faktem jest, że w programistach RHEL8 odmówił obsługi stosu sieciowego za pomocą czegokolwiek innego niż NM, nie budzi zaufania w świetlaną przyszłość projektu (łotry). Krótko mówiąc, nie próbowałem.
Co więcej, aktualnych sterowników wbudowanego adaptera Wi-Fi nie można „ukraść” z dystrybucji Raspbian, ale można je pobrać bezpośrednio z GitHub.
Tak wyglądają pliki oprogramowania sprzętowego Broadcom na mojej Raspberry (schematycznie):
Odnośnie ilości i nazw interfejsów. Teraz zdecydowanie odradzam wszystkim, aby nie korzystali z „usług” przełączników oprogramowania, chyba że jest to absolutnie konieczne (most), które powodują znaczne obciążenie stosu sieciowego i utrudniają routing. Jeśli nie planujesz posiadania wielu kart bezprzewodowych, powinieneś używać wyłącznie interfejsów fizycznych. Mam dwa Wi-Fi, więc łączę tylko je w mostek programowy (chociaż możesz się bez tego obejść, inaczej patrząc na konfigurację hostapd).
Uwielbiam zmieniać nazwy interfejsów.
Aby to zrobić w Fedorze, musisz utworzyć dowiązanie symboliczne:
/etc/systemd/network/99-default.link -> /dev/null
i wtedy będzie można nadawać sensowne nazwy bez szperania udev, ale tylko przy użyciu systemd-networkd.
Na przykład tak nazywają się karty sieciowe w moim routerze:
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 - wbudowany, ext — zewnętrzne adaptery Wi-Fi (USB) zmontowane w „most” lan;
blady — Adapter Ethernet, do którego podłączony jest Internet.
Zauważony? fq_codel - naprawdę fajna rzecz. Razem ze świeżym jądrem Linuksa czynią prawdziwe cuda w zasięgu sieci bezprzewodowej: gwałtowne „pobieranie torrentów” nie doprowadzi do nagłego spadku prędkości wśród sąsiadów. Nawet domowa telewizja IP działająca „bezprzewodowo” z załadowanym kanałem nie „rozrywa się” i w ogóle się nie „zacina”!
Plik usługi demona został poddany niewielkim zmianom hostapd.
Wygląda to teraz tak (na przykładzie wbudowanego adaptera):
[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
Oraz „magiczny” plik hostapd-int.conf do pracy w paśmie 5GHz/AC:
(Połączenie internetowe - 100Mbit/s)
I na koniec małe FAQ.
6. FAQ
6.1 Po co tworzyć router Wi-Fi na Raspberry?
Można by odpowiedzieć po prostu: „ciekawe jest spróbować i tak dalej”.
Ale tak naprawdę wydaje mi się, że temat jest dość poważny. W dobie „cholernego” Internetu zakup routera w sklepie i pozostanie zakładnikiem jego producenta to bardzo ponura perspektywa. Wiele osób już rozumie, że siedzenie z CVE lub wbudowanym backdoorem nie jest możliwe.
Oczywiście możesz migrować do oprogramowania WRT od entuzjastów. Pewnie jest do nich większe zaufanie, ale jeśli nie chcesz na nich polegać, to po prostu skorzystaj z własnego produktu. Idealnie pełnoprawny komputer, żeby można było na nim zaimplementować wszystko na świecie. Oczywiście jeśli chodzi o routing.
Dlatego wybór „maliny” to posunięcie czysto ekonomiczne: prawdziwy komputer, a jednocześnie niedrogi. Chociaż może także - ze swoimi „sobowtórami” w środku.
6.2 Ale Raspberry to „niski router”: powolny i z jednym portem Ethernet!
Jako domowy router Wi-Fi Raspberry jest dla mnie więcej niż zadowalający. O prędkości lotu mówiłem już powyżej. A Ethernet jest tylko jeden, cóż, w podobnym produkcie Apple jest mniej więcej tak samo!
Ale poważnie, oczywiście, że chciałbym więcej. I pomimo tego, że w moim gospodarstwie domowym wszystkie urządzenia są połączone bezprzewodowo, czasem i tak potrzebne jest łącze miedziane. Na takie przypadki mam na stanie „mobilny hub”:
urządzenie - coś w tym stylu
6.3 Jeśli jest to router, nie ma mowy o „dostrajaniu” protokołu TCP/IP, ponieważ jest to ważne!
Oprócz skonfigurowania stosu sieciowego (tcp_fastopen, YeAH itp.) ten i poprzedni artykuł nie omawiają innych niuansów, w szczególności procesu przygotowania microSD do optymalnego użycia (chociaż instalator próbuje sformatować kartę pamięci w trudny sposób). Proces doskonalenia nie ma końca, wystarczy się w porę zatrzymać.
6.4 Dlaczego Fedora?
Ponieważ lubię! Fedora to system „głównego nurtu” dla maniaków, dla których właściwie przeznaczony jest ten artykuł. W momencie pisania tego tekstu, być może jedyny system operacyjny, który dla Raspberry w wersji 64-bitowej jest oficjalnie wspierany przez znaczną kadrę programistów (od których nie mogę się doczekać jądro 5.6).
6.5 Czy Bluetooth działa? Jak wideo/dźwięk/GPIO?
Nie wiem. Artykuł dotyczy minimalnej instalacji systemu i jego późniejszego wykorzystania jako routera Wi-Fi.
6.6 Dlaczego wszystkie artykuły o CentOS/Fedorze/RedHacie zaczynają się od wyłączenia SELinux?
Ponieważ system jest minimalny, nie ma nawet zapory ogniowej ani narzędzi do jego konfiguracji. Każdy, kto tego potrzebuje, może zainstalować dodatkowo wszystko, czego potrzebuje.
6.7 Z systemu nie można korzystać, nie można zmienić hasła - brak hasła. Żadnego pingu, żadnego niczego!
Jest DNF. Lub ta opcja instalacji nie jest dla Ciebie - skorzystaj z zestawu dystrybucyjnego od programistów.
6.9 Chciałbym od razu pobrać gotowy obraz ze skonfigurowanym punktem dostępowym Wi-Fi!
Przygotowanie instalatora „dla każdego” będzie wymagało trochę czasu i wysiłku. Jeśli (nagle!) komuś naprawdę uzna to za ciekawe i potrzebne, napisz do nas, a my coś wymyślimy.
Skończę z tym.
Życzę wszystkim bezpiecznego surfowania i maksymalnej kontroli nad infrastrukturą!