Вы здесь

Ошибка при первом запуске системы: "VFS: Cannot open root device "303" or unknown block(3,3)"

Добрый день!

После компиляции ядра, при первом запуске Gentoo, возникает следующая ошибка:

"VFS: Cannot open root device "303" or unknown block(3,3)"
Please append a correct "root=" boot option; here are avaible partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(3,3)

Я уже что, только не пробовал, ничего не получается.

Вот мои конфигурационные файлы:

/etc/fstab:

/dev/hda1 /boot ext2 defaults, noatime 1 2
/dev/hda3 / ReiserFS defaults 0 1
/dev/hda2 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0

/etc/lilo.conf:

boot=/dev/hda
prompt
timeout=50
default=gentoo

image=/boot/vmlinuz
label=gentoo
read-only
root=/dev/hda3

image=/boot/vmlinuz
label=gentoo.rescue
read-only
root=/dev/hda3
append="init=/bin/bb"

/etc/make.conf

CFLAGS="-O2 -march=i686 -pipe"
CXXFLAGS="-O2 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j2"
GENTOO_MIRRORS="http://gentoo.osuosl.org/ ftp://distro.ibiblio.org/pub/linux/distributions/gentoo/ ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ ftp://ftp.wallawalla.edu/pub/mirrors/ftp.gentoo.org ftp://ftp.ntua.gr/pub/linux/gentoo/ http://ftp.ntua.gr/pub/linux/gentoo/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo http://mirror.muntinternet.net/pub/gentoo/ ftp://mirror.muntinternet.net/pub/gentoo/ http://mirror.mdfnet.se/mirror/gentoo ftp://mirror.mdfnet.se/gentoo http://mirror.yandex.ru/gentoo-distfiles/ ftp://mirror.yandex.ru/gentoo-distfiles/ http://gentoo.kiev.ua/ftp/ ftp://gentoo.kiev.ua/ http://mirror.bytemark.co.uk/gentoo/ ftp://mirror.bytemark.co.uk/gentoo/"
USE="-gtk -gnome -qt3 -qt4 -kde -dvd -alsa -cdr -X -ipv6 sasl lmtp apache2 mysql"

Вывод lspci:

00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (rev 03)
00:02.0 VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 82)
00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 02)
01:09.0 Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 8b)
01:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

Видимо, я где-то чего-то упустил при выставления опций ядра, но очень непонятно, что именно.

Буду очень благодарен за оказанную помощь!

reiserfs в ядре включен?

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

Вот какие опции я включал в настроечном меню:

<*> Reiserfs support
│ │ [*] Enable reiserfs debug
│ │ [*] Stats in /proc/fs/reiserfs
│ │ [*] ReiserFS extended attributes
│ │ [*] ReiserFS POSIX Access Control Lists [*] ReiserFS Security Labels

попробуй root=/dev/sda3

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

Дык у меня винт подключен по IDE, я читал, что если он SATA, то тогда обозначается как /dev/sda3.
Вот:

livecd linux # ls -la /dev | grep sda
livecd linux # ls -la /dev | grep hda
brw-rw---- 1 root disk 3, 0 Jan 2 2003 hda
brw-rw---- 1 root disk 3, 1 Jan 2 2003 hda1
brw-rw---- 1 root disk 3, 2 Jan 2 2003 hda2
brw-rw---- 1 root disk 3, 3 Jan 2 2003 hda3

Или я что-то путаю? Но на всякий случай попробую, чем черт не шутит.

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

libata - это конечно хорошо, но как быть с ошибками, при запуске lilo см. ниже

с lilo не знаком, у меня grub... насколько я понимаю, boot=/dev/hda - это параметр для lilo, попробуй его не менять...
а root=/dev/hda3 - это для ядра, его поменяй...
...второе - не знаю как в lilo разделы нумеруются, в грубе sda3 будет hd0.2...
ну и третье - ядро сам собирал, или генкернелом?

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

1. Поменял на root=/dev/hda3, не трогая boot=/dev/hda, выводит:
Fatal: Illegal 'root' specification: /dev/sda3
2. В лило прописывается, как hda3 и все, я поэтому его и выбрал, я не понял эти обозначения, когда первый раз ставил Gentoo.
3. Ядро собирал сам: cd /usr/src/linux && make menuconfig

ClearKbdBuf написал:
1. Поменял на root=/dev/hda3, не трогая boot=/dev/hda, выводит:
Fatal: Illegal 'root' specification: /dev/sda3
2. В лило прописывается, как hda3 и все, я поэтому его и выбрал, я не понял эти обозначения, когда первый раз ставил Gentoo.
3. Ядро собирал сам: cd /usr/src/linux && make menuconfig

сдается мне, что вы не включили поддержку вашего ide-контроллера в ядре...

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

Я тоже так думаю, но я повключал практически все что связано с IDE, контроллер у меня интеловский, как видно из вывода lspci, потому поддержку контроллеров других производителей не стал включать. Но все что связано с Ineteloм,а так же пункты, где явно не указано что это не чей либо контроллер тоже включены.

lspci под инсталСД чего показывает? ide контроллер какой?

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE Controller (rev 02)

—

Где мало слов, там вес они имеют... (с) W. Sheakespeare

частенько ide ставят и jmicro. сталкивался даже на дорогих матерях. проверьте. в ядро [*]

—

P.S.: Linux - это красная таблетка :-) Windows - синяя...

Не дает он так прописать: после того как в lilo.conf прописал:
...
boot=/dev/sda
...
root=/dev/sda3
...

(точки ... означают пропущенное содержимое)

после /sbin/lilo
выдает:
Fatal: raid_setup: stat("/dev/sda")

Все дело в том что ядро с установочного СД определяет IDE диски как hd*, а новое собранное ядро определяет их как sd*.
это связано с использованием libata.

чтоб установить загрузчик в опцию boot=/.. нужно писать именно hda (ну то есть тот диск на который должен встать загрузчик и как его видит текущее ядро), а вот в опции root= написать соответственно sda*.
я правда настраивал только grub, пришлось еще поправить файл /boot/grub/device.map, тоже вместо /dev/hda прописать /dev/sda, но уже после установки загрузчика. и можно грузить новое ядро

Такая же засада..
После фрюхи все это выглядит просто дико.

тоесть lilo с лайфсд не дает прописывать не существующее устройство sda,
а ядро не может загрузится с устройста hda, потому что оно определилось как sda.
И тупик.
Пути выхода кто нибудь предложит?

ps
grub использовать не могу, т.к. он не понимает мой монитор или видео карту, в общем кракозабрами забивает экран и стоит.

Доброго времени суток! Столкнулся с подобной проблемой, правда после обновления ядра до 2.6.30, поддержка IDE вкомпилена в ядро, конфиг использовал тот же что и на предыдущей версии ядра(2.6.24)
/etc/fstab:

/dev/hda2 /boot ext2 defaults, noatime 1 2
/dev/hda4 / ext3 defaults 0 1
/dev/hda3 none swap sw 0 0

/etc/lilo.conf:

boot=/dev/hda
prompt
timeout=50
default=WindowsXP

image=/boot/2.6.30-gentoo
label=gentoo
read-only
root=/dev/hda4

other=/dev/hda1
label=WindowsXP

Предполагаю, что проблема в libatа, пробовал вкомпилить её в ядро и отключить поддержку IDE, исправить fstab и lilo.conf, но без результатов. Если кто-то знает что делать, подскажите плз. Уважаемый ClearKbdBuf, если вы нашли выход из сложившейся ситуации, расскажите что делать.

1. Удостоверьтесь, что ваше железо поддерживается!
2. Избавьтесь от поддержки IDE и включите libata (поддержка IDE в нее входит! между собой эти дврова конфликтуют)!
3. Удостоверьтесь, что модуль поддержки ФС, которая используется в корневом разделе, либо вкомпилен статически в ядро, либо находится в initramfs(поддержка initramfs тоже должна быть включена)!
4. Избавьтесь от Lilo и переходите на grub. ИМХО, grub сложнее, но гораздо более гибок и не имеет ограничений

Это, в принципе, всё, из-за чего может происходить такая ошибка! ;-)

Спасибо, попробую, относительно 1-ого пунтка, в этом я уверен, по крайней мери на 2.6.24 работало) По поводу 3-его, поддержка всех используемых фс вкомпилена в ядро По поводу 4-ого я к этому выводу тоже приходил, но как-то руки не доходили пока:) Так что остается вкомпилить поддержку libata и поставить grub)) Кстати, а если у меня SATA жесткий тоже имеется, как он называться будет и IDE жесткий в Grub писать как sd(0,0) или как hd(0,0)?

в грабе везде пишется hd, там тока циферки имеют значение ;-)
если к стати есть SATA диски, то советую так же в биосе включить режим SATA контроллера AHCI и включить соответствующую поддержку в ядре ;-) работать будет пошустрее, т.к. иначе работает по протоколу IDE ;-)

Theli написал:
4. Избавьтесь от Lilo и переходите на grub. ИМХО, grub сложнее, но гораздо более гибок и не имеет ограничений

Это, в принципе, всё, из-за чего может происходить такая ошибка! ;-)

я не настолько уверен в этом, груб местами гораздо удобнее но ограничений там определённо больше. например он должен понимать ФС с которой грузит, есть проблемы с загрузкой с SoftRAID/LVM, в отличии от lilo который полностью помещается в MBR.

а зачем помещать boot раздел на RAID или LVM (особенно LVM)??? О_о

Я прошу прощения за оффтоп и нубский вопрос, но как удалить Lilo?
Попробовал emerge -C lilo, пакет вроде был удален, по крайней мери 2-ой раз ничего не нашлось. lilo.conf я затер, но все равно грузится Lilo(

Переписать грабом? Или затереть нулями MBR(512 байт) через dd?

—

Нейтральность - высшее достижение сознания!

Переписал грабом. Спасибо, с ним я разобрался) Осталось разобраться с ядром)) Чет я не могу найти где в ядре включается поддержка libata... Подскажите плз.

Device Drivers  --->
  <*> Serial ATA (prod) and Parallel ATA (experimental) drivers  ---> 

Искать там или это и есть libata? Если это оно и есть, то оно давно было вкомпилено и в /boot/grub/device.map жесткий диск прописан как /dev/hda, и тот благополучно грузится...

это оно и есть ;-)

не знаю, что у вас в /boot/grub/device.map, но я ставил граб так: grub-install /dev/sda ... вроде так ))) главное, чтобы в грабе custom-cflags юз-флаг был выключен, иначе ошибки будут типа "hd(128,14800000) not found" или как-то так ;-)

Всем огромное спасибо. По поводу grub-install /dev/sdb(по разбивке понял что в ядре так определился мой IDE жесткий), это как раз оказалось не важным, т.к. при изменении /boot/grub/device.map как

Цитата:
hd0 /dev/sda
hd1 /dev/sdb
hd2 /dev/sdc

Писало что /dev/sdb Unknown device. При попытке опросить биос: grub-install --recheck /dev/sdb, grub скидывал по дефолту все что я написал в /boot/grub/device.map, Т.е. установить граб на /dev/sdb как бы не удавалась, не дает ядро с livecd. К счастью этого и не понадобилось, после того как изменил /etc/fstab и /boot/grub/grub.conf на /dev/sdb все заработало, правда отказываются грузится иксы, NVIDIA драйверы мозг парят, но это как говорится "совсем другая история":) Еще раз всем огромное СПАСИБО:)