LINUX.ORG.RU
ФорумAdmin

Помогите собрать правильный initrd для ядра allmodconf


0

1

Отконфигурировал ядро 3.2.4 с allmodconf для slackware 13.37. Теперь пытаюсь пытаюсь собрать для него initrd (mkinitrd). Для этого я в рабочей системе посмотрел необходимые драйвера в lspci -k, внес их в состав initrd (-m). Попробовал загрузиться с новым ядром и не получилось. Пишет:

No /sbin/init found on rootdev (or not mounted).  Trouble ahead.
You can try to fix it. Type 'exit' when things are done.
/bin/sh: can't access tty; job control turned off

В общем нет устройств ни /dev/sd* ни /dev/hd*, монтировать ему нечего, послее этого сообщения появляется приглашение командной строки, но почемуто не реагирует на ввод и кажется что и клавиатура не работает. Перезагрузился, попробовал ключ -u (Include udev in the initrd), тот же результат. Попробовал включить в initrd абсолютно все модули для ядра (уже простым копированием, не включая их в скрипт загрузки), и все равно результат тот же, пробовал все варианты загрузки модулей которые есть в скрипте init, все тот же результат. Что я делаю не так, и как собрать правильный initrd?

Вот соберите по этому руководству: http://en.gentoo-wiki.com/wiki/Initramfs

Распакуйте вал созданный initrd и удостоверьтесь, что есть файл /sbin/init и у него есть право на выполнение.

Так же проверьте что есть mdev и он запускается, но проблема всё же в сценарии init.

kostik87 ★★★★★ ()

А что ты туда положил?

KblCb ★★★★★ ()
Бинарник /bin/bysybox
символьная ссылка (со всеми правами) /sbin/init -> ../bin/bysybox
bash-скрипт /init

При загрузке /init выполняется
Не знаю что такое mdev, но файлов с таким именем нет.
initrd создаю через mkinitrd 1.4.6 который в комплекте Slackware 13.37
normann ★★ ()
Ответ на: комментарий от normann

Бинарник /bin/bysybox символьная ссылка (со всеми правами) /sbin/init -> ../bin/bysybox bash-скрипт /init

Не правильно. /sbin/init или init - стартовый сценарий (скрипт). /init -> /sbin/init - так можно.

mdev - реализация udev в busybox, если вы его не запустите у вас не будет наполнена директория /dev, не будет смонтирвоана devfs и вы не получите доступ к блочным устройствам, /dev/sd*, /dev/hd* и прочему.

Почитайте руководство, что я вам дал http://en.gentoo-wiki.com/wiki/Initramfs

kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87

если вы его не запустите у вас не будет наполнена директория /dev

не(совсем)верно. можно же сделать mknod ручками для нужных девайсов; и загрузка mdev-a ускорится

anonymous ()

но почемуто не реагирует на ввод

потому, что драйвер клавиатуры (atkbd) у тебя модулем и его некому подгружать

anonymous ()
Ответ на: комментарий от anonymous

Можно, но тогда initrd потеряет универсальность, к тому же mdev если и замедляет запуск, то на доли секунды.

kostik87 ★★★★★ ()

Вот соберите по этому руководству: http://en.gentoo-wiki.com/wiki/Initramfs

initrd собирается в соответствии с этим руководством

Не правильно. /sbin/init или init - стартовый сценарий (скрипт). /init -> /sbin/init - так можно.

Не правильно, противоречит тому же руководству.
Я уже написал что /init запускается успешно, только вот завершается неуспешно.
Впринципе все делает mkinitrd 1.4.6 который в комплекте Slackware 13.37, как я уже говорил, а в нем ошибок нет.
Помог только совет с драйвером atkbd - смог получить управление оболочкой, а в остальном все так же.

Проблема актуальна.
normann ★★ ()

Я еще живой и надеюсь на помощь

normann ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.