Comment convertir le noyau Linux Bin dans le format ELF
Nous avons un noyau Linux binaire qui est sans un en-tête ELF, et notre bootloader sera le chargement de l'image du noyau (plus tôt QNX de l'image du noyau a de l'en-tête ELF), basé sur un calcul à venir à partir de l'en-tête ELF, mais depuis notre image du noyau Linux est sans un en-tête ELF, notre bootloader est nier le chargement de cette image du noyau dans la mémoire.
Pour des raisons que nous n'avons pas une option pour modifier notre chargeur de démarrage de code, donc la seule option que nous avons est d'insérer un en-tête ELF dans le Linux fichier BIN avec un point d'entrée.
Quel est le moyen pour l'atteindre?
OriginalL'auteur Amit Singh Tomar | 2013-03-08
Vous devez vous connecter pour publier un commentaire.
La
objcopy
de commande est capable de s'enrouler un fichier binaire avec un en-tête ELF. Par exemple, la commande suivante vous permet de convertir le fichier binaireinput.in
dans un i386 fichier objetoutput.o
:Trois symboles seront définies dans
output.o
:_binary_input_bin_start
,_binary_input_bin_end
et_binary_input_bin_size
. En outre, les données de votre fichier d'entrée doit être dans un.data
section.Vous faudra alors utiliser
ld
avec un linker script pour définir la charge appropriée/virtual/physique des adresses et des points d'entrée. Ce qui suit est un minimum de script:mais sera probablement besoin d'être fortement modifiées en fonction de précisément comment faire de votre chargeur de démarrage des œuvres, de la mémoire physique de mise en page, où vous voulez noyau situé, votre architecture, etc. Une fois modifié, il peut alors être utilisé pour générer votre dernier ELFE de fichier comme suit:
Pouvez-vous nous donner le message d'erreur exact que vous obtenez? Aussi, ce que l'architecture du bâtiment? Vous devez vous assurer que vous utilisez la version de objcopy et l'éditeur de liens qui vient avec votre chaîne d'outils.
Je ne suis pas sûr, désolé @AmitSinghTomar. Peut-être il vaut la peine de créer une nouvelle question avec tous les détails de l'erreur alors que d'autres peuvent essayer de le résoudre, ou unaccepting cette réponse si d'autres savent qu'il n'a pas pleinement répondu à votre problème?
OriginalL'auteur davidg