Страница 1 из 1

Проблема при пересборке ядра

СообщениеДобавлено: 31 окт 2012, 16:03
Сумин Евгений
Не могу понять, что не так...
SLES11SP2. Откопировал его ядро, получил дефолтовую конфигурацию, ничего не меняя собираю (это уже эксперимент, первоначальная задача предполагала изменения), собираю модули, ставлю - не грузится, не может загрузить ни один модуль, в т.ч. и поддержку рейда...
При создании initd... ругнулся правда: Don't refresh the bootloader. You may have to do that manually!
Но сами файлы создал... Я попробовал скачать новое ядро, собрал, поставил - работает, а если использую то, что идет с дистрибутивом - такая фигня... Что я ему не так делаю?

Re: Проблема при пересборке ядра

СообщениеДобавлено: 31 окт 2012, 17:16
Dimerson
в конфиге инитрд драйвер диска включен ?

опять же - кернел паник так как не может замаунтить рут ?

Re: Проблема при пересборке ядра

СообщениеДобавлено: 31 окт 2012, 17:37
Сумин Евгений
при загрузке пишет /lib/modules/[правильный путь] is unsupported...
Я так понимаю он не может именно руз замаунтить.

А где в конфиге для драйвера сказать что он из инитрд? - Я вроде все на дефолтовой конфигурации... Должно быть как у исходного ядра.

Re: Проблема при пересборке ядра

СообщениеДобавлено: 31 окт 2012, 19:21
Константин Ошмян
1) после пересборки ядра не забыть не только make install , но и make modules_install .
2) перед этим убедиться, что файловая система /boot (если она размечена как отдельная файловая система) подмонтирована. У меня разочек было, что после возни с томами NSS почему-то файловая система /boot оставалась не включена в /etc/fstab , в результате чего она оставалась несмонтированной. Соответственно, при обновлении ядра всё, что нужно, прописывалось в каталог /boot корневой файловой системы (изначально - пустой, поскольку это только точка монтирования), а после перезагрузки всё накрывалось медным тазом с подобными же симптомами. Поскольку загрузчик грузил из файловой системы /boot старое ядро, а в какой-то момент (после монтирования корня) оно пыталось грузить драйвера (модули) более новой версии, и обламывалось.
3) после обновления ядра не забыть пересобрать инитрд (командой mkinitrd).
4) см. файл /etc/sysconfig/kernel (параметр INITRD_MODULES - обычно, в начале либо в конце файла).

Re: Проблема при пересборке ядра

СообщениеДобавлено: 31 окт 2012, 20:00
Сумин Евгений
модули инсталировал. boot - на общем разделе - он у меня вообще один... В /etc/sysconfig/kernel у меня перечислена только пару модулей (рейдов среди них нет), но родное ядро при этом грузится нормально, и я сегодня скачал исходники ядра 3,0,49 - собрал - работает - там только одного модуля какого-то не хватает NSS-овского. Но когда собираю из исходников родного ядра - такая фигня...

Re: Проблема при пересборке ядра

СообщениеДобавлено: 31 окт 2012, 21:15
Сумин Евгений
Победил проблему, хотя очень хочется грязно ругаться... ;)

Собственно решение описано здесь:
http://www.novell.com/support/kb/doc.php?id=7002793

В кратце суть проблемы состоит в следующем:
1.) модули не грузятся потому, что после пересборки ядра у них исчезает некий флаг "supported".
2.) Поставить этот флаг модулям никаким образом нельзя (по крайней мере я не нашел).
3.) По умолчанию загрузка "unsupported" модулей запрещена.
4.) Для того, чтобы можно было пересобирать модули, нужно разрешить загрузку модулей "unsupported". Для этого в файле /etc/modprobe.d/unsupported-modules для свойства allow_unsupported_modules нужно поменять значение с "0" на "1" и перезагрузиться.
5.) Обязательно пересоздать initrd примерно вот так (с корекцией имен файлов):
mkinitrd -k /boot/vmlinuz-3.0.13rebuild-0.27-default -M /boot/System.map-3.0.13rebuild-0.27-default -i /boot/initrd-3.0.13rebuild-0.27-default

После этого все грузится нормально. Вся эта процедура актуальна для SLES11 и выше.

Всем спасибо!

Re: Проблема при пересборке ядра

СообщениеДобавлено: 01 ноя 2012, 05:42
Dimerson
хочу добавить:
если надо собрать модуль которого нет в ядре можно собрать только его - все ядро пересобирать не надо.
у sles10 до sp1 не было драйвера 3ware 9690. на сайте был в сырцах с подробной инструкцией как и что делать. делали модуль и и вуаля - все грузилось (ибо бинарных под каждый билд не напасешься).

если есть непреодолимые проблемы при загрузке из-за модулей и нет времени/желания ... проще всего для начала собрать ядро в котором данный драйвер не модулем, а вкомпиленный в ядро.

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