Dans l'article 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

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 .
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 : , et ).
Comme dans une itération de -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 :
Après l'avoir enregistré sur microSD et avant de commencer à l'utiliser, il est nécessaire de :
- É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 - Désactiver SELinux
echo 'SELINUX=disabled' > /mnt/3/etc/selinux/config - Supprimer l'Assistant de configuration initiale :
find /mnt/3/etc/systemd/ -iname initial-setup.service -delete - 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 :

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 :
- /boot/efi — EFI+FAT32, partition de démarrage, 100 Mo ;
- / (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 :
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 :
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 .
Le démarrage à froid du « Raspberry Pi » prend environ 40 secondes. Caractéristiques techniques du système après le démarrage :

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 .
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 , 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 , 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 .
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 (), 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 , 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é ? — 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 .
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)
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 ça
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). ).
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 . 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
