{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/03/demarrage-en-reseau-dun-raspberry-pi-3-a-partir-dun-serveur-ubuntu-bien-choisir-son-serveur-d-impression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/03/demarrage-en-reseau-dun-raspberry-pi-3-a-partir-dun-serveur-ubuntu-bien-choisir-son-serveur-d-impression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/03/demarrage-en-reseau-dun-raspberry-pi-3-a-partir-dun-serveur-ubuntu-bien-choisir-son-serveur-d-impression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Démarrage en réseau d’un Raspberry Pi 3 à partir d’un serveur Ubuntu\n\n &#8211; Bien choisir son serveur d impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-02T22:25:07+00:00","modified_at":"2019-05-02T22:25:07+00:00","word_count":5383,"reading_time_seconds":1615,"summary":"introduction Chez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure. Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#39;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses [&hellip;]","summary_points":["introduction\nChez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure.","Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#39;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses cartes SD, et évite en outre la nécessité de s’inquiéter de la vie des cartes SD après de nombreuses opérations d’écriture.","Cet article est initialement basé sur les guides suivants, mais il inclut un peu plus de détails et une procédure de dépannage:\nIl est également possible de démarrer en réseau un Raspberry Pi 2.","Installer\nLe serveur\nUn HP Micro Server (G7 N54L) exécutant Ubuntu 16.04.3 LTS (effectuant diverses autres tâches également)\nLes clients)\nRaspberry Pi 3 modèle B (connecté via Ethernet câblé, ce processus ne fonctionne pas avec le WiFi)\nLe système d&#39;exploitation cible\nRaspbian 9 Lite (non Lite devrait fonctionner aussi)\nPréparation du système de fichiers racine au démarrage\nDans cette série d&#39;étapes, nous allons copier une nouvelle installation Raspbian, avec quelques modifications sur notre serveur de démarrage, et l&#39;exposer via un partage NFS."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"635161335c896c6cca2e0007627ff9db","plain_text":"introduction\nChez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure. Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#39;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses cartes SD, et évite en outre la nécessité de s’inquiéter de la vie des cartes SD après de nombreuses opérations d’écriture.\nCet article est initialement basé sur les guides suivants, mais il inclut un peu plus de détails et une procédure de dépannage:\nIl est également possible de démarrer en réseau un Raspberry Pi 2.\nInstaller\nLe serveur\nUn HP Micro Server (G7 N54L) exécutant Ubuntu 16.04.3 LTS (effectuant diverses autres tâches également)\nLes clients)\nRaspberry Pi 3 modèle B (connecté via Ethernet câblé, ce processus ne fonctionne pas avec le WiFi)\nLe système d&#39;exploitation cible\nRaspbian 9 Lite (non Lite devrait fonctionner aussi)\nPréparation du système de fichiers racine au démarrage\nDans cette série d&#39;étapes, nous allons copier une nouvelle installation Raspbian, avec quelques modifications sur notre serveur de démarrage, et l&#39;exposer via un partage NFS.\nÉtape 1: Carte SD Raspbian Lite\nTéléchargez l&#39;image Raspbian Lite à partir d&#39;ici.\nFlash sur une carte Micro SD, le moyen le plus simple consiste à utiliser Etcher (il prend même un zip directement et vérifie également le contenu après).\n\nÉtape 2: démarrez le Raspberry Pi à partir de la nouvelle carte SD\nRemarque: Pour cela, un écran, un clavier et un câble Ethernet (avec accès à Internet) doivent être connectés.\nUne fois que le pi démarre, connectez-vous avec les informations d&#39;identification par défaut (pi / framboise).\nÉtape 3: Activer SSH (facultatif)\nCourir sudo raspi-config, sélectionnez l’option 5 (Options d’interface), P2 (SSH) et sélectionnez Oui pour activer SSH.\nVous pouvez ensuite quitter cet utilitaire et continuer les étapes suivantes via SSH, si vous préférez, ou continuer localement.\nL’IP est imprimé au démarrage mais peut également être visualisé en exécutant adresse ip:\npi @ raspberrypi: ~ $ ip addr\n1: lo:  mtu 65536 qdisc noqueue state UNKNOWN groupe par défaut qlen 1\n    lien / bouclage 00: 00: 00: 00: 00: 00 petit-déjeuner: 00: 00: 00: 00: 00: 00\n    inet 127.0.0.1/8 portée hôte bas\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 :: hôte de portée 1/128\n       valid_lft pour toujours Preferred_lft pour toujours\n2: eth0:  mtu 1500 qdisc état pfifo_fast UP groupe par défaut qlen 1000\n    lien / éther b8: 27: eb: 41: 8e: fa brd ff: ff: ff: ff: ff: ff\n    inet 192.168.1.135/24 brd 192.168.1.255 étendue globale eth0\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 fe80 :: 2036: 591: lien de cef2: 341a / 64 scope\n       valid_lft pour toujours Preferred_lft pour toujours\n3: wlan0:  mtu 1500 qdisc état pfifo_fast groupe DOWN par défaut qlen 1000\n    link / ether b8: 27: eb: 14: db: af brd ff: ff: ff: ff: ff: ff\n\nDans ce cas, notre interface filaire est eth0, dont l&#39;adresse est 192.168.1.135.\nÉtape 4: Mettez à jour Debian\nPremière exécution sudo apt-get update pour vous assurer que tous les fichiers d&#39;index des paquets sont à jour.\nPuis, lancez sudo apt-get upgrade installer les dernières versions de tous les packages actuellement installés.\nPuis, lancez sudo apt-get dist-upgrade qui gère intelligemment les dépendances changeantes avec les nouvelles versions de paquets.\nDans les deux cas, sur demande, vérifiez et confirmez que vous êtes satisfait des modifications proposées.\nÉtape 5: désactiver l&#39;échange\nsudo dphys-swapfile swapoff\nsudo dphys-swapfile désinstaller\nsudo update-rc.d dphys-swapfile supprimer\n\nÉtape 6: Mettre à jour le Pi (firmware)\nCertains fichiers du suivant branche de la rpi-firmware Un référentiel est requis pour que ce processus fonctionne.\nCette étape est probablement optionnelle si bootcode.bin est utilisé à partir de GitHub dans les étapes TFTP ci-dessous.\nModifier: J&#39;ai également constaté que l&#39;utilisation des fichiers img du noyau raspbian &#39;stock&#39; pouvait provoquer des erreurs de démarrage désagréables.\nCourir branche sudo = prochaine mise à jour rpi.\nModifier (2018-07-14): Attention, la prochaine branche semble être obsolète, la mise à jour depuis le maître (par défaut) fonctionne bien pour 3B +.\nDétails sur rpi-update peut être trouvé ici https://github.com/Hexxeh/rpi-update.\nIl est probable que cela se termine en disant:\n    *** Un redémarrage est nécessaire pour activer le nouveau firmware\n\nAlors, redémarrez maintenant avec redémarrage sudo.\nÉtape 7: &quot;Cloner&quot; le système de fichiers\nUne fois que le Pi a redémarré, localement ou via SSH, lancez:\nsudo mkdir -p / nfs / client1\nsudo apt-get install -y rsync\nsudo rsync -xa --progress --exclude / nfs / / nfs / client1\n\n\nRemarque: Vous devez faire cela sur un Pi en cours d&#39;exécution, la copie de la carte SDK sur un autre hôte ne semble pas fonctionner.\nRégénérez les clés d’hôte SSH (probablement optionnel):\ncd / nfs / client1\nsudo mount --bind / dev dev\nsudo mount --bind / sys sys\nsudo mount --bind / proc proc\nsudo chroot.\nrm / etc / ssh / ssh_host_ *\ndpkg-reconfigure openssh-server\nsortie\nsudo umount dev\nsudo umount sys\nsudo umount proc\n\nSupprimez le fichier d&#39;échange dupliqué s&#39;il existe:\nsudo rm / nfs / client1 / var / swap\n\nCréez ensuite une archive tar du dossier nfs (vous pouvez le gziper mais le Pi n’est pas si puissant que ça n’en vaut probablement pas la peine par rapport au temps de transfert, mais c’est juste une hypothèse).\nle -p drapeau doit préserver les autorisations, etc.\nsudo tar -cpf /nfs.tar / nfs\n\nJe me suis retrouvé avec un goudron de 1,2 Go:\npi @ raspberrypi: ~ $ ls -alh /nfs.tar\n-rw-r - r-- 1 racine racine 1.2G 2 mars, 20h56 /nfs.tar\n\nEnfin, cette archive doit se retrouver sur le serveur, ce qui importe peu &#8211; rsync, scp, ou prenez la carte et copiez-la &#8230;\npar exemple:\npi @ raspberrypi: ~ $ scp /nfs.tar paul @ nas: /home/paul/nfs.tar\nnfs.tar 2% 24MB 12.9MB / s 01:25 ETA\n\nNous avons maintenant terminé avec ce Pi pour le moment, la carte SD sera utilisée plus tard.\nIl existe d&#39;autres instructions ci-dessous pour &quot;cloner&quot; un Pi existant en utilisant rsync pour préserver les autorisations, ce qui peut être plus rapide si vous souhaitez cloner directement sur votre serveur.\nActiver le démarrage réseau\nCes étapes activent le mode de démarrage USB (qui inclut PXE) sur le Pi.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nÉtape 2: Configuration de démarrage\nNous devons activer le mode de démarrage USB (qui prend également en charge PXE).\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt\n\nQui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on\n\n# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi\n\n# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README\n\n# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1\n\nPuis redémarrez:\nredémarrage sudo\nUne fois que le Pi est rétabli, vérifiez que l’OTP a été programmé correctement avec vcgencmd otp_dump | grep 17::\npi @ raspberrypi: ~ $ vcgencmd otp_dump | grep 17:\n17: 3020000a\n\nSi la sortie se termine par 3020000a alors cela a fonctionné.\nUne fois de plus, nous avons fini avec les cartes Pi et SD pour le moment, vous pouvez inverser la /boot/config.txt changer si vous souhaitez continuer à utiliser la carte à d’autres fins, le reste de la /démarrage la partition sur la carte SD sera toujours nécessaire plus tard.\nEn fait, le réseau démarre le Pi\nDans cette série d&#39;étapes, nous apportons les modifications requises côté serveur pour lui permettre de démarrer.\nÉtape 1: DHCP\nVotre serveur DHCP local doit pouvoir envoyer quelques options DHCP spécifiques.\nMon serveur exécute déjà le serveur DHCP ISC qui peut être installé avec sudo apt-get install isc-dhcp-server.\nAuparavant, ma configuration DHCP (/etc/dhcp/dhcpd.conf) servait des adresses IP de la plage 192.168.1.100-200, ainsi qu&#39;un suffixe DNS local spécifique, des serveurs de noms et la passerelle, ainsi qu&#39;un certain nombre de réservations IP (non incluses ci-dessous). :\nL&#39;adresse de la directive next-server doit être ajoutée: serveur suivant 192.168.1.50;, ainsi que le nom du serveur TFTP: option tftp-nom-serveur &quot;192.168.1.50&quot;;.\nJe n&#39;ai pas rencontré le avoir besoin pour l&#39;entrée tftp-nom-serveur avant le démarrage PXE des ordinateurs / serveurs standard (x86 / x64).\nCe fil de discussion a permis d’affiner certaines des modifications de configuration requises pour isc-dhcp-server.\nAprès toute modification, redémarrez le service:\nsudo service redémarrage du serveur isc-dhcp-server\n\nL&#39;activité DHCP peut être visualisée soit en finissant syslog tail -f / var / log / syslog | grep dhcpd:\n-&gt;% tail -f / var / log / syslog | grep dhcpd\n2 mars 21:48:17 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:17 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1\n\nOu en utilisant tcpdump: sudo tcpdump -i em1 port bootpc\n-&gt;% sudo tcpdump -i em1 port bootpc\n21: 48: 17.817689 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 17.818171 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300\n21: 48: 27.207000 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 27.207371 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300\n\nLorsque le Pi est allumé après l&#39;activation du mode de démarrage USB, vous pouvez le voir à la recherche d&#39;une adresse IP.\nÉtape 2: TFTP\nInstallez le service TFTP (qui fonctionne avec xinetd):\nsudo apt-get install -y tftpd\n\nCréer un fichier de configuration tftpd /etc/xinetd.d/tftp contenant:\nEt créer le / tftpboot dossier spécifié ci-dessus:\nsudo mkdir / tftpboot\n\nPuis enfin redémarrez xinetd:\nsudo service xinetd restart\n\nPour afficher l’activité du syslog de fin de serveur TFTP avec tail -f / var / log / syslog | grep tftpd:\nVérifiez la connectivité et la journalisation à partir d&#39;un autre hôte:\nClient:\npaul @ box [21:54:00] [~] \n \n \n \n-&gt;% tftp 192.168.1.50\ntftp&gt; se faire tester\nCode d&#39;erreur 1: fichier non trouvé\ntftp&gt; \n\nServeur:\npaul @ nas [21:53:48] [~] \n \n \n \n-&gt;% tail -f / var / log / syslog | grep tftpd\n2 mars 21:54:04 nas tftpd[1800]: tftpd: essayer d&#39;obtenir le fichier: test\n2 mars 21:54:04 nas tftpd[1800]: tftpd: fichier de desserte de / tftpboot\n\nMaintenant, lorsque le Pi est démarré après les entrées DHCP, Syslog devrait afficher une activité TFTP:\ntftpd: essayant d&#39;obtenir le fichier: bootsig.bin\ntftpd: fichier de desserte de / tftpboot\n\nRemarque: Le journal n&#39;indique pas d&#39;échec car ce fichier n&#39;existe pas encore.\nCopier tous les fichiers du /démarrage partition de la carte SD à la / tftpboot dossier. Si le micrologiciel Pi a été mis à jour de la manière décrite ci-dessus, il ne devrait pas y avoir de problème, mais le dernier bootcode.bin de GitHub n&#39;est pas requis.\npar exemple:\npaul @ box [10:21:09] [/media/paul/boot] \n \n \n \n-&gt;% 7z un boot.7z / media / paul / boot / *\npaul @ box [10:35:39] [/media/paul/boot] \n \n \n \n-&gt;% scp boot.7z nas:\n\npaul @ nas [10:21:30] [~/boot] \n \n \n \n-&gt;% 7z x ../boot.7z\npaul @ nas [10:21:16] [~/boot] \n \n \n \n-&gt;% sudo mv * / tftpboot\n\nRemarque: Comme l&#39;a noté un lecteur, la liaison de la racine TFTP au dossier de démarrage de l&#39;arborescence NFS permet la mise à jour du microprogramme. La liaison ou la copie du contenu de boot vers NFS permet également à I2C et SPI de fonctionner, car les superpositions de / boot sont disponibles pour le système d&#39;exploitation.\nAttention: Si d&#39;autres fichiers de GitHub (éventuellement les fichiers start / fixup elf) sont utilisés, le Pi ne pourra PAS voir toutes les ressources disponibles telles que la RAM.\nLes journaux affichent les fichiers demandés. Un nettoyage peut donc être effectué si vous le souhaitez.\ntftpd: essayer d&#39;obtenir le fichier: bootcode.bin\nessayer d&#39;obtenir le fichier: bootsig.bin\ntftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\ntftpd: essayer d&#39;obtenir le fichier: autoboot.txt\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: start.elf\ntftpd: essayer de récupérer le fichier: fixup.dat\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: dt-blob.bin\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayant d&#39;obtenir le fichier: bootcfg.txt\ntftpd: essayer d&#39;obtenir le fichier: cmdline.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery8.img\ntftpd: essayant d&#39;obtenir le fichier: recovery8-32.img\ntftpd: essayant d&#39;obtenir le fichier: recovery7.img\ntftpd: essayer d&#39;obtenir le fichier: recovery.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8-32.img\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayer d&#39;obtenir le fichier: armstub8.bin\ntftpd: essayant d&#39;obtenir le fichier: armstub8-32.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub7.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub.bin\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayant d&#39;obtenir le fichier: bcm2710-rpi-3-b.dtb\ntftpd: essayer d&#39;obtenir le fichier: overlays / rpi-ft5406.dtbo\ntftpd: essayant d&#39;obtenir un fichier: overlays / rpi-backlight.dtbo\ntftpd: essayer d&#39;obtenir le fichier: config.txt\n\nTout va bien lorsque le PI démarre, il affichera d&#39;abord l&#39;écran de dégradé habituel:\nEt puis, semblent rester bloqués dans l’attente de la carte SD:\n\nSi l&#39;un des fichiers requis est manquant, DHCP n&#39;est pas configuré correctement ou ne parvient pas à joindre TFTP. D&#39;après mon expérience, vous n&#39;obtiendrez même pas l&#39;écran de dégradé.\nÉtape 3: NFS\nInstallez le serveur NFS:\nsudo apt-get install -y serveur nfs-kernel\n\nExtrayez l&#39;archive tar à partir des étapes ci-dessus.\nEncore une fois, pour préserver les autorisations sudo et - même propriétaire sont importants:\nsudo tar --same-owner -xvf nfs.tar                        \n\nEt déplacez le dossier nfs à la racine:\nsudo mv nfs /\n\nEt puis configurez l&#39;exportation NFS, en redémarrant NFS après et en vous assurant qu&#39;elle est activée:\necho &quot;/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)&quot; | sudo tee -a / etc / exports\nsudo systemctl enable rpcbind\nsudo systemctl redémarrer rpcbind\nsudo systemctl enable nfs-kernel-server\nsudo systemctl redémarrer nfs-kernel-server\n\nMaintenant, il faut dire au Pi de démarrer à partir du serveur NFS, créer / éditer /tftpboot/cmdline.txt avec le contenu:\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client1, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite\n\nCela peut également être copié et édité à partir de la partition de démarrage de la carte SD.\nEnfin, supprimez toutes les autres entrées du fichier fstab / nfs / client1 / etc / fstab de sorte qu&#39;il ne contienne que l&#39;entrée proc:\nproc / proc proc par défaut 0 0\n\nLe Pi devrait maintenant démarrer complètement.\nVous pouvez éditer /nfs/client1/etc/rc.local pour préciser que le Pi a démarré sur le réseau:\n#! / bin / sh -e\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP bloquée dans le réseau est% s  n&quot; &quot;$ _IP&quot;\nFi\n\nsortie 0\n\n\nPendant le processus de démarrage, les journaux indiquent la configuration du réseau et NFS, ce qui peut être utile pour résoudre les problèmes de débogage (les lignes d&#39;IP-Config et suivantes):\n\nÉtape 4: Configuration par Pi (facultatif)\nJ&#39;ai un écran TFT pour le Pi qui est à l&#39;envers par défaut:\n\nLa solution consiste à ajouter la ligne suivante à /boot/config.txt:\nlcd_rotate = 2\n\nSi je fais ça dans /tftpboot/config.txt il s&#39;appliquera à tous les PIS amorcés sur le réseau. Heureusement, le Pi vérifie d’abord un dossier en fonction de son adresse MAC (le numéro de série est indiqué ici), comme indiqué à la dernière ligne ci-dessous (copié à partir de la séquence de démarrage ci-dessus):\n2 mars 22:21:19 nas tftpd[2579]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 22:21:19 nas tftpd[2581]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 22:21:19 nas tftpd[2583]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\n\nMon PI a le MAC de ea: 1b: 3c: 41 donc un dossier pour cela doit être créé:\nsudo mkdir / tftpboot / ea1b3c41\n\nSi le PI trouve se lancer là, il recherchera tous les autres fichiers là aussi, pour économiser de l’espace, ils peuvent être liés symboliquement avec sudo ln -s / tftpboot / *. qui donne:\npaul @ nas [23:08:25] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ls -alh\ntotal 8.0K\ndrwxr-xr-x 2 racine racine 4.0K 2 mars 23:08.\ndrwxr-xr-x 3 racine racine 4.0K 2 mars 23:06 ..\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\nlrwxrwxrwx 1 racine racine 18 mars 2 23h08 ea1b3c41 -&gt; / tftpboot / ea1b3c41\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf\n\nNous pouvons déplacer le lien d&#39;auto-référencement nouvellement créé:\nsudo rm / tftpboot / ea1b3c41 / ea1b3c41\n\nDésormais, lorsque Pi démarrera, il extraira tous les fichiers suivants de ce dossier:\n2 mars 23:09:41 nas tftpd[5282]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 23:09:41 nas tftpd[5284]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 23:09:41 nas tftpd[5286]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\n2 mars 23:09:41 nas tftpd[5288]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / autoboot.txt\n2 mars 23:09:41 nas tftpd[5290]: tftpd: essayant d’obtenir le fichier: ea1b3c41 / config.\n...\n\nMaintenant modifié config.txt peut être ajouté, soit copié de / tftpboot et changé, ou de la /démarrage partition d&#39;une carte SD:\npaul @ nas [23:10:12] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ll\ntotal 4,0K\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\n-rw-r - r-- 1 racine racine 1.3K 2 mars 23:10 config.txt\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf\n\nSi config.txt était déjà symboliquement lié les supprimer en premier.\nMaintenant, cela commence avec l’écran dans le bon sens:\n\nCarte d&#39;activation / de vérification du mode de démarrage USB\nLes étapes ci-dessous décrivent comment créer une carte SD qui activera et vérifiera le mode de démarrage USB (PXE), ce qui facilitera la configuration d&#39;un grand nombre de périphériques Pi 3 en une seule fois.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nDans les étapes suivantes, quelques fichiers sont édités, ce qui peut être fait sur un Pi ou une autre machine pouvant éditer /démarrage et rootfs systèmes de fichiers.\nÉtape 2: Configuration de démarrage\nComme ci-dessus, nous devons activer le mode de démarrage USB.\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt\n\nQui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on\n\n# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi\n\n# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README\n\n# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1\n\nÉtape 3: Vérifiez au démarrage\nAvec un simple script, le Pi peut être vérifié au démarrage. L’exemple ci-dessous efface l’écran pour améliorer la lisibilité (ce qui n’est pas utile pour le débogage des problèmes d’amorçage), puis s’endormit pendant une longue période (24h), empêchant le Pi de s’amorcer complètement afin que la sortie soit clairement visible, de la couleur ou un autre formatage pouvant être ajouté. c&#39;est plus évident!\nCréer /root/check-netboot.sh avec le contenu suivant:\n#! / bin / bash\n\nclair\n\nCHECK = $ (vcgencmd otp_dump | grep 17 :)\n\nsi [[ \"$CHECK\" == \"17:3020000a\" ]]; puis\n  echo &quot;Mode de démarrage correct :) ($ CHECK)&quot;\nautre\n  echo &quot;!!! Le mode de démarrage a échoué, valeur: $ CHECK&quot;\nFi\n\ndormir 86400\n\nAssurez-vous de le rendre exécutable:\nsudo chmod + x /root/check-netboot.sh\n\nmodifier /etc/rc.local appeler check-netboot.sh:\n\n\n\n\n#! / bin / sh -e\n\n# Imprimer l&#39;adresse IP\n_IP = $ (nom d&#39;hôte -I) || vrai\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP est% s  n&quot; &quot;$ _IP&quot;\nFi\n\n/root/check-netboot.sh\n\nsortie 0\n\nÀ partir de cette carte, chaque Pi 3 peut être initialisé une fois, ce qui doit activer le mode de démarrage USB (PXE) et le confirmer. Le script peut être mis à jour pour éteindre en cas de succès avec éteindre après le premier écho dans check-netboot.sh.\nQuelques notes\nInstallation partagée\nTous les périphériques ont un accès en lecture-écriture au système de fichiers NFS dans la configuration ci-dessus, de sorte que tous les packages ou modifications installés sur l&#39;un d&#39;entre eux sont disponibles pour tous.\nEn outre, tout accès SSH ou clé d’hôte ainsi que le / etc / passwd Les fichiers sont tous partagés, ces modifications se propagent également.\nBien que cela puisse faciliter les modifications globales (installation de paquets à partir d&#39;apt), il est lent et j&#39;ai parfois vu des erreurs, bien que cela ait été lié à des permissions avant que je trouve une solution à cela, il semble préférable de faire des modifications localement. et re-cloner le système de fichiers.\nDébogage NFS\nInitialement, pour tenter de comprendre si le Pi s’amorçait à partir du réseau, il était utile d’activer le débogage NFS avec rpcdebug -m nfsd -s proc qui rapporte assez verbalement à syslog.\nNe désactiver l&#39;exécution rpcdebug -m nfsd -c\nPlus de détails ici.\nÉcran tactile\nActuellement, il semble que l&#39;écran tactile du Raspberry Pi ne soit pas détecté lors du démarrage du réseau. Résoudre cela est toujours un travail en cours &#8230;\nMise à jour (2019-04-06): J&#39;ai finalement eu le temps d&#39;essayer atftp, qui semble avoir résolu le problème de détection de l&#39;écran tactile.\nConfiguration par appareil\nLes étapes ci-dessus pour activer chaque périphérique config.txt les options peuvent également être utilisées pour remplacer cmdline.txt (en supprimant d’abord la version liée par un lien symbolique) et spécifiez un autre chemin NFS. / etc / exports aurait également besoin d&#39;être mis à jour.\npar exemple:\nroot @ nas: / tftpboot / ea1b3c41 # rm cmdline.txt\nroot @ nas: / tftpboot / ea1b3c41 # cp ../cmdline.txt.\nroot @ nas: / tftpboot / ea1b3c41 # vi cmdline.txt \n\ncmdline.txt maintenant contenu (note client 2):\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client2, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite\n\n/ etc / exports contient:\n# / etc / exports: la liste de contrôle d&#39;accès pour les systèmes de fichiers pouvant être exportés\n# aux clients NFS. Voir exportations (5).\n#\n# Exemple pour NFSv2 et NFSv3:\n# / srv / homes nom_hôte1 (rw, synchronisation, no_subtree_check) nom_hôte2 (ro, synchronisation, no_subtree_check)\n#\n# Exemple pour NFSv4:\n# / srv / nfs4 gss / krb5i (rw, sync, fsid = 0, crossmnt, no_subtree_check)\n# / srv / nfs4 / homes gss / krb5i (rw, sync, no_subtree_check)\n#\n/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)\n/ nfs / client2 * (rw, sync, no_subtree_check, no_root_squash)\n\n/ nfs / client2 est une copie de / nfs / client1 avec un modifié /etc/rc.local vérifier.\nCloner un autre Pi avec rsync\nL’exécution à partir du serveur NFS clonera en tant que racine des deux côtés, ce qui devrait préserver les autorisations sans qu&#39;il soit nécessaire de créer ou de tar / nfs dossier sur l&#39;appareil.\nLa première sudo permet à rsync de définir les autorisations et la propriété appropriées sur le système de fichiers local. le --rsync-path = &quot;sudo rsync&quot; exécute rsync en tant que root sur le Pi pour s’assurer qu’il a accès à tous les fichiers. Avec la configuration sudoers par défaut, rien ne sera demandé. pi mot de passe SSH de l&#39;utilisateur.\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats pi@192.168.1.59: / / nfs / client1\n\nN&#39;oubliez pas de modifier / etc / fstab dans le système de fichiers NFS par la suite, ainsi que la suppression / var / swap si ce n&#39;était pas exclu.\nUn script simple pour le faire clone.sh:\n#! / bin / bash\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats $ 1: / $ 2\ngrep proc $ 2 / etc / fstab&gt; $ 2 / etc / fstab.new\nmv $ 2 / etc / fstab.new $ 2 / etc / fstab\n\nCourir comme ./clone.sh pi@192.168.1.59 / nfs / clientX.\nAutorisations et Sudo\nSi vous n&#39;utilisez pas rsync comme ci-dessus ou tar avec les indicateurs d&#39;autorisations spécifiques décrits précédemment, après la création du système de fichiers NFS, les autorisations peuvent être héritées du chemin d&#39;extraction ou similaire si les instructions tar spécifiques ci-dessus ne sont pas suivies:\nroot @ nas: / nfs / client1 # ll\ntotal 88\ndrwxr-xr-x 22 paul paul 4096 2 mars 20:45 ./\ndrwxr-xr-x 4 paul paul 4096 3 mars 09:53 ../\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 bin /\ndrwxr-xr-x 2 paul paul 4096 1 janvier 1970 botte /\ndrwxr-xr-x 3 paul paul 4096 1 janv. 1970 boot.bak /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:39 dev /\ndrwxr-xr-x 83 paul paul 4096 3 mars 09:59 etc /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 accueil /\ndrwxr-xr-x 17 paul paul 4096 2 mars 19:12 lib /\ndrwx ------ 2 paul paul 4096 29 nov. 02h35 perdus + trouvés /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 média /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 mnt /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 opt /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 proc /\ndrwx ------ 2 paul paul 4096 2 mars 19:13 racine /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:44 courir /\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 sbin /\ndrwxr-xr-x 2 paul paul 4096 29 nov 01:06 srv /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 sys /\ndrwxrwxrwt 8 racine racine 4096 3 mars 09:56 tmp /\ndrwxr-xr-x 10 paul paul 4096 29 nov. 01:06 usr /\ndrwxr-xr-x 11 paul paul 4096 3 mars 09:56 var /\n\nPour résoudre ce problème, attribuez la propriété racine à tous les fichiers sauf à la maison, notez l&#39;utilisation de l&#39;UID et du GID, car ils ne correspondent pas aux noms d&#39;entité du serveur:\nroot @ nas: / nfs / client1 # sudo chown root: root. -Rf\nroot @ nas: / nfs / client1 # chown 1000: 1000 home / pi -Rf\n\nSi essayant de sudo sur un réseau démarré Pi et obtenant l&#39;erreur suivante:\nsudo: / usr / bin / sudo doit appartenir à uid 0 et avoir le bit setuid défini\n\nEnsuite, assurez-vous que setuid le bit est mis:\nroot @ nas: / nfs / client1 # chmod / usr / bin / sudo\n\nLes autorisations peuvent être vérifiées par rapport à l&#39;installation locale d&#39;Ubuntu:\nroot @ nas: / nfs / client1 # ls -alh / usr / bin / sudo\n-rwsr-xr-x 1 racine racine 140K 4 juillet 2017 / usr / bin / sudo\nroot @ nas: / nfs / client1 # ls -alh usr / bin / sudo\n-rwsr-xr-x 1 racine racine 133K 5 juin 2017 usr / bin / sudo\n\nCeci n’est toujours pas parfait, il est donc fortement recommandé d’utiliser rsync ou tar comme décrit précédemment.\nDes sauvegardes\nLa racine NFS peut facilement être sauvegardée:\nroot @ nas: / nfs # cp client1 sauvegarde -Rf\n\nIl serait sage de le sauvegarder avant d’apporter des modifications à la configuration matérielle ou au package, juste au cas où.\nÉchecs de démarrage\nSi le Pi ne demande rien à TFTP, il pourrait s&#39;agir d&#39;un problème de configuration DHCP ou d&#39;un problème d&#39;accès TFTP.\nSi vous voyez le Pi faire peu ou pas plus loin que de demander bootcode.bin alors il est possible que la mauvaise version des fichiers se trouve dans le dossier tftp, assurez-vous que les prochaines versions de branche sont utilisées:\n2 mars 23:11:31 nas tftpd[5385]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n\nSi cela va plus loin, mais se bloque comme indiqué ci-dessus, il pourrait s&#39;agir d&#39;un problème d&#39;accès au système de fichiers / NFS.\nAttention au cache de fichiers TFTP\nNon prouvé. Cependant, lors du débogage du problème de RAM mal signalé, j&#39;ai remplacé mon dossier de démarrage personnalisé (par de nouveaux liens symboliques), mais le Pi à écran tactile semblait toujours récupérer les anciens fichiers car il signalait une mémoire RAM inférieure.\nAprès un redémarrage de xinetd, tout allait bien &#8230;\nPerformance\nL&#39;installation et la configuration de paquets, etc. vont naturellement être plus lentes car le Pi ne dispose que d&#39;Ethernet à 100 Mbits et des frais généraux liés à l&#39;utilisation d&#39;un système de fichiers basé sur le réseau.\nPour des raisons de rapidité, toutes les configurations pourraient être effectuées sur SD, puis copiées en suivant les étapes ci-dessus.\nRéservations DHCP\nPour vous simplifier la vie, vous pouvez ajouter des réservations d’adresses DHCP dans le corps principal de la configuration DHCP afin que chaque adresse MAC reçoive la même adresse IP:\n{\n\n  ...\n\n  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n  \n\n  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n  \n\nNom d&#39;hôte contrôlé par DHCP sur Raspbian\nEn théorie, la configuration devrait être aussi simple que celle indiquée ci-dessous:\n\n\n  ...\n\n  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n    option nom-hôte &quot;pi3-1&quot;;\n  \n\n  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n    option nom-hôte &quot;pi3-2&quot;;\n  \n\n\nCependant, il semble que cela soit ignoré, cet article fournit une solution qui semble fonctionner et ne modifie pas la / etc / hostname fichier dans la racine NFS. En tant que root:\necho localhost&gt; / etc / hostname\n\nEnsuite:\necho unset old_host_name&gt; /etc/dhcp/dhclient-enter-hooks.d/unset_old_hostname\n\nCe qui semble fonctionner:\n\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["introduction\nChez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure. Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#39;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses cartes SD, et évite en outre la nécessité de s’inquiéter de la vie des cartes SD après de nombreuses opérations d’écriture.\nCet article est initialement basé sur les guides suivants, mais il inclut un peu plus de détails et une procédure de dépannage:\nIl est également possible de démarrer en réseau un Raspberry Pi 2.\nInstaller\nLe serveur\nUn HP Micro Server (G7 N54L) exécutant Ubuntu 16.04.3 LTS (effectuant diverses autres tâches également)\nLes clients)\nRaspberry Pi 3 modèle B (connecté via Ethernet câblé, ce processus ne fonctionne pas avec le WiFi)\nLe système d&#39;exploitation cible\nRaspbian 9 Lite (non Lite devrait fonctionner aussi)\nPréparation du système de fichiers racine au démarrage\nDans cette série d&#39;étapes, nous allons copier une nouvelle installation Raspbian, avec quelques modifications sur notre serveur de démarrage, et l&#39;exposer via un partage NFS.\nÉtape 1: Carte SD Raspbian Lite\nTéléchargez l&#39;image Raspbian Lite à partir d&#39;ici.\nFlash sur une carte Micro SD, le moyen le plus simple consiste à utiliser Etcher (il prend même un zip directement et vérifie également le contenu après).","Étape 2: démarrez le Raspberry Pi à partir de la nouvelle carte SD\nRemarque: Pour cela, un écran, un clavier et un câble Ethernet (avec accès à Internet) doivent être connectés.\nUne fois que le pi démarre, connectez-vous avec les informations d&#39;identification par défaut (pi / framboise).\nÉtape 3: Activer SSH (facultatif)\nCourir sudo raspi-config, sélectionnez l’option 5 (Options d’interface), P2 (SSH) et sélectionnez Oui pour activer SSH.\nVous pouvez ensuite quitter cet utilitaire et continuer les étapes suivantes via SSH, si vous préférez, ou continuer localement.\nL’IP est imprimé au démarrage mais peut également être visualisé en exécutant adresse ip:\npi @ raspberrypi: ~ $ ip addr\n1: lo:  mtu 65536 qdisc noqueue state UNKNOWN groupe par défaut qlen 1\n    lien / bouclage 00: 00: 00: 00: 00: 00 petit-déjeuner: 00: 00: 00: 00: 00: 00\n    inet 127.0.0.1/8 portée hôte bas\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 :: hôte de portée 1/128\n       valid_lft pour toujours Preferred_lft pour toujours\n2: eth0:  mtu 1500 qdisc état pfifo_fast UP groupe par défaut qlen 1000\n    lien / éther b8: 27: eb: 41: 8e: fa brd ff: ff: ff: ff: ff: ff\n    inet 192.168.1.135/24 brd 192.168.1.255 étendue globale eth0\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 fe80 :: 2036: 591: lien de cef2: 341a / 64 scope\n       valid_lft pour toujours Preferred_lft pour toujours\n3: wlan0:  mtu 1500 qdisc état pfifo_fast groupe DOWN par défaut qlen 1000\n    link / ether b8: 27: eb: 14: db: af brd ff: ff: ff: ff: ff: ff","Dans ce cas, notre interface filaire est eth0, dont l&#39;adresse est 192.168.1.135.\nÉtape 4: Mettez à jour Debian\nPremière exécution sudo apt-get update pour vous assurer que tous les fichiers d&#39;index des paquets sont à jour.\nPuis, lancez sudo apt-get upgrade installer les dernières versions de tous les packages actuellement installés.\nPuis, lancez sudo apt-get dist-upgrade qui gère intelligemment les dépendances changeantes avec les nouvelles versions de paquets.\nDans les deux cas, sur demande, vérifiez et confirmez que vous êtes satisfait des modifications proposées.\nÉtape 5: désactiver l&#39;échange\nsudo dphys-swapfile swapoff\nsudo dphys-swapfile désinstaller\nsudo update-rc.d dphys-swapfile supprimer","Étape 6: Mettre à jour le Pi (firmware)\nCertains fichiers du suivant branche de la rpi-firmware Un référentiel est requis pour que ce processus fonctionne.\nCette étape est probablement optionnelle si bootcode.bin est utilisé à partir de GitHub dans les étapes TFTP ci-dessous.\nModifier: J&#39;ai également constaté que l&#39;utilisation des fichiers img du noyau raspbian &#39;stock&#39; pouvait provoquer des erreurs de démarrage désagréables.\nCourir branche sudo = prochaine mise à jour rpi.\nModifier (2018-07-14): Attention, la prochaine branche semble être obsolète, la mise à jour depuis le maître (par défaut) fonctionne bien pour 3B +.\nDétails sur rpi-update peut être trouvé ici https://github.com/Hexxeh/rpi-update.\nIl est probable que cela se termine en disant:\n    *** Un redémarrage est nécessaire pour activer le nouveau firmware","Alors, redémarrez maintenant avec redémarrage sudo.\nÉtape 7: &quot;Cloner&quot; le système de fichiers\nUne fois que le Pi a redémarré, localement ou via SSH, lancez:\nsudo mkdir -p / nfs / client1\nsudo apt-get install -y rsync\nsudo rsync -xa --progress --exclude / nfs / / nfs / client1","Remarque: Vous devez faire cela sur un Pi en cours d&#39;exécution, la copie de la carte SDK sur un autre hôte ne semble pas fonctionner.\nRégénérez les clés d’hôte SSH (probablement optionnel):\ncd / nfs / client1\nsudo mount --bind / dev dev\nsudo mount --bind / sys sys\nsudo mount --bind / proc proc\nsudo chroot.\nrm / etc / ssh / ssh_host_ *\ndpkg-reconfigure openssh-server\nsortie\nsudo umount dev\nsudo umount sys\nsudo umount proc","Supprimez le fichier d&#39;échange dupliqué s&#39;il existe:\nsudo rm / nfs / client1 / var / swap","Créez ensuite une archive tar du dossier nfs (vous pouvez le gziper mais le Pi n’est pas si puissant que ça n’en vaut probablement pas la peine par rapport au temps de transfert, mais c’est juste une hypothèse).\nle -p drapeau doit préserver les autorisations, etc.\nsudo tar -cpf /nfs.tar / nfs","Je me suis retrouvé avec un goudron de 1,2 Go:\npi @ raspberrypi: ~ $ ls -alh /nfs.tar\n-rw-r - r-- 1 racine racine 1.2G 2 mars, 20h56 /nfs.tar","Enfin, cette archive doit se retrouver sur le serveur, ce qui importe peu &#8211; rsync, scp, ou prenez la carte et copiez-la &#8230;\npar exemple:\npi @ raspberrypi: ~ $ scp /nfs.tar paul @ nas: /home/paul/nfs.tar\nnfs.tar 2% 24MB 12.9MB / s 01:25 ETA","Nous avons maintenant terminé avec ce Pi pour le moment, la carte SD sera utilisée plus tard.\nIl existe d&#39;autres instructions ci-dessous pour &quot;cloner&quot; un Pi existant en utilisant rsync pour préserver les autorisations, ce qui peut être plus rapide si vous souhaitez cloner directement sur votre serveur.\nActiver le démarrage réseau\nCes étapes activent le mode de démarrage USB (qui inclut PXE) sur le Pi.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nÉtape 2: Configuration de démarrage\nNous devons activer le mode de démarrage USB (qui prend également en charge PXE).\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt","Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on","# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi","# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README","# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1","Puis redémarrez:\nredémarrage sudo\nUne fois que le Pi est rétabli, vérifiez que l’OTP a été programmé correctement avec vcgencmd otp_dump | grep 17::\npi @ raspberrypi: ~ $ vcgencmd otp_dump | grep 17:\n17: 3020000a","Si la sortie se termine par 3020000a alors cela a fonctionné.\nUne fois de plus, nous avons fini avec les cartes Pi et SD pour le moment, vous pouvez inverser la /boot/config.txt changer si vous souhaitez continuer à utiliser la carte à d’autres fins, le reste de la /démarrage la partition sur la carte SD sera toujours nécessaire plus tard.\nEn fait, le réseau démarre le Pi\nDans cette série d&#39;étapes, nous apportons les modifications requises côté serveur pour lui permettre de démarrer.\nÉtape 1: DHCP\nVotre serveur DHCP local doit pouvoir envoyer quelques options DHCP spécifiques.\nMon serveur exécute déjà le serveur DHCP ISC qui peut être installé avec sudo apt-get install isc-dhcp-server.\nAuparavant, ma configuration DHCP (/etc/dhcp/dhcpd.conf) servait des adresses IP de la plage 192.168.1.100-200, ainsi qu&#39;un suffixe DNS local spécifique, des serveurs de noms et la passerelle, ainsi qu&#39;un certain nombre de réservations IP (non incluses ci-dessous). :\nL&#39;adresse de la directive next-server doit être ajoutée: serveur suivant 192.168.1.50;, ainsi que le nom du serveur TFTP: option tftp-nom-serveur &quot;192.168.1.50&quot;;.\nJe n&#39;ai pas rencontré le avoir besoin pour l&#39;entrée tftp-nom-serveur avant le démarrage PXE des ordinateurs / serveurs standard (x86 / x64).\nCe fil de discussion a permis d’affiner certaines des modifications de configuration requises pour isc-dhcp-server.\nAprès toute modification, redémarrez le service:\nsudo service redémarrage du serveur isc-dhcp-server","L&#39;activité DHCP peut être visualisée soit en finissant syslog tail -f / var / log / syslog | grep dhcpd:\n-&gt;% tail -f / var / log / syslog | grep dhcpd\n2 mars 21:48:17 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:17 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1","Ou en utilisant tcpdump: sudo tcpdump -i em1 port bootpc\n-&gt;% sudo tcpdump -i em1 port bootpc\n21: 48: 17.817689 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 17.818171 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300\n21: 48: 27.207000 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 27.207371 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300","Lorsque le Pi est allumé après l&#39;activation du mode de démarrage USB, vous pouvez le voir à la recherche d&#39;une adresse IP.\nÉtape 2: TFTP\nInstallez le service TFTP (qui fonctionne avec xinetd):\nsudo apt-get install -y tftpd","Créer un fichier de configuration tftpd /etc/xinetd.d/tftp contenant:\nEt créer le / tftpboot dossier spécifié ci-dessus:\nsudo mkdir / tftpboot","Puis enfin redémarrez xinetd:\nsudo service xinetd restart","Pour afficher l’activité du syslog de fin de serveur TFTP avec tail -f / var / log / syslog | grep tftpd:\nVérifiez la connectivité et la journalisation à partir d&#39;un autre hôte:\nClient:\npaul @ box [21:54:00] [~] \n \n \n \n-&gt;% tftp 192.168.1.50\ntftp&gt; se faire tester\nCode d&#39;erreur 1: fichier non trouvé\ntftp&gt;","Serveur:\npaul @ nas [21:53:48] [~] \n \n \n \n-&gt;% tail -f / var / log / syslog | grep tftpd\n2 mars 21:54:04 nas tftpd[1800]: tftpd: essayer d&#39;obtenir le fichier: test\n2 mars 21:54:04 nas tftpd[1800]: tftpd: fichier de desserte de / tftpboot","Maintenant, lorsque le Pi est démarré après les entrées DHCP, Syslog devrait afficher une activité TFTP:\ntftpd: essayant d&#39;obtenir le fichier: bootsig.bin\ntftpd: fichier de desserte de / tftpboot","Remarque: Le journal n&#39;indique pas d&#39;échec car ce fichier n&#39;existe pas encore.\nCopier tous les fichiers du /démarrage partition de la carte SD à la / tftpboot dossier. Si le micrologiciel Pi a été mis à jour de la manière décrite ci-dessus, il ne devrait pas y avoir de problème, mais le dernier bootcode.bin de GitHub n&#39;est pas requis.\npar exemple:\npaul @ box [10:21:09] [/media/paul/boot] \n \n \n \n-&gt;% 7z un boot.7z / media / paul / boot / *\npaul @ box [10:35:39] [/media/paul/boot] \n \n \n \n-&gt;% scp boot.7z nas:","paul @ nas [10:21:30] [~/boot] \n \n \n \n-&gt;% 7z x ../boot.7z\npaul @ nas [10:21:16] [~/boot] \n \n \n \n-&gt;% sudo mv * / tftpboot","Remarque: Comme l&#39;a noté un lecteur, la liaison de la racine TFTP au dossier de démarrage de l&#39;arborescence NFS permet la mise à jour du microprogramme. La liaison ou la copie du contenu de boot vers NFS permet également à I2C et SPI de fonctionner, car les superpositions de / boot sont disponibles pour le système d&#39;exploitation.\nAttention: Si d&#39;autres fichiers de GitHub (éventuellement les fichiers start / fixup elf) sont utilisés, le Pi ne pourra PAS voir toutes les ressources disponibles telles que la RAM.\nLes journaux affichent les fichiers demandés. Un nettoyage peut donc être effectué si vous le souhaitez.\ntftpd: essayer d&#39;obtenir le fichier: bootcode.bin\nessayer d&#39;obtenir le fichier: bootsig.bin\ntftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\ntftpd: essayer d&#39;obtenir le fichier: autoboot.txt\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: start.elf\ntftpd: essayer de récupérer le fichier: fixup.dat\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: dt-blob.bin\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayant d&#39;obtenir le fichier: bootcfg.txt\ntftpd: essayer d&#39;obtenir le fichier: cmdline.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery8.img\ntftpd: essayant d&#39;obtenir le fichier: recovery8-32.img\ntftpd: essayant d&#39;obtenir le fichier: recovery7.img\ntftpd: essayer d&#39;obtenir le fichier: recovery.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8-32.img\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayer d&#39;obtenir le fichier: armstub8.bin\ntftpd: essayant d&#39;obtenir le fichier: armstub8-32.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub7.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub.bin\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayant d&#39;obtenir le fichier: bcm2710-rpi-3-b.dtb\ntftpd: essayer d&#39;obtenir le fichier: overlays / rpi-ft5406.dtbo\ntftpd: essayant d&#39;obtenir un fichier: overlays / rpi-backlight.dtbo\ntftpd: essayer d&#39;obtenir le fichier: config.txt","Tout va bien lorsque le PI démarre, il affichera d&#39;abord l&#39;écran de dégradé habituel:\nEt puis, semblent rester bloqués dans l’attente de la carte SD:","Si l&#39;un des fichiers requis est manquant, DHCP n&#39;est pas configuré correctement ou ne parvient pas à joindre TFTP. D&#39;après mon expérience, vous n&#39;obtiendrez même pas l&#39;écran de dégradé.\nÉtape 3: NFS\nInstallez le serveur NFS:\nsudo apt-get install -y serveur nfs-kernel","Extrayez l&#39;archive tar à partir des étapes ci-dessus.\nEncore une fois, pour préserver les autorisations sudo et - même propriétaire sont importants:\nsudo tar --same-owner -xvf nfs.tar","Et déplacez le dossier nfs à la racine:\nsudo mv nfs /","Et puis configurez l&#39;exportation NFS, en redémarrant NFS après et en vous assurant qu&#39;elle est activée:\necho &quot;/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)&quot; | sudo tee -a / etc / exports\nsudo systemctl enable rpcbind\nsudo systemctl redémarrer rpcbind\nsudo systemctl enable nfs-kernel-server\nsudo systemctl redémarrer nfs-kernel-server","Maintenant, il faut dire au Pi de démarrer à partir du serveur NFS, créer / éditer /tftpboot/cmdline.txt avec le contenu:\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client1, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite","Cela peut également être copié et édité à partir de la partition de démarrage de la carte SD.\nEnfin, supprimez toutes les autres entrées du fichier fstab / nfs / client1 / etc / fstab de sorte qu&#39;il ne contienne que l&#39;entrée proc:\nproc / proc proc par défaut 0 0","Le Pi devrait maintenant démarrer complètement.\nVous pouvez éditer /nfs/client1/etc/rc.local pour préciser que le Pi a démarré sur le réseau:\n#! / bin / sh -e\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP bloquée dans le réseau est% s  n&quot; &quot;$ _IP&quot;\nFi","sortie 0","Pendant le processus de démarrage, les journaux indiquent la configuration du réseau et NFS, ce qui peut être utile pour résoudre les problèmes de débogage (les lignes d&#39;IP-Config et suivantes):","Étape 4: Configuration par Pi (facultatif)\nJ&#39;ai un écran TFT pour le Pi qui est à l&#39;envers par défaut:","La solution consiste à ajouter la ligne suivante à /boot/config.txt:\nlcd_rotate = 2","Si je fais ça dans /tftpboot/config.txt il s&#39;appliquera à tous les PIS amorcés sur le réseau. Heureusement, le Pi vérifie d’abord un dossier en fonction de son adresse MAC (le numéro de série est indiqué ici), comme indiqué à la dernière ligne ci-dessous (copié à partir de la séquence de démarrage ci-dessus):\n2 mars 22:21:19 nas tftpd[2579]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 22:21:19 nas tftpd[2581]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 22:21:19 nas tftpd[2583]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf","Mon PI a le MAC de ea: 1b: 3c: 41 donc un dossier pour cela doit être créé:\nsudo mkdir / tftpboot / ea1b3c41","Si le PI trouve se lancer là, il recherchera tous les autres fichiers là aussi, pour économiser de l’espace, ils peuvent être liés symboliquement avec sudo ln -s / tftpboot / *. qui donne:\npaul @ nas [23:08:25] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ls -alh\ntotal 8.0K\ndrwxr-xr-x 2 racine racine 4.0K 2 mars 23:08.\ndrwxr-xr-x 3 racine racine 4.0K 2 mars 23:06 ..\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\nlrwxrwxrwx 1 racine racine 18 mars 2 23h08 ea1b3c41 -&gt; / tftpboot / ea1b3c41\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf","Nous pouvons déplacer le lien d&#39;auto-référencement nouvellement créé:\nsudo rm / tftpboot / ea1b3c41 / ea1b3c41","Désormais, lorsque Pi démarrera, il extraira tous les fichiers suivants de ce dossier:\n2 mars 23:09:41 nas tftpd[5282]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 23:09:41 nas tftpd[5284]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 23:09:41 nas tftpd[5286]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\n2 mars 23:09:41 nas tftpd[5288]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / autoboot.txt\n2 mars 23:09:41 nas tftpd[5290]: tftpd: essayant d’obtenir le fichier: ea1b3c41 / config.\n...","Maintenant modifié config.txt peut être ajouté, soit copié de / tftpboot et changé, ou de la /démarrage partition d&#39;une carte SD:\npaul @ nas [23:10:12] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ll\ntotal 4,0K\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\n-rw-r - r-- 1 racine racine 1.3K 2 mars 23:10 config.txt\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf","Si config.txt était déjà symboliquement lié les supprimer en premier.\nMaintenant, cela commence avec l’écran dans le bon sens:","Carte d&#39;activation / de vérification du mode de démarrage USB\nLes étapes ci-dessous décrivent comment créer une carte SD qui activera et vérifiera le mode de démarrage USB (PXE), ce qui facilitera la configuration d&#39;un grand nombre de périphériques Pi 3 en une seule fois.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nDans les étapes suivantes, quelques fichiers sont édités, ce qui peut être fait sur un Pi ou une autre machine pouvant éditer /démarrage et rootfs systèmes de fichiers.\nÉtape 2: Configuration de démarrage\nComme ci-dessus, nous devons activer le mode de démarrage USB.\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt","Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on","# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi","# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README","# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1","Étape 3: Vérifiez au démarrage\nAvec un simple script, le Pi peut être vérifié au démarrage. L’exemple ci-dessous efface l’écran pour améliorer la lisibilité (ce qui n’est pas utile pour le débogage des problèmes d’amorçage), puis s’endormit pendant une longue période (24h), empêchant le Pi de s’amorcer complètement afin que la sortie soit clairement visible, de la couleur ou un autre formatage pouvant être ajouté. c&#39;est plus évident!\nCréer /root/check-netboot.sh avec le contenu suivant:\n#! / bin / bash","clair","CHECK = $ (vcgencmd otp_dump | grep 17 :)","si [[ \"$CHECK\" == \"17:3020000a\" ]]; puis\n  echo &quot;Mode de démarrage correct :) ($ CHECK)&quot;\nautre\n  echo &quot;!!! Le mode de démarrage a échoué, valeur: $ CHECK&quot;\nFi","dormir 86400","Assurez-vous de le rendre exécutable:\nsudo chmod + x /root/check-netboot.sh","modifier /etc/rc.local appeler check-netboot.sh:","#! / bin / sh -e","# Imprimer l&#39;adresse IP\n_IP = $ (nom d&#39;hôte -I) || vrai\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP est% s  n&quot; &quot;$ _IP&quot;\nFi","/root/check-netboot.sh","sortie 0","À partir de cette carte, chaque Pi 3 peut être initialisé une fois, ce qui doit activer le mode de démarrage USB (PXE) et le confirmer. Le script peut être mis à jour pour éteindre en cas de succès avec éteindre après le premier écho dans check-netboot.sh.\nQuelques notes\nInstallation partagée\nTous les périphériques ont un accès en lecture-écriture au système de fichiers NFS dans la configuration ci-dessus, de sorte que tous les packages ou modifications installés sur l&#39;un d&#39;entre eux sont disponibles pour tous.\nEn outre, tout accès SSH ou clé d’hôte ainsi que le / etc / passwd Les fichiers sont tous partagés, ces modifications se propagent également.\nBien que cela puisse faciliter les modifications globales (installation de paquets à partir d&#39;apt), il est lent et j&#39;ai parfois vu des erreurs, bien que cela ait été lié à des permissions avant que je trouve une solution à cela, il semble préférable de faire des modifications localement. et re-cloner le système de fichiers.\nDébogage NFS\nInitialement, pour tenter de comprendre si le Pi s’amorçait à partir du réseau, il était utile d’activer le débogage NFS avec rpcdebug -m nfsd -s proc qui rapporte assez verbalement à syslog.\nNe désactiver l&#39;exécution rpcdebug -m nfsd -c\nPlus de détails ici.\nÉcran tactile\nActuellement, il semble que l&#39;écran tactile du Raspberry Pi ne soit pas détecté lors du démarrage du réseau. Résoudre cela est toujours un travail en cours &#8230;\nMise à jour (2019-04-06): J&#39;ai finalement eu le temps d&#39;essayer atftp, qui semble avoir résolu le problème de détection de l&#39;écran tactile.\nConfiguration par appareil\nLes étapes ci-dessus pour activer chaque périphérique config.txt les options peuvent également être utilisées pour remplacer cmdline.txt (en supprimant d’abord la version liée par un lien symbolique) et spécifiez un autre chemin NFS. / etc / exports aurait également besoin d&#39;être mis à jour.\npar exemple:\nroot @ nas: / tftpboot / ea1b3c41 # rm cmdline.txt\nroot @ nas: / tftpboot / ea1b3c41 # cp ../cmdline.txt.\nroot @ nas: / tftpboot / ea1b3c41 # vi cmdline.txt","cmdline.txt maintenant contenu (note client 2):\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client2, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite","/ etc / exports contient:\n# / etc / exports: la liste de contrôle d&#39;accès pour les systèmes de fichiers pouvant être exportés\n# aux clients NFS. Voir exportations (5).\n#\n# Exemple pour NFSv2 et NFSv3:\n# / srv / homes nom_hôte1 (rw, synchronisation, no_subtree_check) nom_hôte2 (ro, synchronisation, no_subtree_check)\n#\n# Exemple pour NFSv4:\n# / srv / nfs4 gss / krb5i (rw, sync, fsid = 0, crossmnt, no_subtree_check)\n# / srv / nfs4 / homes gss / krb5i (rw, sync, no_subtree_check)\n#\n/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)\n/ nfs / client2 * (rw, sync, no_subtree_check, no_root_squash)","/ nfs / client2 est une copie de / nfs / client1 avec un modifié /etc/rc.local vérifier.\nCloner un autre Pi avec rsync\nL’exécution à partir du serveur NFS clonera en tant que racine des deux côtés, ce qui devrait préserver les autorisations sans qu&#39;il soit nécessaire de créer ou de tar / nfs dossier sur l&#39;appareil.\nLa première sudo permet à rsync de définir les autorisations et la propriété appropriées sur le système de fichiers local. le --rsync-path = &quot;sudo rsync&quot; exécute rsync en tant que root sur le Pi pour s’assurer qu’il a accès à tous les fichiers. Avec la configuration sudoers par défaut, rien ne sera demandé. pi mot de passe SSH de l&#39;utilisateur.\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats pi@192.168.1.59: / / nfs / client1","N&#39;oubliez pas de modifier / etc / fstab dans le système de fichiers NFS par la suite, ainsi que la suppression / var / swap si ce n&#39;était pas exclu.\nUn script simple pour le faire clone.sh:\n#! / bin / bash\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats $ 1: / $ 2\ngrep proc $ 2 / etc / fstab&gt; $ 2 / etc / fstab.new\nmv $ 2 / etc / fstab.new $ 2 / etc / fstab","Courir comme ./clone.sh pi@192.168.1.59 / nfs / clientX.\nAutorisations et Sudo\nSi vous n&#39;utilisez pas rsync comme ci-dessus ou tar avec les indicateurs d&#39;autorisations spécifiques décrits précédemment, après la création du système de fichiers NFS, les autorisations peuvent être héritées du chemin d&#39;extraction ou similaire si les instructions tar spécifiques ci-dessus ne sont pas suivies:\nroot @ nas: / nfs / client1 # ll\ntotal 88\ndrwxr-xr-x 22 paul paul 4096 2 mars 20:45 ./\ndrwxr-xr-x 4 paul paul 4096 3 mars 09:53 ../\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 bin /\ndrwxr-xr-x 2 paul paul 4096 1 janvier 1970 botte /\ndrwxr-xr-x 3 paul paul 4096 1 janv. 1970 boot.bak /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:39 dev /\ndrwxr-xr-x 83 paul paul 4096 3 mars 09:59 etc /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 accueil /\ndrwxr-xr-x 17 paul paul 4096 2 mars 19:12 lib /\ndrwx ------ 2 paul paul 4096 29 nov. 02h35 perdus + trouvés /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 média /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 mnt /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 opt /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 proc /\ndrwx ------ 2 paul paul 4096 2 mars 19:13 racine /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:44 courir /\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 sbin /\ndrwxr-xr-x 2 paul paul 4096 29 nov 01:06 srv /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 sys /\ndrwxrwxrwt 8 racine racine 4096 3 mars 09:56 tmp /\ndrwxr-xr-x 10 paul paul 4096 29 nov. 01:06 usr /\ndrwxr-xr-x 11 paul paul 4096 3 mars 09:56 var /","Pour résoudre ce problème, attribuez la propriété racine à tous les fichiers sauf à la maison, notez l&#39;utilisation de l&#39;UID et du GID, car ils ne correspondent pas aux noms d&#39;entité du serveur:\nroot @ nas: / nfs / client1 # sudo chown root: root. -Rf\nroot @ nas: / nfs / client1 # chown 1000: 1000 home / pi -Rf","Si essayant de sudo sur un réseau démarré Pi et obtenant l&#39;erreur suivante:\nsudo: / usr / bin / sudo doit appartenir à uid 0 et avoir le bit setuid défini","Ensuite, assurez-vous que setuid le bit est mis:\nroot @ nas: / nfs / client1 # chmod / usr / bin / sudo","Les autorisations peuvent être vérifiées par rapport à l&#39;installation locale d&#39;Ubuntu:\nroot @ nas: / nfs / client1 # ls -alh / usr / bin / sudo\n-rwsr-xr-x 1 racine racine 140K 4 juillet 2017 / usr / bin / sudo\nroot @ nas: / nfs / client1 # ls -alh usr / bin / sudo\n-rwsr-xr-x 1 racine racine 133K 5 juin 2017 usr / bin / sudo","Ceci n’est toujours pas parfait, il est donc fortement recommandé d’utiliser rsync ou tar comme décrit précédemment.\nDes sauvegardes\nLa racine NFS peut facilement être sauvegardée:\nroot @ nas: / nfs # cp client1 sauvegarde -Rf","Il serait sage de le sauvegarder avant d’apporter des modifications à la configuration matérielle ou au package, juste au cas où.\nÉchecs de démarrage\nSi le Pi ne demande rien à TFTP, il pourrait s&#39;agir d&#39;un problème de configuration DHCP ou d&#39;un problème d&#39;accès TFTP.\nSi vous voyez le Pi faire peu ou pas plus loin que de demander bootcode.bin alors il est possible que la mauvaise version des fichiers se trouve dans le dossier tftp, assurez-vous que les prochaines versions de branche sont utilisées:\n2 mars 23:11:31 nas tftpd[5385]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin","Si cela va plus loin, mais se bloque comme indiqué ci-dessus, il pourrait s&#39;agir d&#39;un problème d&#39;accès au système de fichiers / NFS.\nAttention au cache de fichiers TFTP\nNon prouvé. Cependant, lors du débogage du problème de RAM mal signalé, j&#39;ai remplacé mon dossier de démarrage personnalisé (par de nouveaux liens symboliques), mais le Pi à écran tactile semblait toujours récupérer les anciens fichiers car il signalait une mémoire RAM inférieure.\nAprès un redémarrage de xinetd, tout allait bien &#8230;\nPerformance\nL&#39;installation et la configuration de paquets, etc. vont naturellement être plus lentes car le Pi ne dispose que d&#39;Ethernet à 100 Mbits et des frais généraux liés à l&#39;utilisation d&#39;un système de fichiers basé sur le réseau.\nPour des raisons de rapidité, toutes les configurations pourraient être effectuées sur SD, puis copiées en suivant les étapes ci-dessus.\nRéservations DHCP\nPour vous simplifier la vie, vous pouvez ajouter des réservations d’adresses DHCP dans le corps principal de la configuration DHCP afin que chaque adresse MAC reçoive la même adresse IP:\n{","  ...","  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n  ","  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n  ","Nom d&#39;hôte contrôlé par DHCP sur Raspbian\nEn théorie, la configuration devrait être aussi simple que celle indiquée ci-dessous:","  ...","  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n    option nom-hôte &quot;pi3-1&quot;;\n  ","  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n    option nom-hôte &quot;pi3-2&quot;;\n  ","Cependant, il semble que cela soit ignoré, cet article fournit une solution qui semble fonctionner et ne modifie pas la / etc / hostname fichier dans la racine NFS. En tant que root:\necho localhost&gt; / etc / hostname","Ensuite:\necho unset old_host_name&gt; /etc/dhcp/dhclient-enter-hooks.d/unset_old_hostname","Ce qui semble fonctionner:","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"introduction\nChez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure. Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#39;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses cartes SD, et évite en outre la nécessité de s’inquiéter de la vie des cartes SD après de nombreuses opérations d’écriture.\nCet article est initialement basé sur les guides suivants, mais il inclut un peu plus de détails et une procédure de dépannage:\nIl est également possible de démarrer en réseau un Raspberry Pi 2.\nInstaller\nLe serveur\nUn HP Micro Server (G7 N54L) exécutant Ubuntu 16.04.3 LTS (effectuant diverses autres tâches également)\nLes clients)\nRaspberry Pi 3 modèle B (connecté via Ethernet câblé, ce processus ne fonctionne pas avec le WiFi)\nLe système d&#39;exploitation cible\nRaspbian 9 Lite (non Lite devrait fonctionner aussi)\nPréparation du système de fichiers racine au démarrage\nDans cette série d&#39;étapes, nous allons copier une nouvelle installation Raspbian, avec quelques modifications sur notre serveur de démarrage, et l&#39;exposer via un partage NFS.\nÉtape 1: Carte SD Raspbian Lite\nTéléchargez l&#39;image Raspbian Lite à partir d&#39;ici.\nFlash sur une carte Micro SD, le moyen le plus simple consiste à utiliser Etcher (il prend même un zip directement et vérifie également le contenu après).","html":"<p>introduction\nChez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure. Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#039;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses cartes SD, et évite en outre la nécessité de s’inquiéter de la vie des cartes SD après de nombreuses opérations d’écriture.\nCet article est initialement basé sur les guides suivants, mais il inclut un peu plus de détails et une procédure de dépannage:\nIl est également possible de démarrer en réseau un Raspberry Pi 2.\nInstaller\nLe serveur\nUn HP Micro Server (G7 N54L) exécutant Ubuntu 16.04.3 LTS (effectuant diverses autres tâches également)\nLes clients)\nRaspberry Pi 3 modèle B (connecté via Ethernet câblé, ce processus ne fonctionne pas avec le WiFi)\nLe système d&#039;exploitation cible\nRaspbian 9 Lite (non Lite devrait fonctionner aussi)\nPréparation du système de fichiers racine au démarrage\nDans cette série d&#039;étapes, nous allons copier une nouvelle installation Raspbian, avec quelques modifications sur notre serveur de démarrage, et l&#039;exposer via un partage NFS.\nÉtape 1: Carte SD Raspbian Lite\nTéléchargez l&#039;image Raspbian Lite à partir d&#039;ici.\nFlash sur une carte Micro SD, le moyen le plus simple consiste à utiliser Etcher (il prend même un zip directement et vérifie également le contenu après).</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Étape 2: démarrez le Raspberry Pi à partir de la nouvelle carte SD\nRemarque: Pour cela, un écran, un clavier et un câble Ethernet (avec accès à Internet) doivent être connectés.\nUne fois que le pi démarre, connectez-vous avec les informations d&#39;identification par défaut (pi / framboise).\nÉtape 3: Activer SSH (facultatif)\nCourir sudo raspi-config, sélectionnez l’option 5 (Options d’interface), P2 (SSH) et sélectionnez Oui pour activer SSH.\nVous pouvez ensuite quitter cet utilitaire et continuer les étapes suivantes via SSH, si vous préférez, ou continuer localement.\nL’IP est imprimé au démarrage mais peut également être visualisé en exécutant adresse ip:\npi @ raspberrypi: ~ $ ip addr\n1: lo:  mtu 65536 qdisc noqueue state UNKNOWN groupe par défaut qlen 1\n    lien / bouclage 00: 00: 00: 00: 00: 00 petit-déjeuner: 00: 00: 00: 00: 00: 00\n    inet 127.0.0.1/8 portée hôte bas\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 :: hôte de portée 1/128\n       valid_lft pour toujours Preferred_lft pour toujours\n2: eth0:  mtu 1500 qdisc état pfifo_fast UP groupe par défaut qlen 1000\n    lien / éther b8: 27: eb: 41: 8e: fa brd ff: ff: ff: ff: ff: ff\n    inet 192.168.1.135/24 brd 192.168.1.255 étendue globale eth0\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 fe80 :: 2036: 591: lien de cef2: 341a / 64 scope\n       valid_lft pour toujours Preferred_lft pour toujours\n3: wlan0:  mtu 1500 qdisc état pfifo_fast groupe DOWN par défaut qlen 1000\n    link / ether b8: 27: eb: 14: db: af brd ff: ff: ff: ff: ff: ff","html":"<p>Étape 2: démarrez le Raspberry Pi à partir de la nouvelle carte SD\nRemarque: Pour cela, un écran, un clavier et un câble Ethernet (avec accès à Internet) doivent être connectés.\nUne fois que le pi démarre, connectez-vous avec les informations d&#039;identification par défaut (pi / framboise).\nÉtape 3: Activer SSH (facultatif)\nCourir sudo raspi-config, sélectionnez l’option 5 (Options d’interface), P2 (SSH) et sélectionnez Oui pour activer SSH.\nVous pouvez ensuite quitter cet utilitaire et continuer les étapes suivantes via SSH, si vous préférez, ou continuer localement.\nL’IP est imprimé au démarrage mais peut également être visualisé en exécutant adresse ip:\npi @ raspberrypi: ~ $ ip addr\n1: lo:  mtu 65536 qdisc noqueue state UNKNOWN groupe par défaut qlen 1\n    lien / bouclage 00: 00: 00: 00: 00: 00 petit-déjeuner: 00: 00: 00: 00: 00: 00\n    inet 127.0.0.1/8 portée hôte bas\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 :: hôte de portée 1/128\n       valid_lft pour toujours Preferred_lft pour toujours\n2: eth0:  mtu 1500 qdisc état pfifo_fast UP groupe par défaut qlen 1000\n    lien / éther b8: 27: eb: 41: 8e: fa brd ff: ff: ff: ff: ff: ff\n    inet 192.168.1.135/24 brd 192.168.1.255 étendue globale eth0\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 fe80 :: 2036: 591: lien de cef2: 341a / 64 scope\n       valid_lft pour toujours Preferred_lft pour toujours\n3: wlan0:  mtu 1500 qdisc état pfifo_fast groupe DOWN par défaut qlen 1000\n    link / ether b8: 27: eb: 14: db: af brd ff: ff: ff: ff: ff: ff</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Dans ce cas, notre interface filaire est eth0, dont l&#39;adresse est 192.168.1.135.\nÉtape 4: Mettez à jour Debian\nPremière exécution sudo apt-get update pour vous assurer que tous les fichiers d&#39;index des paquets sont à jour.\nPuis, lancez sudo apt-get upgrade installer les dernières versions de tous les packages actuellement installés.\nPuis, lancez sudo apt-get dist-upgrade qui gère intelligemment les dépendances changeantes avec les nouvelles versions de paquets.\nDans les deux cas, sur demande, vérifiez et confirmez que vous êtes satisfait des modifications proposées.\nÉtape 5: désactiver l&#39;échange\nsudo dphys-swapfile swapoff\nsudo dphys-swapfile désinstaller\nsudo update-rc.d dphys-swapfile supprimer","html":"<p>Dans ce cas, notre interface filaire est eth0, dont l&#039;adresse est 192.168.1.135.\nÉtape 4: Mettez à jour Debian\nPremière exécution sudo apt-get update pour vous assurer que tous les fichiers d&#039;index des paquets sont à jour.\nPuis, lancez sudo apt-get upgrade installer les dernières versions de tous les packages actuellement installés.\nPuis, lancez sudo apt-get dist-upgrade qui gère intelligemment les dépendances changeantes avec les nouvelles versions de paquets.\nDans les deux cas, sur demande, vérifiez et confirmez que vous êtes satisfait des modifications proposées.\nÉtape 5: désactiver l&#039;échange\nsudo dphys-swapfile swapoff\nsudo dphys-swapfile désinstaller\nsudo update-rc.d dphys-swapfile supprimer</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"Étape 6: Mettre à jour le Pi (firmware)\nCertains fichiers du suivant branche de la rpi-firmware Un référentiel est requis pour que ce processus fonctionne.\nCette étape est probablement optionnelle si bootcode.bin est utilisé à partir de GitHub dans les étapes TFTP ci-dessous.\nModifier: J&#39;ai également constaté que l&#39;utilisation des fichiers img du noyau raspbian &#39;stock&#39; pouvait provoquer des erreurs de démarrage désagréables.\nCourir branche sudo = prochaine mise à jour rpi.\nModifier (2018-07-14): Attention, la prochaine branche semble être obsolète, la mise à jour depuis le maître (par défaut) fonctionne bien pour 3B +.\nDétails sur rpi-update peut être trouvé ici https://github.com/Hexxeh/rpi-update.\nIl est probable que cela se termine en disant:\n    *** Un redémarrage est nécessaire pour activer le nouveau firmware","html":"<p>Étape 6: Mettre à jour le Pi (firmware)\nCertains fichiers du suivant branche de la rpi-firmware Un référentiel est requis pour que ce processus fonctionne.\nCette étape est probablement optionnelle si bootcode.bin est utilisé à partir de GitHub dans les étapes TFTP ci-dessous.\nModifier: J&#039;ai également constaté que l&#039;utilisation des fichiers img du noyau raspbian &#039;stock&#039; pouvait provoquer des erreurs de démarrage désagréables.\nCourir branche sudo = prochaine mise à jour rpi.\nModifier (2018-07-14): Attention, la prochaine branche semble être obsolète, la mise à jour depuis le maître (par défaut) fonctionne bien pour 3B +.\nDétails sur rpi-update peut être trouvé ici https://github.com/Hexxeh/rpi-update.\nIl est probable que cela se termine en disant:\n    *** Un redémarrage est nécessaire pour activer le nouveau firmware</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Alors, redémarrez maintenant avec redémarrage sudo.\nÉtape 7: &quot;Cloner&quot; le système de fichiers\nUne fois que le Pi a redémarré, localement ou via SSH, lancez:\nsudo mkdir -p / nfs / client1\nsudo apt-get install -y rsync\nsudo rsync -xa --progress --exclude / nfs / / nfs / client1","html":"<p>Alors, redémarrez maintenant avec redémarrage sudo.\nÉtape 7: &quot;Cloner&quot; le système de fichiers\nUne fois que le Pi a redémarré, localement ou via SSH, lancez:\nsudo mkdir -p / nfs / client1\nsudo apt-get install -y rsync\nsudo rsync -xa --progress --exclude / nfs / / nfs / client1</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"Remarque: Vous devez faire cela sur un Pi en cours d&#39;exécution, la copie de la carte SDK sur un autre hôte ne semble pas fonctionner.\nRégénérez les clés d’hôte SSH (probablement optionnel):\ncd / nfs / client1\nsudo mount --bind / dev dev\nsudo mount --bind / sys sys\nsudo mount --bind / proc proc\nsudo chroot.\nrm / etc / ssh / ssh_host_ *\ndpkg-reconfigure openssh-server\nsortie\nsudo umount dev\nsudo umount sys\nsudo umount proc","html":"<p>Remarque: Vous devez faire cela sur un Pi en cours d&#039;exécution, la copie de la carte SDK sur un autre hôte ne semble pas fonctionner.\nRégénérez les clés d’hôte SSH (probablement optionnel):\ncd / nfs / client1\nsudo mount --bind / dev dev\nsudo mount --bind / sys sys\nsudo mount --bind / proc proc\nsudo chroot.\nrm / etc / ssh / ssh_host_ *\ndpkg-reconfigure openssh-server\nsortie\nsudo umount dev\nsudo umount sys\nsudo umount proc</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Supprimez le fichier d&#39;échange dupliqué s&#39;il existe:\nsudo rm / nfs / client1 / var / swap","html":"<p>Supprimez le fichier d&#039;échange dupliqué s&#039;il existe:\nsudo rm / nfs / client1 / var / swap</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"Créez ensuite une archive tar du dossier nfs (vous pouvez le gziper mais le Pi n’est pas si puissant que ça n’en vaut probablement pas la peine par rapport au temps de transfert, mais c’est juste une hypothèse).\nle -p drapeau doit préserver les autorisations, etc.\nsudo tar -cpf /nfs.tar / nfs","html":"<p>Créez ensuite une archive tar du dossier nfs (vous pouvez le gziper mais le Pi n’est pas si puissant que ça n’en vaut probablement pas la peine par rapport au temps de transfert, mais c’est juste une hypothèse).\nle -p drapeau doit préserver les autorisations, etc.\nsudo tar -cpf /nfs.tar / nfs</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"Je me suis retrouvé avec un goudron de 1,2 Go:\npi @ raspberrypi: ~ $ ls -alh /nfs.tar\n-rw-r - r-- 1 racine racine 1.2G 2 mars, 20h56 /nfs.tar","html":"<p>Je me suis retrouvé avec un goudron de 1,2 Go:\npi @ raspberrypi: ~ $ ls -alh /nfs.tar\n-rw-r - r-- 1 racine racine 1.2G 2 mars, 20h56 /nfs.tar</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"Enfin, cette archive doit se retrouver sur le serveur, ce qui importe peu &#8211; rsync, scp, ou prenez la carte et copiez-la &#8230;\npar exemple:\npi @ raspberrypi: ~ $ scp /nfs.tar paul @ nas: /home/paul/nfs.tar\nnfs.tar 2% 24MB 12.9MB / s 01:25 ETA","html":"<p>Enfin, cette archive doit se retrouver sur le serveur, ce qui importe peu &#8211; rsync, scp, ou prenez la carte et copiez-la &#8230;\npar exemple:\npi @ raspberrypi: ~ $ scp /nfs.tar paul @ nas: /home/paul/nfs.tar\nnfs.tar 2% 24MB 12.9MB / s 01:25 ETA</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"Nous avons maintenant terminé avec ce Pi pour le moment, la carte SD sera utilisée plus tard.\nIl existe d&#39;autres instructions ci-dessous pour &quot;cloner&quot; un Pi existant en utilisant rsync pour préserver les autorisations, ce qui peut être plus rapide si vous souhaitez cloner directement sur votre serveur.\nActiver le démarrage réseau\nCes étapes activent le mode de démarrage USB (qui inclut PXE) sur le Pi.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nÉtape 2: Configuration de démarrage\nNous devons activer le mode de démarrage USB (qui prend également en charge PXE).\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt","html":"<p>Nous avons maintenant terminé avec ce Pi pour le moment, la carte SD sera utilisée plus tard.\nIl existe d&#039;autres instructions ci-dessous pour &quot;cloner&quot; un Pi existant en utilisant rsync pour préserver les autorisations, ce qui peut être plus rapide si vous souhaitez cloner directement sur votre serveur.\nActiver le démarrage réseau\nCes étapes activent le mode de démarrage USB (qui inclut PXE) sur le Pi.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nÉtape 2: Configuration de démarrage\nNous devons activer le mode de démarrage USB (qui prend également en charge PXE).\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on","html":"<p>Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi","html":"<p># Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README","html":"<p># Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1","html":"<p># Activer l&#039;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"Puis redémarrez:\nredémarrage sudo\nUne fois que le Pi est rétabli, vérifiez que l’OTP a été programmé correctement avec vcgencmd otp_dump | grep 17::\npi @ raspberrypi: ~ $ vcgencmd otp_dump | grep 17:\n17: 3020000a","html":"<p>Puis redémarrez:\nredémarrage sudo\nUne fois que le Pi est rétabli, vérifiez que l’OTP a été programmé correctement avec vcgencmd otp_dump | grep 17::\npi @ raspberrypi: ~ $ vcgencmd otp_dump | grep 17:\n17: 3020000a</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"Si la sortie se termine par 3020000a alors cela a fonctionné.\nUne fois de plus, nous avons fini avec les cartes Pi et SD pour le moment, vous pouvez inverser la /boot/config.txt changer si vous souhaitez continuer à utiliser la carte à d’autres fins, le reste de la /démarrage la partition sur la carte SD sera toujours nécessaire plus tard.\nEn fait, le réseau démarre le Pi\nDans cette série d&#39;étapes, nous apportons les modifications requises côté serveur pour lui permettre de démarrer.\nÉtape 1: DHCP\nVotre serveur DHCP local doit pouvoir envoyer quelques options DHCP spécifiques.\nMon serveur exécute déjà le serveur DHCP ISC qui peut être installé avec sudo apt-get install isc-dhcp-server.\nAuparavant, ma configuration DHCP (/etc/dhcp/dhcpd.conf) servait des adresses IP de la plage 192.168.1.100-200, ainsi qu&#39;un suffixe DNS local spécifique, des serveurs de noms et la passerelle, ainsi qu&#39;un certain nombre de réservations IP (non incluses ci-dessous). :\nL&#39;adresse de la directive next-server doit être ajoutée: serveur suivant 192.168.1.50;, ainsi que le nom du serveur TFTP: option tftp-nom-serveur &quot;192.168.1.50&quot;;.\nJe n&#39;ai pas rencontré le avoir besoin pour l&#39;entrée tftp-nom-serveur avant le démarrage PXE des ordinateurs / serveurs standard (x86 / x64).\nCe fil de discussion a permis d’affiner certaines des modifications de configuration requises pour isc-dhcp-server.\nAprès toute modification, redémarrez le service:\nsudo service redémarrage du serveur isc-dhcp-server","html":"<p>Si la sortie se termine par 3020000a alors cela a fonctionné.\nUne fois de plus, nous avons fini avec les cartes Pi et SD pour le moment, vous pouvez inverser la /boot/config.txt changer si vous souhaitez continuer à utiliser la carte à d’autres fins, le reste de la /démarrage la partition sur la carte SD sera toujours nécessaire plus tard.\nEn fait, le réseau démarre le Pi\nDans cette série d&#039;étapes, nous apportons les modifications requises côté serveur pour lui permettre de démarrer.\nÉtape 1: DHCP\nVotre serveur DHCP local doit pouvoir envoyer quelques options DHCP spécifiques.\nMon serveur exécute déjà le serveur DHCP ISC qui peut être installé avec sudo apt-get install isc-dhcp-server.\nAuparavant, ma configuration DHCP (/etc/dhcp/dhcpd.conf) servait des adresses IP de la plage 192.168.1.100-200, ainsi qu&#039;un suffixe DNS local spécifique, des serveurs de noms et la passerelle, ainsi qu&#039;un certain nombre de réservations IP (non incluses ci-dessous). :\nL&#039;adresse de la directive next-server doit être ajoutée: serveur suivant 192.168.1.50;, ainsi que le nom du serveur TFTP: option tftp-nom-serveur &quot;192.168.1.50&quot;;.\nJe n&#039;ai pas rencontré le avoir besoin pour l&#039;entrée tftp-nom-serveur avant le démarrage PXE des ordinateurs / serveurs standard (x86 / x64).\nCe fil de discussion a permis d’affiner certaines des modifications de configuration requises pour isc-dhcp-server.\nAprès toute modification, redémarrez le service:\nsudo service redémarrage du serveur isc-dhcp-server</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"L&#39;activité DHCP peut être visualisée soit en finissant syslog tail -f / var / log / syslog | grep dhcpd:\n-&gt;% tail -f / var / log / syslog | grep dhcpd\n2 mars 21:48:17 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:17 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1","html":"<p>L&#039;activité DHCP peut être visualisée soit en finissant syslog tail -f / var / log / syslog | grep dhcpd:\n-&gt;% tail -f / var / log / syslog | grep dhcpd\n2 mars 21:48:17 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:17 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"Ou en utilisant tcpdump: sudo tcpdump -i em1 port bootpc\n-&gt;% sudo tcpdump -i em1 port bootpc\n21: 48: 17.817689 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 17.818171 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300\n21: 48: 27.207000 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 27.207371 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300","html":"<p>Ou en utilisant tcpdump: sudo tcpdump -i em1 port bootpc\n-&gt;% sudo tcpdump -i em1 port bootpc\n21: 48: 17.817689 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 17.818171 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300\n21: 48: 27.207000 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 27.207371 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"Lorsque le Pi est allumé après l&#39;activation du mode de démarrage USB, vous pouvez le voir à la recherche d&#39;une adresse IP.\nÉtape 2: TFTP\nInstallez le service TFTP (qui fonctionne avec xinetd):\nsudo apt-get install -y tftpd","html":"<p>Lorsque le Pi est allumé après l&#039;activation du mode de démarrage USB, vous pouvez le voir à la recherche d&#039;une adresse IP.\nÉtape 2: TFTP\nInstallez le service TFTP (qui fonctionne avec xinetd):\nsudo apt-get install -y tftpd</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"Créer un fichier de configuration tftpd /etc/xinetd.d/tftp contenant:\nEt créer le / tftpboot dossier spécifié ci-dessus:\nsudo mkdir / tftpboot","html":"<p>Créer un fichier de configuration tftpd /etc/xinetd.d/tftp contenant:\nEt créer le / tftpboot dossier spécifié ci-dessus:\nsudo mkdir / tftpboot</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"Puis enfin redémarrez xinetd:\nsudo service xinetd restart","html":"<p>Puis enfin redémarrez xinetd:\nsudo service xinetd restart</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"Pour afficher l’activité du syslog de fin de serveur TFTP avec tail -f / var / log / syslog | grep tftpd:\nVérifiez la connectivité et la journalisation à partir d&#39;un autre hôte:\nClient:\npaul @ box [21:54:00] [~] \n \n \n \n-&gt;% tftp 192.168.1.50\ntftp&gt; se faire tester\nCode d&#39;erreur 1: fichier non trouvé\ntftp&gt;","html":"<p>Pour afficher l’activité du syslog de fin de serveur TFTP avec tail -f / var / log / syslog | grep tftpd:\nVérifiez la connectivité et la journalisation à partir d&#039;un autre hôte:\nClient:\npaul @ box [21:54:00] [~] \n \n \n \n-&gt;% tftp 192.168.1.50\ntftp&gt; se faire tester\nCode d&#039;erreur 1: fichier non trouvé\ntftp&gt;</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"Serveur:\npaul @ nas [21:53:48] [~] \n \n \n \n-&gt;% tail -f / var / log / syslog | grep tftpd\n2 mars 21:54:04 nas tftpd[1800]: tftpd: essayer d&#39;obtenir le fichier: test\n2 mars 21:54:04 nas tftpd[1800]: tftpd: fichier de desserte de / tftpboot","html":"<p>Serveur:\npaul @ nas [21:53:48] [~] \n \n \n \n-&gt;% tail -f / var / log / syslog | grep tftpd\n2 mars 21:54:04 nas tftpd[1800]: tftpd: essayer d&#039;obtenir le fichier: test\n2 mars 21:54:04 nas tftpd[1800]: tftpd: fichier de desserte de / tftpboot</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"Maintenant, lorsque le Pi est démarré après les entrées DHCP, Syslog devrait afficher une activité TFTP:\ntftpd: essayant d&#39;obtenir le fichier: bootsig.bin\ntftpd: fichier de desserte de / tftpboot","html":"<p>Maintenant, lorsque le Pi est démarré après les entrées DHCP, Syslog devrait afficher une activité TFTP:\ntftpd: essayant d&#039;obtenir le fichier: bootsig.bin\ntftpd: fichier de desserte de / tftpboot</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"Remarque: Le journal n&#39;indique pas d&#39;échec car ce fichier n&#39;existe pas encore.\nCopier tous les fichiers du /démarrage partition de la carte SD à la / tftpboot dossier. Si le micrologiciel Pi a été mis à jour de la manière décrite ci-dessus, il ne devrait pas y avoir de problème, mais le dernier bootcode.bin de GitHub n&#39;est pas requis.\npar exemple:\npaul @ box [10:21:09] [/media/paul/boot] \n \n \n \n-&gt;% 7z un boot.7z / media / paul / boot / *\npaul @ box [10:35:39] [/media/paul/boot] \n \n \n \n-&gt;% scp boot.7z nas:","html":"<p>Remarque: Le journal n&#039;indique pas d&#039;échec car ce fichier n&#039;existe pas encore.\nCopier tous les fichiers du /démarrage partition de la carte SD à la / tftpboot dossier. Si le micrologiciel Pi a été mis à jour de la manière décrite ci-dessus, il ne devrait pas y avoir de problème, mais le dernier bootcode.bin de GitHub n&#039;est pas requis.\npar exemple:\npaul @ box [10:21:09] [/media/paul/boot] \n \n \n \n-&gt;% 7z un boot.7z / media / paul / boot / *\npaul @ box [10:35:39] [/media/paul/boot] \n \n \n \n-&gt;% scp boot.7z nas:</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"paul @ nas [10:21:30] [~/boot] \n \n \n \n-&gt;% 7z x ../boot.7z\npaul @ nas [10:21:16] [~/boot] \n \n \n \n-&gt;% sudo mv * / tftpboot","html":"<p>paul @ nas [10:21:30] [~/boot] \n \n \n \n-&gt;% 7z x ../boot.7z\npaul @ nas [10:21:16] [~/boot] \n \n \n \n-&gt;% sudo mv * / tftpboot</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"Remarque: Comme l&#39;a noté un lecteur, la liaison de la racine TFTP au dossier de démarrage de l&#39;arborescence NFS permet la mise à jour du microprogramme. La liaison ou la copie du contenu de boot vers NFS permet également à I2C et SPI de fonctionner, car les superpositions de / boot sont disponibles pour le système d&#39;exploitation.\nAttention: Si d&#39;autres fichiers de GitHub (éventuellement les fichiers start / fixup elf) sont utilisés, le Pi ne pourra PAS voir toutes les ressources disponibles telles que la RAM.\nLes journaux affichent les fichiers demandés. Un nettoyage peut donc être effectué si vous le souhaitez.\ntftpd: essayer d&#39;obtenir le fichier: bootcode.bin\nessayer d&#39;obtenir le fichier: bootsig.bin\ntftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\ntftpd: essayer d&#39;obtenir le fichier: autoboot.txt\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: start.elf\ntftpd: essayer de récupérer le fichier: fixup.dat\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: dt-blob.bin\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayant d&#39;obtenir le fichier: bootcfg.txt\ntftpd: essayer d&#39;obtenir le fichier: cmdline.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery8.img\ntftpd: essayant d&#39;obtenir le fichier: recovery8-32.img\ntftpd: essayant d&#39;obtenir le fichier: recovery7.img\ntftpd: essayer d&#39;obtenir le fichier: recovery.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8-32.img\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayer d&#39;obtenir le fichier: armstub8.bin\ntftpd: essayant d&#39;obtenir le fichier: armstub8-32.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub7.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub.bin\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayant d&#39;obtenir le fichier: bcm2710-rpi-3-b.dtb\ntftpd: essayer d&#39;obtenir le fichier: overlays / rpi-ft5406.dtbo\ntftpd: essayant d&#39;obtenir un fichier: overlays / rpi-backlight.dtbo\ntftpd: essayer d&#39;obtenir le fichier: config.txt","html":"<p>Remarque: Comme l&#039;a noté un lecteur, la liaison de la racine TFTP au dossier de démarrage de l&#039;arborescence NFS permet la mise à jour du microprogramme. La liaison ou la copie du contenu de boot vers NFS permet également à I2C et SPI de fonctionner, car les superpositions de / boot sont disponibles pour le système d&#039;exploitation.\nAttention: Si d&#039;autres fichiers de GitHub (éventuellement les fichiers start / fixup elf) sont utilisés, le Pi ne pourra PAS voir toutes les ressources disponibles telles que la RAM.\nLes journaux affichent les fichiers demandés. Un nettoyage peut donc être effectué si vous le souhaitez.\ntftpd: essayer d&#039;obtenir le fichier: bootcode.bin\nessayer d&#039;obtenir le fichier: bootsig.bin\ntftpd: essayant d&#039;obtenir le fichier: ea1b3c41 / start.elf\ntftpd: essayer d&#039;obtenir le fichier: autoboot.txt\ntftpd: essayer d&#039;obtenir le fichier: config.txt\ntftpd: essayer d&#039;obtenir le fichier: recovery.elf\ntftpd: essayer d&#039;obtenir le fichier: start.elf\ntftpd: essayer de récupérer le fichier: fixup.dat\ntftpd: essayer d&#039;obtenir le fichier: recovery.elf\ntftpd: essayer d&#039;obtenir le fichier: config.txt\ntftpd: essayer d&#039;obtenir le fichier: dt-blob.bin\ntftpd: essayer d&#039;obtenir le fichier: recovery.elf\ntftpd: essayer d&#039;obtenir le fichier: config.txt\ntftpd: essayant d&#039;obtenir le fichier: bootcfg.txt\ntftpd: essayer d&#039;obtenir le fichier: cmdline.txt\ntftpd: essayer d&#039;obtenir le fichier: recovery8.img\ntftpd: essayant d&#039;obtenir le fichier: recovery8-32.img\ntftpd: essayant d&#039;obtenir le fichier: recovery7.img\ntftpd: essayer d&#039;obtenir le fichier: recovery.img\ntftpd: essayant d&#039;obtenir le fichier: kernel8.img\ntftpd: essayant d&#039;obtenir le fichier: kernel8-32.img\ntftpd: essayant d&#039;obtenir le fichier: kernel7.img\ntftpd: essayer d&#039;obtenir le fichier: armstub8.bin\ntftpd: essayant d&#039;obtenir le fichier: armstub8-32.bin\ntftpd: essayer d&#039;obtenir le fichier: armstub7.bin\ntftpd: essayer d&#039;obtenir le fichier: armstub.bin\ntftpd: essayant d&#039;obtenir le fichier: kernel7.img\ntftpd: essayant d&#039;obtenir le fichier: bcm2710-rpi-3-b.dtb\ntftpd: essayer d&#039;obtenir le fichier: overlays / rpi-ft5406.dtbo\ntftpd: essayant d&#039;obtenir un fichier: overlays / rpi-backlight.dtbo\ntftpd: essayer d&#039;obtenir le fichier: config.txt</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"Tout va bien lorsque le PI démarre, il affichera d&#39;abord l&#39;écran de dégradé habituel:\nEt puis, semblent rester bloqués dans l’attente de la carte SD:","html":"<p>Tout va bien lorsque le PI démarre, il affichera d&#039;abord l&#039;écran de dégradé habituel:\nEt puis, semblent rester bloqués dans l’attente de la carte SD:</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"Si l&#39;un des fichiers requis est manquant, DHCP n&#39;est pas configuré correctement ou ne parvient pas à joindre TFTP. D&#39;après mon expérience, vous n&#39;obtiendrez même pas l&#39;écran de dégradé.\nÉtape 3: NFS\nInstallez le serveur NFS:\nsudo apt-get install -y serveur nfs-kernel","html":"<p>Si l&#039;un des fichiers requis est manquant, DHCP n&#039;est pas configuré correctement ou ne parvient pas à joindre TFTP. D&#039;après mon expérience, vous n&#039;obtiendrez même pas l&#039;écran de dégradé.\nÉtape 3: NFS\nInstallez le serveur NFS:\nsudo apt-get install -y serveur nfs-kernel</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"Extrayez l&#39;archive tar à partir des étapes ci-dessus.\nEncore une fois, pour préserver les autorisations sudo et - même propriétaire sont importants:\nsudo tar --same-owner -xvf nfs.tar","html":"<p>Extrayez l&#039;archive tar à partir des étapes ci-dessus.\nEncore une fois, pour préserver les autorisations sudo et - même propriétaire sont importants:\nsudo tar --same-owner -xvf nfs.tar</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"Et déplacez le dossier nfs à la racine:\nsudo mv nfs /","html":"<p>Et déplacez le dossier nfs à la racine:\nsudo mv nfs /</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"Et puis configurez l&#39;exportation NFS, en redémarrant NFS après et en vous assurant qu&#39;elle est activée:\necho &quot;/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)&quot; | sudo tee -a / etc / exports\nsudo systemctl enable rpcbind\nsudo systemctl redémarrer rpcbind\nsudo systemctl enable nfs-kernel-server\nsudo systemctl redémarrer nfs-kernel-server","html":"<p>Et puis configurez l&#039;exportation NFS, en redémarrant NFS après et en vous assurant qu&#039;elle est activée:\necho &quot;/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)&quot; | sudo tee -a / etc / exports\nsudo systemctl enable rpcbind\nsudo systemctl redémarrer rpcbind\nsudo systemctl enable nfs-kernel-server\nsudo systemctl redémarrer nfs-kernel-server</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"Maintenant, il faut dire au Pi de démarrer à partir du serveur NFS, créer / éditer /tftpboot/cmdline.txt avec le contenu:\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client1, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite","html":"<p>Maintenant, il faut dire au Pi de démarrer à partir du serveur NFS, créer / éditer /tftpboot/cmdline.txt avec le contenu:\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client1, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"Cela peut également être copié et édité à partir de la partition de démarrage de la carte SD.\nEnfin, supprimez toutes les autres entrées du fichier fstab / nfs / client1 / etc / fstab de sorte qu&#39;il ne contienne que l&#39;entrée proc:\nproc / proc proc par défaut 0 0","html":"<p>Cela peut également être copié et édité à partir de la partition de démarrage de la carte SD.\nEnfin, supprimez toutes les autres entrées du fichier fstab / nfs / client1 / etc / fstab de sorte qu&#039;il ne contienne que l&#039;entrée proc:\nproc / proc proc par défaut 0 0</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"Le Pi devrait maintenant démarrer complètement.\nVous pouvez éditer /nfs/client1/etc/rc.local pour préciser que le Pi a démarré sur le réseau:\n#! / bin / sh -e\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP bloquée dans le réseau est% s  n&quot; &quot;$ _IP&quot;\nFi","html":"<p>Le Pi devrait maintenant démarrer complètement.\nVous pouvez éditer /nfs/client1/etc/rc.local pour préciser que le Pi a démarré sur le réseau:\n#! / bin / sh -e\nsi [ &quot;$_IP&quot; ]; puis\n  printf &quot;Mon adresse IP bloquée dans le réseau est% s  n&quot; &quot;$ _IP&quot;\nFi</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"sortie 0","html":"<p>sortie 0</p>"},{"id":"text-38","type":"text","heading":"","plain_text":"Pendant le processus de démarrage, les journaux indiquent la configuration du réseau et NFS, ce qui peut être utile pour résoudre les problèmes de débogage (les lignes d&#39;IP-Config et suivantes):","html":"<p>Pendant le processus de démarrage, les journaux indiquent la configuration du réseau et NFS, ce qui peut être utile pour résoudre les problèmes de débogage (les lignes d&#039;IP-Config et suivantes):</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"Étape 4: Configuration par Pi (facultatif)\nJ&#39;ai un écran TFT pour le Pi qui est à l&#39;envers par défaut:","html":"<p>Étape 4: Configuration par Pi (facultatif)\nJ&#039;ai un écran TFT pour le Pi qui est à l&#039;envers par défaut:</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"La solution consiste à ajouter la ligne suivante à /boot/config.txt:\nlcd_rotate = 2","html":"<p>La solution consiste à ajouter la ligne suivante à /boot/config.txt:\nlcd_rotate = 2</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"Si je fais ça dans /tftpboot/config.txt il s&#39;appliquera à tous les PIS amorcés sur le réseau. Heureusement, le Pi vérifie d’abord un dossier en fonction de son adresse MAC (le numéro de série est indiqué ici), comme indiqué à la dernière ligne ci-dessous (copié à partir de la séquence de démarrage ci-dessus):\n2 mars 22:21:19 nas tftpd[2579]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 22:21:19 nas tftpd[2581]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 22:21:19 nas tftpd[2583]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf","html":"<p>Si je fais ça dans /tftpboot/config.txt il s&#039;appliquera à tous les PIS amorcés sur le réseau. Heureusement, le Pi vérifie d’abord un dossier en fonction de son adresse MAC (le numéro de série est indiqué ici), comme indiqué à la dernière ligne ci-dessous (copié à partir de la séquence de démarrage ci-dessus):\n2 mars 22:21:19 nas tftpd[2579]: tftpd: essayer d&#039;obtenir le fichier: bootcode.bin\n2 mars 22:21:19 nas tftpd[2581]: tftpd: essayer d&#039;obtenir le fichier: bootsig.bin\n2 mars 22:21:19 nas tftpd[2583]: tftpd: essayant d&#039;obtenir le fichier: ea1b3c41 / start.elf</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"Mon PI a le MAC de ea: 1b: 3c: 41 donc un dossier pour cela doit être créé:\nsudo mkdir / tftpboot / ea1b3c41","html":"<p>Mon PI a le MAC de ea: 1b: 3c: 41 donc un dossier pour cela doit être créé:\nsudo mkdir / tftpboot / ea1b3c41</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"Si le PI trouve se lancer là, il recherchera tous les autres fichiers là aussi, pour économiser de l’espace, ils peuvent être liés symboliquement avec sudo ln -s / tftpboot / *. qui donne:\npaul @ nas [23:08:25] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ls -alh\ntotal 8.0K\ndrwxr-xr-x 2 racine racine 4.0K 2 mars 23:08.\ndrwxr-xr-x 3 racine racine 4.0K 2 mars 23:06 ..\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\nlrwxrwxrwx 1 racine racine 18 mars 2 23h08 ea1b3c41 -&gt; / tftpboot / ea1b3c41\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf","html":"<p>Si le PI trouve se lancer là, il recherchera tous les autres fichiers là aussi, pour économiser de l’espace, ils peuvent être liés symboliquement avec sudo ln -s / tftpboot / *. qui donne:\npaul @ nas [23:08:25] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ls -alh\ntotal 8.0K\ndrwxr-xr-x 2 racine racine 4.0K 2 mars 23:08.\ndrwxr-xr-x 3 racine racine 4.0K 2 mars 23:06 ..\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\nlrwxrwxrwx 1 racine racine 18 mars 2 23h08 ea1b3c41 -&gt; / tftpboot / ea1b3c41\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"Nous pouvons déplacer le lien d&#39;auto-référencement nouvellement créé:\nsudo rm / tftpboot / ea1b3c41 / ea1b3c41","html":"<p>Nous pouvons déplacer le lien d&#039;auto-référencement nouvellement créé:\nsudo rm / tftpboot / ea1b3c41 / ea1b3c41</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"Désormais, lorsque Pi démarrera, il extraira tous les fichiers suivants de ce dossier:\n2 mars 23:09:41 nas tftpd[5282]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 23:09:41 nas tftpd[5284]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 23:09:41 nas tftpd[5286]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\n2 mars 23:09:41 nas tftpd[5288]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / autoboot.txt\n2 mars 23:09:41 nas tftpd[5290]: tftpd: essayant d’obtenir le fichier: ea1b3c41 / config.\n...","html":"<p>Désormais, lorsque Pi démarrera, il extraira tous les fichiers suivants de ce dossier:\n2 mars 23:09:41 nas tftpd[5282]: tftpd: essayer d&#039;obtenir le fichier: bootcode.bin\n2 mars 23:09:41 nas tftpd[5284]: tftpd: essayer d&#039;obtenir le fichier: bootsig.bin\n2 mars 23:09:41 nas tftpd[5286]: tftpd: essayant d&#039;obtenir le fichier: ea1b3c41 / start.elf\n2 mars 23:09:41 nas tftpd[5288]: tftpd: essayant d&#039;obtenir le fichier: ea1b3c41 / autoboot.txt\n2 mars 23:09:41 nas tftpd[5290]: tftpd: essayant d’obtenir le fichier: ea1b3c41 / config.\n...</p>"},{"id":"text-46","type":"text","heading":"","plain_text":"Maintenant modifié config.txt peut être ajouté, soit copié de / tftpboot et changé, ou de la /démarrage partition d&#39;une carte SD:\npaul @ nas [23:10:12] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ll\ntotal 4,0K\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\n-rw-r - r-- 1 racine racine 1.3K 2 mars 23:10 config.txt\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf","html":"<p>Maintenant modifié config.txt peut être ajouté, soit copié de / tftpboot et changé, ou de la /démarrage partition d&#039;une carte SD:\npaul @ nas [23:10:12] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ll\ntotal 4,0K\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\n-rw-r - r-- 1 racine racine 1.3K 2 mars 23:10 config.txt\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf</p>"},{"id":"text-47","type":"text","heading":"","plain_text":"Si config.txt était déjà symboliquement lié les supprimer en premier.\nMaintenant, cela commence avec l’écran dans le bon sens:","html":"<p>Si config.txt était déjà symboliquement lié les supprimer en premier.\nMaintenant, cela commence avec l’écran dans le bon sens:</p>"},{"id":"text-48","type":"text","heading":"","plain_text":"Carte d&#39;activation / de vérification du mode de démarrage USB\nLes étapes ci-dessous décrivent comment créer une carte SD qui activera et vérifiera le mode de démarrage USB (PXE), ce qui facilitera la configuration d&#39;un grand nombre de périphériques Pi 3 en une seule fois.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nDans les étapes suivantes, quelques fichiers sont édités, ce qui peut être fait sur un Pi ou une autre machine pouvant éditer /démarrage et rootfs systèmes de fichiers.\nÉtape 2: Configuration de démarrage\nComme ci-dessus, nous devons activer le mode de démarrage USB.\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt","html":"<p>Carte d&#039;activation / de vérification du mode de démarrage USB\nLes étapes ci-dessous décrivent comment créer une carte SD qui activera et vérifiera le mode de démarrage USB (PXE), ce qui facilitera la configuration d&#039;un grand nombre de périphériques Pi 3 en une seule fois.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nDans les étapes suivantes, quelques fichiers sont édités, ce qui peut être fait sur un Pi ou une autre machine pouvant éditer /démarrage et rootfs systèmes de fichiers.\nÉtape 2: Configuration de démarrage\nComme ci-dessus, nous devons activer le mode de démarrage USB.\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt</p>"},{"id":"text-49","type":"text","heading":"","plain_text":"Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on","html":"<p>Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on</p>"},{"id":"text-50","type":"text","heading":"","plain_text":"# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi","html":"<p># Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi</p>"},{"id":"text-51","type":"text","heading":"","plain_text":"# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README","html":"<p># Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README</p>"},{"id":"text-52","type":"text","heading":"","plain_text":"# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1","html":"<p># Activer l&#039;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1</p>"},{"id":"text-53","type":"text","heading":"","plain_text":"Étape 3: Vérifiez au démarrage\nAvec un simple script, le Pi peut être vérifié au démarrage. L’exemple ci-dessous efface l’écran pour améliorer la lisibilité (ce qui n’est pas utile pour le débogage des problèmes d’amorçage), puis s’endormit pendant une longue période (24h), empêchant le Pi de s’amorcer complètement afin que la sortie soit clairement visible, de la couleur ou un autre formatage pouvant être ajouté. c&#39;est plus évident!\nCréer /root/check-netboot.sh avec le contenu suivant:\n#! / bin / bash","html":"<p>Étape 3: Vérifiez au démarrage\nAvec un simple script, le Pi peut être vérifié au démarrage. L’exemple ci-dessous efface l’écran pour améliorer la lisibilité (ce qui n’est pas utile pour le débogage des problèmes d’amorçage), puis s’endormit pendant une longue période (24h), empêchant le Pi de s’amorcer complètement afin que la sortie soit clairement visible, de la couleur ou un autre formatage pouvant être ajouté. c&#039;est plus évident!\nCréer /root/check-netboot.sh avec le contenu suivant:\n#! / bin / bash</p>"},{"id":"text-54","type":"text","heading":"","plain_text":"clair","html":"<p>clair</p>"},{"id":"text-55","type":"text","heading":"","plain_text":"CHECK = $ (vcgencmd otp_dump | grep 17 :)","html":"<p>CHECK = $ (vcgencmd otp_dump | grep 17 :)</p>"},{"id":"text-56","type":"text","heading":"","plain_text":"si [[ \"$CHECK\" == \"17:3020000a\" ]]; puis\n  echo &quot;Mode de démarrage correct :) ($ CHECK)&quot;\nautre\n  echo &quot;!!! Le mode de démarrage a échoué, valeur: $ CHECK&quot;\nFi","html":"<p>si [[ &quot;$CHECK&quot; == &quot;17:3020000a&quot; ]]; puis\n  echo &quot;Mode de démarrage correct :) ($ CHECK)&quot;\nautre\n  echo &quot;!!! Le mode de démarrage a échoué, valeur: $ CHECK&quot;\nFi</p>"},{"id":"text-57","type":"text","heading":"","plain_text":"dormir 86400","html":"<p>dormir 86400</p>"},{"id":"text-58","type":"text","heading":"","plain_text":"Assurez-vous de le rendre exécutable:\nsudo chmod + x /root/check-netboot.sh","html":"<p>Assurez-vous de le rendre exécutable:\nsudo chmod + x /root/check-netboot.sh</p>"},{"id":"text-59","type":"text","heading":"","plain_text":"modifier /etc/rc.local appeler check-netboot.sh:","html":"<p>modifier /etc/rc.local appeler check-netboot.sh:</p>"},{"id":"text-60","type":"text","heading":"","plain_text":"#! / bin / sh -e","html":"<p>#! / bin / sh -e</p>"},{"id":"text-61","type":"text","heading":"","plain_text":"# Imprimer l&#39;adresse IP\n_IP = $ (nom d&#39;hôte -I) || vrai\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP est% s  n&quot; &quot;$ _IP&quot;\nFi","html":"<p># Imprimer l&#039;adresse IP\n_IP = $ (nom d&#039;hôte -I) || vrai\nsi [ &quot;$_IP&quot; ]; puis\n  printf &quot;Mon adresse IP est% s  n&quot; &quot;$ _IP&quot;\nFi</p>"},{"id":"text-62","type":"text","heading":"","plain_text":"/root/check-netboot.sh","html":"<p>/root/check-netboot.sh</p>"},{"id":"text-63","type":"text","heading":"","plain_text":"sortie 0","html":"<p>sortie 0</p>"},{"id":"text-64","type":"text","heading":"","plain_text":"À partir de cette carte, chaque Pi 3 peut être initialisé une fois, ce qui doit activer le mode de démarrage USB (PXE) et le confirmer. Le script peut être mis à jour pour éteindre en cas de succès avec éteindre après le premier écho dans check-netboot.sh.\nQuelques notes\nInstallation partagée\nTous les périphériques ont un accès en lecture-écriture au système de fichiers NFS dans la configuration ci-dessus, de sorte que tous les packages ou modifications installés sur l&#39;un d&#39;entre eux sont disponibles pour tous.\nEn outre, tout accès SSH ou clé d’hôte ainsi que le / etc / passwd Les fichiers sont tous partagés, ces modifications se propagent également.\nBien que cela puisse faciliter les modifications globales (installation de paquets à partir d&#39;apt), il est lent et j&#39;ai parfois vu des erreurs, bien que cela ait été lié à des permissions avant que je trouve une solution à cela, il semble préférable de faire des modifications localement. et re-cloner le système de fichiers.\nDébogage NFS\nInitialement, pour tenter de comprendre si le Pi s’amorçait à partir du réseau, il était utile d’activer le débogage NFS avec rpcdebug -m nfsd -s proc qui rapporte assez verbalement à syslog.\nNe désactiver l&#39;exécution rpcdebug -m nfsd -c\nPlus de détails ici.\nÉcran tactile\nActuellement, il semble que l&#39;écran tactile du Raspberry Pi ne soit pas détecté lors du démarrage du réseau. Résoudre cela est toujours un travail en cours &#8230;\nMise à jour (2019-04-06): J&#39;ai finalement eu le temps d&#39;essayer atftp, qui semble avoir résolu le problème de détection de l&#39;écran tactile.\nConfiguration par appareil\nLes étapes ci-dessus pour activer chaque périphérique config.txt les options peuvent également être utilisées pour remplacer cmdline.txt (en supprimant d’abord la version liée par un lien symbolique) et spécifiez un autre chemin NFS. / etc / exports aurait également besoin d&#39;être mis à jour.\npar exemple:\nroot @ nas: / tftpboot / ea1b3c41 # rm cmdline.txt\nroot @ nas: / tftpboot / ea1b3c41 # cp ../cmdline.txt.\nroot @ nas: / tftpboot / ea1b3c41 # vi cmdline.txt","html":"<p>À partir de cette carte, chaque Pi 3 peut être initialisé une fois, ce qui doit activer le mode de démarrage USB (PXE) et le confirmer. Le script peut être mis à jour pour éteindre en cas de succès avec éteindre après le premier écho dans check-netboot.sh.\nQuelques notes\nInstallation partagée\nTous les périphériques ont un accès en lecture-écriture au système de fichiers NFS dans la configuration ci-dessus, de sorte que tous les packages ou modifications installés sur l&#039;un d&#039;entre eux sont disponibles pour tous.\nEn outre, tout accès SSH ou clé d’hôte ainsi que le / etc / passwd Les fichiers sont tous partagés, ces modifications se propagent également.\nBien que cela puisse faciliter les modifications globales (installation de paquets à partir d&#039;apt), il est lent et j&#039;ai parfois vu des erreurs, bien que cela ait été lié à des permissions avant que je trouve une solution à cela, il semble préférable de faire des modifications localement. et re-cloner le système de fichiers.\nDébogage NFS\nInitialement, pour tenter de comprendre si le Pi s’amorçait à partir du réseau, il était utile d’activer le débogage NFS avec rpcdebug -m nfsd -s proc qui rapporte assez verbalement à syslog.\nNe désactiver l&#039;exécution rpcdebug -m nfsd -c\nPlus de détails ici.\nÉcran tactile\nActuellement, il semble que l&#039;écran tactile du Raspberry Pi ne soit pas détecté lors du démarrage du réseau. Résoudre cela est toujours un travail en cours &#8230;\nMise à jour (2019-04-06): J&#039;ai finalement eu le temps d&#039;essayer atftp, qui semble avoir résolu le problème de détection de l&#039;écran tactile.\nConfiguration par appareil\nLes étapes ci-dessus pour activer chaque périphérique config.txt les options peuvent également être utilisées pour remplacer cmdline.txt (en supprimant d’abord la version liée par un lien symbolique) et spécifiez un autre chemin NFS. / etc / exports aurait également besoin d&#039;être mis à jour.\npar exemple:\nroot @ nas: / tftpboot / ea1b3c41 # rm cmdline.txt\nroot @ nas: / tftpboot / ea1b3c41 # cp ../cmdline.txt.\nroot @ nas: / tftpboot / ea1b3c41 # vi cmdline.txt</p>"},{"id":"text-65","type":"text","heading":"","plain_text":"cmdline.txt maintenant contenu (note client 2):\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client2, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite","html":"<p>cmdline.txt maintenant contenu (note client 2):\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client2, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite</p>"},{"id":"text-66","type":"text","heading":"","plain_text":"/ etc / exports contient:\n# / etc / exports: la liste de contrôle d&#39;accès pour les systèmes de fichiers pouvant être exportés\n# aux clients NFS. Voir exportations (5).\n#\n# Exemple pour NFSv2 et NFSv3:\n# / srv / homes nom_hôte1 (rw, synchronisation, no_subtree_check) nom_hôte2 (ro, synchronisation, no_subtree_check)\n#\n# Exemple pour NFSv4:\n# / srv / nfs4 gss / krb5i (rw, sync, fsid = 0, crossmnt, no_subtree_check)\n# / srv / nfs4 / homes gss / krb5i (rw, sync, no_subtree_check)\n#\n/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)\n/ nfs / client2 * (rw, sync, no_subtree_check, no_root_squash)","html":"<p>/ etc / exports contient:\n# / etc / exports: la liste de contrôle d&#039;accès pour les systèmes de fichiers pouvant être exportés\n# aux clients NFS. Voir exportations (5).\n#\n# Exemple pour NFSv2 et NFSv3:\n# / srv / homes nom_hôte1 (rw, synchronisation, no_subtree_check) nom_hôte2 (ro, synchronisation, no_subtree_check)\n#\n# Exemple pour NFSv4:\n# / srv / nfs4 gss / krb5i (rw, sync, fsid = 0, crossmnt, no_subtree_check)\n# / srv / nfs4 / homes gss / krb5i (rw, sync, no_subtree_check)\n#\n/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)\n/ nfs / client2 * (rw, sync, no_subtree_check, no_root_squash)</p>"},{"id":"text-67","type":"text","heading":"","plain_text":"/ nfs / client2 est une copie de / nfs / client1 avec un modifié /etc/rc.local vérifier.\nCloner un autre Pi avec rsync\nL’exécution à partir du serveur NFS clonera en tant que racine des deux côtés, ce qui devrait préserver les autorisations sans qu&#39;il soit nécessaire de créer ou de tar / nfs dossier sur l&#39;appareil.\nLa première sudo permet à rsync de définir les autorisations et la propriété appropriées sur le système de fichiers local. le --rsync-path = &quot;sudo rsync&quot; exécute rsync en tant que root sur le Pi pour s’assurer qu’il a accès à tous les fichiers. Avec la configuration sudoers par défaut, rien ne sera demandé. pi mot de passe SSH de l&#39;utilisateur.\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats pi@192.168.1.59: / / nfs / client1","html":"<p>/ nfs / client2 est une copie de / nfs / client1 avec un modifié /etc/rc.local vérifier.\nCloner un autre Pi avec rsync\nL’exécution à partir du serveur NFS clonera en tant que racine des deux côtés, ce qui devrait préserver les autorisations sans qu&#039;il soit nécessaire de créer ou de tar / nfs dossier sur l&#039;appareil.\nLa première sudo permet à rsync de définir les autorisations et la propriété appropriées sur le système de fichiers local. le --rsync-path = &quot;sudo rsync&quot; exécute rsync en tant que root sur le Pi pour s’assurer qu’il a accès à tous les fichiers. Avec la configuration sudoers par défaut, rien ne sera demandé. pi mot de passe SSH de l&#039;utilisateur.\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#039;/ var / swap&#039; --stats pi@192.168.1.59: / / nfs / client1</p>"},{"id":"text-68","type":"text","heading":"","plain_text":"N&#39;oubliez pas de modifier / etc / fstab dans le système de fichiers NFS par la suite, ainsi que la suppression / var / swap si ce n&#39;était pas exclu.\nUn script simple pour le faire clone.sh:\n#! / bin / bash\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats $ 1: / $ 2\ngrep proc $ 2 / etc / fstab&gt; $ 2 / etc / fstab.new\nmv $ 2 / etc / fstab.new $ 2 / etc / fstab","html":"<p>N&#039;oubliez pas de modifier / etc / fstab dans le système de fichiers NFS par la suite, ainsi que la suppression / var / swap si ce n&#039;était pas exclu.\nUn script simple pour le faire clone.sh:\n#! / bin / bash\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#039;/ var / swap&#039; --stats $ 1: / $ 2\ngrep proc $ 2 / etc / fstab&gt; $ 2 / etc / fstab.new\nmv $ 2 / etc / fstab.new $ 2 / etc / fstab</p>"},{"id":"text-69","type":"text","heading":"","plain_text":"Courir comme ./clone.sh pi@192.168.1.59 / nfs / clientX.\nAutorisations et Sudo\nSi vous n&#39;utilisez pas rsync comme ci-dessus ou tar avec les indicateurs d&#39;autorisations spécifiques décrits précédemment, après la création du système de fichiers NFS, les autorisations peuvent être héritées du chemin d&#39;extraction ou similaire si les instructions tar spécifiques ci-dessus ne sont pas suivies:\nroot @ nas: / nfs / client1 # ll\ntotal 88\ndrwxr-xr-x 22 paul paul 4096 2 mars 20:45 ./\ndrwxr-xr-x 4 paul paul 4096 3 mars 09:53 ../\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 bin /\ndrwxr-xr-x 2 paul paul 4096 1 janvier 1970 botte /\ndrwxr-xr-x 3 paul paul 4096 1 janv. 1970 boot.bak /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:39 dev /\ndrwxr-xr-x 83 paul paul 4096 3 mars 09:59 etc /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 accueil /\ndrwxr-xr-x 17 paul paul 4096 2 mars 19:12 lib /\ndrwx ------ 2 paul paul 4096 29 nov. 02h35 perdus + trouvés /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 média /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 mnt /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 opt /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 proc /\ndrwx ------ 2 paul paul 4096 2 mars 19:13 racine /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:44 courir /\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 sbin /\ndrwxr-xr-x 2 paul paul 4096 29 nov 01:06 srv /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 sys /\ndrwxrwxrwt 8 racine racine 4096 3 mars 09:56 tmp /\ndrwxr-xr-x 10 paul paul 4096 29 nov. 01:06 usr /\ndrwxr-xr-x 11 paul paul 4096 3 mars 09:56 var /","html":"<p>Courir comme ./clone.sh pi@192.168.1.59 / nfs / clientX.\nAutorisations et Sudo\nSi vous n&#039;utilisez pas rsync comme ci-dessus ou tar avec les indicateurs d&#039;autorisations spécifiques décrits précédemment, après la création du système de fichiers NFS, les autorisations peuvent être héritées du chemin d&#039;extraction ou similaire si les instructions tar spécifiques ci-dessus ne sont pas suivies:\nroot @ nas: / nfs / client1 # ll\ntotal 88\ndrwxr-xr-x 22 paul paul 4096 2 mars 20:45 ./\ndrwxr-xr-x 4 paul paul 4096 3 mars 09:53 ../\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 bin /\ndrwxr-xr-x 2 paul paul 4096 1 janvier 1970 botte /\ndrwxr-xr-x 3 paul paul 4096 1 janv. 1970 boot.bak /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:39 dev /\ndrwxr-xr-x 83 paul paul 4096 3 mars 09:59 etc /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 accueil /\ndrwxr-xr-x 17 paul paul 4096 2 mars 19:12 lib /\ndrwx ------ 2 paul paul 4096 29 nov. 02h35 perdus + trouvés /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 média /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 mnt /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 opt /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 proc /\ndrwx ------ 2 paul paul 4096 2 mars 19:13 racine /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:44 courir /\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 sbin /\ndrwxr-xr-x 2 paul paul 4096 29 nov 01:06 srv /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 sys /\ndrwxrwxrwt 8 racine racine 4096 3 mars 09:56 tmp /\ndrwxr-xr-x 10 paul paul 4096 29 nov. 01:06 usr /\ndrwxr-xr-x 11 paul paul 4096 3 mars 09:56 var /</p>"},{"id":"text-70","type":"text","heading":"","plain_text":"Pour résoudre ce problème, attribuez la propriété racine à tous les fichiers sauf à la maison, notez l&#39;utilisation de l&#39;UID et du GID, car ils ne correspondent pas aux noms d&#39;entité du serveur:\nroot @ nas: / nfs / client1 # sudo chown root: root. -Rf\nroot @ nas: / nfs / client1 # chown 1000: 1000 home / pi -Rf","html":"<p>Pour résoudre ce problème, attribuez la propriété racine à tous les fichiers sauf à la maison, notez l&#039;utilisation de l&#039;UID et du GID, car ils ne correspondent pas aux noms d&#039;entité du serveur:\nroot @ nas: / nfs / client1 # sudo chown root: root. -Rf\nroot @ nas: / nfs / client1 # chown 1000: 1000 home / pi -Rf</p>"},{"id":"text-71","type":"text","heading":"","plain_text":"Si essayant de sudo sur un réseau démarré Pi et obtenant l&#39;erreur suivante:\nsudo: / usr / bin / sudo doit appartenir à uid 0 et avoir le bit setuid défini","html":"<p>Si essayant de sudo sur un réseau démarré Pi et obtenant l&#039;erreur suivante:\nsudo: / usr / bin / sudo doit appartenir à uid 0 et avoir le bit setuid défini</p>"},{"id":"text-72","type":"text","heading":"","plain_text":"Ensuite, assurez-vous que setuid le bit est mis:\nroot @ nas: / nfs / client1 # chmod / usr / bin / sudo","html":"<p>Ensuite, assurez-vous que setuid le bit est mis:\nroot @ nas: / nfs / client1 # chmod / usr / bin / sudo</p>"},{"id":"text-73","type":"text","heading":"","plain_text":"Les autorisations peuvent être vérifiées par rapport à l&#39;installation locale d&#39;Ubuntu:\nroot @ nas: / nfs / client1 # ls -alh / usr / bin / sudo\n-rwsr-xr-x 1 racine racine 140K 4 juillet 2017 / usr / bin / sudo\nroot @ nas: / nfs / client1 # ls -alh usr / bin / sudo\n-rwsr-xr-x 1 racine racine 133K 5 juin 2017 usr / bin / sudo","html":"<p>Les autorisations peuvent être vérifiées par rapport à l&#039;installation locale d&#039;Ubuntu:\nroot @ nas: / nfs / client1 # ls -alh / usr / bin / sudo\n-rwsr-xr-x 1 racine racine 140K 4 juillet 2017 / usr / bin / sudo\nroot @ nas: / nfs / client1 # ls -alh usr / bin / sudo\n-rwsr-xr-x 1 racine racine 133K 5 juin 2017 usr / bin / sudo</p>"},{"id":"text-74","type":"text","heading":"","plain_text":"Ceci n’est toujours pas parfait, il est donc fortement recommandé d’utiliser rsync ou tar comme décrit précédemment.\nDes sauvegardes\nLa racine NFS peut facilement être sauvegardée:\nroot @ nas: / nfs # cp client1 sauvegarde -Rf","html":"<p>Ceci n’est toujours pas parfait, il est donc fortement recommandé d’utiliser rsync ou tar comme décrit précédemment.\nDes sauvegardes\nLa racine NFS peut facilement être sauvegardée:\nroot @ nas: / nfs # cp client1 sauvegarde -Rf</p>"},{"id":"text-75","type":"text","heading":"","plain_text":"Il serait sage de le sauvegarder avant d’apporter des modifications à la configuration matérielle ou au package, juste au cas où.\nÉchecs de démarrage\nSi le Pi ne demande rien à TFTP, il pourrait s&#39;agir d&#39;un problème de configuration DHCP ou d&#39;un problème d&#39;accès TFTP.\nSi vous voyez le Pi faire peu ou pas plus loin que de demander bootcode.bin alors il est possible que la mauvaise version des fichiers se trouve dans le dossier tftp, assurez-vous que les prochaines versions de branche sont utilisées:\n2 mars 23:11:31 nas tftpd[5385]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin","html":"<p>Il serait sage de le sauvegarder avant d’apporter des modifications à la configuration matérielle ou au package, juste au cas où.\nÉchecs de démarrage\nSi le Pi ne demande rien à TFTP, il pourrait s&#039;agir d&#039;un problème de configuration DHCP ou d&#039;un problème d&#039;accès TFTP.\nSi vous voyez le Pi faire peu ou pas plus loin que de demander bootcode.bin alors il est possible que la mauvaise version des fichiers se trouve dans le dossier tftp, assurez-vous que les prochaines versions de branche sont utilisées:\n2 mars 23:11:31 nas tftpd[5385]: tftpd: essayer d&#039;obtenir le fichier: bootcode.bin</p>"},{"id":"text-76","type":"text","heading":"","plain_text":"Si cela va plus loin, mais se bloque comme indiqué ci-dessus, il pourrait s&#39;agir d&#39;un problème d&#39;accès au système de fichiers / NFS.\nAttention au cache de fichiers TFTP\nNon prouvé. Cependant, lors du débogage du problème de RAM mal signalé, j&#39;ai remplacé mon dossier de démarrage personnalisé (par de nouveaux liens symboliques), mais le Pi à écran tactile semblait toujours récupérer les anciens fichiers car il signalait une mémoire RAM inférieure.\nAprès un redémarrage de xinetd, tout allait bien &#8230;\nPerformance\nL&#39;installation et la configuration de paquets, etc. vont naturellement être plus lentes car le Pi ne dispose que d&#39;Ethernet à 100 Mbits et des frais généraux liés à l&#39;utilisation d&#39;un système de fichiers basé sur le réseau.\nPour des raisons de rapidité, toutes les configurations pourraient être effectuées sur SD, puis copiées en suivant les étapes ci-dessus.\nRéservations DHCP\nPour vous simplifier la vie, vous pouvez ajouter des réservations d’adresses DHCP dans le corps principal de la configuration DHCP afin que chaque adresse MAC reçoive la même adresse IP:\n{","html":"<p>Si cela va plus loin, mais se bloque comme indiqué ci-dessus, il pourrait s&#039;agir d&#039;un problème d&#039;accès au système de fichiers / NFS.\nAttention au cache de fichiers TFTP\nNon prouvé. Cependant, lors du débogage du problème de RAM mal signalé, j&#039;ai remplacé mon dossier de démarrage personnalisé (par de nouveaux liens symboliques), mais le Pi à écran tactile semblait toujours récupérer les anciens fichiers car il signalait une mémoire RAM inférieure.\nAprès un redémarrage de xinetd, tout allait bien &#8230;\nPerformance\nL&#039;installation et la configuration de paquets, etc. vont naturellement être plus lentes car le Pi ne dispose que d&#039;Ethernet à 100 Mbits et des frais généraux liés à l&#039;utilisation d&#039;un système de fichiers basé sur le réseau.\nPour des raisons de rapidité, toutes les configurations pourraient être effectuées sur SD, puis copiées en suivant les étapes ci-dessus.\nRéservations DHCP\nPour vous simplifier la vie, vous pouvez ajouter des réservations d’adresses DHCP dans le corps principal de la configuration DHCP afin que chaque adresse MAC reçoive la même adresse IP:\n{</p>"},{"id":"text-77","type":"text","heading":"","plain_text":"  ...","html":"<p>  ...</p>"},{"id":"text-78","type":"text","heading":"","plain_text":"  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n  ","html":"<p>  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n  </p>"},{"id":"text-79","type":"text","heading":"","plain_text":"  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n  ","html":"<p>  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n  </p>"},{"id":"text-80","type":"text","heading":"","plain_text":"Nom d&#39;hôte contrôlé par DHCP sur Raspbian\nEn théorie, la configuration devrait être aussi simple que celle indiquée ci-dessous:","html":"<p>Nom d&#039;hôte contrôlé par DHCP sur Raspbian\nEn théorie, la configuration devrait être aussi simple que celle indiquée ci-dessous:</p>"},{"id":"text-81","type":"text","heading":"","plain_text":"  ...","html":"<p>  ...</p>"},{"id":"text-82","type":"text","heading":"","plain_text":"  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n    option nom-hôte &quot;pi3-1&quot;;\n  ","html":"<p>  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n    option nom-hôte &quot;pi3-1&quot;;\n  </p>"},{"id":"text-83","type":"text","heading":"","plain_text":"  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n    option nom-hôte &quot;pi3-2&quot;;\n  ","html":"<p>  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n    option nom-hôte &quot;pi3-2&quot;;\n  </p>"},{"id":"text-84","type":"text","heading":"","plain_text":"Cependant, il semble que cela soit ignoré, cet article fournit une solution qui semble fonctionner et ne modifie pas la / etc / hostname fichier dans la racine NFS. En tant que root:\necho localhost&gt; / etc / hostname","html":"<p>Cependant, il semble que cela soit ignoré, cet article fournit une solution qui semble fonctionner et ne modifie pas la / etc / hostname fichier dans la racine NFS. En tant que root:\necho localhost&gt; / etc / hostname</p>"},{"id":"text-85","type":"text","heading":"","plain_text":"Ensuite:\necho unset old_host_name&gt; /etc/dhcp/dhclient-enter-hooks.d/unset_old_hostname","html":"<p>Ensuite:\necho unset old_host_name&gt; /etc/dhcp/dhclient-enter-hooks.d/unset_old_hostname</p>"},{"id":"text-86","type":"text","heading":"","plain_text":"Ce qui semble fonctionner:","html":"<p>Ce qui semble fonctionner:</p>"},{"id":"text-87","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"introduction\nChez The Floow, nous utilisons Raspberry Pis en tant que clients de kiosque Chromium pour surveiller nos systèmes et notre infrastructure. Nous recherchons maintenant un amorçage réseau pour cela, ainsi que quelques autres utilisations (à venir, espérons-le bientôt), de manière à ce qu&#39;ils soient faciles à gérer collectivement sans avoir besoin de flasher nombreuses cartes SD, et évite en outre la nécessité de s’inquiéter de la vie des cartes SD après de nombreuses opérations d’écriture.\nCet article est initialement basé sur les guides suivants, mais il inclut un peu plus de détails et une procédure de dépannage:\nIl est également possible de démarrer en réseau un Raspberry Pi 2.\nInstaller\nLe serveur\nUn HP Micro Server (G7 N54L) exécutant Ubuntu 16.04.3 LTS (effectuant diverses autres tâches également)\nLes clients)\nRaspberry Pi 3 modèle B (connecté via Ethernet câblé, ce processus ne fonctionne pas avec le WiFi)\nLe système d&#39;exploitation cible\nRaspbian 9 Lite (non Lite devrait fonctionner aussi)\nPréparation du système de fichiers racine au démarrage\nDans cette série d&#39;étapes, nous allons copier une nouvelle installation Raspbian, avec quelques modifications sur notre serveur de démarrage, et l&#39;exposer via un partage NFS.\nÉtape 1: Carte SD Raspbian Lite\nTéléchargez l&#39;image Raspbian Lite à partir d&#39;ici.\nFlash sur une carte Micro SD, le moyen le plus simple consiste à utiliser Etcher (il prend même un zip directement et vérifie également le contenu après)."},{"id":"text-2","heading":"Text","content":"Étape 2: démarrez le Raspberry Pi à partir de la nouvelle carte SD\nRemarque: Pour cela, un écran, un clavier et un câble Ethernet (avec accès à Internet) doivent être connectés.\nUne fois que le pi démarre, connectez-vous avec les informations d&#39;identification par défaut (pi / framboise).\nÉtape 3: Activer SSH (facultatif)\nCourir sudo raspi-config, sélectionnez l’option 5 (Options d’interface), P2 (SSH) et sélectionnez Oui pour activer SSH.\nVous pouvez ensuite quitter cet utilitaire et continuer les étapes suivantes via SSH, si vous préférez, ou continuer localement.\nL’IP est imprimé au démarrage mais peut également être visualisé en exécutant adresse ip:\npi @ raspberrypi: ~ $ ip addr\n1: lo:  mtu 65536 qdisc noqueue state UNKNOWN groupe par défaut qlen 1\n    lien / bouclage 00: 00: 00: 00: 00: 00 petit-déjeuner: 00: 00: 00: 00: 00: 00\n    inet 127.0.0.1/8 portée hôte bas\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 :: hôte de portée 1/128\n       valid_lft pour toujours Preferred_lft pour toujours\n2: eth0:  mtu 1500 qdisc état pfifo_fast UP groupe par défaut qlen 1000\n    lien / éther b8: 27: eb: 41: 8e: fa brd ff: ff: ff: ff: ff: ff\n    inet 192.168.1.135/24 brd 192.168.1.255 étendue globale eth0\n       valid_lft pour toujours Preferred_lft pour toujours\n    inet6 fe80 :: 2036: 591: lien de cef2: 341a / 64 scope\n       valid_lft pour toujours Preferred_lft pour toujours\n3: wlan0:  mtu 1500 qdisc état pfifo_fast groupe DOWN par défaut qlen 1000\n    link / ether b8: 27: eb: 14: db: af brd ff: ff: ff: ff: ff: ff"},{"id":"text-3","heading":"Text","content":"Dans ce cas, notre interface filaire est eth0, dont l&#39;adresse est 192.168.1.135.\nÉtape 4: Mettez à jour Debian\nPremière exécution sudo apt-get update pour vous assurer que tous les fichiers d&#39;index des paquets sont à jour.\nPuis, lancez sudo apt-get upgrade installer les dernières versions de tous les packages actuellement installés.\nPuis, lancez sudo apt-get dist-upgrade qui gère intelligemment les dépendances changeantes avec les nouvelles versions de paquets.\nDans les deux cas, sur demande, vérifiez et confirmez que vous êtes satisfait des modifications proposées.\nÉtape 5: désactiver l&#39;échange\nsudo dphys-swapfile swapoff\nsudo dphys-swapfile désinstaller\nsudo update-rc.d dphys-swapfile supprimer"},{"id":"text-4","heading":"Text","content":"Étape 6: Mettre à jour le Pi (firmware)\nCertains fichiers du suivant branche de la rpi-firmware Un référentiel est requis pour que ce processus fonctionne.\nCette étape est probablement optionnelle si bootcode.bin est utilisé à partir de GitHub dans les étapes TFTP ci-dessous.\nModifier: J&#39;ai également constaté que l&#39;utilisation des fichiers img du noyau raspbian &#39;stock&#39; pouvait provoquer des erreurs de démarrage désagréables.\nCourir branche sudo = prochaine mise à jour rpi.\nModifier (2018-07-14): Attention, la prochaine branche semble être obsolète, la mise à jour depuis le maître (par défaut) fonctionne bien pour 3B +.\nDétails sur rpi-update peut être trouvé ici https://github.com/Hexxeh/rpi-update.\nIl est probable que cela se termine en disant:\n    *** Un redémarrage est nécessaire pour activer le nouveau firmware"},{"id":"text-5","heading":"Text","content":"Alors, redémarrez maintenant avec redémarrage sudo.\nÉtape 7: &quot;Cloner&quot; le système de fichiers\nUne fois que le Pi a redémarré, localement ou via SSH, lancez:\nsudo mkdir -p / nfs / client1\nsudo apt-get install -y rsync\nsudo rsync -xa --progress --exclude / nfs / / nfs / client1"},{"id":"text-6","heading":"Text","content":"Remarque: Vous devez faire cela sur un Pi en cours d&#39;exécution, la copie de la carte SDK sur un autre hôte ne semble pas fonctionner.\nRégénérez les clés d’hôte SSH (probablement optionnel):\ncd / nfs / client1\nsudo mount --bind / dev dev\nsudo mount --bind / sys sys\nsudo mount --bind / proc proc\nsudo chroot.\nrm / etc / ssh / ssh_host_ *\ndpkg-reconfigure openssh-server\nsortie\nsudo umount dev\nsudo umount sys\nsudo umount proc"},{"id":"text-7","heading":"Text","content":"Supprimez le fichier d&#39;échange dupliqué s&#39;il existe:\nsudo rm / nfs / client1 / var / swap"},{"id":"text-8","heading":"Text","content":"Créez ensuite une archive tar du dossier nfs (vous pouvez le gziper mais le Pi n’est pas si puissant que ça n’en vaut probablement pas la peine par rapport au temps de transfert, mais c’est juste une hypothèse).\nle -p drapeau doit préserver les autorisations, etc.\nsudo tar -cpf /nfs.tar / nfs"},{"id":"text-9","heading":"Text","content":"Je me suis retrouvé avec un goudron de 1,2 Go:\npi @ raspberrypi: ~ $ ls -alh /nfs.tar\n-rw-r - r-- 1 racine racine 1.2G 2 mars, 20h56 /nfs.tar"},{"id":"text-10","heading":"Text","content":"Enfin, cette archive doit se retrouver sur le serveur, ce qui importe peu &#8211; rsync, scp, ou prenez la carte et copiez-la &#8230;\npar exemple:\npi @ raspberrypi: ~ $ scp /nfs.tar paul @ nas: /home/paul/nfs.tar\nnfs.tar 2% 24MB 12.9MB / s 01:25 ETA"},{"id":"text-11","heading":"Text","content":"Nous avons maintenant terminé avec ce Pi pour le moment, la carte SD sera utilisée plus tard.\nIl existe d&#39;autres instructions ci-dessous pour &quot;cloner&quot; un Pi existant en utilisant rsync pour préserver les autorisations, ce qui peut être plus rapide si vous souhaitez cloner directement sur votre serveur.\nActiver le démarrage réseau\nCes étapes activent le mode de démarrage USB (qui inclut PXE) sur le Pi.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nÉtape 2: Configuration de démarrage\nNous devons activer le mode de démarrage USB (qui prend également en charge PXE).\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt"},{"id":"text-12","heading":"Text","content":"Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on"},{"id":"text-13","heading":"Text","content":"# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi"},{"id":"text-14","heading":"Text","content":"# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README"},{"id":"text-15","heading":"Text","content":"# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1"},{"id":"text-16","heading":"Text","content":"Puis redémarrez:\nredémarrage sudo\nUne fois que le Pi est rétabli, vérifiez que l’OTP a été programmé correctement avec vcgencmd otp_dump | grep 17::\npi @ raspberrypi: ~ $ vcgencmd otp_dump | grep 17:\n17: 3020000a"},{"id":"text-17","heading":"Text","content":"Si la sortie se termine par 3020000a alors cela a fonctionné.\nUne fois de plus, nous avons fini avec les cartes Pi et SD pour le moment, vous pouvez inverser la /boot/config.txt changer si vous souhaitez continuer à utiliser la carte à d’autres fins, le reste de la /démarrage la partition sur la carte SD sera toujours nécessaire plus tard.\nEn fait, le réseau démarre le Pi\nDans cette série d&#39;étapes, nous apportons les modifications requises côté serveur pour lui permettre de démarrer.\nÉtape 1: DHCP\nVotre serveur DHCP local doit pouvoir envoyer quelques options DHCP spécifiques.\nMon serveur exécute déjà le serveur DHCP ISC qui peut être installé avec sudo apt-get install isc-dhcp-server.\nAuparavant, ma configuration DHCP (/etc/dhcp/dhcpd.conf) servait des adresses IP de la plage 192.168.1.100-200, ainsi qu&#39;un suffixe DNS local spécifique, des serveurs de noms et la passerelle, ainsi qu&#39;un certain nombre de réservations IP (non incluses ci-dessous). :\nL&#39;adresse de la directive next-server doit être ajoutée: serveur suivant 192.168.1.50;, ainsi que le nom du serveur TFTP: option tftp-nom-serveur &quot;192.168.1.50&quot;;.\nJe n&#39;ai pas rencontré le avoir besoin pour l&#39;entrée tftp-nom-serveur avant le démarrage PXE des ordinateurs / serveurs standard (x86 / x64).\nCe fil de discussion a permis d’affiner certaines des modifications de configuration requises pour isc-dhcp-server.\nAprès toute modification, redémarrez le service:\nsudo service redémarrage du serveur isc-dhcp-server"},{"id":"text-18","heading":"Text","content":"L&#39;activité DHCP peut être visualisée soit en finissant syslog tail -f / var / log / syslog | grep dhcpd:\n-&gt;% tail -f / var / log / syslog | grep dhcpd\n2 mars 21:48:17 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:17 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPDISCOVER à partir de b8: 27: eb: 1b: 3c: 41 via em1\n2 mars 21:48:27 nas dhcpd[825]: DHCPOFFER sur 192.168.1.58 à b8: 27: eb: 1b: 3c: 41 via em1"},{"id":"text-19","heading":"Text","content":"Ou en utilisant tcpdump: sudo tcpdump -i em1 port bootpc\n-&gt;% sudo tcpdump -i em1 port bootpc\n21: 48: 17.817689 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 17.818171 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300\n21: 48: 27.207000 IP 0.0.0.0.bootpc&gt; 255.255.255.255.bootps: BOOTP / DHCP, Requête de b8: 27: eb: 1b: 3c: 41 (oui inconnue), longueur 320\n21: 48: 27.207371 IP nas.home.ridgway.io.bootps&gt; 192.168.1.58.bootpc: BOOTP / DHCP, Réponse, longueur 300"},{"id":"text-20","heading":"Text","content":"Lorsque le Pi est allumé après l&#39;activation du mode de démarrage USB, vous pouvez le voir à la recherche d&#39;une adresse IP.\nÉtape 2: TFTP\nInstallez le service TFTP (qui fonctionne avec xinetd):\nsudo apt-get install -y tftpd"},{"id":"text-21","heading":"Text","content":"Créer un fichier de configuration tftpd /etc/xinetd.d/tftp contenant:\nEt créer le / tftpboot dossier spécifié ci-dessus:\nsudo mkdir / tftpboot"},{"id":"text-22","heading":"Text","content":"Puis enfin redémarrez xinetd:\nsudo service xinetd restart"},{"id":"text-23","heading":"Text","content":"Pour afficher l’activité du syslog de fin de serveur TFTP avec tail -f / var / log / syslog | grep tftpd:\nVérifiez la connectivité et la journalisation à partir d&#39;un autre hôte:\nClient:\npaul @ box [21:54:00] [~] \n \n \n \n-&gt;% tftp 192.168.1.50\ntftp&gt; se faire tester\nCode d&#39;erreur 1: fichier non trouvé\ntftp&gt;"},{"id":"text-24","heading":"Text","content":"Serveur:\npaul @ nas [21:53:48] [~] \n \n \n \n-&gt;% tail -f / var / log / syslog | grep tftpd\n2 mars 21:54:04 nas tftpd[1800]: tftpd: essayer d&#39;obtenir le fichier: test\n2 mars 21:54:04 nas tftpd[1800]: tftpd: fichier de desserte de / tftpboot"},{"id":"text-25","heading":"Text","content":"Maintenant, lorsque le Pi est démarré après les entrées DHCP, Syslog devrait afficher une activité TFTP:\ntftpd: essayant d&#39;obtenir le fichier: bootsig.bin\ntftpd: fichier de desserte de / tftpboot"},{"id":"text-26","heading":"Text","content":"Remarque: Le journal n&#39;indique pas d&#39;échec car ce fichier n&#39;existe pas encore.\nCopier tous les fichiers du /démarrage partition de la carte SD à la / tftpboot dossier. Si le micrologiciel Pi a été mis à jour de la manière décrite ci-dessus, il ne devrait pas y avoir de problème, mais le dernier bootcode.bin de GitHub n&#39;est pas requis.\npar exemple:\npaul @ box [10:21:09] [/media/paul/boot] \n \n \n \n-&gt;% 7z un boot.7z / media / paul / boot / *\npaul @ box [10:35:39] [/media/paul/boot] \n \n \n \n-&gt;% scp boot.7z nas:"},{"id":"text-27","heading":"Text","content":"paul @ nas [10:21:30] [~/boot] \n \n \n \n-&gt;% 7z x ../boot.7z\npaul @ nas [10:21:16] [~/boot] \n \n \n \n-&gt;% sudo mv * / tftpboot"},{"id":"text-28","heading":"Text","content":"Remarque: Comme l&#39;a noté un lecteur, la liaison de la racine TFTP au dossier de démarrage de l&#39;arborescence NFS permet la mise à jour du microprogramme. La liaison ou la copie du contenu de boot vers NFS permet également à I2C et SPI de fonctionner, car les superpositions de / boot sont disponibles pour le système d&#39;exploitation.\nAttention: Si d&#39;autres fichiers de GitHub (éventuellement les fichiers start / fixup elf) sont utilisés, le Pi ne pourra PAS voir toutes les ressources disponibles telles que la RAM.\nLes journaux affichent les fichiers demandés. Un nettoyage peut donc être effectué si vous le souhaitez.\ntftpd: essayer d&#39;obtenir le fichier: bootcode.bin\nessayer d&#39;obtenir le fichier: bootsig.bin\ntftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\ntftpd: essayer d&#39;obtenir le fichier: autoboot.txt\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: start.elf\ntftpd: essayer de récupérer le fichier: fixup.dat\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayer d&#39;obtenir le fichier: dt-blob.bin\ntftpd: essayer d&#39;obtenir le fichier: recovery.elf\ntftpd: essayer d&#39;obtenir le fichier: config.txt\ntftpd: essayant d&#39;obtenir le fichier: bootcfg.txt\ntftpd: essayer d&#39;obtenir le fichier: cmdline.txt\ntftpd: essayer d&#39;obtenir le fichier: recovery8.img\ntftpd: essayant d&#39;obtenir le fichier: recovery8-32.img\ntftpd: essayant d&#39;obtenir le fichier: recovery7.img\ntftpd: essayer d&#39;obtenir le fichier: recovery.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8.img\ntftpd: essayant d&#39;obtenir le fichier: kernel8-32.img\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayer d&#39;obtenir le fichier: armstub8.bin\ntftpd: essayant d&#39;obtenir le fichier: armstub8-32.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub7.bin\ntftpd: essayer d&#39;obtenir le fichier: armstub.bin\ntftpd: essayant d&#39;obtenir le fichier: kernel7.img\ntftpd: essayant d&#39;obtenir le fichier: bcm2710-rpi-3-b.dtb\ntftpd: essayer d&#39;obtenir le fichier: overlays / rpi-ft5406.dtbo\ntftpd: essayant d&#39;obtenir un fichier: overlays / rpi-backlight.dtbo\ntftpd: essayer d&#39;obtenir le fichier: config.txt"},{"id":"text-29","heading":"Text","content":"Tout va bien lorsque le PI démarre, il affichera d&#39;abord l&#39;écran de dégradé habituel:\nEt puis, semblent rester bloqués dans l’attente de la carte SD:"},{"id":"text-30","heading":"Text","content":"Si l&#39;un des fichiers requis est manquant, DHCP n&#39;est pas configuré correctement ou ne parvient pas à joindre TFTP. D&#39;après mon expérience, vous n&#39;obtiendrez même pas l&#39;écran de dégradé.\nÉtape 3: NFS\nInstallez le serveur NFS:\nsudo apt-get install -y serveur nfs-kernel"},{"id":"text-31","heading":"Text","content":"Extrayez l&#39;archive tar à partir des étapes ci-dessus.\nEncore une fois, pour préserver les autorisations sudo et - même propriétaire sont importants:\nsudo tar --same-owner -xvf nfs.tar"},{"id":"text-32","heading":"Text","content":"Et déplacez le dossier nfs à la racine:\nsudo mv nfs /"},{"id":"text-33","heading":"Text","content":"Et puis configurez l&#39;exportation NFS, en redémarrant NFS après et en vous assurant qu&#39;elle est activée:\necho &quot;/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)&quot; | sudo tee -a / etc / exports\nsudo systemctl enable rpcbind\nsudo systemctl redémarrer rpcbind\nsudo systemctl enable nfs-kernel-server\nsudo systemctl redémarrer nfs-kernel-server"},{"id":"text-34","heading":"Text","content":"Maintenant, il faut dire au Pi de démarrer à partir du serveur NFS, créer / éditer /tftpboot/cmdline.txt avec le contenu:\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client1, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite"},{"id":"text-35","heading":"Text","content":"Cela peut également être copié et édité à partir de la partition de démarrage de la carte SD.\nEnfin, supprimez toutes les autres entrées du fichier fstab / nfs / client1 / etc / fstab de sorte qu&#39;il ne contienne que l&#39;entrée proc:\nproc / proc proc par défaut 0 0"},{"id":"text-36","heading":"Text","content":"Le Pi devrait maintenant démarrer complètement.\nVous pouvez éditer /nfs/client1/etc/rc.local pour préciser que le Pi a démarré sur le réseau:\n#! / bin / sh -e\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP bloquée dans le réseau est% s  n&quot; &quot;$ _IP&quot;\nFi"},{"id":"text-37","heading":"Text","content":"sortie 0"},{"id":"text-38","heading":"Text","content":"Pendant le processus de démarrage, les journaux indiquent la configuration du réseau et NFS, ce qui peut être utile pour résoudre les problèmes de débogage (les lignes d&#39;IP-Config et suivantes):"},{"id":"text-39","heading":"Text","content":"Étape 4: Configuration par Pi (facultatif)\nJ&#39;ai un écran TFT pour le Pi qui est à l&#39;envers par défaut:"},{"id":"text-40","heading":"Text","content":"La solution consiste à ajouter la ligne suivante à /boot/config.txt:\nlcd_rotate = 2"},{"id":"text-41","heading":"Text","content":"Si je fais ça dans /tftpboot/config.txt il s&#39;appliquera à tous les PIS amorcés sur le réseau. Heureusement, le Pi vérifie d’abord un dossier en fonction de son adresse MAC (le numéro de série est indiqué ici), comme indiqué à la dernière ligne ci-dessous (copié à partir de la séquence de démarrage ci-dessus):\n2 mars 22:21:19 nas tftpd[2579]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 22:21:19 nas tftpd[2581]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 22:21:19 nas tftpd[2583]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf"},{"id":"text-42","heading":"Text","content":"Mon PI a le MAC de ea: 1b: 3c: 41 donc un dossier pour cela doit être créé:\nsudo mkdir / tftpboot / ea1b3c41"},{"id":"text-43","heading":"Text","content":"Si le PI trouve se lancer là, il recherchera tous les autres fichiers là aussi, pour économiser de l’espace, ils peuvent être liés symboliquement avec sudo ln -s / tftpboot / *. qui donne:\npaul @ nas [23:08:25] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ls -alh\ntotal 8.0K\ndrwxr-xr-x 2 racine racine 4.0K 2 mars 23:08.\ndrwxr-xr-x 3 racine racine 4.0K 2 mars 23:06 ..\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\nlrwxrwxrwx 1 racine racine 18 mars 2 23h08 ea1b3c41 -&gt; / tftpboot / ea1b3c41\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf"},{"id":"text-44","heading":"Text","content":"Nous pouvons déplacer le lien d&#39;auto-référencement nouvellement créé:\nsudo rm / tftpboot / ea1b3c41 / ea1b3c41"},{"id":"text-45","heading":"Text","content":"Désormais, lorsque Pi démarrera, il extraira tous les fichiers suivants de ce dossier:\n2 mars 23:09:41 nas tftpd[5282]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin\n2 mars 23:09:41 nas tftpd[5284]: tftpd: essayer d&#39;obtenir le fichier: bootsig.bin\n2 mars 23:09:41 nas tftpd[5286]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / start.elf\n2 mars 23:09:41 nas tftpd[5288]: tftpd: essayant d&#39;obtenir le fichier: ea1b3c41 / autoboot.txt\n2 mars 23:09:41 nas tftpd[5290]: tftpd: essayant d’obtenir le fichier: ea1b3c41 / config.\n..."},{"id":"text-46","heading":"Text","content":"Maintenant modifié config.txt peut être ajouté, soit copié de / tftpboot et changé, ou de la /démarrage partition d&#39;une carte SD:\npaul @ nas [23:10:12] [/tftpboot/ea1b3c41] \n \n \n \n-&gt;% ll\ntotal 4,0K\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2708-rpi-0-w.dtb -&gt; /tftpboot/bcm2708-rpi-0-w.dtb\nlrwxrwxrwx 1 racine racine 27 mars 2 23h07 bcm2708-rpi-b.dtb -&gt; /tftpboot/bcm2708-rpi-b.dtb\nlrwxrwxrwx 1 racine racine 32 mars 2 23h07 bcm2708-rpi-b-plus.dtb -&gt; /tftpboot/bcm2708-rpi-b-plus.dtb\nlrwxrwxrwx 1 racine racine 28 mars 2 23h07 bcm2708-rpi-cm.dtb -&gt; /tftpboot/bcm2708-rpi-cm.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2709-rpi-2-b.dtb -&gt; /tftpboot/bcm2709-rpi-2-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-3-b.dtb -&gt; /tftpboot/bcm2710-rpi-3-b.dtb\nlrwxrwxrwx 1 racine racine 29 mars 2 23h07 bcm2710-rpi-cm3.dtb -&gt; /tftpboot/bcm2710-rpi-cm3.dtb\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 bootcode.bin -&gt; /tftpboot/bootcode.bin\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 cmdline.txt -&gt; /tftpboot/cmdline.txt\n-rw-r - r-- 1 racine racine 1.3K 2 mars 23:10 config.txt\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 kernel7.img -&gt; /tftpboot/kernel7.img\nlrwxrwxrwx 1 racine racine 20 mars 2 23h07 kernel.img -&gt; /tftpboot/kernel.img\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_cd.elf -&gt; /tftpboot/start_cd.elf\nlrwxrwxrwx 1 racine racine 22 mars 2 23h07 start_db.elf -&gt; /tftpboot/start_db.elf\nlrwxrwxrwx 1 racine racine 19 mars 2 23h07 start.elf -&gt; /tftpboot/start.elf\nlrwxrwxrwx 1 racine racine 21 mars 2 23h07 start_x.elf -&gt; /tftpboot/start_x.elf"},{"id":"text-47","heading":"Text","content":"Si config.txt était déjà symboliquement lié les supprimer en premier.\nMaintenant, cela commence avec l’écran dans le bon sens:"},{"id":"text-48","heading":"Text","content":"Carte d&#39;activation / de vérification du mode de démarrage USB\nLes étapes ci-dessous décrivent comment créer une carte SD qui activera et vérifiera le mode de démarrage USB (PXE), ce qui facilitera la configuration d&#39;un grand nombre de périphériques Pi 3 en une seule fois.\nÉtape 1: Carte SD Raspbian Lite\nSoit en répétant l’étape 1 ci-dessus, soit en réutilisant la carte laissée par la section précédente, redémarrez le Pi.\nDans les étapes suivantes, quelques fichiers sont édités, ce qui peut être fait sur un Pi ou une autre machine pouvant éditer /démarrage et rootfs systèmes de fichiers.\nÉtape 2: Configuration de démarrage\nComme ci-dessus, nous devons activer le mode de démarrage USB.\nAjouter program_usb_boot_mode = 1 à /boot/config.txt:\necho programme_usb_boot_mode = 1 | sudo tee -a /boot/config.txt"},{"id":"text-49","heading":"Text","content":"Qui peut être vérifié avec tail /boot/config.txt:\npi @ raspberrypi: ~ $ tail /boot/config.txt\n# dtparam = spi = on"},{"id":"text-50","heading":"Text","content":"# Décommenter ceci pour activer le module lirc-rpi\n# dtoverlay = lirc-rpi"},{"id":"text-51","heading":"Text","content":"# Les paramètres et les superpositions supplémentaires sont documentés / boot / overlays / README"},{"id":"text-52","heading":"Text","content":"# Activer l&#39;audio (charge snd_bcm2835)\ndtparam = audio = on\nprogram_usb_boot_mode = 1"},{"id":"text-53","heading":"Text","content":"Étape 3: Vérifiez au démarrage\nAvec un simple script, le Pi peut être vérifié au démarrage. L’exemple ci-dessous efface l’écran pour améliorer la lisibilité (ce qui n’est pas utile pour le débogage des problèmes d’amorçage), puis s’endormit pendant une longue période (24h), empêchant le Pi de s’amorcer complètement afin que la sortie soit clairement visible, de la couleur ou un autre formatage pouvant être ajouté. c&#39;est plus évident!\nCréer /root/check-netboot.sh avec le contenu suivant:\n#! / bin / bash"},{"id":"text-54","heading":"Text","content":"clair"},{"id":"text-55","heading":"Text","content":"CHECK = $ (vcgencmd otp_dump | grep 17 :)"},{"id":"text-56","heading":"Text","content":"si [[ \"$CHECK\" == \"17:3020000a\" ]]; puis\n  echo &quot;Mode de démarrage correct :) ($ CHECK)&quot;\nautre\n  echo &quot;!!! Le mode de démarrage a échoué, valeur: $ CHECK&quot;\nFi"},{"id":"text-57","heading":"Text","content":"dormir 86400"},{"id":"text-58","heading":"Text","content":"Assurez-vous de le rendre exécutable:\nsudo chmod + x /root/check-netboot.sh"},{"id":"text-59","heading":"Text","content":"modifier /etc/rc.local appeler check-netboot.sh:"},{"id":"text-60","heading":"Text","content":"#! / bin / sh -e"},{"id":"text-61","heading":"Text","content":"# Imprimer l&#39;adresse IP\n_IP = $ (nom d&#39;hôte -I) || vrai\nsi [ \"$_IP\" ]; puis\n  printf &quot;Mon adresse IP est% s  n&quot; &quot;$ _IP&quot;\nFi"},{"id":"text-62","heading":"Text","content":"/root/check-netboot.sh"},{"id":"text-63","heading":"Text","content":"sortie 0"},{"id":"text-64","heading":"Text","content":"À partir de cette carte, chaque Pi 3 peut être initialisé une fois, ce qui doit activer le mode de démarrage USB (PXE) et le confirmer. Le script peut être mis à jour pour éteindre en cas de succès avec éteindre après le premier écho dans check-netboot.sh.\nQuelques notes\nInstallation partagée\nTous les périphériques ont un accès en lecture-écriture au système de fichiers NFS dans la configuration ci-dessus, de sorte que tous les packages ou modifications installés sur l&#39;un d&#39;entre eux sont disponibles pour tous.\nEn outre, tout accès SSH ou clé d’hôte ainsi que le / etc / passwd Les fichiers sont tous partagés, ces modifications se propagent également.\nBien que cela puisse faciliter les modifications globales (installation de paquets à partir d&#39;apt), il est lent et j&#39;ai parfois vu des erreurs, bien que cela ait été lié à des permissions avant que je trouve une solution à cela, il semble préférable de faire des modifications localement. et re-cloner le système de fichiers.\nDébogage NFS\nInitialement, pour tenter de comprendre si le Pi s’amorçait à partir du réseau, il était utile d’activer le débogage NFS avec rpcdebug -m nfsd -s proc qui rapporte assez verbalement à syslog.\nNe désactiver l&#39;exécution rpcdebug -m nfsd -c\nPlus de détails ici.\nÉcran tactile\nActuellement, il semble que l&#39;écran tactile du Raspberry Pi ne soit pas détecté lors du démarrage du réseau. Résoudre cela est toujours un travail en cours &#8230;\nMise à jour (2019-04-06): J&#39;ai finalement eu le temps d&#39;essayer atftp, qui semble avoir résolu le problème de détection de l&#39;écran tactile.\nConfiguration par appareil\nLes étapes ci-dessus pour activer chaque périphérique config.txt les options peuvent également être utilisées pour remplacer cmdline.txt (en supprimant d’abord la version liée par un lien symbolique) et spécifiez un autre chemin NFS. / etc / exports aurait également besoin d&#39;être mis à jour.\npar exemple:\nroot @ nas: / tftpboot / ea1b3c41 # rm cmdline.txt\nroot @ nas: / tftpboot / ea1b3c41 # cp ../cmdline.txt.\nroot @ nas: / tftpboot / ea1b3c41 # vi cmdline.txt"},{"id":"text-65","heading":"Text","content":"cmdline.txt maintenant contenu (note client 2):\nselinux = 0 dwc_otg.lpm_enable = 0 console = tty1 rootwait rw nfsroot = 192.168.1.50: / nfs / client2, v3 ip = dhcp racine = / dev / nfs ascenseur = date-limite"},{"id":"text-66","heading":"Text","content":"/ etc / exports contient:\n# / etc / exports: la liste de contrôle d&#39;accès pour les systèmes de fichiers pouvant être exportés\n# aux clients NFS. Voir exportations (5).\n#\n# Exemple pour NFSv2 et NFSv3:\n# / srv / homes nom_hôte1 (rw, synchronisation, no_subtree_check) nom_hôte2 (ro, synchronisation, no_subtree_check)\n#\n# Exemple pour NFSv4:\n# / srv / nfs4 gss / krb5i (rw, sync, fsid = 0, crossmnt, no_subtree_check)\n# / srv / nfs4 / homes gss / krb5i (rw, sync, no_subtree_check)\n#\n/ nfs / client1 * (rw, sync, no_subtree_check, no_root_squash)\n/ nfs / client2 * (rw, sync, no_subtree_check, no_root_squash)"},{"id":"text-67","heading":"Text","content":"/ nfs / client2 est une copie de / nfs / client1 avec un modifié /etc/rc.local vérifier.\nCloner un autre Pi avec rsync\nL’exécution à partir du serveur NFS clonera en tant que racine des deux côtés, ce qui devrait préserver les autorisations sans qu&#39;il soit nécessaire de créer ou de tar / nfs dossier sur l&#39;appareil.\nLa première sudo permet à rsync de définir les autorisations et la propriété appropriées sur le système de fichiers local. le --rsync-path = &quot;sudo rsync&quot; exécute rsync en tant que root sur le Pi pour s’assurer qu’il a accès à tous les fichiers. Avec la configuration sudoers par défaut, rien ne sera demandé. pi mot de passe SSH de l&#39;utilisateur.\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats pi@192.168.1.59: / / nfs / client1"},{"id":"text-68","heading":"Text","content":"N&#39;oubliez pas de modifier / etc / fstab dans le système de fichiers NFS par la suite, ainsi que la suppression / var / swap si ce n&#39;était pas exclu.\nUn script simple pour le faire clone.sh:\n#! / bin / bash\nsudo rsync -xa --progress --rsync-path = &quot;sudo rsync&quot; --exclude &#39;/ var / swap&#39; --stats $ 1: / $ 2\ngrep proc $ 2 / etc / fstab&gt; $ 2 / etc / fstab.new\nmv $ 2 / etc / fstab.new $ 2 / etc / fstab"},{"id":"text-69","heading":"Text","content":"Courir comme ./clone.sh pi@192.168.1.59 / nfs / clientX.\nAutorisations et Sudo\nSi vous n&#39;utilisez pas rsync comme ci-dessus ou tar avec les indicateurs d&#39;autorisations spécifiques décrits précédemment, après la création du système de fichiers NFS, les autorisations peuvent être héritées du chemin d&#39;extraction ou similaire si les instructions tar spécifiques ci-dessus ne sont pas suivies:\nroot @ nas: / nfs / client1 # ll\ntotal 88\ndrwxr-xr-x 22 paul paul 4096 2 mars 20:45 ./\ndrwxr-xr-x 4 paul paul 4096 3 mars 09:53 ../\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 bin /\ndrwxr-xr-x 2 paul paul 4096 1 janvier 1970 botte /\ndrwxr-xr-x 3 paul paul 4096 1 janv. 1970 boot.bak /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:39 dev /\ndrwxr-xr-x 83 paul paul 4096 3 mars 09:59 etc /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 accueil /\ndrwxr-xr-x 17 paul paul 4096 2 mars 19:12 lib /\ndrwx ------ 2 paul paul 4096 29 nov. 02h35 perdus + trouvés /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 média /\ndrwxr-xr-x 2 paul paul 4096 29 nov. 01:06 mnt /\ndrwxr-xr-x 3 paul paul 4096 29 nov. 01:22 opt /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 proc /\ndrwx ------ 2 paul paul 4096 2 mars 19:13 racine /\ndrwxr-xr-x 2 paul paul 4096 2 mars 20:44 courir /\ndrwxr-xr-x 2 paul paul 4096 2 mars 19:04 sbin /\ndrwxr-xr-x 2 paul paul 4096 29 nov 01:06 srv /\ndr-xr-xr-x 2 paul paul 4096 1 janv. 1970 sys /\ndrwxrwxrwt 8 racine racine 4096 3 mars 09:56 tmp /\ndrwxr-xr-x 10 paul paul 4096 29 nov. 01:06 usr /\ndrwxr-xr-x 11 paul paul 4096 3 mars 09:56 var /"},{"id":"text-70","heading":"Text","content":"Pour résoudre ce problème, attribuez la propriété racine à tous les fichiers sauf à la maison, notez l&#39;utilisation de l&#39;UID et du GID, car ils ne correspondent pas aux noms d&#39;entité du serveur:\nroot @ nas: / nfs / client1 # sudo chown root: root. -Rf\nroot @ nas: / nfs / client1 # chown 1000: 1000 home / pi -Rf"},{"id":"text-71","heading":"Text","content":"Si essayant de sudo sur un réseau démarré Pi et obtenant l&#39;erreur suivante:\nsudo: / usr / bin / sudo doit appartenir à uid 0 et avoir le bit setuid défini"},{"id":"text-72","heading":"Text","content":"Ensuite, assurez-vous que setuid le bit est mis:\nroot @ nas: / nfs / client1 # chmod / usr / bin / sudo"},{"id":"text-73","heading":"Text","content":"Les autorisations peuvent être vérifiées par rapport à l&#39;installation locale d&#39;Ubuntu:\nroot @ nas: / nfs / client1 # ls -alh / usr / bin / sudo\n-rwsr-xr-x 1 racine racine 140K 4 juillet 2017 / usr / bin / sudo\nroot @ nas: / nfs / client1 # ls -alh usr / bin / sudo\n-rwsr-xr-x 1 racine racine 133K 5 juin 2017 usr / bin / sudo"},{"id":"text-74","heading":"Text","content":"Ceci n’est toujours pas parfait, il est donc fortement recommandé d’utiliser rsync ou tar comme décrit précédemment.\nDes sauvegardes\nLa racine NFS peut facilement être sauvegardée:\nroot @ nas: / nfs # cp client1 sauvegarde -Rf"},{"id":"text-75","heading":"Text","content":"Il serait sage de le sauvegarder avant d’apporter des modifications à la configuration matérielle ou au package, juste au cas où.\nÉchecs de démarrage\nSi le Pi ne demande rien à TFTP, il pourrait s&#39;agir d&#39;un problème de configuration DHCP ou d&#39;un problème d&#39;accès TFTP.\nSi vous voyez le Pi faire peu ou pas plus loin que de demander bootcode.bin alors il est possible que la mauvaise version des fichiers se trouve dans le dossier tftp, assurez-vous que les prochaines versions de branche sont utilisées:\n2 mars 23:11:31 nas tftpd[5385]: tftpd: essayer d&#39;obtenir le fichier: bootcode.bin"},{"id":"text-76","heading":"Text","content":"Si cela va plus loin, mais se bloque comme indiqué ci-dessus, il pourrait s&#39;agir d&#39;un problème d&#39;accès au système de fichiers / NFS.\nAttention au cache de fichiers TFTP\nNon prouvé. Cependant, lors du débogage du problème de RAM mal signalé, j&#39;ai remplacé mon dossier de démarrage personnalisé (par de nouveaux liens symboliques), mais le Pi à écran tactile semblait toujours récupérer les anciens fichiers car il signalait une mémoire RAM inférieure.\nAprès un redémarrage de xinetd, tout allait bien &#8230;\nPerformance\nL&#39;installation et la configuration de paquets, etc. vont naturellement être plus lentes car le Pi ne dispose que d&#39;Ethernet à 100 Mbits et des frais généraux liés à l&#39;utilisation d&#39;un système de fichiers basé sur le réseau.\nPour des raisons de rapidité, toutes les configurations pourraient être effectuées sur SD, puis copiées en suivant les étapes ci-dessus.\nRéservations DHCP\nPour vous simplifier la vie, vous pouvez ajouter des réservations d’adresses DHCP dans le corps principal de la configuration DHCP afin que chaque adresse MAC reçoive la même adresse IP:\n{"},{"id":"text-77","heading":"Text","content":"  ..."},{"id":"text-78","heading":"Text","content":"  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n  "},{"id":"text-79","heading":"Text","content":"  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n  "},{"id":"text-80","heading":"Text","content":"Nom d&#39;hôte contrôlé par DHCP sur Raspbian\nEn théorie, la configuration devrait être aussi simple que celle indiquée ci-dessous:"},{"id":"text-81","heading":"Text","content":"  ..."},{"id":"text-82","heading":"Text","content":"  hôte pi3-1 \n    Ethernet matériel b8: 27: eb: 41: 8e: fa;\n    adresse fixe 192.168.1.59;\n    option nom-hôte &quot;pi3-1&quot;;\n  "},{"id":"text-83","heading":"Text","content":"  hôte pi3-2 \n    Ethernet matériel b8: 27: eb: 1b: 3c: 41;\n    adresse fixe 192.168.1.58;\n    option nom-hôte &quot;pi3-2&quot;;\n  "},{"id":"text-84","heading":"Text","content":"Cependant, il semble que cela soit ignoré, cet article fournit une solution qui semble fonctionner et ne modifie pas la / etc / hostname fichier dans la racine NFS. En tant que root:\necho localhost&gt; / etc / hostname"},{"id":"text-85","heading":"Text","content":"Ensuite:\necho unset old_host_name&gt; /etc/dhcp/dhclient-enter-hooks.d/unset_old_hostname"},{"id":"text-86","heading":"Text","content":"Ce qui semble fonctionner:"},{"id":"text-87","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/05/IMG_0802.jpg"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/03/demarrage-en-reseau-dun-raspberry-pi-3-a-partir-dun-serveur-ubuntu-bien-choisir-son-serveur-d-impression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/demarrage-en-reseau-dun-raspberry-pi-3-a-partir-dun-serveur-ubuntu-bien-choisir-son-serveur-d-impression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/demarrage-en-reseau-dun-raspberry-pi-3-a-partir-dun-serveur-ubuntu-bien-choisir-son-serveur-d-impression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}