4

Вопрос в значительной степени резюмируется заголовком - я только что собрал ядро, которое сгенерировало выходной файл vmlinux. Как мне сжать это в образ vmlinuz?

3 ответа3

2

Сжатие - это опция времени компиляции.

Процесс довольно сложный, так как результирующий файл будет начинаться с нативного кода, который распаковывает остальную часть ядра и переходит туда.

Так что прямого пути нет, и никто никогда не тратил время на реализацию рекомпрессии (по крайней мере, насколько я знаю), поскольку это достаточно просто для перекомпиляции.

В заключение вам нужно будет использовать make bzImage .

0

Согласно документации вам необходимо выполнить:

make bzImage

а потом:

cp bzImage vmlinuz

создать файл vmlinuz .

-1

Из статьи Википедии о vmlinux :

компрессия

Традиционно, при создании загрузочного образа ядра, ядро также сжимается с использованием алгоритма zlib, или, начиная с Linux 2.6.30, с использованием LZMA или BZIP2, для чего требуется очень небольшая заглушка декомпрессии, которая будет включена в результирующий образ. Заглушка распаковывает код ядра, в некоторых системах выводит точки на консоль для индикации хода выполнения, а затем продолжает процесс загрузки.

Процедура распаковки является незначительным фактором во время загрузки, и до разработки bzImage ограничения размера некоторых архитектур, в частности i386, были чрезвычайно ограничивающими, что делало сжатие необходимым.

В архитектуре SPARC файл vmlinux сжимается с использованием простого gzip, поскольку загрузчик SILO прозрачно распаковывает сжатые изображения.

Имя загрузочного образа не важно, но по соглашению оно называется vmlinuz или zImage.

Поэтому в зависимости от того, на какой архитектуре вы работаете, и на какой версии Linux, ответ будет отличаться.

Лучший способ - позволить процессу сборки ядра сжать его для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .