V članku Povedal sem o načinu, kako spremeniti "malinico" v brezžično dostopno točko s pomočjo operacijskega sistema CentOS. Tako sem izdelal svoj domači usmernik po tem načrtu in zadovoljil svoje ustvarjalno ego ter pridobil mir, saj sem zaščitil kritično pomemben element svoje prijetne infrastrukture. Vendar me je občutek nedokončanosti rešitve in notranji perfekcionizem nenehno motil: "nepopoln rezultat dela nima pravice do obstoja". Misel, da "ideal lahko in mora biti dosežen", me ni zapustila niti za trenutek.
Nekoč sem naletel na eni izmed tematskih forumov, kjer sem naletel na razpravo o bitnosti obstoječih operacijskih sistemov za "malinico" (aarch64 vs armhfp): kateri 64-bitni OS lahko sploh dela na Raspberry verziji 3++?
Moja najljubša CentOS za arhitekturo ARM od "Userland" se ni mudila, da bi prešla na jedro zadnje različice in postala 64-bitna. Repozitorij EPEL, povezan ne vem od kod brez digitalnega podpisa, je bil v mojem nemirnem spanju nočna mora...
Kot zagovornik RPM-podoben distribucij sem s presenečenjem ugotovil, da je v razpravah o OS za "malinico" popolnoma pozabljena Fedora! In to kljub temu, da njen izid

V tem članku bom govoril o načinu namestitve Fedora (aarch64) na Raspberry Pi 3 Model B+ u ekstra minimalna različica. Kratko bom opisal posebnosti postavitve Wi-Fi dostopne točke, ki so se izkazale med izkušeno uporabo moje prejšnje konfiguracije na .
0. Kaj bo potrebno
Vse isto, kar je bilo navedeno v prejšnjem članku:
- Raspberry Pi 3 Model B+;
- microSD >= 4GB (kasneje lahko "premaknete" sistem na 2GB napravo);
- Delovna postaja z Linuxom in bralnikom kartic microSD;
- Žična mrežna povezanost "malinice" in delovne postaje z Linuxom (v tem primeru ne bosta potrebna dodatni monitor in tipkovnica za konfiguracijo), dostop do interneta na obeh napravah;
- Napreden skill v Linuxu (vedeti in se ne bati: , in ).
Podobno kot pri iterativni -zgradnji lastnega Linuxa, se bo uporabil distribucijski medij Fedora, nato pa bo na njegovi osnovi ustvarjen minimalni sistem (brez "kompilacije iz izvornih kod").
1. Namestitev originalne distribucije
Koordinate raw-slike sistema u mreži:
Nakon što se snimi na microSD i pre nego što se počne koristiti, potrebno je:
- Proširiti „korenski“ sistem fajlova (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 - Isključiti SELinux
echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config - Ukloniti čarobnjaka za inicijalnu konfiguraciju:
find /mnt/3/etc/systemd/ -iname initial-setup.service -delete - Omogućiti pristup putem 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
Sada se može pokrenuti „malinka“ sa microSD i povezati sa njom putem mreže.
Hladno pokretanje traje oko minuta i po. Tehničke karakteristike sistema nakon pokretanja:

rpm -qa | wc -l
444
2. Izgradnja minimalnog sistema
Nažalost, „minimalna distribucija“ od strane programera ispostavlja se da nije toliko skromna po potrošnji resursa. Sistemsku sliku je moguće učiniti još manjom.
Za to je potrebno na „malinki“ pokrenuti skriptu:
#!/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 izvršenja skripte u trenutnom direktorijumu biće kreiran poddirektorijum ($P) sa sadržajem korena nove minimalne verzije OS. Može se isključiti „malinka“ i vratiti microSD u radnu stanicu Linux.
3. Instalacija minimalnog sistema
Instalacija se svodi na kopiranje fajlova minimalnog „obraza“ OS (dobijenog na prethodnom koraku) na posebno pripremljenu microSD u odgovarajuće direktorijume.
Dovoljna je 2GB kartica i dva particiona na njoj:
- /boot/efi — EFI+FAT32, pokretački, 100MB;
- / (koren) — EXT4, sav preostali prostor.
Nakon pripreme microSD i kopiranja fajlova na nju, potrebno je:
- popraviti pokretanje OS-a;
- uključiti mrežu;
- konfigurisati pristup putem ssh.
Popravka pokretanja se sastoji u zameni UUID particija u fajlovima:
microSD:/boot/efi/EFI/fedora/grub.cfg
microSD:/boot/efi/EFI/fedora/grubenv
i parametra saved_entry= u poslednjem fajlu
U fajlu:
microSD:/etc/fstab
mogu se naći stara podešavanja, a trenutni (aktuelni) — u izlazu komande:
blkid | grep mmcblk | sort
Nakon zamene, treba takođe ispraviti sadržaj fstab na microSD, kako bi se tačke montiranja slagale sa novim UUID particija.
Mrežna funkcionalnost prilikom prvog uključivanja „malinke“ može se postići malim „ličnim rešenjem“ — kreiranjem veze (šema):
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
Po uspešni namestitvi — uredite zagon :
systemctl disable systemd-networkd
systemctl enable systemd-networkd
Dostop superuporabniku prek ssh se nastavi podobno kot v p.1.
Ko ste vse opravili natančno in brez napak, lahko premikate microSD v 'malinko' in začnete delati z 64-bitno OS v ultra minimalni izvedbi.
4. Končni sistem
»Slika« končnega sistema, ustvarjena po zgoraj navedeni navodilih, je na voljo za prenos na naslednji povezavi:
To bo arhiv, ki vsebuje dva datoteka: namestitveni skript in TGZ z datotekami OS. Arhiv je treba razpakirati na delovni postaji Linux, vstaviti microSD (zadostuje kartica 2GB) in zagnati skript s parametrom — imenom naprave:
.\/install \/dev\/mmcblk0
Bodite previdni!
Brez kakršnih koli opozoril bo naprava formatirana in nanjo bo nameščen operacijski sistem.
Po breznapaknem delovanju skripta lahko kartico premikate v 'malinko' in jo uporabljate: dobitite po dhcp, geslo — '1'.
Sistem je očiščen vseh ID-jev in ključev, zaradi česar je vsaka nova namestitev – edinstvena.
Ponovno ponavljam, sistem — minimalen! Zato se ne prestrašite: DNF — je na voljo, za njegovo delovanje boste morali 'izumiti' pravilno .
Hladen zagon 'malinke' traja približno 40 sekund. Tehnični podatki sistema po zagonu:

rpm -qa | wc -l
191
5. Wi-Fi
Malce se bom ustavil pri značilnostih uresničitve Wi-Fi dostopovne točke. Po konkretnih informacijah se lahko obrnete na moje prejšnje .
EPEL zdaj ne bo potreben — vsi paketi so vsebovani v uradnih repozitorijih.
Morda bi bilo smiselno odstopiti od , saj je v Fedora, za razliko od CentOS, — dovolj svež systemd-networkd, v katerem so normalni vgrajeni DHCP/DNS strežniki. Ampak dejstvo, da so v RHEL8 razvijalci , ne vliva zaupanja v svetlo prihodnost projekta (razbojniki). Na kratko, nisem poskusil.
Nato, aktualni gonilniki vgrajenega Wi-Fi adapterja ni treba 'ukrasti' iz distribucije Raspbian, temveč se jih lahko neposredno naloži iz .
Tako izgledajo na moji 'malinki' datoteke za prošnjo Broadcom (shema):
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
Brez njih ne bo delovalo 5GHz/AC.
Glede števila in imen vmesnikov. Sedaj že vsem odsvetujem, da brez posebne potrebe uporabljajo "storitve" programske stikala (), ki občutno obremenijo omrežni sklad in upočasnijo usmerjanje. Če ni predvidenih več brezžičnih adapterjev, je treba uporabljati izključno fizične vmesnike. Imam dva Wi-Fi, zato jih le združujem v programski most (čeprav se da brez tega, če drugače pogledamo nastavitev hostapd).
Rada preimenujem vmesnike.
Za to v Fedori morate ustvariti simbolično povezavo:
/etc/systemd/network/99-default.link -> /dev/null
in takrat boste lahko dali smiselna imena, ne da bi se ukvarjali z , ampak le z orodji systemd-networkd.
Tako se imenujejo omrežni adapterji na mojem usmerjevalniku:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: wan: mtu 1500 qdisc fq_codel state UP group default qlen 1000
3: lan: mtu 1500 qdisc noqueue state UP group default qlen 1000
4: int: mtu 1500 qdisc fq_codel master lan state UP group default qlen 1000
5: ext: mtu 1500 qdisc mq master lan state UP group default qlen 1000
- int — vgrajen, ext — zunanji (USB) Wi-Fi adapterji, združeni v "most" lan;
- wan — Ethernet adapter, v katerega je priključen Internet.
Opazili ste? — resnično odlična stvar. Skupaj s svežim jedrom Linux ustvarjajo prave čudeže v brezžičnem spektru: strasten "torrent-download" ne bo pripeljal do nenadne degradacije hitrosti pri sosedih. Tudi domače IP-TV, ki deluje "po zraku", pri obremenjenem kanalu ne "razpada" in se ne "zajeda" sploh!
Službeni datoteka demona .
sedaj izgleda tako (na primeru vgrajenega adapterja):
[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
In "čarobni" hostapd-int.conf za delovanje v 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]
Malo «Photoshop»-a, napravljenog s mog «Ericsson A1018s»:
(povezivanje na Internet — 100Mbit/s)
I na kraju mali FAQ.
6. FAQ
6.1 Zašto praviti Wi-Fi rutera na Raspberry?
Moglo bi se jednostavno odgovoriti da je to „zanimljivo probati i to je to“.
Ali zapravo, mislim da je tema prilično ozbiljna. U doba „krvavog“ Interneta kupovati ruter u prodavnici i ostati zarobljenik njegovog proizvođača — prilično dosadna perspektiva. Mnogi već shvataju da se ne može sedeti s CVE- ili ugrađenim bekdoorom.
Naravno, moguće je migrirati na WRT-firmware od entuzijasta. Veruje im se, verovatno, više, ali ako ne želite zavisiti ni od njih, onda preostaje samo — vlastiti uređaj. U idealnom slučaju – punopravni računar za mogućnost realizacije svega na svetu. Naravno, u pogledu rutiranja.
Zbog toga je izbor „malinke“ čist ekonomski potez: pravi računar, a pritom — jeftin. Iako, možda ima i svojih „dvojakosti“ unutra.
6.2 Ali zar Raspberry nije „nedoručnik“: spor i sa jednim Ethernet portom!
Kao kućni Wi-Fi ruter, „malinka“ me više nego zadovoljava. O brzini „na vazduhu“ već sam pričao gore. A jedan Ethernet, pa tako u sličnom proizvodu od Apple-a otprilike isto!
A ako budemo ozbiljni, naravno da bih voleo više. I pored toga što su sve moje uređaje povezane bežično, ponekad je potreban i žični spoj. Za takve slučaje imam pripremljen „mobilni hub“:
uređaj — tipa ovoga
6.3 Ako je ovo ruter, onda ništa nije rečeno o „tuning-u“ TCP/IP, jer je to važno!
Poleg konfiguracije omrežnega sklada (tcp_fastopen, YeAH itd.), v tem in prejšnjem članku niso razkriti drugi vidiki, zlasti postopek priprave microSD za optimalno uporabo (res je, da poskusni inštalator poskuša formatirati kartico pomnilnika na zvit način). Postopek izboljševanja je neskončen, treba se je le pravočasno ustaviti.
6.4 Zakaj Fedora?
Ker mi je všeč! Fedora je "mainstream" – sistem geekov, za katere je ta članek pravzaprav namenjen. Ob trenutku pisanja je morda edina OS, ki se za Raspberry v 64-bitni različici uradno podpira z znatnim številom razvijalcev (od katerih jih ne morem dočakati. ).
6.5 Ali Bluetooth deluje? Kako je s video/zvokom/GPIO?
Ne vem. Članek govori o minimalni namestitvi sistema in njegovi poznejši uporabi kot Wi-Fi usmerjevalnika.
6.6 Zakaj vsi članki o CentOS/Fedora/RedHat začnejo z izklopom SELinuxa?
Ker je sistem minimalen, v njem ni niti požarnega zidu niti orodij za njegovo nastavitev. Kdor to potrebuje, lahko dodatno namesti vse, kar je potrebno.
6.7 Z sistemom se ne da uporabljati, ni mogoče spremeniti gesla — ni passwd. Ni pinga, ničesar!
Je . Ali ta način namestitve ni zate – uporabi distribucijo razvijalcev.
6.8 Kje pa je SWAP? Brez njega ne morem živeti!
Res? No, dobro:
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 Rad bi takoj prenesel pripravljen sklop z nastavljenim dostopom do Wi-Fi!
Za pripravo inštalatorja "za vse" bo potrebnega nekaj časa in truda. Če se (morda!) zdi komurkoli to resnično zanimivo in potrebno – piši, nekaj bomo že iznašli.
Na tem – končujem.
Želim vsem varno surfanje in maksimalno kontrolo nad infrastrukturo!
Izvor: habr.com
