L'article présente une méthode pour inspecter la mémoire vive d'une machine virtuelle QEMU en utilisant son moniteur. Le problème initial réside dans le fait que le numéro du périphérique de démarrage est codé en dur, ce qui empêche de démarrer depuis une disquette ou un disque dur de manière interchangeable.
La solution proposée consiste à sauvegarder dynamiquement le numéro du périphérique de démarrage, fourni par le BIOS dans le registre DL avant le passage de contrôle au secteur de démarrage, dans une zone réservée de la RAM (ici, à l'adresse 0x500). Ce numéro peut ensuite être lu directement depuis la mémoire par le programme pour s'adapter au périphérique de boot utilisé.
L'article détaille ensuite l'utilisation du moniteur QEMU, notamment la commande x/ pour examiner le contenu de la mémoire. Cet outil permet de vérifier la valeur sauvegardée à l'adresse 0x500, confirmant ainsi le bon fonctionnement de la modification, et d'explorer d'autres zones mémoire comme celle contenant le message affiché par le système.
Le composant Symfony Runtime, introduit dans Symfony 5.3, a modernisé le démarrage des applications PHP en séparant la logique d'initialisation de celle du contrôleur frontal. Auparavant, le fichier public/index.php contenait une grande partie de l'infrastructure de l'application, ce qui posait des problèmes de maintenance et de propagation des mises à jour du code de démarrage.
Grâce à Runtime, le code d'amorçage est désormais géré par un composant Composer dédié, permettant ainsi des mises à jour plus fluides via la gestion des dépendances. Cette architecture découplée est particulièrement avantageuse car elle permet aux applications Symfony de s'exécuter dans divers environnements, qu'il s'agisse des serveurs PHP traditionnels (PHP-FPM) ou de solutions plus modernes comme FrankenPHP, Swoole ou ReactPHP, sans modifier le contrôleur frontal.
Le principal avantage architectural de Symfony Runtime réside dans sa capacité à désolidariser le processus de démarrage de l'application de son modèle d'exécution. Cela signifie qu'une même application peut s'adapter à différents types d'environnements d'exécution, y compris les processus PHP à longue durée de vie, sans nécessiter de réécrire sa logique d'initialisation. Cette flexibilité ouvre la voie à une portabilité accrue des applications Symfony sur une gamme plus large de plateformes.
L'auteur montre que faire quand on se retrouve face à une simple invite du chargeur de démarrage grub.
Une série de 5 articles : celui-ci montre le démarrage de la distribution API Platform avec docker-compose
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre