Raspberry Pi + Fedora (aarch64) = Hotspot Wi-Fi (ou un routeur framboise dans un chapeau bleu)

Dans l'article Raspberry Pi + CentOS = Hotspot Wi-Fi (ou un routeur framboise dans un chapeau rouge), j'ai expliqué comment transformer une framboise en point d'accès sans fil à l'aide du système d'exploitation CentOS. Ayant récupéré mon routeur domestique à partir d'un tel dessin, j'ai satisfait mon ego créatif et j'ai reçu une accusation de calme pour un élément essentiel de mon infrastructure confortable. Cependant, le sentiment de décision incomplète et de perfectionnisme interne n'a pas donné de repos: "un résultat imparfait du travail n'a pas le droit d'exister". L'idée que «cet idéal peut et doit être atteint» ne m'a pas quittée une minute.

Et puis un jour, sur l'un des forums thématiques, je suis tombé sur une discussion de la profondeur de bits des systèmes d'exploitation existants pour «Malinka» (aarch64 vs armhfp): quels systèmes d'exploitation 64 bits peuvent s'intégrer et gagner de l'argent sur Raspberry version 3 ++?

Mon architecture CentOS for ARM préférée de "Userland" n'était pas pressée de passer à la dernière version du noyau et de se transformer en 64 bits. Et le référentiel EPEL, connecté Dieu sait où sans signature numérique, était un cauchemar dans mon rêve troublé ...

Parlant en tant qu'adhérent aux distributions basées sur RPM, j'ai été surpris de constater que Fedora s'est avéré être complètement oublié dans les discussions sur le système d'exploitation pour "framboise" ! Et cela malgré le fait que sa sortie à
partir de la 28e version supporte officiellement le Raspberry Pi 3B + en version 64 bits!

Fedora aarch64

Dans cet article, je vais vous expliquer comment installer Fedora (aarch64) sur le Raspberry Pi 3 Model B + dans une version extra minimale . Je m'attarderai brièvement sur les caractéristiques de l'augmentation d'un point d'accès Wi-Fi identifié à la suite de l'opération d'essai de ma configuration précédente sur CentOS 7 .

0. Ce qui est nécessaire


Tout comme indiqué dans l'article précédent:

  • Raspberry Pi 3 modèle B +;
  • microSD> = 4 Go (plus tard, vous pouvez «transférer» le système sur un lecteur de 2 Go);
  • Station de travail Linux avec lecteur de carte microSD;
  • Connexion réseau filaire de «framboise» et de la station de travail avec Linux (dans ce cas, aucun moniteur ni clavier supplémentaire n'est requis pour la configuration), accès Internet depuis les deux appareils;
  • Compétence avancée sous Linux (savoir et ne pas avoir peur: parted , dd et mkfs ).

Comme un assemblage LFS itératif de votre propre Linux, l'image de distribution Fedora sera utilisée, puis un système minimal sera créé sur sa base (sans "compilation à partir de la source").

1. Installation de la distribution d'origine


Les coordonnées de l'image brute du système sur le Web:
https: //.../fedora-secondary/releases/.../Spins/aarch64/images/Fedora-Minimal-...xz

Après avoir été écrit sur la microSD et avant utilisation, il est nécessaire :

  1. Étendre la «racine» du système de fichiers (3e section, 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. Désactiver SELinux

    echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config
    

  3. Supprimez l'assistant de configuration initiale:

    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Autoriser l'accès 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
    


Vous pouvez maintenant télécharger la "framboise" à partir de microSD et vous y connecter via le réseau.

Un démarrage à froid prend environ une minute et demie. Système TTX après le démarrage:

Fedora aarch64

rpm -qa | wc -l
444

2. Assemblage minimal du système


Malheureusement, la «distribution minimale» des développeurs est loin d'être la plus modeste en termes de consommation de ressources. L'image du système peut être encore plus petite.

Pour ce faire, sur la "framboise" vous devez exécuter le script:

#!/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

Après avoir élaboré le script, un sous-répertoire ( $ P ) sera créé dans le répertoire courant avec le contenu de la racine de la nouvelle édition minimale du système d'exploitation. Vous pouvez désactiver la «framboise» et renvoyer la microSD au poste de travail Linux.

3. Installation d'un système minimum


L'installation se réduit à copier les fichiers de «l'image» minimale de l'OS (obtenue à l'étape précédente) vers une microSD spécialement préparée dans les répertoires appropriés.

Une carte de 2 Go et deux sections suffisent:

  1. / boot / efi - EFI + FAT32, boot, 100 Mo;
  2. / (root) - EXT4, tout l'espace restant.

Après avoir préparé la microSD et y avoir copié les fichiers, vous avez besoin de:

  • réparer le système d'exploitation de démarrage;
  • allumez le réseau;
  • configurer l'accès via ssh.

La réparation d'un téléchargement consiste à remplacer l'UUID des sections des fichiers:

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

et saved_entry = paramètre dans le dernier fichier

Dans le fichier:

microSD:/etc/fstab

vous pouvez trouver les anciennes valeurs et les valeurs actuelles (actuelles) dans la sortie de la commande:

blkid | grep mmcblk | sort

Après le remplacement, vous devez également ajuster le contenu de fstab sur microSD afin que les points de montage correspondent aux nouveaux UUID de partition.

La première fois que vous allumez la «framboise», les performances du réseau peuvent être atteintes avec une petite «béquille» - créez un lien (schématiquement):

ln -s /usr/lib/systemd/system/systemd-networkd.service \
  microSD:/etc/systemd/system/multi-user.target.wants
et fichier:
mkdir -p microSD:/etc/systemd/network
cat > microSD:/etc/systemd/network/dhcp.network << EOF
[Match]
Name=*
[Network]
DHCP=ipv4
EOF

Après un démarrage réussi, ranger le lancement de systemd-networkd :

systemctl disable systemd-networkd
systemctl enable systemd-networkd

L'accès du superutilisateur via ssh est configuré de manière similaire à l'élément 1.

Après avoir tout fait proprement et sans erreurs, vous pouvez réorganiser la microSD dans la "framboise" et commencer à travailler avec un système d'exploitation 64 bits dans une performance minimale supplémentaire.

4. Système prêt


L '"image" du système fini, créée selon les instructions ci-dessus, peut être téléchargée à partir du lien:
Fedora-Tiny-31-5.5.7-200.aarch64

Ce sera une archive contenant deux fichiers: un script d'installation et TGZ avec des fichiers OS. L'archive doit être décompressée sur un poste de travail Linux, insérer une microSD (une carte de 2 Go suffit) et exécuter le script avec le paramètre - le nom de l'appareil:

./install /dev/mmcblk0
Faites attention!

Sans aucun avertissement, l'appareil sera formaté et un système d'exploitation y sera installé.


Après un travail sans erreur sur le script, la carte peut être réorganisée en «framboise» et utilisée: pour attraper par dhcp, le mot de passe est «1».

Le système est débarrassé de toutes sortes d'ID et de clés, c'est pourquoi chaque nouvelle installation est unique.

Je le répète, le système est minimal ! Par conséquent, ne vous inquiétez pas: DNF est disponible, pour sa fonctionnalité, vous devrez «composer» le bon /etc/resolv.conf .

Un démarrage à froid d'une framboise prend environ 40 secondes. Système TTX après le démarrage:

Fedora aarch64

rpm -qa | wc -l
191

5. Wi-Fi


Je m'attarderai un peu sur les caractéristiques de la mise en œuvre des points d'accès Wi-Fi. Pour plus de détails, vous pouvez vous référer à mon article précédent .

EPEL n'est plus nécessaire - tous les paquets sont contenus dans des dépôts officiels.

Il vaudrait probablement la peine d'abandonner dnsmasq , car Fedora, contrairement à CentOS, possède un systemd-networkd assez récent, dans lequel il existe des serveurs DHCP / DNS intégrés normaux. Mais le fait que dans RHEL8 les développeurs aient refusé de prendre en charge la pile réseau avec autre chose que NM n'inspire pas confiance dans le brillant avenir du projet (méchants). Bref, je ne l'ai pas essayé.

De plus, les pilotes actuels de l'adaptateur Wi-Fi intégré ne peuvent pas être "volés" de la distribution Raspbian, mais téléchargés directement depuis github .

Voici à quoi ressemblent les fichiers du firmware Broadcom sur ma "framboise":

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

Sans eux, 5GHz / AC ne fonctionnera pas.

À propos du nombre et des noms des interfaces. Maintenant, je recommande fortement à tous ceux qui n'ont pas de besoins particuliers de ne pas recourir aux «services» des commutateurs logiciels ( pont ), qui ajoutent une charge importante à la pile réseau et empêchent le routage. Si plusieurs adaptateurs sans fil ne sont pas prévus, seules les interfaces physiques doivent être utilisées. J'ai deux Wi-Fi, donc je ne les combine que dans un pont logiciel (bien que vous puissiez vous en passer en jetant un regard différent sur le paramètre hostapd).

Et j'aime renommer les interfaces.

Pour ce faire, créez un lien symbolique dans Fedora:

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

et alors il sera possible de donner des noms significatifs sans bricoler avec udev , mais seulement au moyen de systemd-networkd.

Ici, par exemple, sont appelés adaptateurs réseau dans mon routeur:

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 - intégré, ext - externe (USB) adaptateurs Wi-Fi assemblés dans le "pont" lan ;
  • wan - Adaptateur Ethernet auquel Internet est connecté.

As-tu remarqué? fq_codel est vraiment une bonne chose. Avec le nouveau noyau Linux, ils font des merveilles dans la gamme sans fil: la féroce «qualité torrent» ne conduira pas à une dégradation soudaine de la vitesse chez les voisins. Même travailler sur IP "TV en direct" avec une chaîne chargée ne "casse" pas et ne "bégaye" pas du tout!

Le fichier de service du démon hostapd a subi des modifications mineures .

Il ressemble maintenant à ceci (en utilisant l'adaptateur intégré comme exemple):

[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

Et le "magic" hostapd-int.conf pour travailler en 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]

Un peu de «photoshop» réalisé à partir de mes «Ericsson A1018s»:

(Connexion Internet - 100 Mbps)
Fedora aarch64

Et en conclusion, une petite FAQ.

6. FAQ


6.1 Pourquoi créer un routeur Wi-Fi sur une framboise?


On pourrait répondre simplement en disant "c'est intéressant d'essayer tout ça".

Mais en fait, il me semble que le sujet est assez sérieux. À l'ère de l'Internet "sanglant", acheter un routeur dans un magasin et être pris en otage par son fabricant est une perspective très ennuyeuse. Beaucoup de gens comprennent déjà qu'il est impossible de s'asseoir avec un CVE ou une porte dérobée câblée.

Bien sûr, vous pouvez migrer vers le firmware WRT par des passionnés. Il y a probablement plus de confiance en eux, mais si vous ne voulez pas dépendre d'eux, alors seulement votre propre produit. Idéalement, un ordinateur à part entière pour la possibilité d'implémenter tout dans le monde dessus. En termes de routage, bien sûr.

Par conséquent, le choix des «framboises» est une décision purement économique: un véritable ordinateur et en même temps - peu coûteux. Bien que cela soit également possible - avec son intérieur "dual".

6.2 Mais Raspberry est un «sous-routeur»: lent et avec un seul port Ethernet!


En tant que routeur Wi-Fi domestique, «Malinka» me convient plus que. A propos de la vitesse "dans les airs", je l'ai déjà dit plus haut. Et juste un Ethernet, enfin, dans un produit similaire d'Apple, à peu près de la même manière!

Mais sérieusement, j'aimerais bien plus. Et malgré le fait que dans ma maison, tous les appareils sont connectés sans fil, parfois une connexion en cuivre est toujours requise. Pour de tels cas, j'ai un «hub mobile» en magasin:

appareil - tel que
Fedora aarch64

6.3 S'il s'agit d'un routeur, alors rien n'est dit sur le "tuning" de TCP / IP, car c'est important!


En plus de configurer la pile réseau (tcp_fastopen, YeAH, etc.), cet article et l'article précédent n'ont pas révélé d'autres nuances, en particulier le processus de préparation de la microSD pour une utilisation optimale (bien que l'installateur essaie de formater la carte mémoire de manière délicate). Le processus d'amélioration est sans fin, il vous suffit de vous arrêter à temps.

6.4 Pourquoi Fedora?


Parce que j'aime! Fedora - "mainstream" - un système de geeks, auquel, en fait, cet article est destiné. Au moment de la rédaction, peut-être le seul système d'exploitation qui pour Raspberry en version 64 bits est officiellement pris en charge par une équipe importante de développeurs (à partir de laquelle je ne peux pas attendre le noyau 5.6 ).

6.5 Le Bluetooth fonctionne-t-il? Comment est la vidéo / son / GPIO?


Je ne sais pas. L'article concerne l'installation minimale du système et son utilisation ultérieure en tant que routeur Wi-Fi.

6.6 Pourquoi tous les articles CentOS / Fedora / RedHat commencent-ils par désactiver SELinux?


Parce que le système est minimal, il n'a même pas de pare-feu et d'utilitaires pour le configurer. Qui en a besoin - ils peuvent installer en plus tout ce qui est nécessaire.

6.7 Le système ne peut pas être utilisé, le mot de passe ne peut pas être changé - pas de mot de passe. Pas de ping, rien!


Il y a un DNF . Ou cette option d'installation n'est pas pour vous - utilisez le kit de distribution des développeurs.

6.8 Où est le SWAP? Je ne peux pas vivre sans lui!


Vérité? Tant pis:

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 Je souhaite télécharger une image toute faite avec un point d'accès Wi-Fi configuré!


Pour préparer l'installateur "pour tous", il faudra un certain temps et des efforts. Si (soudain!) Cela semble vraiment intéressant et nécessaire pour quelqu'un - écrivez, nous trouverons quelque chose.



Là-dessus - je terminerai.

Je souhaite à tous une navigation en toute sécurité et un contrôle maximal sur l'infrastructure!

All Articles