Raspberry Pi + Fedora (aarch64) = Wi-Fi 熱點(或藍帽的樹莓路由器)

在文章中 Raspberry Pi + CentOS = Wi-Fi 熱點(或紅帽的樹莓路由器) 我談到了一種使用 CentOS 作業系統將 Raspberry 變成無線存取點的方法。 透過使用這種設計組裝我的家庭路由器,我滿足了我的創意自我,並為我舒適的基礎設施的關鍵元素獲得了內心的平靜。 然而,解決方案的不完整感和內心的完美主義困擾著我:“不完美的工作結果沒有權利存在。” 「理想能夠而且應該實現」的想法一刻也沒有離開過我。

然後有一天,在主題論壇上,我遇到了關於 Raspberry 現有作業系統的位元深度(aarch64 與 armhfp)的討論:原則上哪種 64 位元作業系統可以適合併在 Raspberry 版本 3 上運行++?

我心愛的來自「Userland」的 ARM 架構的 CentOS 並不急於切換到最新版本的核心並變成 64 位元。 而 EPEL 儲存庫,從天知道在哪裡連接,沒有數位簽名,在我不安的睡眠中是一場噩夢......

作為基於 RPM 的發行版的擁護者,我驚訝地發現 Raspberry 的作業系統在討論中完全被遺忘了 Fedora! 儘管事實上它的發布
從版本28開始,它正式支援3位元版本的Raspberry Pi 64B+!

Raspberry Pi + Fedora (aarch64) = Wi-Fi 熱點(或藍帽的樹莓路由器)
這篇文章我會講安裝方法 軟呢帽 (aarch64)Raspberry Pi 3 Model B + в 額外的最低性能。 我將簡要介紹建立 Wi-Fi 接入點的功能,這些功能是我之前的配置在 CentOS 7的.

0. 你需要什麼

一切都與上一篇文章中列出的相同:

  • 樹莓派 3 型號 B+;
  • microSD >= 4GB(稍後您可以將系統「轉移」到2GB驅動器);
  • 配備 Linux 和 microSD 讀卡機的工作站;
  • Raspberry 和 Linux 工作站之間的有線網路連線(在這種情況下,設定不需要額外的顯示器和鍵盤),兩個裝置都可以存取網路;
  • Linux 高級技能(了解而不害怕: 分手, dd и 的mkfs).

類似於迭代 輕量級-建立您自己的Linux,將使用Fedora發行版映像,然後基於它創建一個最小的系統(無需「從原始碼編譯」)。

1.安裝原始發行版

系統原始影像在網路上的座標:
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

將其錄製到 microSD 後並在使用之前,您需要:

  1. 展開檔案系統的「根」(第三個分割區,ext3)
    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. 禁用 SELinux
    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. 刪除初始設定精靈:
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. 允許透過 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
    

現在您可以從 microSD 下載「raspberry」並透過網路連接到它。

冷啟動大約需要一分半鐘。 載入後系統的TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi 熱點(或藍帽的樹莓路由器)

rpm -qa | wc -l
444

2. 組裝最小系統

不幸的是,事實證明,開發人員的「最小分配」遠非資源消耗最適度的。 系統映像可以做得更小。

為此,您需要在 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

運行腳本後,將在目前目錄中建立子目錄($P)以及新的最小作業系統版本的根目錄的內容。 您可以關閉 Raspberry 並將 microSD 放回 Linux 工作站。

3.最小系統的安裝

安裝歸結為將最小的作業系統「映像」檔案(在上一個步驟中取得)複製到專門準備的 microSD 上的適當目錄中。

一張 2GB 卡和上面的兩個分區就足夠了:

  1. /啟動/ EFI - EFI+FAT32,啟動,100MB;
  2. / (root) - EXT4,所有剩餘空間。

準備好 microSD 並將文件複製到其中後,您需要:

  • 修復作業系統啟動;
  • 開啟網路;
  • 透過 ssh 配置存取。

啟動修復是替換文件中各部分的UUID:

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

和參數 已儲存條目= 在最後一個文件中

在文件中:

microSD:/etc/fstab

您可以在命令輸出中找到舊值和當前(最新)值:

blkid | grep mmcblk | sort

更換後,還應更正內容 fstab文件 在 microSD 上,以便掛載點對應於新的分割區 UUID。

當您第一次打開 Raspberry 時,網路功能可以透過一個小「拐杖」來實現 - 建立一個連結(示意性地):

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

和文件:

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

下載成功後,整理啟動 系統網絡化:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

透過 ssh 的超級使用者存取的配置與步驟 1 類似。

仔細完成所有操作且沒有錯誤後,您可以將 microSD 移至「樹莓派」中,並開始在額外的最小版本中使用 64 位元作業系統。

4. 準備系統

根據上述說明所建立的成品系統的「映像」可從以下連結下載:
Fedora-Tiny-31-5.5.7-200.aarch64

這將是一個包含兩個檔案的存檔:安裝腳本和帶有作業系統檔案的 TGZ。 存檔需要在 Linux 工作站上解壓縮,插入 microSD(2GB 卡就足夠了)並使用參數運行腳本 - 設備名稱:

./install /dev/mmcblk0

小心!

在沒有任何警告的情況下,設備將被格式化並安裝作業系統。

腳本沒有錯誤執行後,卡片可以重新排列成“raspberry”並使用:catch via dhcp,密碼 - “1”。

系統中的所有 ID 和金鑰均已清除,這就是每個新安裝都是唯一的原因。

我再說一遍,系統—— 最小的! 因此,不要驚慌:DNF 是可用的,要使其發揮作用,您必須「發明」正確的一個 / etc / resolv.conf中.

樹莓派冷啟動大約需要40秒。 載入後系統的TTX:

Raspberry Pi + Fedora (aarch64) = Wi-Fi 熱點(或藍帽的樹莓路由器)

rpm -qa | wc -l
191

5。 無線上網

我將詳細介紹實現 Wi-Fi 接入點的功能。 具體可以參考我之前的 文章.

不再需要 EPEL - 所有軟體包都包含在官方存儲庫中。

也許值得放棄 域名,因為與 CentOS 不同,Fedora 有一個相當新的 systemd-networkd,它具有正常的內建 DHCP/DNS 伺服器。 但事實是,在 RHEL8 開發人員中 拒絕使用 NM 以外的任何內容支援網路堆疊,並不能激發人們對專案光明未來的信心(惡棍)。 簡而言之,我沒有嘗試過。

此外,目前內建 Wi-Fi 適配器的驅動程式無法從 Raspbian 發行版中“竊取”,而是直接從 GitHub上.

這是 Broadcom 韌體檔案在我的 Raspberry 上的樣子(示意圖):

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

沒有它們,您將無法獲得 5GHz/AC。

關於接口的數量和名稱。 現在我強烈建議大家,除非絕對必要,否則不要訴諸軟體交換器的「服務」(),這會為網路堆疊帶來大量負載並抑制路由。 如果您不打算擁有多個無線適配器,那麼您應該只使用實體介面。 我有兩個 Wi-Fi,所以我只將它們組合成一個軟體橋(儘管您可以以不同方式查看 hostapd 設定來不使用它)。

我喜歡重命名介面。

要在 Fedora 中執行此操作,您需要建立一個符號連結:

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

然後就可以給出有意義的名字而無需四處尋找 烏德夫,但僅使用 systemd-networkd。

例如,我的路由器中的網路介面卡的名稱如下:

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 - 內建, 分機 — 外部 (USB) Wi-Fi 轉接器組裝成“橋接器” 局域網;
  • 蒼白 — 連接網際網路的乙太網路轉接器。

你注意到了嗎? fq_codel - 一件非常酷的事情。 與新的 Linux 核心一起,它們在無線範圍內創造了真正的奇蹟:激烈的「torrent 下載」不會導致鄰居之間的速度突然下降。 即使是帶有加載頻道的“無線”操作的家庭 IP-TV 也不會“中斷”,也不會“卡頓”!

守護程式服務文件發生了微小的變化 hostapd.

現在看起來像這樣(使用內建適配器的範例):

[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

以及在 5GHz/AC 下工作的「神奇」hostapd-int.conf:

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]

用我的愛立信 A1018 製作的一個小 Photoshop:

(網路連線 - 100Mbit/秒)Raspberry Pi + Fedora (aarch64) = Wi-Fi 熱點(或藍帽的樹莓路由器)
最後是一個小常見問題。

6。 常問問題

6.1 為什麼要在Raspberry上製作Wi-Fi路由器?

人們可以簡單地回答,例如「嘗試一下很有趣」。

但事實上,在我看來,這個話題是相當嚴肅的。 在「血腥」網路時代,在商店購買路由器並受制於其製造商是一個非常慘淡的前景。 許多人已經明白,使用 CVE 或內建後門是不可能的。

當然,你可以從愛好者遷移到WRT韌體。 可能對他們有更多的信任,但如果你不想依賴他們,那就使用你自己的產品。 理想情況下,是一台功能齊全的計算機,以便世界上的一切都可以在其上實現。 當然,就路由而言。

因此,選擇「樹莓派」純粹是經濟之舉:一台真正的計算機,同時又是一台便宜的計算機。 雖然,也許還有-裡面有他們的「替身」。

6.2 但 Raspberry 是一款「低階路由器」:速度慢且只有一個乙太網路連接埠!

作為一款家用 Wi-Fi 路由器,Raspberry 已經非常令我滿意。 上面我已經講過空氣速度了。 而且只有一個以太網,嗯,在蘋果的一款類似產品中,它幾乎是一樣的!

但說真的,我當然想要更多。 儘管我家裡的所有設備都是無線連接的,但有時仍然需要銅線連接。 對於這種情況,我庫存了一個「移動集線器」:

設備 - 像這樣的東西Raspberry Pi + Fedora (aarch64) = Wi-Fi 熱點(或藍帽的樹莓路由器)

6.3 如果這是一個路由器,那麼就不需要提及「調整」TCP/IP,因為這很重要!

除了設定網路堆疊(tcp_fastopen、YeAH 等)之外,這篇文章和上一篇文章沒有涵蓋其他細微差別,特別是準備 microSD 以實現最佳使用的過程(儘管安裝程式嘗試在一個棘手的方法)。 進步的過程是無止境的,你只需要及時停止即可。

6.4 為什麼選擇 Fedora?

因為我喜歡! Fedora 是面向極客的「主流」系統,本文其實是針對極客的。 在撰寫本文時,也許是唯一一個 64 位元版本的 Raspberry 作業系統得到了大量開發人員的正式支援(我迫不及待地從他們那裡得到支援) 內核 5.6).

6.5 藍牙是否有效? 視訊/聲音/GPIO 怎麼樣?

不知道。 本文介紹的是系統的最小安裝及其隨後作為 Wi-Fi 路由器的使用。

6.6 為什麼所有 CentOS/Fedora/RedHat 的文章都以停用 SELinux 開頭?

由於系統很小,它甚至沒有防火牆或用於設定它的實用程式。 任何需要它的人都可以額外安裝他們需要的一切。

6.7 系統無法使用,密碼無法變更-無passwd。 沒有 ping,什麼都沒有!

地下城與勇士。 或者此安裝選項不適合您 - 使用開發人員提供的分發工具包。

6.8 隔夜利息在哪裡? 沒有他我就活不下去!

這是真的嗎? 好吧:

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 我想立即下載具有已配置 Wi-Fi 接入點的現成映像!

為「所有人」準備安裝程序需要一些時間和精力。 如果(突然!)有人真的覺得這很有趣並且有必要,請寫信給我們,我們會想出一些辦法。

我就講完這個。

祝大家都能安全衝浪並最大限度地控制基礎設施!

來源: www.habr.com

添加評論