Raspberry Pi + Fedora(aarch64)= Wi-Fi热点(或戴着蓝帽子的树莓路由器)

在“ Raspberry Pi + CentOS = Wi-Fi热点”(或戴红色帽子的Raspberry路由器)一文中,我谈到了如何使用CentOS操作系统Raspberry变成无线访问点。从这样的图纸中收集了我的家用路由器后,我满足了我的创造性自我,并为自己舒适的基础设施中的关键要素感到镇定。但是,不完整的决定和内部完美主义的感觉并未消除:“不完美的工作结果不存在。关于“可以并且必须实现理想”的想法并没有让我离开一分钟。

然后有一天,在一个主题论坛中,我遇到了一个有关“ Malinka”的现有操作系统(aarch64 vs armhfp)的位深度的讨论:哪种基本的64位操作系统可以在Raspberry版本3 ++中适应并赚钱?

我最喜欢“ Userland”的用于ARM体系结构的CentOS并不急于切换到最新版本的内核并转换为64位。而且,连接上帝的EPEL信息库知道没有数字签名的地方,这是我梦

trouble 以求的梦...... 作为基于RPM发行版的拥护者,我惊讶地发现Fedora在讨论“树莓”操作系统时被完全遗忘了!而且,尽管它
从第28版开始正式支持64位版本的Raspberry Pi 3B +!

Fedora Aarch64

在本文中,我将讨论如何Raspberry Pi 3 Model B +上以额外的最小版本安装Fedora(aarch64)我将简要介绍提高Wi-Fi接入点的功能,这些功能是由于我先前在CentOS 7上进行的配置的试运行而确定的

0.需要什么


所有与上一篇文章中列出的相同:

  • Raspberry Pi 3 Model B +;
  • microSD> = 4GB(以后可以将系统“转移”到2GB驱动器);
  • 带有microSD读卡器的Linux工作站;
  • 带有Linux的“树莓”和工作站的有线网络连接(在这种情况下,不需要额外的监视器和键盘来进行配置),两个设备都可以访问Internet;
  • Linux的高级技能(要知道,不要害怕:partedddmkfs)。

就像您自己的Linux 的迭代LFS程序集一样,将使用Fedora发行映像,然后将在其基础上创建一个最小的系统(无需“从源代码进行编译”)。

1.安装原始发行版


Web上系统原始图像的坐标:
https://.../fedora-secondary/releases/.../Spins/aarch64/images/Fedora-Minimal-...xz

将其写入microSD之后并在使用前是必要的:

  1. 扩展文件系统的“根”(第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. 禁用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下载“树莓”并通过网络连接到它。

冷启动大约需要一分半钟。启动后的TTX系统:

Fedora Aarch64

rpm -qa | wc -l
444

2.最少的系统组装


不幸的是,开发人员的“最小分配”远非最消耗资源。可以使系统的图像更小。

为此,需要在“树莓”上运行脚本:

#!/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),其中包含新的最小OS版本根目录的内容。您可以关闭“树莓”,然后将microSD返回Linux工作站。

3.安装最低系统


减少了安装,只需将操作系统的最小“映像”文件(在上一步中获得)复制到适当目录中的特殊准备的microSD中。

2GB卡和上面的两个部分就足够了:

  1. / boot / efi -EFI + FAT32,启动,100MB;
  2. /(根目录)-EXT4,所有剩余空间。

准备microSD并将文件复制到其中后,您需要:

  • 修复启动操作系统;
  • 打开网络;
  • 通过ssh配置访问。

修复下载包括替换文件中各部分的UUID:

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

文件中最后一个文件中的saved_entry =参数



microSD:/etc/fstab

您可以在命令的输出中找到旧值和当前(当前)值:

blkid | grep mmcblk | sort

更换后,还应该将fstab的内容调整为microSD,以便挂载点对应于新的分区UUID。

第一次打开“树莓”时,可以使用一个小的“拐杖”来实现网络性能-创建一个链接(示意性地):

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

成功启动后,整理一下systemd-networkd的启动

systemctl disable systemd-networkd
systemctl enable systemd-networkd

通过ssh进行的超级用户访问的配置与第1项类似。

一切都整齐且没有错误,您可以在“树莓”中重新排列microSD,并以最低的性能开始使用64位OS。

4.准备系统


可以从以下链接下载根据上述说明创建的完成系统的“映像”:
Fedora-Tiny-31-5.5.7-200.aarch64

这将是一个包含两个文件的归档文件:安装脚本和带有OS文件的TGZ。必须在Linux工作站上将归档文件解压缩,插入microSD(2GB卡就够了),然后使用参数-设备名称运行脚本:

./install /dev/mmcblk0
小心!

在没有任何警告的情况下,设备将被格式化并在其上安装了操作系统。


脚本无故障地工作后,可以将卡重新排列到“树莓”中并使用:通过dhcp捕获,密码为“ 1”。

系统清除了所有ID和密钥,这就是每个新安装都是唯一的原因。

我再重复一次,系统很小因此,请不要惊慌:DNF可用,就其功能而言,您将必须“组成”正确的/etc/resolv.conf

覆盆子的冷启动大约需要40秒。启动后的TTX系统:

Fedora Aarch64

rpm -qa | wc -l
191

5. Wi-Fi


我将详细介绍Wi-Fi接入点的实现功能。有关详细信息,您可以参考我的上一篇文章

不再需要EPEL-所有软件包都包含在官方存储库中。

可能值得放弃dnsmasq,因为与CentOS不同,Fedora具有相当新的systemd-networked网络,其中有普通的内置DHCP / DNS服务器。但是,在RHEL8中,开发人员拒绝使用NM以外的任何方式来支持网络堆栈的事实并不能激发人们对该项目的光明前景(反派)的信心。简而言之,我还没有尝试过。

此外,内置Wi-Fi适配器的当前驱动程序不能从Raspbian发行版中“窃取”,而是可以直接从github下载

这是Broadcom固件文件在我的“树莓”上的外观(示意):

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

然后就可以给出有意义的名称而无需修改udev,而只能通过systemd-networked来进行。

例如,这里在我的路由器中称为网络适配器:

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 -内置,EXT -外部(USB)的Wi-Fi适配器,在“桥”组装局域网 ;
  • wan-连接到Internet的以太网适配器。

你注意到了吗?fq_codel确实是一件好事。它们与新鲜的Linux内核一起,在无线范围内发挥了神奇作用:强大的“激流质量”不会导致邻居之间的速度突然下降。甚至即使在“无线”工作的带负载频道的家用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

而“神奇的” hostapd-int.conf可在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]

我的“爱立信A1018s”制成的“ photoshop”:

(互联网连接-100Mbps)
Fedora Aarch64

最后,是一个小的常见问题解答。

6.常见问题


6.1为什么要在Raspberry上制作Wi-Fi路由器?


一个人可以简单地回答,说“尝试所有这些都很有趣”。

但是实际上,在我看来,这个话题很严肃。在“血腥”的互联网时代,在商店购买路由器并被其制造商扣为人质是一个非常乏味的前景。许多人已经知道,不可能坐在CVE或有线后门上。

当然,您可以从发烧友迁移到WRT固件。人们可能对它们有更多的信任,但是如果您不想依赖它们,那么只能使用您自己的产品。理想情况下,这是一台成熟的计算机,可以在其上实现世界上的所有功能。就路由而言,当然。

因此,“树莓”的选择纯粹是经济上的举措:一台真正的计算机,同时价格便宜。虽然,也可能-带有“双重”字样。

6.2但是Raspberry是一个“子路由器”:速度很慢,只有一个以太网端口!


作为家用Wi-Fi路由器,“ Malinka”比我更适合。我上面已经说过关于“空中”的速度。好吧,在苹果公司的类似产品中,几乎只有一个以太网!

但是说真的,我当然想要更多。尽管事实上我的家庭中所有设备都是无线连接的,但有时仍需要铜线连接。对于这种情况,我在商店中有一个“移动中心”:

设备-例如
Fedora Aarch64

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。无法使用系统,无法更改密码-无密码。没有ping,什么都没有!


有一个DNF或此安装选项不适合您-使用开发人员提供的分发套件。

6.8 SWAP在哪里?没有他我活不下去!


真相?那好吧:

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接入点的现成图像!


要为“所有人”准备安装程序,将需要一定的时间和精力。如果(突然!)对某人来说真的很有趣且有必要-写,我们会想出一些办法。



在此-我将完成。

祝大家安全浏览并最大程度地控制基础架构!

All Articles