Vous n'êtes pas identifié(e).
Dernière modification par jpt (09-07-2021 18:46:56)
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
source
Ce qui est bizarre, quand même, c'est que la commande en console n'a pas besoin de cette option "-p" pour faire le taf.
Dernière modification par jpt (09-07-2021 18:48:06)
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
des choses ont changé en 8 ans
Ce qui a changé à partir de jessie, c'est que systemd a remplacé sysvinit, avec pour conséquence que halt, poweroff et reboot sont devenus des liens symboliques pointant vers systemctl. Auparavant, poweroff était un lien symbolique pointant vers halt, et ce dernier éteignait la machine lorsqu'il était invoqué en tant que poweroff.
Ce qui est bizarre, quand même, c'est que la commande en console n'a pas besoin de cette option "-p" pour faire le taf.
Non, c'est le comportement normal. C'est le comportement lorsque poweroff est exécuté par ton programme qui est bizarre, comme si systemctl considérait qu'il a été invoqué en tant que halt et non poweroff.
Il vaut mieux montrer que raconter.
Hors ligne
C'est le comportement lorsque poweroff est exécuté par ton programme qui est bizarre, comme si systemctl considérait qu'il a été invoqué en tant que halt et non poweroff.
Alors j'ai fait autrement : dans la chaîne à exécuter je mets /usr/bin/systemctl en lui passant le paramètre poweroff, et ça fonctionne.
Allez, vendu.
Dernière modification par jpt (10-07-2021 19:07:57)
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
On le voit aussi dans /usr/bin à cause de la "fusion d'usr" (/usr merge), appliquée à l'installation de Debian à partir de buster, qui fait de /bin un lien symbolique vers /usr/bin. Mais ce n'est pas forcément le cas partout (versions précédentes ou mises à jour sans installer le paquet usrmerge, autres distributions...). Donc en toute rigueur il faudrait mettre "/bin/systemctl" s'il faut spécifier le chemin complet. C'est d'ailleurs la cible des liens symboliques halt, poweroff et reboot.
Dernière modification par raleur (10-07-2021 20:49:48)
Il vaut mieux montrer que raconter.
Hors ligne
l'exécutable systemctl est installé par le paquet systemd dans /bin et non dans /usr/bin
Ah !…
Quant à ce lien systemd dans le lien /bin, il pointe vers /lib/systemd/systemd, /lib étant un lien vers /usr/lib.
conformément au principe selon lequel systemd n'a pas besoin de /usr qui n'est pas forcément monté lorsque systemd démarre.
Euh, là je ne comprends pas : si /usr n'est pas encore monté, alors /usr/bin n'est pas disponible et le lien /bin pointant dessus pointe sur rien, du coup -- non ?
Dernière modification par jpt (11-07-2021 10:21:49)
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
$ updatedb
$ locate systemctl
/usr/bin/systemctl
locate ne liste pas les chemins contenant des liens symboliques.
Quant à ce lien systemd dans le lien /bin, il pointe vers /lib/systemd/systemd
Que vient faire /bin/systemd ici ? Je n'en ai pas parlé.
si /usr n'est pas encore monté, alors /usr/bin n'est pas disponible et le lien pointant dessus (/bin) pointe sur rien, non ?
Tu as raison dans le cas d'un système qui a fait la fusion de /usr. C'est pourquoi un prérequis à la fusion de /usr en combinaison avec /usr séparé est le montage de /usr par l'initramfs, avant de passer la main à l'init de la racine (qui pointe vers systemd).
Pas d'inquiétude, l'initramfs généré par initramfs-tools le fait déjà (je ne sais plus depuis quelle version exactement) car en pratique c'était devenu un prérequis à l'utilisation d'un /usr séparé de toute façon, pas à cause de systemd mais d'autres paquets qui mettent en place des services ou des règles udev utilisant des ressources (exécutables, bibliothèques...) installées dans /usr et pouvant être activés avant le montage de /usr. En toute rigueur ces paquets devraient s'installer dans /bin, /sbin et /lib* uniquement, et toutes leurs dépendances devraient faire de même, mais en pratique c'est difficile à identifier et ça ferait beaucoup grossir la racine alors qu'un des objectifs d'un /usr séparé est d'avoir une racine de petite taille.
Il y a d'autres effets de bords à la séparation + fusion de /usr. Par exemple un tel système peut ne pas être détecté par os-prober car celui-ci vérifie la présence d'un fichier dans /lib (qui devient un lien symbolique vers /usr/lib) mais ne monte pas /usr.
Pour finir, il y a très peu de cas qui justifient encore l'utilisation d'un /usr séparé.
Dernière modification par raleur (11-07-2021 10:54:19)
Il vaut mieux montrer que raconter.
Hors ligne
locate ne liste pas les chemins contenant des liens symboliques.
Je ne savais pas. Merci.
Que vient faire /bin/systemd ici ? Je n'en ai pas parlé.
Toi non, mais le retour de ta commande
m'a fait aller voir dans (le lien) /bin où j'ai donc trouvé un lien systemd (qui pointe sur /lib/systemd/systemd).
Pas d'inquiétude, l'initramfs généré par initramfs-tools le fait déjà
parle pour toi :
et c'est tout.
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
lsinitramfs /boot/initrd.img-5.7.10 | grep system
Qu'est-ce que c'est censé montrer ?
En quoi cela contredit-il le fait que l'initramfs monte /usr ?
Quel rapport avec systemd ?
Dernière modification par raleur (11-07-2021 11:56:26)
Il vaut mieux montrer que raconter.
Hors ligne
Qu'est-ce que c'est censé montrer ?
Qu'il n'y a que 5 lignes /usr/lib/... donc /usr/bin n'est pas là.
En quoi cela contredit-il le fait que l'initramfs monte /usr ?
Pas que ça contredise, mais je trouve le retour de lsinitramfs un peu léger concernant /usr.
Quel rapport avec systemd ?
C'est venu à la suite de la discussion.
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
Qu'il n'y a que 5 lignes /usr/lib/... donc /usr/bin n'est pas là.
Tu cherches /usr/bin en faisant un grep sur "system" ? Ce n'est pas très cohérent.
De toute façon ce n'est pas de ça que je parle. L'initramfs monte /usr après avoir monté la racine s'il y a une ligne correspondante dans /etc/fstab de la racine, ça n'a rien à voir avec l'organisation du contenu de l'initramfs lui-même.
Dernière modification par raleur (11-07-2021 12:33:33)
Il vaut mieux montrer que raconter.
Hors ligne
Tu cherches /usr/bin en faisant un grep sur "system" ? Ce n'est pas très cohérent.
C'est le retour de
qui m'a fait penser à chercher les lignes qui embarquaient system*.
L'initramfs monte /usr après avoir monté la racine s'il y a une ligne correspondante dans /etc/fstab de la racine
correspondante à quoi ? Précise un peu, ce n'est pas clair pour moi ce comportement (= cette phrase).
Faut dire aussi que ces choses, on les met en place à l'install de la machine, on tune bien, on tweake à donf', on se prend la tête et une fois que ça roule tip-top on n'y touche plus, on passe en prod' et très vite on oublie tout.
Et pour peu qu'il faille un jour lointain remettre les mains dans le cambouis, il y a toutes les chances du monde pour que plein de trucs aient changé, auquel cas on retourne à l'école informatique niveau maternelle ou à peine supérieur…
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
C'est le retour de
locate systemctl
qui m'a fait penser à chercher les lignes qui embarquaient system*.
Décidément, ta logique m'échappe. Pourquoi chercher "system" dans l'initramfs qui ne contient pas systemd (les fichiers trouvés appartiennent à udev qui est bien embarqué dans l'initramfs, lui) ? Pour rappel, systemd est le système d'init, ce qui est démarré après l'initramfs. Et surtout, pourquoi déduire l'absence de /usr/bin du résultat de cette recherche ?
correspondante à quoi ?
A /usr. Je me demande si ça marche aussi si quelqu'un est assez pervers pour définir le montage de /usr dans une unité native systemd.mount au lieu de fstab.
Il vaut mieux montrer que raconter.
Hors ligne
les fichiers trouvés appartiennent à udev qui est bien embarqué dans l'initramfs, lui
Comment tu sais ça, toi ? Pour info,
pourquoi déduire l'absence de /usr/bin du résultat de cette recherche ?
Parce que je n'ai rien vu concernant ce dossier. Mais probablement que quelque chose m'échappe, là.
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
raleur a écrit :les fichiers trouvés appartiennent à udev
Comment tu sais ça, toi ?
J'ai demandé à un ami : dpkg -S.
Attention : il faut retirer usr au début du chemin car l'initramfs réplique l'organisation du système donc bin, lib*, sbin y sont aussi des liens symboliques vers usr.
Correction : /lib/modprobe.d/systemd.conf n'appartient pas à udev mais bien à systemd. C'est pour une autre raison qu'il est inclus dans l'initramfs : son emplacement /lib/modprobe.d qui en fait un fichier de configuration utilisé par modprobe qui est inclus dans l'initramfs.
raleur a écrit :pourquoi déduire l'absence de /usr/bin du résultat de cette recherche ?
Parce que je n'ai rien vu concernant ce dossier. Mais probablement que quelque chose m'échappe, là.
Ce qui t'échappe peut-être, c'est que ton grep n'affiche que les fichiers ou chemins contenant "system" donc tout ce que ça t'apprend c'est qu'il n'y a pas de fichier dont le chemin contient à la fois "system" et "usr/bin", ce qui n'avance pas beaucoup. Si tu fais un grep sur "usr/bin" à la place tu auras plein de résultats.
Il vaut mieux montrer que raconter.
Hors ligne
il n'y a pas de fichier dont le chemin contient à la fois "system" et "usr/bin"
je pensais y trouver au moins ça :
$ locate systemctl
/usr/bin/systemctl
Bon, je propose qu'on ne passe pas la semaine là-dessus, j'ai corrigé mon source Pascal, l'ai recompilé, ai testé le binaire et tout va bien, je vais pouvoir avancer : j'ai plein de progs 32 bits à recompiler en 64, en espérant ne pas tomber à chaque fois dans une chausse-trape de changement de version et de comportement !
Bonne semaine, et encore merci pour tout (tes précisions, ta patience, etc.)
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
je pensais y trouver au moins ça :
/usr/bin/systemctl
systemctl est le programme de contrôle de systemd. Or je répète que systemd n'est pas inclus dans l'initramfs, donc systemctl n'a rien à y faire.
Il vaut mieux montrer que raconter.
Hors ligne
Or je répète que systemd n'est pas inclus dans l'initramfs, donc systemctl n'a rien à y faire.
Tu as raison :
Or je répète que systemd n'est pas inclus dans l'initramfs, donc systemctl n'a rien à y faire.
Mais on y trouve au moins un petit bout :
AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War
Hors ligne
Il vaut mieux montrer que raconter.
Hors ligne