LINUX.ORG.RU

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


1

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 (всего исправлений: 1)
Ответ на: комментарий от name_no

а если по старинке, ничего в ядро не вкомпиливать, а указать через grub.conf initrd= твой файл, тогда работает или нет?

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

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

nanoolinux ★★★★
()

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

AITap ★★★★★
()

VFS: Cannot open root device «ram0» or unknown-block(1,0)

у тебя линукс в ram0?

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

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

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

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

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

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

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

/init должен быть в корне, иначе не заработает. Можно симлинк

Спасибо. Да, это помогает.

name_no ★★
() автор топика

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

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

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