Загрузка недавно скомпилированного ядра Linux

Загрузка недавно скомпилированного ядра Linux

Я начал читать книгу Essential Linux Device Drivers. Я следую процессу компиляции и загрузки нового ядра. Однако я не могу загрузиться в недавно скомпилированное ядро ​​- я выбираю новое ядро ​​в grub и затем ... ничего ... экран просто остается прежним.

Вот шаги, которые я предпринимаю, как описано в книге (я использую ядро ​​2.6.24, поскольку именно на нем основана книга):

cd /usr/src/linux-2.6.24 # the base dir of the kernel I downloaded
make clean
cp arch/x86/configs/i386_defconfig .config
make bzImage
cp arch/x86/boot/bzImage /boot/vmlinuz

В книге говорится, что:

Вам может потребоваться предупредить ваш загрузчик о прибытии нового образа загрузки. Если вы используете загрузчик GRUB, он определяет это автоматически.

Ну, в моем случае он не определился автоматически, так как не было возможности выбрать это ядро ​​в GRUB. Поэтому я сделал это вручную, введя update-grub в терминале. И это тоже не сработало. Однако, как только я изменил имя файла с vmlinuz на vmlinuz-2.6.24 и ввел update-grub, он его подхватил. Так что на странице 11 книги, похоже, уже упущено несколько вещей.

В книге говорится, что затем необходимо перезагрузить машину.

В любом случае, теперь я могу выбрать это ядро ​​в GRUB, но, как я уже сказал выше, оно не загружается должным образом, экран просто гаснет и больше не меняется. Так что я что-то упускаю? Я точно следовал инструкциям в книге. Я потратил 50 евро на эту книгу, и теперь не могу продвинуться дальше 11-й страницы из-за этой проблемы.

Я так понимаю, что тот факт, что я использую Ubuntu на VirtualBox, не является проблемой? Я просто захожу в grub во время загрузки виртуальной машины Ubuntu, а затем выбираю только что скомпилированное ядро, не вижу, как это может быть проблемой.

решение1

В Ubuntu есть скрипт, импортированный из Debian, который выполняет установку за вас. После компиляции ядра просто запустите его, sudo make modules_install installи ваше ядро ​​будет установлено правильно.

Более позднее редактирование:Здесьэто скрипт, который используют Ubuntu и Debian. Он автоматически вызывается Makefile ядра, когда вы вводите вышеуказанные команды установки и выполняет установку, специфичную для дистрибутива.

решение2

Ваш файл grub.conf должен иметь запись, похожую на эту

title My Linux Kernel
root (hd0,0)
kernel /boot/gentoo-kernel root=/dev/sda1

Ваше ядро ​​Ubuntu может иметь что-то вроде

initrd /boot/initrd.img

Вам это не нужно при компиляции ядра на вашем оборудовании. Это может быть причиной вашей проблемы.

Вы должны прокомментировать мне свой файл grub.conf, и я его посмотрю. В противном случае проблема может быть в вашей конфигурации.

Старое ядро ​​также может не иметь драйверов, необходимых для нового оборудования.

Более новая система Ubuntu не сможет вернуться к старой версии ядра без кучи проблем.

вы можете попробовать более старую версию Ubuntu, которая работает на версии, близкой к этой версии ядра, или новейшую версию ядра с kernel.org.

решение3

Каждый дистрибутив Linux имеет свой собственный механизм и политику развертывания пакетов. То же самое касается ядра. Большинство дистрибутивов скрывают процесс компиляции своими инструментами, которые в основном предоставляют бинарные пакеты.

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

У Ubuntu свой особый подход, то же самое и у Achlinux, и у Redhat, и у Gentoo.

Итак, для Ubuntu следуйте документации здесьhttps://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

Связанный контент