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

Artikel Raspberry Pi + CentOS = Hotspot Wi-Fi (atau router raspberry dengan topi merah) Saya berbicara tentang cara mengubah Raspberry menjadi titik akses nirkabel menggunakan sistem operasi CentOS. Dengan merakit router rumah saya sesuai dengan gambar ini, saya memuaskan ego kreatif saya dan menerima tambahan ketenangan pikiran untuk elemen penting dari infrastruktur saya yang nyaman. Namun, perasaan ketidaklengkapan solusi dan perfeksionisme internal menghantui saya: “hasil kerja yang tidak sempurna tidak berhak untuk ada.” Pemikiran bahwa “cita-cita dapat dan harus dicapai” tidak meninggalkan saya sedetik pun.

Dan suatu hari, di salah satu forum tematik, saya menemukan diskusi tentang kedalaman bit sistem operasi yang ada untuk Raspberry (aarch64 vs armhfp): OS 64-bit mana, pada prinsipnya, dapat cocok dan bekerja pada Raspberry versi 3 ++?

CentOS kesayangan saya untuk arsitektur ARM dari “Userland” tidak terburu-buru untuk beralih ke versi kernel terbaru dan berubah menjadi 64-bit. Dan repositori EPEL, yang terhubung entah dari mana tanpa tanda tangan digital, adalah mimpi buruk dalam tidur saya yang gelisah...

Berbicara sebagai penganut distro berbasis RPM, saya terkejut saat mengetahui bahwa OS untuk Raspberry sama sekali terlupakan dalam diskusi Fedora! Dan ini meskipun faktanya sudah dirilis
dari versi 28 secara resmi mendukung Raspberry Pi 3B+ dalam versi 64-bit!

Raspberry Pi + Fedora (aarch64) = Hotspot Wi-Fi (atau router raspberry dengan topi biru)
Pada artikel ini saya akan membahas tentang metode instalasi Fedora (aarch64) pada Raspberry Pi 3 Model B + в kinerja ekstra minimal. Saya akan membahas secara singkat fitur peningkatan titik akses Wi-Fi, yang diidentifikasi sebagai hasil uji coba konfigurasi saya sebelumnya pada 7 CentOS.

0. Apa yang Anda perlukan

Semuanya sama seperti yang tercantum pada artikel sebelumnya:

  • Raspberry Pi 3 Model B+;
  • microSD >= 4GB (nantinya Anda dapat “mentransfer” sistem ke drive 2GB);
  • Workstation dengan Linux dan pembaca kartu microSD;
  • Konektivitas jaringan kabel antara Raspberry dan workstation Linux (dalam hal ini, tidak diperlukan monitor dan keyboard tambahan untuk pengaturan), akses Internet dari kedua perangkat;
  • Keterampilan tingkat lanjut di Linux (untuk mengetahui dan tidak takut: berpisah, dd и mkfs).

Mirip dengan iteratif LFS-membangun Linux Anda sendiri, image distribusi Fedora akan digunakan, dan kemudian berdasarkan itu, sistem minimal akan dibuat (tanpa “kompilasi dari sumber”).

1. Instalasi distribusi asli

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

Setelah merekamnya di microSD dan sebelum menggunakannya, Anda perlu:

  1. Perluas "root" dari sistem file (partisi 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 Wisaya Pengaturan Awal:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

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

Permulaan yang dingin membutuhkan waktu sekitar satu setengah menit. TTX sistem setelah memuat:

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

rpm -qa | wc -l
444

2. Merakit sistem minimal

Sayangnya, “distribusi minimal” dari para pengembang ternyata jauh dari konsumsi sumber daya yang paling sederhana. Gambar sistem dapat dibuat lebih kecil.

Untuk melakukan ini, Anda perlu menjalankan skrip di 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

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

3. Pemasangan sistem minimal

Instalasi dilakukan dengan menyalin file "gambar" OS minimal (diperoleh pada langkah sebelumnya) ke microSD yang disiapkan khusus ke direktori yang sesuai.

Kartu 2GB dan dua partisi di dalamnya sudah cukup:

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

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

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

Perbaikan boot adalah mengganti UUID bagian dalam file:

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

dan parameter entri_simpan= di file terakhir

Dalam berkas:

microSD:/etc/fstab

Anda dapat menemukan nilai-nilai lama, dan nilai-nilai saat ini (terkini) dalam output perintah:

blkid | grep mmcblk | sort

Setelah penggantian, Anda juga harus memperbaiki isinya fstab pada microSD sehingga titik pemasangan sesuai dengan UUID partisi baru.

Fungsionalitas jaringan saat Anda pertama kali menyalakan Raspberry 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 mengajukan:

mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF

Setelah unduhan berhasil, rapikan peluncurannya systemd-jaringan:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Akses pengguna super melalui ssh dikonfigurasi mirip dengan langkah 1.

Setelah melakukan semuanya dengan hati-hati dan tanpa kesalahan, Anda dapat memindahkan microSD ke "raspberry" dan mulai bekerja dengan OS 64-bit dalam versi ekstra minimal.

4. Sistem siap

"Gambar" dari sistem yang sudah 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 perlu dibongkar di 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 akan diinstal di dalamnya.

Setelah eksekusi skrip bebas kesalahan, kartu dapat diatur ulang menjadi "raspberry" dan digunakan: catch via dhcp, kata sandi - "1".

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

Saya ulangi sekali lagi, sistem - minimal! Oleh karena itu, jangan khawatir: DNF tersedia, agar dapat berfungsi, Anda harus "menemukan" yang benar / Etc / resolv.conf.

Permulaan dingin Raspberry membutuhkan waktu sekitar 40 detik. TTX sistem setelah memuat:

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

rpm -qa | wc -l
191

5. Wifi

Saya akan membahas sedikit tentang fitur penerapan titik akses Wi-Fi. Untuk lebih spesifiknya, Anda dapat merujuk ke saya sebelumnya Artikel.

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

Mungkin ada baiknya untuk menyerah dnsmasq.dll, karena Fedora, tidak seperti CentOS, memiliki systemd-networkd yang cukup baru, yang memiliki server DHCP/DNS bawaan normal. Namun faktanya adalah di pengembang RHEL8 menolak untuk mendukung tumpukan jaringan dengan apa pun selain NM, tidak membangkitkan keyakinan akan masa depan proyek yang cerah (bajingan). Singkatnya, saya belum mencobanya.

Selanjutnya, driver saat ini untuk adaptor Wi-Fi internal tidak dapat “dicuri” dari distribusi Raspbian, tetapi diunduh langsung dari github.

Ini adalah tampilan file firmware Broadcom di 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 Anda tidak akan mendapatkan 5GHz/AC.

Mengenai jumlah dan nama antarmuka. Sekarang saya sangat menyarankan kepada semua orang untuk tidak menggunakan “layanan” saklar perangkat lunak kecuali benar-benar diperlukan (jembatan), yang memasukkan beban signifikan ke dalam tumpukan jaringan dan menekan perutean. Jika Anda tidak berencana memiliki beberapa adaptor nirkabel, Anda sebaiknya hanya menggunakan antarmuka fisik. Saya memiliki dua Wi-Fi, jadi saya hanya menggabungkan keduanya ke dalam jembatan perangkat lunak (walaupun Anda dapat melakukannya tanpa ini dengan melihat pengaturan hostapd secara berbeda).

Dan saya suka mengganti nama antarmuka.

Untuk melakukan ini di Fedora Anda perlu membuat tautan simbolik:

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

dan kemudian akan mungkin untuk memberikan nama yang bermakna tanpa mencari-cari udev, tetapi hanya menggunakan systemd-networkd.

Misalnya, ini adalah nama adaptor 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

  • int - bawaan, ext — adaptor Wi-Fi eksternal (USB) yang dirangkai menjadi “jembatan” lan;
  • lesu — Adaptor Ethernet yang terhubung ke Internet.

diperhatikan? fq_codel - hal yang sangat keren. Bersama dengan kernel Linux yang baru, mereka menghasilkan keajaiban nyata dalam jangkauan nirkabel: “pengunduhan torrent” yang hebat tidak akan menyebabkan penurunan kecepatan secara tiba-tiba di antara tetangga. Bahkan IP-TV rumahan yang beroperasi “over the air” dengan saluran yang dimuat tidak “putus” dan tidak “gagap” sama sekali!

File layanan daemon telah mengalami sedikit perubahan hostapd.

Sekarang terlihat seperti ini (menggunakan contoh adaptor bawaan):

[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 hostapd-int.conf "ajaib" 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]

Sebuah photoshop kecil yang dibuat dari Ericsson A1018s saya:

(Koneksi internet - 100Mbit/detik)Raspberry Pi + Fedora (aarch64) = Hotspot Wi-Fi (atau router raspberry dengan topi biru)
Dan terakhir, FAQ kecil.

6. FAQ

6.1 Mengapa membuat router Wi-Fi di Raspberry?

Seseorang dapat menjawab dengan sederhana, seperti “menarik untuk dicoba dan sebagainya.”

Namun nyatanya, menurut saya topik tersebut cukup serius. Di era Internet yang “berdarah”, membeli router di toko dan tetap menjadi sandera pabrikannya adalah prospek yang sangat suram. Banyak orang sudah memahami bahwa duduk dengan CVE atau backdoor bawaan tidak mungkin dilakukan.

Tentu saja, Anda dapat bermigrasi ke firmware WRT dari para penggemar. Mungkin ada lebih banyak kepercayaan pada mereka, tetapi jika Anda tidak ingin bergantung pada mereka, gunakan saja produk Anda sendiri. Idealnya, komputer yang lengkap sehingga segala sesuatu di dunia dapat diimplementasikan di dalamnya. Tentu saja dari segi routingnya.

Oleh karena itu, memilih "raspberry" adalah langkah yang murni ekonomis: komputer sungguhan dan sekaligus murah. Meskipun, mungkin juga - dengan "kembarannya" di dalamnya.

6.2 Namun Raspberry adalah “router rendah”: lambat dan dengan satu port Ethernet!

Sebagai router Wi-Fi rumahan, Raspberry lebih dari memuaskan bagi saya. Saya sudah bicara tentang kecepatan udara di atas. Dan hanya ada satu Ethernet, nah, di produk serupa dari Apple hampir sama!

Tapi serius, tentu saja saya ingin lebih. Meskipun semua perangkat di rumah saya terhubung secara nirkabel, terkadang sambungan tembaga masih diperlukan. Untuk kasus seperti itu, saya memiliki stok "hub seluler":

perangkat - sesuatu seperti iniRaspberry Pi + Fedora (aarch64) = Hotspot Wi-Fi (atau router raspberry dengan topi biru)

6.3 Jika ini adalah router, maka tidak ada yang dikatakan tentang “penyetelan” TCP/IP, karena ini penting!

Selain pengaturan tumpukan jaringan (tcp_fastopen, YeAH, dll.), artikel ini dan artikel sebelumnya tidak membahas nuansa lain, khususnya proses mempersiapkan microSD untuk penggunaan optimal (walaupun penginstal mencoba memformat kartu memori di cara yang rumit). Proses perbaikan tidak ada habisnya, Anda hanya perlu berhenti tepat waktu.

6.4 Mengapa Fedora?

Karena Kusuka! Fedora adalah sistem “arus utama” bagi para geek, yang menjadi tujuan artikel ini. Pada saat penulisan, mungkin satu-satunya OS yang untuk Raspberry dalam versi 64-bit secara resmi didukung oleh banyak staf pengembang (dari siapa saya tidak sabar menunggu inti 5.6).

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

Tidak tahu. Artikel ini membahas tentang instalasi minimal sistem dan penggunaan selanjutnya sebagai router Wi-Fi.

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

Karena sistemnya minim, bahkan tidak memiliki firewall atau utilitas untuk mengaturnya. Siapapun yang membutuhkannya dapat menginstal tambahan semua yang mereka butuhkan.

6.7 Sistem tidak dapat digunakan, kata sandi tidak dapat diubah - tidak ada kata sandi. Tidak ada ping, tidak apa-apa!

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

6.8 Dimana SWAPnya? Aku tidak bisa hidup tanpanya!

Apakah itu benar? Baiklah kalau begitu:

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

Mempersiapkan penginstal “untuk semua orang” akan membutuhkan waktu dan usaha. Jika (tiba-tiba!) seseorang benar-benar menganggap ini menarik dan perlu, kirimkan surat kepada kami dan kami akan menemukan sesuatu.

Saya akan menyelesaikannya dengan ini.

Saya berharap semua orang berselancar dengan aman dan kontrol maksimal atas infrastruktur!

Sumber: www.habr.com

Tambah komentar