- Expédié
- 23 septembre 2026 à 19:02 UTC
- Auteur
- Kamo
- Commit
- 2266930
Le premier vrai ordinateur hébergé a atteint AWAKE et est resté éveillé pour toujours. Hibernation signalée CVConfiguré: faux, IdleWatcher seulement bras quand la disponibilité est vraie, donc la machine a tenu un noeud mémoire avec rien à montrer pour elle mais un dernierError personne ne lit. Le câblage était tout à fait correct sur le disque — le fragment grub.d, le crochet initramfs, le swapfile en fstab, et recommend=UUID=... recommend offset=... dans le grub.cfg généré. Ce qui n'est jamais arrivé a été le redémarrage qui met n'importe lequel de lui sur /proc/cmdline, qui est le seul endroit où le noyau le lit. Le redémarrage était conditionnel à la déclaration de configure() qu'il venait d'écrire le câblage. configurer() est appelé à partir de deux endroits: le fil de démarrage de l'agent, sur chaque début, et /prépare-sleep, qui calcul des POST en fin de provisionnement. Sur cette machine, ils se chevauchaient — le fil de démarrage 40 millisecondes de mise à jour terminées APRÈS l'arrivée du POST, donc le configure() du POST a trouvé les deux fichiers déjà correct, n'a signalé aucun changement, et a sauté le redémarrage. Code correct, les deux appelants font leur travail, l'impasse permanente, et pas une erreur nulle part. Donc la décision ne demande plus qui a écrit un dossier. recommend restart decision() demande à l'État: exécuter le noyau n'a pas de CV=, un démarrage pourrait corriger cela, et le câblage est déjà dans grub.cfg. Les deux protecteurs anti-boucle sont porteurs de charge, car le mode de défaillance de l'autre côté redémarre Un ordinateur dans un cycle : - grub.cfg doit déjà porter la corde exacte. update-grub fonctionne avec check= Faux, donc il échoue est réel, et redémarrer sans qu'il reboote dans la ligne de commande identique. - un timbre sous /var/lib/kamo-hc enregistre ce qui a été redémarré et le redémarre les gardes. Même câblage deux fois signifie que le noyau lâche la ligne de commande et un second redémarrage n'aiderait pas. Un fichier d'échange qui MOVED est une chaîne différente, et gagne une nouvelle tentative. Chaque chemin enregistre, refus inclus. Le bug était silencieux dans les deux sens à la fois : rien ne redémarre Et rien n'a dit pourquoi. configure() est également sérialisé maintenant. Ces deux appelants faisaient des mises à jour contre le même initrd en même temps, ce qui a été de la chance plutôt que du design. Le fil de démarrage obtient le même auto-guérison, fermé sur config.json existant: sur un premier démarrage le La poussée de ravitaillement n'a pas encore atterri et le redémarrage tirerait la machine de sous elle, mais sur chaque démarrage après que c'est ce qui récupère un ordinateur dont le CV offset une mise à niveau du noyau invalide, sans attendre d'être demandé. Neuf tests. Celui qui importe affirme qu'un appelant voyant "pas de changement" obtient toujours le redémarrage — l'ancienne suite a testé le mécanisme et passé pendant que le système était dans l'impasse.
