Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (atau router raspberry dengan topi biru)

Dalam artikel Raspberry Pi + CentOS = Wi-Fi Hotspot (atau router raspberry dengan topi merah) saya berbicara tentang cara mengubah raspberry menjadi titik akses nirkabel menggunakan sistem operasi CentOS. Setelah mengumpulkan router rumah saya dari gambar seperti itu, saya memuaskan ego kreatif saya dan menerima muatan ketenangan untuk elemen kritis infrastruktur nyaman saya. Namun, perasaan keputusan yang tidak lengkap dan perfeksionisme internal tidak memberikan istirahat: "hasil kerja yang tidak sempurna tidak memiliki hak untuk ada." Pikiran bahwa "cita-cita itu dapat dan harus dicapai" tidak meninggalkan saya sebentar.

Dan kemudian suatu hari di salah satu forum tematik saya menemukan diskusi tentang kedalaman bit dari sistem operasi yang ada untuk "Malinka" (aarch64 vs armhfp): sistem operasi 64-bit mana yang pada dasarnya dapat cocok dan menghasilkan uang di Raspberry versi 3 ++?

CentOS favorit saya untuk arsitektur ARM dari "Userland" tidak terburu-buru untuk beralih ke kernel versi terbaru dan berubah menjadi 64-bit. Dan repositori EPEL, yang terhubung dengan Tuhan yang tahu di mana tanpa tanda tangan digital, adalah mimpi buruk dalam mimpi saya yang bermasalah ...

Berbicara sebagai penganut distribusi berbasis RPM, saya terkejut menemukan bahwa Fedora ternyata benar-benar dilupakan dalam diskusi OS untuk "raspberry" ! Dan terlepas dari kenyataan bahwa rilis
dari versi ke-28 secara resmi mendukung Raspberry Pi 3B + dalam versi 64-bit!

Fedora aarch64

Pada artikel ini, saya akan berbicara tentang cara menginstal Fedora (aarch64) pada Raspberry Pi 3 Model B + dalam versi ekstra minimal . Saya akan membahas secara singkat fitur meningkatkan titik akses Wi-Fi yang diidentifikasi sebagai hasil dari percobaan pengoperasian konfigurasi saya sebelumnya pada CentOS 7 .

0. Apa yang dibutuhkan


Semua sama seperti yang tercantum dalam artikel sebelumnya:

  • Raspberry Pi 3 Model B +;
  • microSD> = 4GB (nanti Anda dapat "mentransfer" sistem ke drive 2GB);
  • Linux workstation dengan pembaca kartu microSD;
  • Koneksi jaringan kabel "raspberry" dan workstation dengan Linux (dalam hal ini, tidak diperlukan monitor dan keyboard tambahan untuk konfigurasi), akses Internet dari kedua perangkat;
  • Keahlian tingkat lanjut di Linux (untuk mengetahui dan tidak takut: berpisah , dd dan mkfs ).

Seperti perakitan LFS- berulang dari Linux Anda sendiri, gambar distribusi Fedora akan digunakan, dan kemudian sistem minimal akan dibuat berdasarkan (tanpa "kompilasi dari sumber").

1. Menginstal distribusi asli


Koordinat gambar mentah sistem di Web:
https: //.../fedora-secondary/releases/.../Spins/aarch64/images/Fedora-Minimal-...xz

Setelah ditulis ke microSD dan sebelum digunakan perlu :

  1. Perpanjang "root" dari sistem file (bagian ke-3, 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. Nonaktifkan SELinux

    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Hapus panduan pengaturan awal:

    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Izinkan akses 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
    


Sekarang Anda dapat mengunduh "raspberry" dari microSD dan menyambungkannya melalui jaringan.

Awal yang dingin membutuhkan waktu sekitar satu setengah menit. Sistem TTX setelah boot:

Fedora aarch64

rpm -qa | wc -l
444

2. perakitan sistem minimal


Sayangnya, "distribusi minimal" dari pengembang jauh dari yang paling sederhana dalam konsumsi sumber daya. Gambar sistem dapat dibuat lebih kecil.

Untuk melakukan ini, pada "raspberry" Anda perlu menjalankan skrip:

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

Setelah mengerjakan skrip, subdirektori ( $ P ) akan dibuat di direktori saat ini dengan isi dari root dari edisi OS minimal baru. Anda dapat mematikan "raspberry" dan mengembalikan microSD ke workstation Linux.

3. Menginstal sistem minimum


Instalasi dikurangi untuk menyalin file dari "gambar" minimum OS (diperoleh pada langkah sebelumnya) ke microSD yang disiapkan secara khusus di direktori yang sesuai.

Kartu 2GB dan dua bagian sudah cukup:

  1. / boot / efi - EFI + FAT32, boot, 100MB;
  2. / (root) - EXT4, semua ruang tersisa.

Setelah menyiapkan microSD dan menyalin file ke sana, Anda perlu:

  • memperbaiki OS boot;
  • nyalakan jaringan;
  • konfigurasikan akses melalui ssh.

Memperbaiki unduhan terdiri dari mengganti UUID bagian dalam file:

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

dan save_entry = parameter dalam file terakhir

Dalam file:

microSD:/etc/fstab

Anda dapat menemukan nilai-nilai lama, dan yang saat ini (saat ini) di output dari perintah:

blkid | grep mmcblk | sort

Setelah mengganti, Anda juga harus menyesuaikan konten fstab ke microSD sehingga titik pemasangan sesuai dengan UUID partisi baru.

Pertama kali Anda mengaktifkan "raspberry", kinerja jaringan dapat dicapai dengan "kruk" kecil - buat tautan (secara skematis):

ln -s /usr/lib/systemd/system/systemd-networkd.service \
  microSD:/etc/systemd/system/multi-user.target.wants
dan file:
mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF

Setelah boot berhasil, bereskan peluncuran systemd-networkd :

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Akses pengguna super melalui ssh dikonfigurasi mirip dengan item 1.

Setelah melakukan semuanya dengan rapi dan tanpa kesalahan, Anda dapat mengatur ulang microSD di "raspberry" dan mulai bekerja dengan OS 64-bit dalam kinerja ekstra minimal.

4. Sistem siap


"Gambar" sistem selesai, dibuat sesuai dengan instruksi di atas, dapat diunduh dari tautan:
Fedora-Tiny-31-5.5.7-200.aarch64

Ini akan menjadi arsip yang berisi dua file: skrip instalasi dan TGZ dengan file OS. Arsip harus dibongkar pada workstation Linux, masukkan microSD (kartu 2GB sudah cukup) dan jalankan skrip dengan parameter - nama perangkat:

./install /dev/mmcblk0
Hati-hati!

Tanpa peringatan apa pun, perangkat akan diformat dan sistem operasi diinstal di atasnya.


Setelah bebas dari kesalahan penulisan skrip, kartu dapat disusun ulang menjadi “raspberry” dan digunakan: untuk menangkap dengan dhcp, kata sandinya adalah “1”.

Sistem ini dibersihkan dari semua jenis ID dan kunci, itulah sebabnya setiap instalasi baru unik.

Saya ulangi lagi, sistemnya minimal ! Karena itu, jangan khawatir: DNF tersedia, karena fungsinya Anda harus “menyusun” /etc/resolv.conf yang benar .

Awal dingin raspberry membutuhkan waktu sekitar 40 detik. Sistem TTX setelah boot:

Fedora aarch64

rpm -qa | wc -l
191

5. Wi-Fi


Saya akan sedikit membahas tentang fitur implementasi titik akses Wi-Fi. Untuk spesifiknya, Anda bisa merujuk ke artikel saya sebelumnya .

EPEL tidak lagi diperlukan - semua paket terkandung dalam repositori resmi.

Mungkin, akan lebih baik meninggalkan dnsmasq , karena Fedora, tidak seperti CentOS, memiliki systemd-networkd yang cukup baru, di mana terdapat server DHCP / DNS bawaan yang normal. Tetapi fakta bahwa di RHEL8 pengembang menolak untuk mendukung tumpukan jaringan dengan apa pun selain NM tidak menginspirasi kepercayaan akan masa depan yang cerah dari proyek (penjahat). Singkatnya, saya belum mencobanya.

Lebih lanjut, driver saat ini dari adaptor Wi-Fi bawaan tidak dapat "dicuri" dari distribusi Raspbian, tetapi diunduh langsung dari github .

Seperti inilah file firmware Broadcom pada “raspberry” saya (secara skematis):

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

Tanpa mereka, 5GHz / AC tidak akan berfungsi.

Tentang jumlah dan nama antarmuka. Sekarang saya sangat menyarankan agar setiap orang tanpa perlu khusus tidak menggunakan "layanan" switch perangkat lunak ( jembatan ), yang menambah beban signifikan ke tumpukan jaringan dan menghambat perutean. Jika beberapa adapter nirkabel tidak direncanakan, maka hanya antarmuka fisik yang harus digunakan. Saya memiliki dua Wi-Fi, jadi saya hanya menggabungkannya ke dalam jembatan perangkat lunak (walaupun Anda dapat melakukannya tanpa dengan mengambil tampilan berbeda pada pengaturan hostapd).

Dan saya suka mengganti nama antarmuka.

Untuk melakukan ini, buat tautan simbolis di Fedora:

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

dan kemudian akan memungkinkan untuk memberikan nama yang berarti tanpa bermain-main dengan udev , tetapi hanya dengan menggunakan systemd-networkd.

Di sini, misalnya, disebut adapter jaringan di router saya:

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

  • adaptor Wi-Fi int -built-in, ekst -eksternal (USB) yang dipasang di lan "bridge" ;
  • wan - Adaptor Ethernet yang terhubung dengan Internet.

Pernahkah Anda memperhatikan? fq_codel benar-benar hal yang baik. Bersama dengan kernel Linux yang baru, mereka bekerja dengan luar biasa dalam jangkauan nirkabel: “kualitas torrent” yang dahsyat tidak akan menyebabkan penurunan kecepatan secara tiba-tiba di antara tetangga. Bahkan bekerja "over the air" rumah IP-TV dengan saluran yang dimuat tidak "putus" dan tidak "gagap" dari kata sama sekali!

File layanan daemon hostapd telah mengalami perubahan kecil .

Sekarang terlihat seperti ini (menggunakan adaptor bawaan sebagai contoh):

[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

Dan "magic" hostapd-int.conf untuk bekerja di 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]

Sedikit "photoshop" dibuat dari "Ericsson A1018s" saya:

(Koneksi internet - 100Mbps)
Fedora aarch64

Dan sebagai kesimpulan, sebuah FAQ kecil.

6. FAQ


6.1 Mengapa membuat router Wi-Fi di Raspberry?


Orang bisa menjawab dengan sederhana, dengan mengatakan "menarik untuk dicoba dan semua itu."

Tetapi pada kenyataannya, menurut saya, topiknya cukup serius. Di era Internet "berdarah", membeli router di toko dan disandera oleh pabrikannya adalah prospek yang sangat membosankan. Banyak orang sudah mengerti bahwa tidak mungkin duduk dengan CVE atau kabel pintu belakang.

Tentu saja, Anda dapat bermigrasi ke firmware WRT dari penggemar. Mungkin ada lebih banyak kepercayaan pada mereka, tetapi jika Anda tidak ingin bergantung pada mereka, maka hanya produk Anda sendiri. Idealnya, komputer yang lengkap untuk kemungkinan menerapkan segala sesuatu di dunia di atasnya. Dalam hal routing, tentu saja.

Oleh karena itu, pilihan "raspberry" adalah langkah murni ekonomi: komputer nyata dan pada saat yang sama - murah. Meskipun, itu juga mungkin - dengan "dual" di dalamnya.

6.2 Tapi Raspberry adalah "sub-router": lambat dan dengan satu port Ethernet!


Sebagai router Wi-Fi rumahan, "Malinka" lebih cocok untuk saya. Tentang kecepatan "melalui udara" sudah saya katakan di atas. Dan hanya satu Ethernet, well, dalam produk serupa dari Apple dengan cara yang kira-kira sama!

Tapi serius, tentu saja saya ingin lebih. Dan terlepas dari kenyataan bahwa di rumah saya semua perangkat terhubung secara nirkabel, kadang-kadang koneksi tembaga masih diperlukan. Untuk kasus seperti itu, saya memiliki "hub seluler" di toko:

perangkat - seperti
Fedora aarch64

6.3 Jika ini adalah router, maka tidak ada yang dikatakan tentang "tuning" dari TCP / IP, karena itu penting!


Selain mengatur tumpukan jaringan (tcp_fastopen, YeAH, dll.), Artikel ini dan sebelumnya tidak mengungkapkan nuansa lain, khususnya, proses mempersiapkan microSD untuk penggunaan yang optimal (meskipun penginstal mencoba memformat kartu memori dengan cara yang rumit). Proses peningkatan tidak ada habisnya, Anda hanya perlu berhenti tepat waktu.

6.4 Mengapa Fedora?


Karena aku suka! Fedora - "arus utama" - sistem geeks, yang sebenarnya dimaksudkan untuk artikel ini. Pada saat penulisan, mungkin satu-satunya OS yang untuk Raspberry dalam versi 64-bit secara resmi didukung oleh staf pengembang yang signifikan (dari mana saya tidak bisa menunggu kernel 5.6 ).

6.5 Apakah Bluetooth berfungsi? Bagaimana video / suara / GPIO?


Saya tidak tahu. Artikel ini adalah tentang instalasi minimal sistem dan penggunaan selanjutnya sebagai router Wi-Fi.

6.6 Mengapa semua artikel CentOS / Fedora / RedHat mulai dengan menonaktifkan SELinux?


Karena sistemnya minimal, ia bahkan tidak memiliki firewall dan utilitas untuk pengaturannya. Siapa yang butuh itu - mereka dapat menginstal tambahan semua yang diperlukan.

6.7 Sistem tidak dapat digunakan, kata sandi tidak dapat diubah - tanpa passwd. Tanpa ping, tidak ada!


Ada DNF . Atau opsi instalasi ini bukan untuk Anda - gunakan kit distribusi dari pengembang.

6.8 Di mana SWAP? Aku tidak bisa hidup tanpanya!


Kebenaran? Baiklah:

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 Saya ingin mengunduh gambar yang sudah jadi dengan titik akses Wi-Fi yang dikonfigurasi!


Untuk mempersiapkan pemasang "untuk semua" akan membutuhkan sejumlah waktu dan upaya. Jika (tiba-tiba!) Tampaknya benar-benar menarik dan perlu bagi seseorang - tulis, kita akan menemukan sesuatu.



Di atasnya - saya akan selesai.

Saya berharap semua orang selancar aman dan kontrol maksimal atas infrastruktur!

All Articles