Компиляция ядра Linux как не-ELF - PullRequest
1 голос
/ 25 февраля 2011

недавно некоторые дистрибутивы начали упаковывать файл vmlinuz вместе с initrd в «загрузку ELF», что, возможно, имеет некоторые преимущества. Ну, мне нужно скомпилировать новое ядро, используя старый формат для файла vmlinuz. Кто-нибудь знает, как мне этого добиться? Я использую Oracle Enterprise Linux, и если я, например, запускаю «make bzImage», в результате получается файл ELF, который я не могу использовать.

В качестве альтернативы, есть ли способ распаковать образ ELF-Boot и извлечь обычный файл vmlinuz?

Чтобы уточнить, что я получаю сейчас, когда делаю "file / boot / vmlinuz", это:

vmlinuz: 64-разрядный разделяемый объект LSB ELF, AMD x86-64, версия 1, с разделом

Однако я хочу получить что-то вроде:

vmlinuz: ядро ​​Linux / x86, версия установки 0x20a, bzImage, версия 2.6.37, версия 2.6.37-40, RO-rootFS, root_dev 0x301, swap_dev 0x4, обычный VGA

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 28 октября 2013

1. Модифицируйте Makefile и добавьте -O-двоичный файл к cmd objcopy, например:

в linux-3.7.4 / arch / x86 / boot / сжатый / Makefile:

OBJCOPYFLAGS_vmlinux.bin := -R .comment -S **-O binary**

    $(obj)/vmlinux.bin: vmlinux FORCE 

        $(call if_changed,objcopy)

2.Comment parse_elf , например:

в linux-3.7.4 / arch / x86 / boot / сжатый / misc.c

asmlinkage void decompress_kernel(...)

{

    ...

    decompress(input_data, input_len, ...);

    /* parse_elf(output); */

    ...

}
1 голос
/ 25 февраля 2011

Linux использует образы ядра ELF в течение достаточно долгого времени, это не какая-то недавняя разработка.Так почему же вы не можете использовать изображение ELF?

...