• [^] # Re: réponse aux questions

    Posté par . En réponse au message Etude d'un système ARM et reverse. Évalué à 2.

    De manière générale, le point d'entrée est situé sur le raccourci "init" ? Cad uImage vient tapé dans Init ?

    Je ne suis pas sûr pour les architectures ARM, mais à priori ça doit être la même chose.
    Voici, (à peu près, j'essaie d'être générique, et vu mon niveau c'est évident que malgré mes efforts il y a des choses erronées dans ce laïus), ce qui se passe à partir de la mise sous tension d'un système:

    1. Le système démarre un firmware à partir d'une ROM. Dans les architectures «traditionnelles» ou en tout cas les seules que j'aie connues (i386 et x86_64) ces firmwares sont divisés en (au moins) 2 familles: BIOS et UEFI.
    2. Ces firmware passent la main à un programme appelé gestionnaire de boot. Windows en à un qui n'est pas trop nommé, sous Linux on a traditionnellement utilisé Lilo et Grub sur les disques durs, tandis que les installateurs CDs ont tendance à utiliser syslinux. Ce gestionnaire de boot permets d'une part de choisir le noyau à lancer, mais aussi quels paramètres lui donner (typiquement avec les distributions linux classiques: chemin de la partition racine, binaire qui contiendra le PID (appelé init)).
    3. Ce gestionnaire de boot charge un programme en mémoire et lui passe la main. Ce programme, dans les systèmes Linux traditionnels, est en fait une image disque minimaliste qui contiens 1 noyau linux, des modules à charger (les pilotes des systèmes de fichiers, le nécessaire pour un éventuel déchiffrement de ceux-ci, les pilotes de clavier, souris... en restant le plus minimaliste possible). Il s'agit de l'«initramfs».
    4. L'initramfs à pour rôle de pré-initialiser le «système matériel», je ne connais pas trop les détails, mais je sais que cette phase n'est pas vitale, on peut démarrer un kernel directement) pour pouvoir charger le noyau réel,
    5. le noyau charge le premier processus, appelé l'init. Il en existe plusieurs, mais les plus célèbres sont sysVinit, systemd et openrc. Le plus utilisé par les distributions de nos jours est systemd.
    6. le processus d'init démarre les divers services nécessaires à la machine pour être plus qu'un tas de silicium et de cuivre. Généralement, tu vas avoir udev (qui va exposer les informations au sujet du matériel provenant du noyau dans /dev), quelques terminaux virtuels (les fameux /dev/tty*), un gestionnaire de réseau, openssh, ton gestionnaire de session (lightdm, gdm, kdm, slime,...)...
    7. le gestionnaire de session ainsi que les tty sont traditionnellement les outils qui permettent à l'utilisateur final d'utiliser physiquement la machine (openssh aussi, mais c'est à travers le réseau), ils te demandent donc habituellement un login et un mot de passe, puis te laissent la main.

    PS: il y a un bouton répondre en dessous des commentaires, afin de répondre à une personne cible, ça rend les échanges plus faciles, et cerise sur le gateau, ça évite de réecrire un titre ;)
    J'imagine qu'il faudrait voir pour améliorer la visibilité d'ailleurs, ça arrive régulièrement qu'un nouveau ne le remarque pas.