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

L'article Raspberry Pi + CentOS = Wi-Fi Hotspot (ou routeur Raspberry avec un chapeau rouge) J'ai parlé d'un moyen de transformer un Raspberry en point d'accès sans fil à l'aide du système d'exploitation CentOS. En assemblant mon routeur domestique selon ce dessin, j'ai satisfait mon ego créatif et reçu un regain de tranquillité d'esprit pour un élément essentiel de mon infrastructure confortable. Cependant, le sentiment d'incomplétude de la solution et de perfectionnisme interne me hantait : « un résultat imparfait du travail n'a pas le droit d'exister ». L'idée que « l'idéal peut et doit être atteint » ne m'a pas quitté une minute.

Et puis un jour, sur l'un des forums thématiques, je suis tombé sur une discussion sur la profondeur de bits des systèmes d'exploitation existants pour Raspberry (aarch64 vs armhfp) : quel système d'exploitation 64 bits peut, en principe, s'adapter et fonctionner sur Raspberry version 3 ++ ?

Mon bien-aimé CentOS pour l'architecture ARM de "Userland" n'était pas pressé de passer à la dernière version du noyau et de passer au 64 bits. Et le référentiel EPEL, connecté depuis Dieu sait où sans signature numérique, était un cauchemar dans mon sommeil agité...

En tant qu'adepte des distributions basées sur RPM, j'ai été surpris de constater que le système d'exploitation pour Raspberry a été complètement oublié dans les discussions. Fedora! Et ce malgré le fait que sa sortie
à partir de la version 28 il supporte officiellement le Raspberry Pi 3B+ en version 64 bits !

Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ou routeur framboise avec un chapeau bleu)
Dans cet article, je parlerai de la méthode d'installation Fedora (aarch64) sur Raspberry Pi 3 Modèle B + в performances très minimes. Je m'attarderai brièvement sur les fonctionnalités de surélévation d'un point d'accès Wi-Fi, identifiées à la suite d'un essai de fonctionnement de ma configuration précédente sur 7 CentOS.

0. Ce dont vous aurez besoin

Tout est identique à celui indiqué dans l'article précédent :

  • Framboise Pi 3 modèle B+ ;
  • microSD >= 4 Go (plus tard, vous pourrez « transférer » le système sur un lecteur de 2 Go) ;
  • Poste de travail avec Linux et lecteur de carte microSD ;
  • Connectivité réseau filaire entre le Raspberry et un poste de travail Linux (dans ce cas, aucun moniteur ni clavier supplémentaire ne sera nécessaire pour la configuration), accès Internet depuis les deux appareils ;
  • Compétence avancée en Linux (pour connaître et ne pas avoir peur : séparé, dd и mkfs).

Semblable à itératif LFS-en construisant votre propre Linux, l'image de la distribution Fedora sera utilisée, puis sur cette base un système minimal sera créé (sans « compiler à partir des sources »).

1. Installation de la distribution originale

Coordonnées de l'image brute du système sur Internet :
https://…/fedora-secondary/releases/…/Spins/aarch64/images/Fedora-Minimal-…xz

Après l'avoir enregistré sur microSD et avant de l'utiliser, vous devez :

  1. Développez la « racine » du système de fichiers (3ème partition, 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 via 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 le « framboise » depuis la microSD et vous y connecter via le réseau.

Un démarrage à froid prend environ une minute et demie. TTX du système après chargement :

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

rpm -qa | wc -l
444

2. Assembler un système minimal

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

Pour ce faire, vous devez exécuter le script sur 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

Après avoir exécuté le script, un sous-répertoire sera créé dans le répertoire courant ($P) avec le contenu de la racine de la nouvelle édition minimale du système d'exploitation. Vous pouvez éteindre le Raspberry et remettre la microSD sur le poste de travail Linux.

3. Installation d'un système minimal

L'installation se résume à copier les fichiers « image » minimaux du système d'exploitation (obtenus à l'étape précédente) sur une microSD spécialement préparée dans les répertoires appropriés.

Une carte de 2 Go et deux partitions dessus suffisent :

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

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

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

Le correctif de démarrage consiste à remplacer l'UUID des sections dans les fichiers :

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

et paramètre save_entry= dans le dernier fichier

Dans le fichier:

microSD:/etc/fstab

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

blkid | grep mmcblk | sort

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

La fonctionnalité réseau lorsque vous allumez le Raspberry pour la première fois peut être obtenue 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 déposer :

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

Après un téléchargement réussi, rangez le lancement systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

L'accès superutilisateur via ssh est configuré de la même manière qu'à l'étape 1.

Après avoir tout fait avec soin et sans erreur, vous pouvez déplacer la microSD vers la « framboise » et commencer à travailler avec un système d'exploitation 64 bits dans une version extra minimale.

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

Il s'agira d'une archive contenant deux fichiers : le script d'installation et TGZ avec les fichiers du système d'exploitation. 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 un paramètre - le nom de l'appareil :

./install /dev/mmcblk0

Soyez prudent!

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

Après une exécution sans erreur du script, la carte peut être réorganisée en « framboise » et utilisée : capture via DHCP, mot de passe - « 1 ».

Le système est débarrassé de tous les identifiants et clés, c'est pourquoi chaque nouvelle installation est unique.

Je le répète encore une fois, le système - minimal! Ne vous inquiétez donc pas : le DNF est disponible, pour que cela fonctionne il faudra « inventer » le bon / Etc / resolv.conf.

Le démarrage à froid du Raspberry prend environ 40 secondes. TTX du système après chargement :

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

rpm -qa | wc -l
191

5. Wifi

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

EPEL n'est plus nécessaire - tous les packages sont contenus dans les référentiels officiels.

Cela vaudrait probablement la peine d'abandonner dnsmasq, puisque Fedora, contrairement à CentOS, dispose d'un systemd-networkd assez récent, qui possède des serveurs DHCP/DNS intégrés normaux. Mais le fait est que dans RHEL8, les développeurs refusé de prendre en charge la pile réseau avec autre chose que NM, n'inspire pas confiance dans l'avenir radieux du projet (canailles). 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 » dans la distribution Raspbian, mais téléchargés directement depuis github.

Voici à quoi ressemblent les fichiers du firmware Broadcom sur mon Raspberry (schématiquement) :

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, vous n'obtiendrez pas 5 GHz/AC.

Concernant le nombre et les noms des interfaces. Maintenant, je recommande fortement à tout le monde de ne pas recourir aux « services » de commutateurs logiciels sauf en cas d'absolue nécessité (pont), qui introduisent une charge importante dans la pile réseau et diminuent le routage. Si vous ne prévoyez pas d'avoir plusieurs adaptateurs sans fil, vous devez utiliser uniquement des interfaces physiques. J'ai deux Wi-Fi, donc je les combine uniquement dans un pont logiciel (bien que vous puissiez vous en passer en regardant différemment la configuration de hostapd).

Et j'adore renommer les interfaces.

Pour ce faire dans Fedora, vous devez créer un lien symbolique :

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

et puis il sera possible de donner des noms significatifs sans fouiller udev, mais uniquement en utilisant systemd-networkd.

Par exemple, voici comment s'appellent les cartes réseau de 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é, poste — des adaptateurs Wi-Fi externes (USB) assemblés en « pont » lan;
  • blême — Adaptateur Ethernet auquel Internet est connecté.

As-tu remarqué? fq_codel - une chose vraiment cool. Associés à un nouveau noyau Linux, ils font de véritables miracles dans le domaine du sans fil : un « téléchargement torrent » féroce n'entraînera pas une dégradation soudaine de la vitesse chez les voisins. Même un téléviseur IP domestique fonctionnant « en direct » avec une chaîne chargée ne « se brise » pas et ne « bégaie » pas du tout !

Le fichier du service démon a subi des modifications mineures hébergeur.

Cela ressemble maintenant à ceci (en utilisant l'exemple d'un adaptateur intégré) :

[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 hostapd-int.conf « magique » 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 petit photoshop réalisé à partir de mon Ericsson A1018 :

(Connexion Internet - 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ou routeur framboise avec un chapeau bleu)
Et enfin, une petite FAQ.

6. FAQ

6.1 Pourquoi faire un routeur Wi-Fi sur Raspberry ?

On pourrait répondre simplement, du genre « c’est intéressant d’essayer et 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 rester l'otage de son fabricant est une perspective très sombre. Beaucoup de gens comprennent déjà qu’il n’est pas possible de s’asseoir avec un CVE ou une porte dérobée intégrée.

Bien entendu, vous pouvez migrer vers le firmware WRT auprès des passionnés. On leur fait probablement plus confiance, mais si vous ne voulez pas dépendre d’eux, utilisez simplement votre propre produit. Idéalement, un ordinateur à part entière pour que tout dans le monde puisse y être réalisé. En termes de routage, bien sûr.

Choisir une « framboise » est donc une démarche purement économique : un vrai ordinateur et en même temps peu coûteux. Mais peut-être aussi - avec leurs «doubles» à l'intérieur.

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

En tant que routeur Wi-Fi domestique, le Raspberry est pour moi plus que satisfaisant. J'ai déjà parlé de la vitesse de l'air ci-dessus. Et il n'y a qu'un seul Ethernet, eh bien, dans un produit similaire d'Apple c'est à peu près pareil !

Mais sérieusement, bien sûr, j’en voudrais plus. Et même si dans ma maison tous les appareils sont connectés sans fil, une connexion en cuivre est parfois nécessaire. Pour de tels cas, j'ai un « hub mobile » en stock :

appareil - quelque chose comme çaRaspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (ou routeur framboise avec un chapeau bleu)

6.3 S'il s'agit d'un routeur, rien n'est dit sur le « réglage » de TCP/IP, car c'est important !

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

6.4 Pourquoi Fedora ?

Parce que j'aime! Fedora est un système « grand public » destiné aux geeks, à qui cet article est en réalité destiné. Au moment de la rédaction de cet article, c'est 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 (dont j'ai hâte 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 comme routeur Wi-Fi.

6.6 Pourquoi tous les articles sur CentOS/Fedora/RedHat commencent-ils par la désactivation de SELinux ?

Le système étant minime, il ne dispose même pas de pare-feu ni d’utilitaires pour le configurer. Quiconque en a besoin peut installer en plus tout ce dont il a besoin.

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

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

6.8 Où se trouve SWAP ? Je ne peux pas vivre sans lui !

Est-ce vrai? Alors ok:

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 immédiatement une image prête à l'emploi avec un point d'accès Wi-Fi configuré !

Préparer un programme d'installation « pour tout le monde » demandera du temps et des efforts. Si (tout d’un coup !) quelqu’un trouve cela vraiment intéressant et nécessaire, écrivez-nous et nous trouverons une solution.

Je vais terminer avec ça.

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

Source: habr.com

Ajouter un commentaire