После настройки и сборки ядра, используя make, почему у меня нет vmlinuz-<version>-default.imgи initrd-<version>.img, но есть только огромный vmlinuxдвоичный файл (~ 150 МБ)?
Ты забыл бежать make bzImage? Кроме того, вы сделали монолитное ядро? Вы используете Debian-подобную ОС? Если это так, и вы не выполняете кросс-компиляцию, есть более простые способы собрать ядро.
Алексиос
Я скомпилировал его в OpenSUSE (однако, я скачал последний источник с kernel.org). После того make menuconfig, как я напечатал, makeи пусть он делает свою работу.
Amumu
1
Вам нужно make bzImageсгенерировать ядро bzImage. Скажи, make helpчтобы увидеть краткие инструкции. Проверьте Linux Kernel Howto для получения подробных инструкций. Если вы ответили на каждый make menuconfigвопрос с помощью Y (а не M в соответствующих случаях), вы попытались включить каждый драйвер в собственно ядро. Это очень, очень плохая идея, и ядро не загружается, потому что оно слишком большое. initrdИзображение генерируется с помощью других инструментов.
Алексиос
Я только что проверил конфиг снова. Кажется, я не включил поддержку загружаемого модуля ядра. Я думал, что это по умолчанию. Я попытаюсь скомпилировать снова и сообщу, когда это будет сделано.
Amumu
Многие комментарии выше выглядят как хорошие ответы для меня.
Джеймс Янгман
Ответы:
9
Сжатые изображения находятся под arch/xxx/boot/, где xxxнаходится арка. Например, для x86и amd64, у меня есть сжатое изображение в /usr/src/linux/arch/x86/boot/bzImage, наряду с /usr/src/linux/vmlinux.
Если у вас все еще нет образа, проверьте, bzip2установлен ли он и работает (но я думаю, что если бы это было проблемой, вы получите описательное сообщение об ошибке, например, «bzip2 not found»).
Кроме того, конфигурация ядра позволяет вам выбрать метод сжатия, поэтому фактическое имя файла и алгоритм сжатия могут отличаться, если вы изменили этот параметр ядра.
Как уже упоминалось, initrds генерируются не процессом компиляции linux, а другими инструментами. Обратите внимание, что если по какой-то причине вам не нужны внешние файлы (например, вам нужны модули или udev для идентификации или монтирования /), вам не нужен initrd для загрузки.
make bzImage
? Кроме того, вы сделали монолитное ядро? Вы используете Debian-подобную ОС? Если это так, и вы не выполняете кросс-компиляцию, есть более простые способы собрать ядро.kernel.org
). После тогоmake menuconfig
, как я напечатал,make
и пусть он делает свою работу.make bzImage
сгенерировать ядро bzImage. Скажи,make help
чтобы увидеть краткие инструкции. Проверьте Linux Kernel Howto для получения подробных инструкций. Если вы ответили на каждыйmake menuconfig
вопрос с помощью Y (а не M в соответствующих случаях), вы попытались включить каждый драйвер в собственно ядро. Это очень, очень плохая идея, и ядро не загружается, потому что оно слишком большое.initrd
Изображение генерируется с помощью других инструментов.Ответы:
Сжатые изображения находятся под
arch/xxx/boot/
, гдеxxx
находится арка. Например, дляx86
иamd64
, у меня есть сжатое изображение в/usr/src/linux/arch/x86/boot/bzImage
, наряду с/usr/src/linux/vmlinux
.Если у вас все еще нет образа, проверьте,
bzip2
установлен ли он и работает (но я думаю, что если бы это было проблемой, вы получите описательное сообщение об ошибке, например, «bzip2 not found»).Кроме того, конфигурация ядра позволяет вам выбрать метод сжатия, поэтому фактическое имя файла и алгоритм сжатия могут отличаться, если вы изменили этот параметр ядра.
Как уже упоминалось, initrds генерируются не процессом компиляции linux, а другими инструментами. Обратите внимание, что если по какой-то причине вам не нужны внешние файлы (например, вам нужны модули или udev для идентификации или монтирования
/
), вам не нужен initrd для загрузки.источник
Согласно документации:
http://tldp.org/LDP/lame/LAME/linux-admin-made-easy/kernel-custom.html
Когда вы делаете:
сделать bzImage
а потом:
cp bzImage vmlinuz
создать файл vmlinuz. Т.е. это один и тот же файл :-).
источник