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

Dalam artikel itu Raspberry Pi + CentOS = Wi-Fi Hotspot (atau penghala raspberi dengan topi merah) Saya bercakap tentang cara untuk menukar Raspberry menjadi titik akses wayarles menggunakan sistem pengendalian CentOS. Dengan memasang penghala rumah saya mengikut lukisan ini, saya memuaskan ego kreatif saya dan menerima rangsangan ketenangan fikiran untuk elemen kritikal infrastruktur saya yang selesa. Walau bagaimanapun, perasaan tidak lengkap penyelesaian dan kesempurnaan dalaman menghantui saya: "hasil kerja yang tidak sempurna tidak berhak untuk wujud." Pemikiran bahawa "ideal boleh dan harus dicapai" tidak meninggalkan saya seminit.

Dan kemudian suatu hari, di salah satu forum tematik, saya menjumpai perbincangan tentang kedalaman bit sistem pengendalian sedia ada untuk Raspberry (aarch64 vs armhfp): yang OS 64-bit boleh, pada dasarnya, sesuai dan berfungsi pada Raspberry versi 3 ++?

CentOS kesayangan saya untuk seni bina ARM daripada "Userland" tidak tergesa-gesa untuk beralih kepada versi kernel terkini dan bertukar menjadi 64-bit. Dan repositori EPEL, yang disambungkan daripada Tuhan tahu di mana tanpa tandatangan digital, adalah mimpi ngeri dalam tidur saya yang tidak lena...

Bercakap sebagai penganut pengedaran berasaskan RPM, saya terkejut apabila mendapati bahawa OS untuk Raspberry telah dilupakan sepenuhnya dalam perbincangan Fedora! Dan ini walaupun pada hakikatnya pembebasannya
daripada versi 28 ia secara rasmi menyokong Raspberry Pi 3B+ dalam versi 64-bit!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (atau penghala raspberi dengan topi biru)
Dalam artikel ini saya akan bercakap mengenai kaedah pemasangan Fedora (aarch64) pada Raspberry Pi 3 Model B + Π² prestasi minimum tambahan. Saya akan membincangkan secara ringkas tentang ciri menaikkan titik akses Wi-Fi, yang dikenal pasti sebagai hasil daripada operasi percubaan konfigurasi saya yang terdahulu pada CentOS 7.

0. Apa yang anda perlukan

Semuanya sama seperti yang disenaraikan dalam artikel sebelumnya:

  • Raspberi Pi 3 Model B+;
  • microSD >= 4GB (kemudian anda boleh "memindahkan" sistem ke pemacu 2GB);
  • Stesen kerja dengan Linux dan pembaca kad microSD;
  • Kesambungan rangkaian berwayar antara Raspberry dan stesen kerja Linux (dalam kes ini, tiada monitor dan papan kekunci tambahan diperlukan untuk persediaan), akses Internet daripada kedua-dua peranti;
  • Kemahiran lanjutan dalam Linux (untuk mengetahui dan tidak takut: berpisah, dd ΠΈ mkfs).

Sama seperti berulang LFS-membina Linux anda sendiri, imej pengedaran Fedora akan digunakan, dan kemudian berdasarkannya, sistem minimum akan dibuat (tanpa "menyusun daripada sumber").

1. Pemasangan pengedaran asal

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

Selepas merakamnya pada microSD dan sebelum menggunakannya, anda perlu:

  1. Kembangkan "root" sistem fail (partition 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. Lumpuhkan SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Alih keluar Wizard Persediaan Awal:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Benarkan 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
    

Kini anda boleh memuat turun "raspberi" daripada microSD dan menyambungkannya melalui rangkaian.

Permulaan sejuk mengambil masa kira-kira satu setengah minit. TTX sistem selepas memuatkan:

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

rpm -qa | wc -l
444

2. Memasang sistem yang minimum

Malangnya, "pengedaran minimum" daripada pemaju ternyata jauh daripada penggunaan sumber yang paling sederhana. Imej sistem boleh dibuat lebih kecil.

Untuk melakukan ini, anda perlu menjalankan skrip pada 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

Selepas menjalankan skrip, subdirektori akan dibuat dalam direktori semasa ($P) dengan kandungan akar edisi OS minimum baharu. Anda boleh mematikan Raspberry dan mengembalikan microSD ke stesen kerja Linux.

3. Pemasangan sistem yang minimum

Pemasangan bermula dengan menyalin fail "imej" OS minimum (diperolehi dalam langkah sebelumnya) ke mikroSD yang disediakan khas ke dalam direktori yang sesuai.

Kad 2GB dan dua partition di atasnya sudah mencukupi:

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

Selepas menyediakan microSD dan menyalin fail kepadanya, anda perlu:

  • betulkan but OS;
  • hidupkan rangkaian;
  • konfigurasikan akses melalui ssh.

Pembetulan but adalah untuk menggantikan UUID bahagian dalam fail:

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

dan parameter saved_entry= dalam fail terakhir

Dalam fail:

microSD:/etc/fstab

anda boleh mencari nilai lama, dan nilai semasa (terkini) dalam output arahan:

blkid | grep mmcblk | sort

Selepas penggantian, anda juga harus membetulkan kandungannya fstab pada microSD supaya titik pelekap sepadan dengan UUID partition baharu.

Fungsi rangkaian apabila anda mula-mula menghidupkan Raspberry boleh dicapai dengan "tongkat" kecil - buat pautan (secara skematik):

ln -s /usr/lib/systemd/system/systemd-networkd.service 
  microSD:/etc/systemd/system/multi-user.target.wants

dan fail:

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

Selepas muat turun berjaya, kemaskan pelancaran systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

Akses superuser melalui ssh dikonfigurasikan sama dengan langkah 1.

Setelah melakukan segala-galanya dengan berhati-hati dan tanpa ralat, anda boleh memindahkan microSD ke dalam "raspberi" dan mula bekerja dengan OS 64-bit dalam versi minimum tambahan.

4. Sistem sedia

"Imej" sistem siap, yang dibuat mengikut arahan di atas, boleh dimuat turun dari pautan:
Fedora-Tiny-31-5.5.7-200.aarch64

Ini akan menjadi arkib yang mengandungi dua fail: skrip pemasangan dan TGZ dengan fail OS. Arkib perlu dibongkar pada stesen kerja Linux, masukkan microSD (kad 2GB sudah cukup) dan jalankan skrip dengan parameter - nama peranti:

./install /dev/mmcblk0

Berhati-hati!

Tanpa sebarang amaran, peranti akan diformatkan dan sistem pengendalian akan dipasang padanya.

Selepas pelaksanaan skrip tanpa ralat, kad boleh disusun semula ke dalam "raspberi" dan digunakan: tangkap melalui dhcp, kata laluan - "1".

Sistem ini dikosongkan daripada semua ID dan kunci, itulah sebabnya setiap pemasangan baharu adalah unik.

Saya ulangi sekali lagi, sistem - yang minimum! Oleh itu, jangan risau: DNF tersedia, untuk berfungsi, anda perlu "mencipta" yang betul /etc/resolv.conf.

Permulaan sejuk Raspberry mengambil masa kira-kira 40 saat. TTX sistem selepas memuatkan:

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

rpm -qa | wc -l
191

5. WiFi

Saya akan membincangkan sedikit tentang ciri-ciri melaksanakan titik akses Wi-Fi. Untuk spesifikasi, anda boleh merujuk kepada saya sebelum ini artikel.

EPEL tidak lagi diperlukan - semua pakej terkandung dalam repositori rasmi.

Ia mungkin berbaloi untuk menyerah dnsmasq, memandangkan Fedora, tidak seperti CentOS, mempunyai systemd-networkd yang agak baru, yang mempunyai pelayan DHCP/DNS terbina dalam biasa. Tetapi hakikatnya ialah dalam pemaju RHEL8 enggan menyokong timbunan rangkaian dengan apa-apa selain NM, tidak menimbulkan keyakinan terhadap masa depan projek yang cerah (orang jahat). Pendek kata, saya belum mencubanya.

Selanjutnya, pemacu semasa untuk penyesuai Wi-Fi terbina dalam tidak boleh "dicuri" daripada pengedaran Raspbian, tetapi dimuat turun terus dari github.

Inilah rupa fail perisian tegar Broadcom pada Raspberry saya (secara skematik):

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 mendapat 5GHz/AC.

Mengenai bilangan dan nama antara muka. Sekarang saya amat mengesyorkan kepada semua orang untuk tidak menggunakan "perkhidmatan" suis perisian melainkan benar-benar perlu (jambatan), yang memperkenalkan beban yang ketara ke dalam susunan rangkaian dan menekan penghalaan. Jika anda tidak bercadang untuk mempunyai berbilang penyesuai wayarles, maka anda harus menggunakan antara muka fizikal sahaja. Saya mempunyai dua Wi-Fi, jadi saya hanya menggabungkannya ke dalam jambatan perisian (walaupun anda boleh melakukannya tanpa ini dengan melihat persediaan hostapd secara berbeza).

Dan saya suka menamakan semula antara muka.

Untuk melakukan ini di Fedora, anda perlu membuat pautan simbolik:

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

dan kemudian ia akan menjadi mungkin untuk memberikan nama yang bermakna tanpa mencucuk-cucuk udev, tetapi hanya menggunakan systemd-networkd.

Sebagai contoh, ini ialah penyesuai rangkaian dalam penghala saya dipanggil:

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 - terbina dalam, ext β€” penyesuai Wi-Fi luaran (USB) dipasang ke dalam "jambatan" lan;
  • wan β€” Penyesuai Ethernet di mana Internet disambungkan.

perasan tak? fq_codel - satu perkara yang sangat keren. Bersama-sama dengan kernel Linux yang segar, mereka melakukan keajaiban sebenar dalam julat wayarles: "muat turun torrent" yang sengit tidak akan membawa kepada penurunan mendadak kelajuan di kalangan jiran. Malah IP-TV rumah yang beroperasi "melalui udara" dengan saluran yang dimuatkan tidak "putus" dan tidak "gagap" sama sekali!

Fail perkhidmatan daemon telah mengalami perubahan kecil hostapd.

Ia kini kelihatan seperti ini (menggunakan contoh penyesuai terbina dalam):

[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 dalam 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 yang dibuat daripada Ericsson A1018 saya:

(Sambungan Internet - 100Mbit/saat)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (atau penghala raspberi dengan topi biru)
Dan akhirnya, FAQ kecil.

6. Soalan Lazim

6.1 Mengapa membuat penghala Wi-Fi pada Raspberry?

Seseorang boleh menjawab dengan mudah, seperti "menarik untuk mencuba dan semua itu."

Tetapi sebenarnya, saya rasa topik itu agak serius. Dalam era Internet "berdarah", membeli penghala di kedai dan kekal sebagai tebusan kepada pengeluarnya adalah prospek yang sangat suram. Ramai orang sudah faham bahawa duduk dengan CVE atau pintu belakang terbina dalam tidak mungkin.

Sudah tentu, anda boleh berhijrah ke perisian tegar WRT daripada peminat. Mungkin ada lebih banyak kepercayaan kepada mereka, tetapi jika anda tidak mahu bergantung kepada mereka, maka gunakan sahaja produk anda sendiri. Sebaik-baiknya, komputer yang lengkap supaya segala-galanya di dunia dapat dilaksanakan di atasnya. Dari segi penghalaan, sudah tentu.

Oleh itu, memilih "raspberi" adalah langkah ekonomi semata-mata: komputer sebenar dan pada masa yang sama yang murah. Walaupun, mungkin juga - dengan "beregu" mereka di dalam.

6.2 Tetapi Raspberry ialah "penghala rendah": perlahan dan dengan satu port Ethernet!

Sebagai penghala Wi-Fi rumah, Raspberry adalah lebih memuaskan untuk saya. Saya telah bercakap tentang kelajuan udara di atas. Dan hanya terdapat satu Ethernet, baik, dalam produk serupa daripada Apple ia hampir sama!

Tetapi serius, sudah tentu saya ingin lebih. Dan walaupun fakta bahawa dalam rumah saya semua peranti disambungkan secara wayarles, kadangkala sambungan tembaga masih diperlukan. Untuk kes sedemikian, saya mempunyai stok "hab mudah alih":

peranti - sesuatu seperti iniRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (atau penghala raspberi dengan topi biru)

6.3 Jika ini adalah penghala, maka tiada apa yang dikatakan tentang "menala" TCP/IP, kerana ini penting!

Selain menyediakan timbunan rangkaian (tcp_fastopen, YeAH, dll.), artikel ini dan artikel sebelumnya tidak merangkumi nuansa lain, khususnya, proses penyediaan mikroSD untuk penggunaan optimum (walaupun pemasang cuba memformat kad memori dalam cara yang sukar). Proses penambahbaikan tidak berkesudahan, anda hanya perlu berhenti tepat pada masanya.

6.4 Mengapa Fedora?

Sebab saya suka! Fedora ialah sistem "arus perdana" untuk geeks, yang sebenarnya dimaksudkan untuk artikel ini. Pada masa penulisan, mungkin satu-satunya OS yang untuk Raspberry dalam versi 64-bit disokong secara rasmi oleh kakitangan pembangun yang penting (daripadanya saya tidak sabar menunggu kernel 5.6).

6.5 Adakah Bluetooth berfungsi? Bagaimana video/bunyi/GPIO?

tak tahu. Artikel ini adalah mengenai pemasangan minimum sistem dan penggunaannya yang seterusnya sebagai penghala Wi-Fi.

6.6 Mengapakah semua artikel tentang CentOS/Fedora/RedHat bermula dengan melumpuhkan SELinux?

Oleh kerana sistem ini adalah minimum, ia tidak mempunyai tembok api atau utiliti untuk menyediakannya. Sesiapa yang memerlukannya boleh memasang tambahan semua yang mereka perlukan.

6.7 Sistem tidak boleh digunakan, kata laluan tidak boleh ditukar - tiada passwd. Tiada ping, tiada apa-apa!

Terdapat DNF. Atau pilihan pemasangan ini bukan untuk anda - gunakan kit pengedaran daripada pembangun.

6.8 Di manakah SWAP? Saya tidak boleh hidup tanpa dia!

Adakah benar? 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 segera memuat turun imej sedia dengan titik akses Wi-Fi yang dikonfigurasikan!

Menyediakan pemasang "untuk semua orang" akan memerlukan sedikit masa dan usaha. Jika (tiba-tiba!) seseorang benar-benar mendapati perkara ini menarik dan perlu, tulis kepada kami dan kami akan membuat sesuatu.

Saya akan selesaikan dengan ini.

Saya berharap semua orang selamat melayari dan kawalan maksimum ke atas infrastruktur!

Sumber: www.habr.com

Tambah komen