この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