Installation du serveur Ubuntu ============================== Distribution de travail : Ubuntu 20.04 LTS Lien : https://www.virtuallyghetto.com/2020/07/two-methods-to-network-boot-raspberry-pi-4.html 1/ Serveur : Configuration réseau. Interface réseau : enp2s0 @ip : 192.168.1.100 2/ Mise-à-jour du système d’exploitation Ubuntu. util01@server:~$ sudo apt-get update util01@server:~$ sudo apt-get upgrade 2/ Installation des outils de base. util01@server:~$ sudo apt-get install openssh-server openssh-client mc vim screen htop wget links 3/ Installation des utilitaires pour la configuration de PXE. util01@server:~$ sudo apt-get install nfs-kernel-server dnsmasq kpartx unzip 4/ Création du répertoire de travail. util01@server:~$ mkdir -p RASPSERVER util01@server:~$ cd RASPSERVER/ util01@server:~/RASPSERVER$ 5/ Téléchargement de l’image de l’OS Raspberry Pi OS daté du 2020-12-02 . Lien : https://www.raspberrypi.org/software/operating-systems/ util01@server:~/RASPSERVER$ wget https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2020-12-04/2020-12-02-raspios-buster-armhf.zip 6/ Décompression de l’archive de l’image. util01@server:~/RASPSERVER$ unzip 2020-12-02-raspios-buster-armhf.zip Archive: 2020-12-02-raspios-buster-armhf.zip inflating: 2020-12-02-raspios-buster-armhf.img 7/ Création des mappes de périphérique à partir de l’image. util01@server:~/RASPSERVER$ sudo kpartx -a -v 2020-12-02-raspios-buster-armhf.img add map loop6p1 (253:0): 0 524288 linear 7:6 8192 add map loop6p2 (253:1): 0 7225344 linear 7:6 532480 util01@server:~/RASPSERVER$ 8/ Création des répertoires de montage. util01@server:~/RASPSERVER$ mkdir rootmnt util01@server:~/RASPSERVER$ mkdir bootmnt 9/ Montage les devices vers les répertoires de montage. util01@server:~/RASPSERVER$ sudo mount /dev/mapper/loop6p1 bootmnt/ util01@server:~/RASPSERVER$ sudo mount /dev/mapper/loop6p2 rootmnt/ 10/ Récupération les informations techniques du Raspberry Pi. Par exemple : PI_SERIAL = 1b0f235 MAC = dc:a6:32:22:ce:87 11/ Création des répertoires spécifiques à un Raspberry Pi à partir du numéro de série. util01@server:~/RASPSERVER$ sudo mkdir -p /srv/nfs/rpi4-1b0f235 util01@server:~/RASPSERVER$ sudo mkdir -p /srv/tftpboot/1b0f235 12/ Copie des fichiers de l’image vers le répertoire réseau spécifique à un Raspberry Pi. util01@server:~/RASPSERVER$ sudo cp -a rootmnt/* /srv/nfs/rpi4-1b0f235/ util01@server:~/RASPSERVER$ sudo cp -a bootmnt/* /srv/nfs/rpi4-1b0f235/boot/ 13/ Suppression des fichiers de démarrage par défauts. util01@server:~/RASPSERVER$ sudo rm /srv/nfs/rpi4-1b0f235/boot/start4.elf util01@server:~/RASPSERVER$ sudo rm /srv/nfs/rpi4-1b0f235/boot/fixup4.dat 14/ Téléchargement des fichiers de démarrage dans leurs dernières versions. util01@server:~/RASPSERVER$ wget https://github.com/Hexxeh/rpi-firmware/raw/stable/start4.elf util01@server:~/RASPSERVER$ wget https://github.com/Hexxeh/rpi-firmware/raw/stable/fixup4.dat 15/ Copie des nouveaux fichiers de démarrage. util01@server:~/RASPSERVER$ sudo cp start4.elf /srv/nfs/rpi4-1b0f235/boot/ util01@server:~/RASPSERVER$ sudo cp fixup4.dat /srv/nfs/rpi4-1b0f235/boot/ 16/ Configuration du serveur NFS. Ouvrir : /etc/exports ajouter a la fin : /srv/nfs/rpi4-1b0f235 *(rw,sync,no_subtree_check,no_root_squash) 17/ Configuration de fstab pour la reconnaissance du répertoire de boot à partir de l'adresse MAC. Lien : https://stackoverflow.com/questions/40008276/dnsmasq-different-tftp-root-for-each-macaddress/51508180 Ouvrir : /etc/fstab Ajouter : /srv/nfs/rpi4-1b0f235/boot /srv/tftpboot/1b0f235 none defaults,bind 0 0 Action : $ sudo mount /srv/tftpboot/1b0f235/ 18/ Configuration du serveur DHCP pour Ouvrir : /etc/dnsmasq.conf Supprimer tout. Ajouter : dhcp-range=192.168.1.255,proxy log-dhcp enable-tftp tftp-root=/srv/tftpboot tftp-unique-root=mac pxe-service=0,"Raspberry Pi Boot" 19/ Suppression les lignes contenant ‘UUID’ dans le fichier ‘/etc/fstab’. Ouvrir : /nfs/rpi4-1b0f235/etc/fstab Supprimer toutes les lignes incluant 'UUID'. 20/ Activation du service SSH au démarrage. util01@server:~/RASPSERVER$ sudo touch /srv/nfs/rpi4-1b0f235/boot/ssh 21/ Configuration du fichier de démarrage du Raspberry Pi Ouvrir : /srv/nfs/rpi4-1b0f235/boot/cmdline.txt Remplacer tout par : # Sur une seule ligne !!!!! console=serial0,115200 console=tty root=/dev/nfs nfsroot=192.168.1.100:/srv/nfs/rpi4-1b0f235,vers=3,proto=tcp rw ip=dhcp rootwait elevator=deadline 22/ Création du répertoire dont le nom est l'adresse MAC. root@server:/srv/tftpboot# mkdir /srv/tftpboot/dc-a6-32-22-ce-87 23/ Copie des fichiers de boot dans ce répertoire. root@server:/srv/tftpboot# cp -a /srv/tftpboot/1b0f235/* /srv/tftpboot/dc-a6-32-22-ce-87 24/ Vérification de la configuration réseau. util01@server:~$ ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:16:d3:65:58:d6 brd ff:ff:ff:ff:ff:ff inet 192.168.1.39/24 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0 valid_lft 85890sec preferred_lft 85890sec inet6 fe80::ca9:f6f6:1094:b421/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: wlp4s0: mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 00:1b:77:26:7e:93 brd ff:ff:ff:ff:ff:ff 25/ Activer une adresse IP statique pour l’interface réseau : enp2s0. Lien : https://www.howtoforge.com/linux-basics-set-a-static-ip-on-ubuntu Ouvrir : /etc/netplan/00-installer-config.yaml Ajouter : network: version: 2 renderer: networkd ethernets: enp2s0: dhcp4: no dhcp6: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8,8.8.4.4] Action : Appliquer la configuration réseau util01@server:~$ sudo netplan apply Vérification : util01@server:~$ ip a ... 2: enp2s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:16:d3:65:58:d6 brd ff:ff:ff:ff:ff:ff inet 192.168.2.100/24 brd 192.168.2.255 scope global noprefixroute enp2s0 valid_lft forever preferred_lft forever inet6 fe80::216:d3ff:fe65:58d6/64 scope link valid_lft forever preferred_lft forever ... util01@server:~$ cd RASPSERVER/ util01@server:~/RASPSERVER$ 26/ Activation de tous les services. util01@server:~/RASPSERVER$ sudo systemctl enable dnsmasq Synchronizing state of dnsmasq.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable dnsmasq util01@server:~/RASPSERVER$ util01@server:~/RASPSERVER$ sudo systemctl enable rpcbind Synchronizing state of rpcbind.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable rpcbind util01@server:~/RASPSERVER$ util01@server:~/RASPSERVER$ sudo systemctl enable nfs-server util01@server:~/RASPSERVER$ sudo systemctl enable nfs-kernel-server 27/ Démarrage de tous les services. util01@server:~/RASPSERVER$ sudo systemctl start rpcbind util01@server:~/RASPSERVER$ sudo systemctl start nfs-server util01@server:~/RASPSERVER$ sudo systemctl restart nfs-kernel-server 28/ Lancement du service DHCP ‘dnsmasq’. util01@server:~/RASPSERVER$ sudo killall dnsmasq util01@server:~/RASPSERVER$ sudo systemctl start dnsmasq ou util01@server:~/RASPSERVER$ sudo systemctl restart dnsmasq util01@server:~/RASPSERVER$ sudo systemctl status dnsmasq.service Erreur 1 : … nov. 25 13:32:14 serveurrasp dnsmasq[18085]: dnsmasq: failed to create listening socket for port 53: Adresse déjà utilisée nov. 25 13:32:14 serveurrasp dnsmasq[18085]: failed to create listening socket for port 53: Adresse déjà utilisée … Solution : Lien : https://askubuntu.com/questions/191226/dnsmasq-failed-to-create-listening-socket-for-port-53-address-already-in-use util01@server:~/RASPSERVER$ sudo ss -lp "sport = :domain" Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=645,fd=12)) tcp LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=645,fd=13)) util01@server:~/RASPSERVER$ sudo systemctl disable systemd-resolved Removed /etc/systemd/system/multi-user.target.wants/systemd-resolved.service. Removed /etc/systemd/system/dbus-org.freedesktop.resolve1.service. util01@server:~/RASPSERVER$ sudo systemctl mask systemd-resolved Created symlink /etc/systemd/system/systemd-resolved.service → /dev/null. util01@server:~/RASPSERVER$ util01@server:~/RASPSERVER$ sudo systemctl stop systemd-resolved Erreur 2: déc. 11 13:22:44 server dnsmasq[732]: directory /etc/resolv.conf for resolv-file is missing, cannot poll déc. 11 13:22:44 server dnsmasq[732]: FAILED to start up Solution : Lien : https://askubuntu.com/questions/1108260/ubuntu-18-04-systemd-resolve-doesnt-read-the-etc-resolv-conf-properly util01@server:~$ sudo rm /etc/resolv.conf Créer : /etc/resolv.conf Ajouter : nameserver 127.0.0.1 29/ Allumer le Raspberry Pi. 30/ Visualisation des logs. util01@server:~/RASPSERVER$ tail -f /var/log/syslog