このobjcopyコマンドは、適切なELFヘッダーでバイナリファイルをラップすることができます。たとえば、次のコマンドはバイナリファイルinput.inをi386オブジェクトファイルに変換しますoutput.o。
objcopy -I binary -O elf32-i386 --binary-architecture i386 input.bin output.o
output.o:_binary_input_bin_start、、_binary_input_bin_endおよびで3つの記号が定義され_binary_input_bin_sizeます。さらに、入力ファイルのそのデータは.dataセクションにあります。
ld次に、リンカースクリプトを使用して、適切なロード/仮想/物理アドレスとエントリポイントを設定する必要があります。以下は最小限のスクリプトです。
ENTRY(_start);
SECTIONS
{
_start = 0x12000;
. = 0x10000;
.data : {
*(.data)
}
}
ただし、ブートローダーの動作、物理メモリレイアウト、カーネルの配置場所、アーキテクチャなどに応じて、大幅に変更する必要があります。微調整すると、次のように最終的なELFファイルを生成するために使用できます。
ld -m elf_i386 output.o -T binary.ld -o output.elf