Как меня задрал этот вопрос, ты себе просто не представляешь. Он даже поиском находится.
Еще раз (пока у fagot'а не появилось время собрать в кучу все новые ответы):
Q: Собрал ядро. Запускаю. Kernel panic: no init found. или Unable to find root fs. Что делать?
A: Ну вообще данные надписи сами по себе являются руководством к действию.
1-й случай. Смотрим как собрали поддержку корневой файловой системы. Если она собрана модулем, то у вас должен быть создан initrd (и лежать в папке /boot) и прописан в вашем загрузчике. Данный файл должен создаваться на новое ядро ЗАНОВО!
В загрузчике запись об initrd выглядит примерно так для lilo:
initrd = /boot/initrd-2.6.3-prep5.img
и так для grub:
initrd /boot/initrd-2.6.3-prep5.img
Дело в том, что в этом файле находятся модули ядра и при загрузке ядро в состоянии обратиться к ним в отличие от модулей, что лежат в /lib и не могут быть подключены, т.к. ядро не видит раздел (потому что нет соответствующего модуля - замкнутый круг).
2-й случай. Тут все несколько сложнее. Дело в параметрах загрузчика. Если вы собираете поддержку корневой файловой системы не модулем, то не нужно передавать ядру параметр root=/ или root=LABEL=/ (кстати, root можно прописать отдельно, а не как параметр, например, так: root = /dev/hda2 ) - все эти вещи нужны системе, чтобы нормально запуститься после установки.
Для grub стоит проверить правильность записи о рутовом разделе, т.е. наличие строчки вроде такой: root (hd0,1)
Если вы собираете поддержку корневой файловой системы модулем, а эти строчки прописаны, значит скорее всего не прописан initrd (или он старый и в нем нет или не грузится данный модуль).
Общий совет: Если вы не собираетесь таскать систему с винта на винт, проще собрать поддержку корневой файловой системы в ядре и обойтись без указывания корневого раздела (root =) и создания и использования initrd.
косяк имеет место быть (проверено на 2.6.3, 2.6.4, 2.6.5)=)
меняем EXTRAVERSION
make && make install && make modules_install
перезагружаемся
no initrd found! (что-то типа этого)
грузимся в старое ядро
смотрим в /boot - там нету соответствующего initrd
ладно..НИЧЕГО НЕ МЕНЯЕМ И
make install && make modules_install
- на всякий случай смотрим в /boot - initrd появляется...
соответственно загрузка с новым ядром проходит нормально
причины подобного поведения установить не смог
Склоняюсь к тому, что это действительно косяк. В поряде эксперимента поставил в комп пустой винт и заинсталлил туда Mandrake 10. Перекомпилировал ядро также как в прошлый раз, и новое ядро заработало, как часики. Наверное, это есть глюк.