vmlinuz и initrd не найдены после сборки ядра?


9

После настройки и сборки ядра, используя make, почему у меня нет vmlinuz-<version>-default.imgи initrd-<version>.img, но есть только огромный vmlinuxдвоичный файл (~ 150 МБ)?


4
Ты забыл бежать 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 для загрузки.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.