LINUX.ORG.RU

ПОЧТИ ГРУЗИТСЯ


0

0

Я решил сделать все по-другому.
Бинарниками моей live-системы теперь рулит busybox.
Ядро с ramdisk'ом грузит isolinux.

Опять же, грузится ядро и выскакивает kernel panic. Я решил грузить initrd не сжатым gzip'ом.
Теперь пропало сообщение об ошибке загрузки initrd, даже правильно показывает его размер.
Но вот kernel panic остался - UDF-fs: No partition found, Kernel panic - no syncing: VFS...

Ядро скомпилировано вроде бы правильно.

Я вот что думаю, может это из-за того, что ядро не может приконнектитмя к загруженому RamDisk через /dev/ram0?
У меня папка /dev пуста, так как в статье утверждается, что devfs создаст все устройства.

Но вот на какой этапе загрузки он это сделает не понятно. И кто это сделает, ядро? Что-то я не нашел в ядре ни слова про devfs, может он просто не включен в ядро?

Вот скриншот:
http://www.webfile.ru/366632

А вот некоторые конфиги:
/cdrom/isolinux/isolinux.cfg:

default WereLinux
prompt 1
timeout 100
F1 f1.txt
F2 f2.txt
label WereLinux
kernel kernel/vmlinux
append initrd=initrd load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label hd
localboot 0x80
------------------------------------------------------------------------
bash-2.05b# find
.
./isolinux
./isolinux/f1.txt
./isolinux/f2.txt
./isolinux/isolinux.bin
./isolinux/isolinux.cfg
./isolinux/initrd.gz
./isolinux/initrd
./isolinux/kernel
./isolinux/kernel/vmlinux
------------------------------------------------------------------------
Файлы конфигурации системы на ramdisk ведь не имеют значения на этом этапе загрузки? Пока ядро не приконнектилось к /dev/ram0 пофигу? А то я чувствую у меня inittab левый.


Если devfs в busybox, тогда как же подключится ramdisk без /dev/ram0?

Я еще кстати копировал в ./dev из своей системы ram0, ram1, но результат тот же.

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

Или ядро скомпилировано криво?

Кроме поддержки ramdisk, boot from initrd и loopback что-нибудь нужно?

burzum
() автор топика

До initab-а у тебя еще не дошло. Да и вообще, inittab нужен init-у. На initrd init-а не бывает обычно.

>append initrd=initrd load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0

И вот этого я не понял. Может я чего-то не знаю, но в грубе нужно только указать имя файла initrd, а таких подробностей не нужно.

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

>Это не граб, это isolinux.

Я это понял. А ему нужны такие параметры?

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

Так что делать с linuxrc? Он ведь необходим?

Если без devfs, значит самому создавать в /dev ссылки?
Попробую...

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

проще по-моему сокопировать всё необходимое на /dev инитрд типа [hfs]d.* console ну и ещё чего

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

>Так что делать с linuxrc? Он ведь необходим?

MS-DOS после загрузки ядра пытается запустить command.com linux после загрузки пытается запустить один из файлов, /sbin/init, /bin/sh (полный список можно посмотреть в /usr/src/linux/init/main.c)

На initrd он пытается запустить /linuxrc (/usr/src/linux/init/do_mounts_initrd.c)

>Если без devfs, значит самому создавать в /dev ссылки?

Да.

Разбери и посмотри, как устроен готовый initrd из дистрибутива.

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

Добавление в dev устройств не избавляет от ошибки init=.

Распотрошить gentoo мне не удалось, т.к. так не gz, а igz, который фиг распакуешь.

Хотя бы намекните, что должно быть в init=!

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

>Добавление в dev устройств не избавляет от ошибки init=.

Так ты написал /linuxrc или нет?

>Распотрошить gentoo мне не удалось, т.к. так не gz, а igz, который фиг распакуешь.

А кроме генту у тебя больше ничего нет? А как же ядро его распаковывает?

>Хотя бы намекните, что должно быть в init=!

В init= ядру передается имя программы, которую нужно запустить первой. Например передав ядру init=/bin/bash после загрузки ядра сразу попадаем в bash (без загрузки /sbin/init). Полезно, если с настройками системы произошла фигня и не удается загрузиться.

В твоем случае ядро не может найти /linuxrc

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

Да я уже понял, для чего он.

А как обычно выглядит этот linuxrc? А то что-то полазав по сети я не нашел...

Теперь он мне говорит Attempted to kill init!

Ну это уже наверное проблемы с корневой системой.
Спасибо за помощь!

А как же прикрутить devfs? У busybox лежит ссылка devfsd в /sbin/.
А если через ядро, то подскажи, в каком месте копать!

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

>А как обычно выглядит этот linuxrc? А то что-то полазав по сети я не нашел...

В редхате и в сюзе initrd входит в состав пакета kernel. Еще можно изучить работу скриптов из пакетов mkinitrd.

Обычно linuxrc - это скрипт на каком-то облегченном шелле (ash/nash), слинкованном статически. Он загружает модули корневой файловой системы. А потом делает pivot_root

>Теперь он мне говорит Attempted to kill init!

Вроде этот единственной процесс завершился.

>А как же прикрутить devfs?

А это обязательно? Это можно сделать уже после переключения на основную fs. Но если хочешь сразу - то нужно как минимум включить в ядре Automatically mount devfs at boot.

>У busybox лежит ссылка devfsd в /sbin/.

devfsd вступает в работу позже.

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

УРА, Я ЗАГРУЗИЛСЯ!

Спасибо огромное!
Осталось научиться при загрузке ядра юзать devfs.

Буду разбираться...

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