Raspberry Pi + Fedora (aarch64) = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau bleu)

Dans l'article Raspberry Pi + CentOS = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau rouge) J'ai expliqué comment transformer le "Raspberry" en point d'accès sans fil grâce au système d'exploitation CentOS. En construisant mon routeur domestique selon ce schéma, j'ai satisfait mon ego créatif et obtenu une tranquillité d'esprit pour cet élément critique de mon infrastructure confortable. Cependant, la sensation d'inachevé et mon perfectionnisme intérieur ne me laissaient pas en paix : « un résultat imparfait n'a pas le droit d'exister ». L'idée que « l'idéal peut et doit être atteint » ne m'a jamais quitté.

Et un jour, sur un des forums thématiques, je suis tombé sur une discussion concernant l'architecture des systèmes d'exploitation existants pour le "Raspberry" (aarch64 vs armhfp) : quels systèmes d'exploitation 64 bits peuvent en principe être installés et fonctionner sur la version 3++ du Raspberry ?

Mon CentOS préféré pour l'architecture ARM de "Userland" n'était pas pressé de passer au dernier noyau et de devenir 64 bits. Et le dépôt EPEL, connecté Dieu sait d'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 découvrir qu'une distribution absolument oubliée était Fedora! Et cela malgré le fait que sa version
à partir de la 28e version prend officiellement en charge le Raspberry Pi 3B+ en version 64 bits !

Raspberry Pi + Fedora (aarch64) = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau bleu)
Dans cet article, je vais expliquer comment installer Fedora (aarch64) sur Raspberry Pi 3 Model B+ dans dans une version ultra minimale. Je vais brièvement aborder les caractéristiques de la mise en place d'un point d'accès Wi-Fi, révélées par l'exploitation de ma configuration précédente sur CentOS 7.

0. Ce dont vous aurez besoin

Tout comme ce qui a été mentionné dans l'article précédent :

  • Raspberry Pi 3 Model B+ ;
  • microSD >= 4 Go (ensuite, il est possible de "transférer" le système sur un support de 2 Go) ;
  • Une station de travail sous Linux et un lecteur de carte microSD ;
  • Connectivité réseau filaire entre le "Raspberry" et la station de travail sous Linux (dans ce cas, il ne sera pas nécessaire d'avoir un écran et un clavier supplémentaires pour la configuration), accès Internet depuis les deux appareils ;
  • Compétences avancées en Linux (savoir et ne pas avoir peur de : parted, dd et mkfs).

Comme dans une itération de LFS-la construction de son propre Linux, une image de distribution Fedora sera utilisée, et ensuite, sur cette base, un système minimal sera créé (sans "compilation à partir des sources").

1. Installation de la distribution originale

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

Après l'avoir enregistré sur microSD et avant de commencer à l'utiliser, il est nécessaire de :

  1. Étendre la « racine » du système de fichiers (3e 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. Supprimer l'Assistant de configuration initiale :
    find /mnt/3/etc/systemd/ -iname initial-setup.service -delete
    

  4. Autoriser l'accès par 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 démarrer la « raspberry » avec la microSD et vous y connecter via le réseau.

Le démarrage à froid prend environ une minute et demie. Caractéristiques du système après le démarrage :

Raspberry Pi + Fedora (aarch64) = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau bleu)

rpm -qa | wc -l
444

2. Construction d'un système minimal

Malheureusement, le « minimum distribution » des développeurs n'est pas le plus léger en termes de ressources. L'image du système peut être réduite encore davantage.

Pour cela, il faut exécuter un script sur la « raspberry » :

#!/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 l'exécution du script, un sous-répertoire sera créé dans le répertoire courant ($P) avec le contenu de la racine de la nouvelle édition minimale de l'OS. Vous pouvez éteindre la « raspberry » et remettre la microSD dans votre station de travail Linux.

3. Installation du système minimal

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

Une carte de 2 Go et deux partitions suffisent :

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

Après avoir préparé la microSD et copié les fichiers dessus, il faut :

  • réparer le démarrage de l'OS ;
  • activer le réseau ;
  • configurer l'accès par ssh.

La réparation du démarrage consiste à remplacer les UUID des partitions dans les fichiers :

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

et le paramètre saved_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, il faut également corriger le contenu fstab sur la microSD, afin que les points de montage correspondent aux nouveaux UUID des partitions.

La fonctionnalité réseau lors de la première activation de la « raspberry » peut être obtenue par un petit « bricolage » — créer un lien (schématiquement) :

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

et un fichier :

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

Après le téléchargement réussi — mettre en ordre le démarrage systemd-networkd:

systemctl disable systemd-networkd
systemctl enable systemd-networkd

L'accès super-utilisateur par ssh se configure de manière analogue au point 1.

En procédant soigneusement et sans erreurs, vous pouvez déplacer la microSD dans le « Raspberry Pi » et commencer à travailler avec un système d'exploitation 64 bits dans une configuration minimaliste.

4. Système prêt

L'« image » du système prêt, créée selon les instructions ci-dessus, peut être téléchargée à l'adresse suivante :
Fedora-Tiny-31-5.5.7-200.aarch64

Ce sera une archive contenant deux fichiers : un script d'installation et un TGZ avec les fichiers du système d'exploitation. L'archive doit être décompressée sur la station de travail Linux, insérez la microSD (une carte de 2 Go est suffisante) et lancez le script avec le paramètre — le nom de l'appareil :

./install /dev/mmcblk0

Faites attention !

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

Après l'exécution sans erreur du script, la carte peut être déplacée dans le « Raspberry Pi » et utilisée : obtenir une adresse IP par dhcp, le mot de passe — « 1 ».

Le système est débarrassé de tous les ID et clés, ce qui rend chaque nouvelle installation unique.

Je le répète encore une fois, le système — minimal! Donc, ne vous inquiétez pas : DNF est disponible, pour qu'il fonctionne, il faudra « inventer » le bon /etc/resolv.conf.

Le démarrage à froid du « Raspberry Pi » prend environ 40 secondes. Caractéristiques techniques du système après le démarrage :

Raspberry Pi + Fedora (aarch64) = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau bleu)

rpm -qa | wc -l
191

5. Wi-Fi

Je vais m'arrêter quelques instants sur les particularités de la mise en œuvre du point d'accès Wi-Fi. Pour des détails spécifiques, vous pouvez consulter mon précédent article.

EPEL n'est désormais plus nécessaire — tous les paquets sont présents dans les dépôts officiels.

Il aurait probablement été judicieux de se passer de dnsmasq, car dans Fedora, contrairement à CentOS, il y a un systemd-networkd suffisamment récent, qui dispose de serveurs DHCP/DNS intégrés corrects. Mais le fait que dans RHEL8, les développeurs ont abandonné le support de la pile réseau au profit de NM, n'inspire pas confiance dans l'avenir radieux du projet (vilaine affaire). Bref, je n'ai pas essayé.

Ensuite, les pilotes actuels de l'adaptateur Wi-Fi intégré peuvent être téléchargés directement depuis github.

Voici à quoi ressemblent sur mon « Raspberry Pi » les fichiers de firmware Broadcom (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, il n'est pas possible d'avoir 5GHz/AC.

Concernant le nombre et les noms des interfaces. Maintenant, je recommande vivement à tout le monde de ne pas recourir aux « services » des commutateurs virtuels sans raison particulière (bridge), qui ajoutent une charge significative à la pile réseau et étouffent le routage. S'il n'est pas prévu plusieurs adaptateurs sans fil, il convient d'utiliser exclusivement des interfaces physiques. J'en ai deux en Wi-Fi, donc je ne les regroupe qu'en un pont logiciel (bien qu'il soit possible de s'en passer, en regardant la configuration de hostapd sous un autre angle).

Et j'aime renommer les interfaces.

Pour cela, dans Fedora, il faut créer un lien symbolique :

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

et ainsi, on peut donner des noms significatifs sans fouiller dans udev, mais seulement avec les outils de systemd-networkd.

Voici comment, par exemple, les adaptateurs réseau sont nommés dans mon routeur :

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

2: wan:  mtu 1500 qdisc fq_codel state UP group default qlen 1000

3: lan:  mtu 1500 qdisc noqueue state UP group default qlen 1000

4: int:  mtu 1500 qdisc fq_codel master lan state UP group default qlen 1000

5: ext:  mtu 1500 qdisc mq master lan state UP group default qlen 1000

  • int — intégré, ext — adaptateurs Wi-Fi externes (USB) réunis en « pont » lan;
  • wan — adaptateur Ethernet, dans lequel l'Internet est connecté.

Vous avez remarqué ? fq_codel — c'est vraiment un excellent outil. Avec le nouveau noyau Linux, ils réalisent de véritables merveilles dans la bande sans fil : un intense « téléchargement torrent » ne conduit pas à une dégradation soudaine de la vitesse chez les voisins. Même la télévision IP à domicile fonctionnant « sans fil » ne se « désintègre » pas et ne « bégaye » pas du tout sur un canal chargé !

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

Il apparaît maintenant comme suit (à l'exemple de l'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 « magique » hostapd-int.conf pour fonctionner 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=FR

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", fait avec mon "Ericsson A1018s":

(connexion Internet — 100 Mbit/s)Raspberry Pi + Fedora (aarch64) = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau bleu)
Et pour conclure, une petite FAQ.

6. FAQ

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

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

Mais en réalité, je pense que c'est un sujet assez sérieux. À l'ère d'Internet «sanguinaire», acheter un routeur en magasin et rester prisonnier de son fabricant — c'est une perspective plutôt triste. Beaucoup comprennent déjà qu'il ne faut pas se retrouver avec des CVE ou une porte dérobée intégrée.

Bien sûr, on peut migrer vers des firmware WRT venant d'enthousiastes. On leur donne peut-être plus de confiance, mais si on ne veut pas dépendre d'eux non plus, alors il ne reste que son propre produit. Idéalement, un véritable ordinateur pour pouvoir y réaliser tout ce que l'on veut. En matière de routage, bien sûr.

C'est pourquoi, le choix du "Raspberry" est un choix purement économique : un vrai ordinateur et en plus — pas cher. Pourtant, peut-être aussi — avec ses propres "ambiguïtés" à l'intérieur.

6.2 Mais le Raspberry – c'est un «pas vrai routeur»: lent et avec un seul port Ethernet !

En tant que routeur Wi-Fi domestique, le "Raspberry" me satisfait amplement. J'ai déjà expliqué la vitesse «sans fil» ci-dessus. Et un seul port Ethernet, eh bien, un produit analogue d'Apple en a à peu près le même !

Et si on est sérieux, bien sûr qu'on aimerait en avoir plus. Et bien que dans mon ménage tous les appareils soient connectés sans fil, parfois un câble est tout de même nécessaire. Pour ces cas, j'ai un "hub mobile" sous la main :

un appareil – quelque chose comme çaRaspberry Pi + Fedora (aarch64) = Point d'accès Wi-Fi (ou routeur framboise sous un chapeau bleu)

6.3 Si c'est un routeur, rien n'est dit sur le "tuning" TCP/IP, car c'est important !

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

6.4 Pourquoi Fedora ?

Parce que j'aime ça ! Fedora est le "mainstream" – un système pour les geeks, pour qui cet article est en fait destiné. Au moment de la rédaction, c'est sans doute le seul OS qui est officiellement supporté pour le Raspberry en version 64 bits par une équipe de développeurs conséquente (que j'attends toujours). noyau 5.6).

6.5 Est-ce que le Bluetooth fonctionne ? Qu'en est-il de la vidéo/son/GPIO ?

Je ne sais pas. L'article concerne une 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 désactiver SELinux ?

Parce que le système est minimal, il n'y a même pas de pare-feu ni d'outils pour le configurer. Ceux qui en ont besoin peuvent installer tout ce qui est nécessaire supplémentaires.

6.7 On ne peut pas utiliser le système, impossible de changer le mot de passe – il n'y a pas de passwd. Pas de ping, rien !

Oui DNF. Ou cette option d'installation n'est pas pour vous – utilisez la distribution des développeurs.

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

Vraiment ? Eh bien, d'accord :

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 J'aimerais télécharger directement une image prête avec un point d'accès Wi-Fi configuré !

Préparer un installateur "pour tous" nécessitera un certain temps et des efforts. Si (par hasard !) cela semble vraiment intéressant et nécessaire à quelqu'un, faites-le moi savoir, nous trouverons quelque chose.

C'est ainsi que je vais conclure.

Je souhaite à tous une navigation sécurisée et un contrôle maximal sur l'infrastructure !

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster