Clanak Govorio sam o načinu pretvaranja Raspberry Pi-ja u bežičnu pristupnu tačku pomoću operativnog sistema. CentOSNakon što sam sastavio svoj kućni ruter koristeći ovaj dizajn, zadovoljio sam svoj kreativni ego i stekao dozu mira u vezi s ključnim elementom moje udobne infrastrukture. Međutim, osjećaj nedovršenosti i mog unutrašnjeg perfekcionizma me proganjao: "nesavršen rezultat nema pravo na postojanje". Misao da se "savršenstvo može i treba postići" nije me ni na trenutak napustila.
A onda sam jednog dana, na jednom od tematskih foruma, naišao na diskusiju o bitnoj dubini postojećih operativnih sistema za Raspberry (aarch64 vs armhfp): koji 64-bitni OS može, u principu, stati i raditi na Raspberry verziji 3 ++?
My lovely CentOS Što se tiče ARM arhitekture, Userland nije žurio da pređe na najnoviju verziju kernela i postane 64-bitni. A EPEL repozitorij, povezan ko zna odakle bez digitalnog potpisa, bio je noćna mora u mom nemirnom snu...
Govoreći kao pristalica distribucija zasnovanih na RPM-u, bio sam iznenađen kada sam otkrio da je OS za Raspberry potpuno zaboravljen u diskusijama fedora! I to uprkos činjenici da je njegovo izdanje

U ovom članku ću govoriti o načinu instalacije Fedora (aarch64) na Malina Pi 3 Model B + в ekstra minimalne performanse. Ukratko ću se zadržati na karakteristikama podizanja Wi-Fi pristupne tačke, identifikovanih kao rezultat probnog rada moje prethodne konfiguracije na .
0. Šta će vam trebati
Sve je isto kao što je navedeno u prethodnom članku:
- Raspberry Pi 3 Model B+;
- microSD >= 4GB (kasnije možete „prebaciti“ sistem na disk od 2GB);
- Radna stanica sa Linux i čitač microSD kartica;
- Žičana mrežna veza između Raspberry Pi-ja i radne stanice Linux (u ovom slučaju, neće vam biti potreban dodatni monitor i tastatura za podešavanje), pristup internetu sa oba uređaja;
- Napredna vještina u Linux (znati i ne bojati se: , и ).
Slično iterativnom - sastavljanje vlastitog Linux, koristit će se slika Fedora distribucije, a zatim će se na osnovu nje kreirati minimalni sistem (bez "kompajliranja iz izvornog koda").
1. Instalacija originalne distribucije
Koordinate sirove slike sistema na Internetu:
Nakon snimanja na microSD i prije korištenja, potrebno je:
- Proširite "korijen" sistema datoteka (3. particija, 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 - Onemogući SELinux
echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config - Uklonite čarobnjaka za početno podešavanje:
find /mnt/3/etc/systemd/ -iname initial-setup.service -delete - Dozvolite pristup putem ssh-a:
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
Sada možete preuzeti “raspberry” sa microSD kartice i povezati se na nju putem mreže.
Hladan start traje oko minut i po. TTX sistema nakon učitavanja:

rpm -qa | wc -l
444
2. Sastavljanje minimalnog sistema
Nažalost, pokazalo se da je „minimalna distribucija“ programera daleko od najskromnije potrošnje resursa. Slika sistema može biti još manja.
Da biste to učinili, morate pokrenuti skriptu na Malinka:
#!/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
Nakon pokretanja skripte, poddirektorij će biti kreiran u trenutnom direktoriju ($P) sa sadržajem korijenskog direktorijuma nove minimalne verzije operativnog sistema. Možete isključiti Raspberry Pi i vratiti microSD karticu u radnu stanicu. Linux.
3. Instalacija minimalnog sistema
Instalacija se svodi na kopiranje minimalnih OS fajlova „image“ (dobijenih u prethodnom koraku) na posebno pripremljenu microSD karticu u odgovarajuće direktorijume.
Dovoljna je kartica od 2GB i dvije particije na njoj:
- / boot / efi - EFI+FAT32, boot, 100MB;
- / (root) - EXT4, sav preostali prostor.
Nakon što pripremite microSD i kopirate fajlove na njega, potrebno je da:
- popraviti OS boot;
- uključite mrežu;
- konfigurišite pristup preko ssh-a.
Popravak pokretanja je zamjena UUID-a sekcija u datotekama:
microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv
i parametar saved_entry= u poslednjem fajlu
U fajlu:
microSD:/etc/fstab
možete pronaći stare vrijednosti i trenutne (ažurne) vrijednosti u izlazu naredbe:
blkid | grep mmcblk | sort
Nakon zamjene također treba ispraviti sadržaj fstab na microSD tako da tačke montiranja odgovaraju novim UUID-ovima particije.
Mrežna funkcionalnost kada prvi put uključite Raspberry može se postići malom "štakom" - kreirajte vezu (šematski):
ln -s /usr/lib/systemd/system/systemd-networkd.service
microSD:/etc/systemd/system/multi-user.target.wants
i fajl:
mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF
Nakon uspješnog preuzimanja, sredite lansiranje :
systemctl disable systemd-networkd
systemctl enable systemd-networkd
Pristup superkorisnika preko ssh-a je konfigurisan slično kao u koraku 1.
Nakon što ste sve obavili pažljivo i bez grešaka, možete premjestiti microSD u "malina" i početi raditi sa 64-bitnim OS-om u ekstra minimalnoj verziji.
4. Spreman sistem
„Sliku“ gotovog sistema, kreiranu prema gore navedenim uputstvima, možete preuzeti sa linka:
Ovo će biti arhiva koja sadrži dvije datoteke: instalacijski skript i TGZ datoteku s datotekama operativnog sistema. Arhivu je potrebno raspakirati na radnoj stanici. Linux, umetnite microSD karticu (dovoljna je kartica od 2 GB) i pokrenite skriptu s nazivom uređaja kao parametrom:
./install /dev/mmcblk0
Budite oprezni!
Bez ikakvih upozorenja, uređaj će biti formatiran i na njemu će biti instaliran operativni sistem.
Nakon izvršavanja skripte bez grešaka, kartica se može preurediti u "malinu" i koristiti: catch preko dhcp-a, lozinka - "1".
Sistem je očišćen od svih ID-ova i ključeva, zbog čega je svaka nova instalacija jedinstvena.
Ponavljam još jednom, sistem - minimalno! Stoga, nemojte se uznemiravati: DNF je dostupan, da bi funkcionisao morat ćete „izmisliti“ pravi .
Hladni start Raspberry-a traje oko 40 sekundi. TTX sistema nakon učitavanja:

rpm -qa | wc -l
191
5. WiFi
Zadržat ću se malo na karakteristikama implementacije Wi-Fi pristupne točke. Za pojedinosti, možete pogledati moj prethodni .
EPEL više nije potreban - svi paketi se nalaze u službenim repozitorijumima.
Vjerovatno bi vrijedilo odustati , budući da u Fedori, za razliku od CentOS, je prilično noviji systemd-networkd, koji ima pristojne ugrađene DHCP/DNS servere. Ali činjenica je da su u RHEL8, programeri , ne uliva povjerenje u svijetlu budućnost projekta (podlaci). Ukratko, nisam probao.
Nadalje, trenutni drajveri za ugrađeni Wi-Fi adapter ne mogu se "ukrati" iz Raspbian distribucije, već preuzeti direktno sa .
Ovako izgledaju fajlovi firmvera Broadcom na mom Raspberryju (šematski):
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
Bez njih nećete dobiti 5GHz/AC.
Što se tiče broja i naziva interfejsa. Sada toplo preporučujem svima da ne pribjegavaju "uslugama" softverskih prekidača osim ako je apsolutno neophodno (), koji unose značajno opterećenje u mrežni stog i smanjuju rutiranje. Ako ne planirate imati više bežičnih adaptera, trebali biste koristiti samo fizička sučelja. Imam dva Wi-Fi-ja, pa samo njih kombinujem u softverski most (iako možete i bez toga ako drugačije pogledate postavku hostapd-a).
I volim preimenovanje interfejsa.
Da biste to učinili u Fedori, morate kreirati simboličku vezu:
/etc/systemd/network/99-default.link -> /dev/null
i tada će biti moguće davati smislena imena bez čačkanja , ali samo koristeći systemd-networkd.
Na primjer, ovako se zovu mrežni adapteri u mom ruteru:
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 - ugrađeni, ext — eksterni (USB) Wi-Fi adapteri sastavljeni u “most” lan;
- wan — Ethernet adapter na koji je povezan Internet.
Jeste li primijetili? — zaista kul stvar. Uz svježu jezgru Linux Čine čuda u bežičnom spektru: brutalno preuzimanje torrenta neće uzrokovati nagli pad brzine kod vaših susjeda. Čak se ni bežična kućna IPTV ne "raspada" niti se uopšte prekida kada je kanal zauzet!
Daemon servisni fajl je pretrpio manje promjene .
Sada izgleda ovako (koristeći primjer ugrađenog 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
I “magični” hostapd-int.conf za rad na 5GHz/AC:
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]
Mali photoshop napravljen od mog Ericssona A1018s:
(Internet veza - 100Mbit/sec)
I na kraju, mala FAQ.
6. FAQ
6.1 Zašto napraviti Wi-Fi ruter na Raspberryju?
Moglo bi se jednostavno odgovoriti, kao "zanimljivo je probati i sve to."
Ali u stvari, čini mi se da je tema prilično ozbiljna. U eri “krvavog” interneta, kupiti ruter u trgovini i ostati talac njegovog proizvođača je vrlo sumorna perspektiva. Mnogi ljudi već razumiju da sjedenje sa CVE-om ili ugrađenim backdoor-om nije moguće.
Naravno, možete migrirati na WRT firmware od entuzijasta. Vjerovatno postoji više povjerenja u njih, ali ako ne želite ovisiti o njima, onda samo koristite svoj proizvod. Idealno, punopravni kompjuter tako da se na njemu može implementirati sve na svijetu. U smislu rutiranja, naravno.
Stoga je odabir "maline" čisto ekonomski potez: pravi kompjuter i istovremeno jeftin. Mada, možda i - sa svojim "dvojnicima" unutra.
6.2 Ali Raspberry je „niski ruter“: spor i sa jednim Ethernet portom!
Kao kućni Wi-Fi ruter, Raspberry je za mene više nego zadovoljavajući. O brzini vazduha sam već govorio gore. I postoji samo jedan Ethernet, pa, u sličnom Appleovom proizvodu je otprilike isto!
Ali ozbiljno, naravno da bih voleo više. I uprkos činjenici da su u mom domaćinstvu svi uređaji povezani bežično, ponekad je i dalje potrebna bakarna veza. Za takve slučajeve imam na lageru “mobilno čvorište”:
uređaj - ovako nešto
6.3 Ako je ovo ruter, onda se ništa ne govori o "podešavanju" TCP/IP, jer je važno!
Osim podešavanja mrežnog stoga (tcp_fastopen, YeAH, itd.), ovaj i prethodni članak ne pokrivaju druge nijanse, posebno proces pripreme microSD-a za optimalno korištenje (iako instalater pokušava formatirati memorijsku karticu u lukav način). Proces poboljšanja je beskonačan, samo treba stati na vrijeme.
6.4 Zašto Fedora?
Jer volim! Fedora je “mainstream” sistem za štreberke, kojima je ovaj članak zapravo namijenjen. U vrijeme pisanja, možda jedini OS koji je za Raspberry u 64-bitnoj verziji službeno podržan od strane značajnog osoblja programera (od kojih jedva čekam ).
6.5 Radi li Bluetooth? Kako je video/zvuk/GPIO?
Ne znam. Članak govori o minimalnoj instalaciji sistema i njegovoj naknadnoj upotrebi kao Wi-Fi rutera.
6.6 Zašto su svi članci o CentOS/Fedora/RedHat se pokreće sa onemogućenim SE-omLinux?
Budući da je sistem minimalan, nema čak ni zaštitni zid ili uslužne programe za njegovo postavljanje. Svako kome je to potrebno može dodatno ugraditi sve što mu je potrebno.
6.7 Sistem se ne može koristiti, lozinka se ne može promijeniti - nema passwd. Nema pinga, nema ničega!
Postoje . Ili ova opcija instalacije nije za vas - koristite distribucijski komplet od programera.
6.8 Gdje je SWAP? Ne mogu živjeti bez njega!
Da li je istina? Uredu onda:
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 Želio bih odmah preuzeti gotovu sliku sa konfiguriranom Wi-Fi pristupnom tačkom!
Priprema instalatera "za sve" zahtijevat će malo vremena i truda. Ako (iznenada!) nekome ovo bude zaista zanimljivo i potrebno, pišite nam pa ćemo nešto smisliti.
Završiću sa ovim.
Želim svima sigurno surfanje i maksimalnu kontrolu nad infrastrukturom!
izvor: www.habr.com
