LINUX.ORG.RU
решено  

root=/dev/ram0 что я делаю не так?


0

1

Gentoo, ведро linux-3.1.10-gentoo-r1.

Мне нужно загрузиться с initramfs, в которую я написал свой собственный /sbin/init. В интернете есть много мануалов, все они сводятся к вот этому:

make menuconfig
General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
        (/usr/src/initramfs) Initramfs source file(s)
vim /boot/grub/grub.conf
kernel /boot/vmlinuz root=/dev/ram0

Дальше нужно только скомпилить ведро и ребутнуться и вуаля (отсюда). У меня ведро компилится, но загрузиться с ним не получается:

VFS: Cannot open root device "ram0" or unknown-block(1,0)
Please append a correct "root=" boot option; here are available partitions:
0800 sda
 0801 sda1
0810 sdb
 0811 sdb1
0820 sdc
 0821 sdc1
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

Поддержку RAM-дисков в ядре включил, поддержу loop-back устройств тоже. Я понимаю, что упускаю какую-то фигню, но не могу поймать, какую именно.

В том же руководстве, да и в Documentation/initrd.txt рассказывается, как сделать образ отдельным файлом — тот же результат.


[#] Ответ на: комментарий от name_no 31.01.2012 20:52:08  
nanoolinux

Попробуй другой initrd, который раньше использовал, или тот, что заведомо рабочий с твоим ядром (версии модулей там, и всё такое). Если загрузится, значит что-то не так с твоми новоиспечённым initrd, если нет - даже не знаю тогда.

()
[#]  
AITap

1) root=/dev/ram0 - это для initrd, а не для initramfs
2) В initramfs есть /init или /linuxrc? Пару раз собирал свой initramfs, и ядро его словно игнорировало, пока я не создал симлинк /init -> /sbin/init.

***** ()
[#] Ответ на: комментарий от anonymous 31.01.2012 21:12:37  
>>-----Цитата---->>

скачай от дебиана

<<-----Цитата----<<

здравая мысль, не думал, что он заработает. Ок, значит проблема в моём init-скрипте, спасибо.

** ()
[#] Ответ на: комментарий от AITap 31.01.2012 21:44:01  
>>-----Цитата---->>

Пару раз собирал свой initramfs, и ядро его словно игнорировало, пока я не создал симлинк /init -> /sbin/init.

<<-----Цитата----<<

Так и есть, если ядро не может запустить init с initramfs, то оно его игнорирует. Но я не знал, что оно ещё и игнорирует при этом параметр ядра init=/sbin/init вот в чём была моя проблема.

** ()
[#]  

Ты всё делаешь не так. Зачем ты делал initrd?

Он и должен подмонтировать все разделы и сделать pivot_root в основную систему.

***** ()