Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ื›ื—ื•ืœ)

ื”ืžืืžืจ Raspberry Pi + CentOS = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ืื“ื•ื) ื“ื™ื‘ืจืชื™ ืขืœ ื“ืจืš ืœื”ืคื•ืš ืคื˜ืœ ืœื ืงื•ื“ืช ื’ื™ืฉื” ืืœื—ื•ื˜ื™ืช ื‘ืืžืฆืขื•ืช ืžืขืจื›ืช ื”ื”ืคืขืœื” CentOS. ืขืœ ื™ื“ื™ ื”ืจื›ื‘ืช ื”ื ืชื‘ ื”ื‘ื™ืชื™ ืฉืœื™ ืœืคื™ ื”ืฉืจื˜ื•ื˜ ื”ื–ื”, ืกื™ืคืงืชื™ ืืช ื”ืื’ื• ื”ื™ืฆื™ืจืชื™ ืฉืœื™ ื•ืงื™ื‘ืœืชื™ ื“ื—ื™ืคื” ืฉืœ ืฉืงื˜ ื ืคืฉื™ ืขื‘ื•ืจ ืžืจื›ื™ื‘ ืงืจื™ื˜ื™ ื‘ืชืฉืชื™ืช ื”ื ืขื™ืžื” ืฉืœื™. ืขื ื–ืืช, ืชื—ื•ืฉืช ื—ื•ืกืจ ื”ืฉืœืžื•ืช ืฉืœ ื”ืคืชืจื•ืŸ ื•ื”ืคืจืคืงืฆื™ื•ื ื™ื–ื ื”ืคื ื™ืžื™ ืจื“ืคื• ืื•ืชื™: "ืœืชื•ืฆืื” ืœื ืžื•ืฉืœืžืช ืฉืœ ืขื‘ื•ื“ื” ืื™ืŸ ื–ื›ื•ืช ืงื™ื•ื". ื”ืžื—ืฉื‘ื” ืฉ"ืืคืฉืจ ื•ืฆืจื™ืš ืœื”ืฉื™ื’ ืืช ื”ืื™ื“ื™ืืœ" ืœื ืขื–ื‘ื” ืื•ืชื™ ืœืจื’ืข.

ื•ืื– ื™ื•ื ืื—ื“, ื‘ืื—ื“ ื”ืคื•ืจื•ืžื™ื ื”ื ื•ืฉืื™ื™ื, ื ืชืงืœืชื™ ื‘ื“ื™ื•ืŸ ืขืœ ืขื•ืžืง ื”ืกื™ื‘ื™ื•ืช ืฉืœ ืžืขืจื›ื•ืช ื”ื”ืคืขืœื” ื”ืงื™ื™ืžื•ืช ืขื‘ื•ืจ Raspberry (aarch64 ืœืขื•ืžืช armhfp): ืื™ื–ื• ืžืขืจื›ืช ื”ืคืขืœื” ืฉืœ 64 ืกื™ื‘ื™ื•ืช ื™ื›ื•ืœื”, ื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ืœื”ืชืื™ื ื•ืœืขื‘ื•ื“ ืขืœ Raspberry ื’ืจืกื” 3 ++?

CentOS ื”ืื”ื•ื‘ ืฉืœื™ ืœืืจื›ื™ื˜ืงื˜ื•ืจืช ARM ืž"Userland" ืœื ืžื™ื”ืจ ืœืขื‘ื•ืจ ืœื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ืฉืœ ื”ืงืจื ืœ ื•ืœื”ืคื•ืš ืœ-64 ื‘ื™ื˜. ื•ืžืื’ืจ ื”-EPEL, ื”ืžื—ื•ื‘ืจ ืžืืœื•ื”ื™ื ื™ื•ื“ืข ืื™ืคื” ืœืœื ื—ืชื™ืžื” ื“ื™ื’ื™ื˜ืœื™ืช, ื”ื™ื” ืกื™ื•ื˜ ื‘ืฉื™ื ื” ื—ืกืจืช ื”ืžื ื•ื—ื” ืฉืœื™...

ื›ืฉื“ื™ื‘ืจืชื™ ื‘ืชื•ืจ ื—ืกื™ื“ ืฉืœ ื”ืคืฆื•ืช ืžื‘ื•ืกืกื•ืช RPM, ื”ื•ืคืชืขืชื™ ืœื’ืœื•ืช ืฉืžืขืจื›ืช ื”ื”ืคืขืœื” ืฉืœ Raspberry ื ืฉื›ื—ื” ืœื—ืœื•ื˜ื™ืŸ ื‘ื“ื™ื•ื ื™ื ืคื“ื•ืจื”! ื•ื–ืืช ืœืžืจื•ืช ืฉืฉื—ืจื•ืจื•
ืžื’ืจืกื” 28 ื”ื•ื ืชื•ืžืš ืจืฉืžื™ืช ื‘-Raspberry Pi 3B+ ื‘ื’ืจืกืช 64 ืกื™ื‘ื™ื•ืช!

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ื›ื—ื•ืœ)
ื‘ืžืืžืจ ื–ื” ืื“ื‘ืจ ืขืœ ืฉื™ื˜ืช ื”ื”ืชืงื ื” ืคื“ื•ืจื” (aarch64) ืขืœ ืคืกืคืจื™ ืคื™ 3 ื“ื’ื B + ะฒ ื‘ื™ืฆื•ืขื™ื ืžื™ื ื™ืžืœื™ื™ื ื‘ืžื™ื•ื—ื“. ืื ื™ ืืชืขื›ื‘ ื‘ืงืฆืจื” ืขืœ ื”ืชื›ื•ื ื•ืช ืฉืœ ื”ืขืœืืช ื ืงื•ื“ืช ื’ื™ืฉื” ืœ-Wi-Fi, ืฉื–ื•ื”ื• ื›ืชื•ืฆืื” ืžื”ืคืขืœืช ื ื™ืกื™ื•ืŸ ืฉืœ ื”ืชืฆื•ืจื” ื”ืงื•ื“ืžืช ืฉืœื™ CentOS 7.

0. ืžื” ืชืฆื˜ืจืš

ื”ื›ืœ ื–ื”ื” ืœืจืฉื•ื ื‘ืžืืžืจ ื”ืงื•ื“ื:

  • Raspberry Pi 3 ื“ื’ื B+;
  • microSD >= 4GB (ืžืื•ื—ืจ ื™ื•ืชืจ ื ื™ืชืŸ "ืœื”ืขื‘ื™ืจ" ืืช ื”ืžืขืจื›ืช ืœื›ื•ื ืŸ ืฉืœ 2GB);
  • ืชื—ื ืช ืขื‘ื•ื“ื” ืขื ืœื™ื ื•ืงืก ื•ืงื•ืจื ื›ืจื˜ื™ืกื™ microSD;
  • ืงื™ืฉื•ืจื™ื•ืช ืจืฉืช ืงื•ื•ื™ืช ื‘ื™ืŸ ื”-Raspberry ืœืชื—ื ืช ืขื‘ื•ื“ื” ืฉืœ ืœื™ื ื•ืงืก (ื‘ืžืงืจื” ื–ื”, ืœื ื™ื”ื™ื” ืฆื•ืจืš ื‘ืฆื’ ื•ืžืงืœื“ืช ื ื•ืกืคื™ื ืœืฆื•ืจืš ื”ื”ื’ื“ืจื”), ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜ ืžืฉื ื™ ื”ืžื›ืฉื™ืจื™ื;
  • ืžื™ื•ืžื ื•ืช ืžืชืงื“ืžืช ื‘ืœื™ื ื•ืงืก (ืœื“ืขืช ื•ืœื ืœืคื—ื“: ื ืคืจื“, dd ะธ ืžืงืคื™ื).

ื“ื•ืžื” ืœืื™ื˜ืจื˜ื™ื‘ื™ LFS-ื‘ื ื™ื™ืช ืœื™ื ื•ืงืก ืžืฉืœืš, ืชืžื•ื ืช ื”ื”ืคืฆื” ืฉืœ ืคื“ื•ืจื” ืชืฉืžืฉ, ื•ืœืื—ืจ ืžื›ืŸ ืขืœ ื‘ืกื™ืกื”, ืชื™ื•ื•ืฆืจ ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช (ืœืœื "ื”ื™ื“ื•ืจ ืžื”ืžืงื•ืจ").

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 ื•ืœื”ืชื—ื‘ืจ ืืœื™ื• ื“ืจืš ื”ืจืฉืช.

ื”ืชื—ืœื” ืงืจื” ืื•ืจื›ืช ื‘ืขืจืš ื“ืงื” ื•ื—ืฆื™. TTX ืฉืœ ื”ืžืขืจื›ืช ืœืื—ืจ ื˜ืขื™ื ื”:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ื›ื—ื•ืœ)

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 ืœืชื—ื ืช ื”ืขื‘ื•ื“ื” ืฉืœ ืœื™ื ื•ืงืก.

3. ื”ืชืงื ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช

ื”ื”ืชืงื ื” ืžืกืชื›ืžืช ื‘ื”ืขืชืงืช ืงื‘ืฆื™ "ืชืžื•ื ืช" ืžืขืจื›ืช ื”ื”ืคืขืœื” ื”ืžื™ื ื™ืžืœื™ืช (ืฉื”ื•ืฉื’ื• ื‘ืฉืœื‘ ื”ืงื•ื“ื) ืขืœ ื’ื‘ื™ microSD ืฉื”ื•ื›ืŸ ื‘ืžื™ื•ื—ื“ ืœืชื•ืš ื”ืกืคืจื™ื•ืช ื”ืžืชืื™ืžื•ืช.

ืžืกืคื™ืง ื›ืจื˜ื™ืก 2GB ื•ืฉืชื™ ืžื—ื™ืฆื•ืช ืขืœื™ื•:

  1. / ืืชื—ื•ืœ / ืืคื™ - 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

ื’ื™ืฉืช Superuser ื“ืจืš ssh ืžื•ื’ื“ืจืช ื‘ื“ื•ืžื” ืœืฉืœื‘ 1.

ืœืื—ืจ ืฉืขืฉื™ืช ื”ื›ืœ ื‘ื–ื”ื™ืจื•ืช ื•ืœืœื ืฉื’ื™ืื•ืช, ืืชื” ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ืืช ื”-microSD ืœ"ืคื˜ืœ" ื•ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“ ืขื ืžืขืจื›ืช ื”ืคืขืœื” ืฉืœ 64 ืกื™ื‘ื™ื•ืช ื‘ื’ืจืกื” ืžื™ื ื™ืžืœื™ืช ื‘ืžื™ื•ื—ื“.

4. ืžืขืจื›ืช ืžื•ื›ื ื”

ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืืช ื”"ืชืžื•ื ื”" ืฉืœ ื”ืžืขืจื›ืช ื”ืžื•ื’ืžืจืช, ืฉื ื•ืฆืจื” ืขืœ ืคื™ ื”ื”ื•ืจืื•ืช ืœืžืขืœื”, ืžื”ืงื™ืฉื•ืจ:
Fedora-Tiny-31-5.5.7-200.aarch64

ื–ื” ื™ื”ื™ื” ืืจื›ื™ื•ืŸ ื”ืžื›ื™ืœ ืฉื ื™ ืงื‘ืฆื™ื: ืกืงืจื™ืคื˜ ื”ื”ืชืงื ื” ื•-TGZ ืขื ืงื‘ืฆื™ ืžืขืจื›ืช ื”ืคืขืœื”. ื™ืฉ ืœืคืจืง ืืช ื”ืืจื›ื™ื•ืŸ ื‘ืชื—ื ืช ืขื‘ื•ื“ื” ืฉืœ ืœื™ื ื•ืงืก, ืœื”ื›ื ื™ืก microSD (ืžืกืคื™ืง ื›ืจื˜ื™ืก 2GB) ื•ืœื”ืจื™ืฅ ืืช ื”ืกืงืจื™ืคื˜ ืขื ืคืจืžื˜ืจ - ืฉื ื”ืžื›ืฉื™ืจ:

./install /dev/mmcblk0

ืชื™ื–ื”ืจ!

ืœืœื ื›ืœ ืื–ื”ืจื•ืช ื”ืžื›ืฉื™ืจ ื™ืคื•ืจืžื˜ ื•ืžืขืจื›ืช ื”ื”ืคืขืœื” ืชื•ืชืงืŸ ืขืœื™ื•.

ืœืื—ืจ ื‘ื™ืฆื•ืข ืœืœื ืฉื’ื™ืื•ืช ืฉืœ ื”ืกืงืจื™ืคื˜, ื ื™ืชืŸ ืœืืจื’ืŸ ืžื—ื“ืฉ ืืช ื”ื›ืจื˜ื™ืก ืœ"ืคื˜ืœ" ื•ืœื”ืฉืชืžืฉ ื‘ื•: ืชืคื•ืก ื‘ืืžืฆืขื•ืช dhcp, ืกื™ืกืžื” - "1".

ื”ืžืขืจื›ืช ืžื ื•ืงื” ืžื›ืœ ื”ืžื–ื”ื™ื ื•ื”ืžืคืชื—ื•ืช, ื•ืœื›ืŸ ื›ืœ ื”ืชืงื ื” ื—ื“ืฉื” ื”ื™ื ื™ื™ื—ื•ื“ื™ืช.

ืื ื™ ื—ื•ื–ืจ ืฉื•ื‘, ื”ืžืขืจื›ืช - ืžึดื™ื ึดื™ืžึธืœึดื™! ืœื›ืŸ, ืืœ ืชื™ื‘ื”ืœื•: DNF ื–ืžื™ืŸ, ื›ื“ื™ ืฉื–ื” ื™ืขื‘ื•ื“ ืชืฆื˜ืจื›ื• "ืœื”ืžืฆื™ื" ืืช ื”ืžืชืื™ื / Etc / resolv.conf.

ื”ื”ืชื—ืœื” ื”ืงืจื” ืฉืœ ื”ืคื˜ืœ ื ืžืฉื›ืช ื›-40 ืฉื ื™ื•ืช. TTX ืฉืœ ื”ืžืขืจื›ืช ืœืื—ืจ ื˜ืขื™ื ื”:

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ื›ื—ื•ืœ)

rpm -qa | wc -l
191

5. ื•ื•ื™ื™ - ืคื™ื™

ืืชืขื›ื‘ ืžืขื˜ ืขืœ ื”ืชื›ื•ื ื•ืช ืฉืœ ื”ื˜ืžืขืช ื ืงื•ื“ืช ื’ื™ืฉื” ืœ-Wi-Fi. ืœืคืจื˜ื™ื, ืืชื” ื™ื›ื•ืœ ืœืขื™ื™ืŸ ื‘ืงื•ื“ื ืฉืœื™ ัั‚ะฐั‚ัŒะต.

ืื™ืŸ ืขื•ื“ ืฆื•ืจืš ื‘-EPEL - ื›ืœ ื”ื—ื‘ื™ืœื•ืช ื›ืœื•ืœื•ืช ื‘ืžืื’ืจื™ื ื”ืจืฉืžื™ื™ื.

ื›ื ืจืื” ืฉื•ื•ื” ืœื•ื•ืชืจ ื“ื ืกืžืกืง, ืžื›ื™ื•ื•ืŸ ืฉืœืคื“ื•ืจื”, ื‘ื ื™ื’ื•ื“ ืœ-CentOS, ื™ืฉ systemd-networkd ืขื“ื›ื ื™ ืœืžื“ื™, ืฉื™ืฉ ืœื” ืฉืจืชื™ 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).

ื•ืื ื™ ืื•ื”ื‘ ืœืฉื ื•ืช ืฉืžื•ืช ืฉืœ ืžืžืฉืงื™ื.

ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช ื‘ืคื“ื•ืจื” ืขืœื™ืš ืœื™ืฆื•ืจ ืงื™ืฉื•ืจ ืกืžืœื™:

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

ื•ืื– ืืคืฉืจ ื™ื”ื™ื” ืœืชืช ืฉืžื•ืช ืžืฉืžืขื•ืชื™ื™ื ื‘ืœื™ ืœื—ื˜ื˜ udev, ืื‘ืœ ืจืง ื‘ืืžืฆืขื•ืช 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 - ืžื•ื‘ื ื”, ืฉืœื•ื—ื” - ืžืชืืžื™ Wi-Fi ื—ื™ืฆื•ื ื™ื™ื (USB) ื”ืžื•ืจื›ื‘ื™ื ืœ"ื’ืฉืจ" lan;
  • ื—ึดื•ึตืจ - ืžืชืื Ethernet ืฉืืœื™ื• ืžื—ื•ื‘ืจ ื”ืื™ื ื˜ืจื ื˜.

ืฉื ืœื‘? fq_codel - ื“ื‘ืจ ืžืžืฉ ืžื’ื ื™ื‘. ื™ื—ื“ ืขื ืœื™ื‘ืช ืœื™ื ื•ืงืก ื˜ืจื™ื™ื”, ื”ื ืžื—ื•ืœืœื™ื ื ื™ืกื™ื ืืžื™ืชื™ื™ื ื‘ื˜ื•ื•ื— ื”ืืœื—ื•ื˜ื™: "ื”ื•ืจื“ืช ื˜ื•ืจื ื˜" ืขื–ื” ืœื ืชื•ื‘ื™ืœ ืœื™ืจื™ื“ื” ืคืชืื•ืžื™ืช ื‘ืžื”ื™ืจื•ืช ื‘ืงืจื‘ ื”ืฉื›ื ื™ื. ืืคื™ืœื• ื˜ืœื•ื•ื™ื–ื™ื™ืช IP ื‘ื™ืชื™ืช ื”ืคื•ืขืœืช "ื‘ืื•ื•ื™ืจ" ืขื ืขืจื•ืฅ ื˜ืขื•ืŸ ืœื "ืžืชืคืจืงืช" ื•ืื™ื ื” "ืžื’ืžื’ืžืช" ื›ืœืœ!

ืงื•ื‘ืฅ ืฉื™ืจื•ืช ื”ื“ืžื•ืŸ ืขื‘ืจ ืฉื™ื ื•ื™ื™ื ืงืœื™ื 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]

ืคื•ื˜ื•ืฉื•ืค ืงื˜ืŸ ืฉื ืขืฉื” ืžืžื›ืฉื™ืจื™ Ericsson A1018 ืฉืœื™:

(ื—ื™ื‘ื•ืจ ืœืื™ื ื˜ืจื ื˜ - 100Mbit/sec)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ื›ื—ื•ืœ)
ื•ืœื‘ืกื•ืฃ, ืฉืืœื•ืช ื ืคื•ืฆื•ืช ืงื˜ื ื•ืช.

6. ืฉืืœื•ืช ื ืคื•ืฆื•ืช

6.1 ืœืžื” ืœื™ืฆื•ืจ ื ืชื‘ Wi-Fi ืขืœ Raspberry?

ืืคืฉืจ ืœืขื ื•ืช ื‘ืคืฉื˜ื•ืช, ื›ืžื• "ื–ื” ืžืขื ื™ื™ืŸ ืœื ืกื•ืช ื•ื›ืœ ื–ื”."

ืื‘ืœ ืœืžืขืฉื”, ื ืจืื” ืœื™ ืฉื”ื ื•ืฉื ื“ื™ ืจืฆื™ื ื™. ื‘ืขื™ื“ืŸ ื”ืื™ื ื˜ืจื ื˜ "ื”ืžื—ื•ืจื‘ืŸ", ืœืงื ื•ืช ื ืชื‘ ื‘ื—ื ื•ืช ื•ืœื”ื™ืฉืืจ ื›ื‘ืŸ ืขืจื•ื‘ื” ืœื™ืฆืจืŸ ืฉืœื• ื”ื•ื ืกื™ื›ื•ื™ ืขื’ื•ื ืžืื•ื“. ืื ืฉื™ื ืจื‘ื™ื ื›ื‘ืจ ืžื‘ื™ื ื™ื ืฉืœื ื ื™ืชืŸ ืœืฉื‘ืช ืขื CVE ืื• ื“ืœืช ืื—ื•ืจื™ืช ืžื•ื‘ื ื™ืช.

ื›ืžื•ื‘ืŸ, ืืชื” ื™ื›ื•ืœ ืœืขื‘ื•ืจ ืœืงื•ืฉื—ื” WRT ืžื—ื•ื‘ื‘ื™ื. ื›ื ืจืื” ืฉื™ืฉ ื‘ื”ื ื™ื•ืชืจ ืืžื•ืŸ, ืื‘ืœ ืื ืืชื” ืœื ืจื•ืฆื” ืœื”ื™ื•ืช ืชืœื•ื™ ื‘ื”ื, ืื– ืคืฉื•ื˜ ื”ืฉืชืžืฉ ื‘ืžื•ืฆืจ ืฉืœืš. ื‘ืื•ืคืŸ ืื™ื“ื™ืืœื™, ืžื—ืฉื‘ ืžืŸ ื”ืžื ื™ื™ืŸ ื›ืš ืฉื ื™ืชืŸ ื™ื”ื™ื” ืœื™ื™ืฉื ืขืœื™ื• ื›ืœ ื“ื‘ืจ ืฉื‘ืขื•ืœื. ืžื‘ื—ื™ื ืช ื ื™ืชื•ื‘, ื›ืžื•ื‘ืŸ.

ืœื›ืŸ, ื‘ื—ื™ืจืช "ืคื˜ืœ" ื”ื™ื ืžื”ืœืš ื›ืœื›ืœื™ ื’ืจื™ื“ื: ืžื—ืฉื‘ ืืžื™ืชื™ ื•ื‘ื• ื‘ื–ืžืŸ ื’ื ืœื ื™ืงืจ. ืื ื›ื™, ืื•ืœื™ ื’ื - ืขื ื”"ื›ืคื™ืœื™ื" ืฉืœื”ื ื‘ืคื ื™ื.

6.2 ืื‘ืœ ืคื˜ืœ ื”ื•ื "ื ืชื‘ ื ืžื•ืš": ืื™ื˜ื™ ื•ืขื ื™ืฆื™ืืช Ethernet ืื—ืช!

ื‘ืชื•ืจ ื ืชื‘ Wi-Fi ื‘ื™ืชื™, ื”-Raspberry ื™ื•ืชืจ ืžืฉื‘ื™ืข ืจืฆื•ืŸ ืขื‘ื•ืจื™. ื›ื‘ืจ ื“ื™ื‘ืจืชื™ ืขืœ ืžื”ื™ืจื•ืช ื”ืื•ื•ื™ืจ ืœืžืขืœื”. ื•ื™ืฉ ืจืง ืืชืจื ื˜ ืื—ื“, ื•ื‘ื›ืŸ, ื‘ืžื•ืฆืจ ื“ื•ืžื” ืžืืคืœ ื–ื” ื‘ืขืจืš ืื•ืชื• ื”ื“ื‘ืจ!

ืื‘ืœ ื‘ืจืฆื™ื ื•ืช, ื›ืžื•ื‘ืŸ ืฉื”ื™ื™ืชื™ ืจื•ืฆื” ื™ื•ืชืจ. ื•ืœืžืจื•ืช ืฉื‘ื‘ื™ืชื™ ื›ืœ ื”ืžื›ืฉื™ืจื™ื ืžื—ื•ื‘ืจื™ื ื‘ืื•ืคืŸ ืืœื—ื•ื˜ื™, ืœืคืขืžื™ื ืขื“ื™ื™ืŸ ื ื“ืจืฉ ื—ื™ื‘ื•ืจ ื ื—ื•ืฉืช. ืขื‘ื•ืจ ืžืงืจื™ื ื›ืืœื”, ื™ืฉ ืœื™ "ืจื›ื–ืช ื ื™ื™ื“ืช" ื‘ืžืœืื™:

ืžื›ืฉื™ืจ - ืžืฉื”ื• ื›ื–ื”Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ื›ื—ื•ืœ)

6.3 ืื ื–ื” ื ืชื‘, ืื– ืฉื•ื ื“ื‘ืจ ืœื ื ืืžืจ ืขืœ "ื›ื•ื•ื ืŸ" TCP/IP, ื›ื™ ื–ื” ื—ืฉื•ื‘!

ื‘ื ื•ืกืฃ ืœื”ื’ื“ืจืช ืžื—ืกื ื™ืช ื”ืจืฉืช (tcp_fastopen, YeAH ื•ื›ื•'), ื”ืžืืžืจ ื”ื–ื” ื•ื”ืžืืžืจ ื”ืงื•ื“ื ืื™ื ื ืžื›ืกื™ื ื ื™ื•ืื ืกื™ื ืื—ืจื™ื, ื‘ืคืจื˜, ืชื”ืœื™ืš ื”ื›ื ืช microSD ืœืฉื™ืžื•ืฉ ืื•ืคื˜ื™ืžืœื™ (ืื ื›ื™ ื”ืžืชืงื™ืŸ ืžื ืกื” ืœืคืจืžื˜ ืืช ื›ืจื˜ื™ืก ื”ื–ื™ื›ืจื•ืŸ ื‘- ื“ืจืš ืžืกื•ื‘ื›ืช). ืชื”ืœื™ืš ื”ืฉื™ืคื•ืจ ื”ื•ื ืื™ื ืกื•ืคื™, ืืชื” ืจืง ืฆืจื™ืš ืœืขืฆื•ืจ ื‘ื–ืžืŸ.

6.4 ืœืžื” ืคื“ื•ืจื”?

ื›ื™ ืื ื™ ืื•ื”ื‘! ืคื“ื•ืจื” ื”ื™ื ืžืขืจื›ืช "ืžื™ื™ื ืกื˜ืจื™ื" ืœื’ื™ืงื™ื, ืฉืขื‘ื•ืจื ื”ืžืืžืจ ื”ื–ื” ืžื™ื•ืขื“ ืœืžืขืฉื”. ื‘ื–ืžืŸ ื”ื›ืชื™ื‘ื”, ืื•ืœื™ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื”ื™ื—ื™ื“ื” ืฉืœ Raspberry ื‘ื’ืจืกืช 64 ืกื™ื‘ื™ื•ืช ื ืชืžื›ืช ืจืฉืžื™ืช ืขืœ ื™ื“ื™ ืฆื•ื•ืช ืžืคืชื—ื™ื ืžืฉืžืขื•ืชื™ (ืžืžื ื• ืื ื™ ืœื ื™ื›ื•ืœ ืœื—ื›ื•ืช ืงืจื ืœ 5.6).

6.5 ื”ืื ื‘ืœื•ื˜ื•ืช' ืขื•ื‘ื“? ืื™ืš ื”ื•ื•ื™ื“ืื•/ืกืื•ื ื“/GPIO?

ืœื ื™ื•ื“ืข. ื”ืžืืžืจ ืขื•ืกืง ื‘ื”ืชืงื ื” ื”ืžื™ื ื™ืžืœื™ืช ืฉืœ ื”ืžืขืจื›ืช ื•ื”ืฉื™ืžื•ืฉ ื‘ื” ืœืื—ืจ ืžื›ืŸ ื›ื ืชื‘ Wi-Fi.

6.6 ืžื“ื•ืข ื›ืœ ื”ืžืืžืจื™ื ืขืœ CentOS/Fedora/RedHat ืžืชื—ื™ืœื™ื ื‘ื”ืฉื‘ืชืช SELinux?

ืžื›ื™ื•ื•ืŸ ืฉื”ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืื™ืŸ ืœื” ืืคื™ืœื• ื—ื•ืžืช ืืฉ ืื• ื›ืœื™ ืขื–ืจ ืœื”ื’ื“ืจืชื”. ื›ืœ ืžื™ ืฉืฆืจื™ืš ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ ื‘ื ื•ืกืฃ ืืช ื›ืœ ืžื” ืฉื”ื•ื ืฆืจื™ืš.

6.7 ืœื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžืขืจื›ืช, ืœื ื ื™ืชืŸ ืœืฉื ื•ืช ืืช ื”ืกื™ืกืžื” - ืื™ืŸ passwd. ื‘ืœื™ ืคื™ื ื’, ื‘ืœื™ ื›ืœื•ื!

ื™ืฉ 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 ืžื•ื’ื“ืจืช!

ื”ื›ื ืช ืžืชืงื™ืŸ "ืœื›ื•ืœื" ืชื“ืจื•ืฉ ื–ืžืŸ ื•ืžืืžืฅ. ืื (ืคืชืื•ื!) ืžื™ืฉื”ื• ื‘ืืžืช ืžื•ืฆื ืืช ื–ื” ืžืขื ื™ื™ืŸ ื•ื”ื›ืจื—ื™, ื›ืชื‘ื• ืœื ื• ื•ื ืžืฆื ืžืฉื”ื•.

ืื ื™ ืืกื™ื™ื ืขื ื–ื”.

ืžืื—ืœ ืœื›ื•ืœื ื’ืœื™ืฉื” ื‘ื˜ื•ื—ื” ื•ืฉืœื™ื˜ื” ืžืจื‘ื™ืช ื‘ืชืฉืชื™ืช!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”