LINUX.ORG.RU

Проблема «block device is not a valid root device» на ядрах >2.6.39


0

1

Есть funtoo-десктоп, полноценная рабочая система:
- / на ext4;
- grub2;
- ядро 2.6.39 собрано «genkernel all».

Попытка перейти на ядра 3.x.x плачевно заканчивается «Block device ... is not valid root device».
Попробовал многое:
- разные конфиги (от текущей системы, дефолтные конфиги от gentoo-sources и разные универсальные);
- задавал real_root в grub.cfg и fstab, и как /dev/sdXY и через UUID;
- ядро собирал как genkernel, так и make.

Результат один: при любом раскладе на 2.6.39 всё работает, на 3.x.x - болт!

Что-то, я подрастерялся, в какую сторону смотреть, wtf, что поменяли в 3.x.x?

★★★★★

Последнее исправление: vvn_black (всего исправлений: 1)

Проверьте :

 * CONFIG_IDE - не должно быть включено.
...
Device Drivers  ---> 
   <*> Serial ATA and Parallel ATA drivers  --->
      [Здесь выберите поддержку вашего контроллера дисков монолитно]
...
File systems  --->
   <*> The Extended 4 (ext4) filesystem

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

там они что-то ломали связвное с lvm в 3й серии

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

При переходе на новое ядро конфигурации 2.6.39 писали с нуля, или скопировали конфигурационный файл от 2.6.29?

Указанные мной опции собраны монолитно, если да, то вам не нужен initrd, достаточно просто указать:

kernel /boot/vmlinuz-2.6.39-gentoo-r3 root=/dev/sdX

Да, с какого ядра всё же переходите ?

ядро 2.6.39 собрано «genkernel all». Результат один: при любом раскладе на 2.6.29 всё работает, на 3.x.x - болт!

kostik87 ★★★★★
()

я бы ради спортивного интереса сделал make defconfig (или как оно там) + то что посоветовали в посте №1 + без initrd. собрать все это руками (не genkernel) и проверить на конфигурации груба которая работает с 2.6.39.

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

Перехожу с 2.6.39. Про 29 опечатался.

Пробовал, как копировать конфиг с 2.6.39, так и использовать дефолтные от 3.x.x, ну и при ручной сборке oldconfig.

Если, без initrd, то паника.

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

У вас и так и так паника.

Я вам уже написал ядро либо не «видит» ваш контроллер жёстких дисков, его поддержка собрана модулем, напротив опции его поддержки стоит «M», либо вообще выключена, либо поддержка файловой системы (ext4) собрана модулем.

В случае сборки ядра genkernel all собирается initrd, в который включаются модули поддержки контроллеров жёстких дисков и файловых систем.

Поэтому проверьте опции поддержки контроллера и корневой файловой системы., они должны быть включены монолитно «Y».

Если не можете разобраться с контроллером - то покажите вывод 'lspci', находится в пакете pciutils.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87
# lspci -n
00:00.0 0600: 8086:0100 (rev 09)
00:01.0 0604: 8086:0101 (rev 09)
00:02.0 0300: 8086:0122 (rev 09)
00:16.0 0780: 8086:1c3a (rev 04)
00:19.0 0200: 8086:1503 (rev 05)
00:1a.0 0c03: 8086:1c2d (rev 05)
00:1b.0 0403: 8086:1c20 (rev 05)
00:1c.0 0604: 8086:1c10 (rev b5)
00:1c.1 0604: 8086:1c12 (rev b5)
00:1c.2 0604: 8086:1c14 (rev b5)
00:1c.3 0604: 8086:1c16 (rev b5)
00:1c.4 0604: 8086:1c18 (rev b5)
00:1c.6 0604: 8086:244e (rev b5)
00:1c.7 0604: 8086:1c1e (rev b5)
00:1d.0 0c03: 8086:1c26 (rev 05)
00:1f.0 0601: 8086:1c44 (rev 05)
00:1f.2 0106: 8086:1c02 (rev 05)
00:1f.3 0c05: 8086:1c22 (rev 05)
03:00.0 0c03: 1b21:1042
05:00.0 0106: 197b:2362 (rev 10)
06:00.0 0c03: 1b21:1042
07:00.0 0604: 1b21:1080 (rev 01)
08:02.0 0c00: 1106:3044 (rev c0)
09:00.0 0106: 1b4b:9172 (rev 11)
# cat .config | grep EXT4
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_XATTR=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
# cat .config | grep SATA
CONFIG_SATA_PMP=y
CONFIG_SATA_AHCI=m
CONFIG_SATA_AHCI_PLATFORM=m
CONFIG_SATA_INIC162X=m
# CONFIG_SATA_ACARD_AHCI is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_SX4 is not set
# SATA SFF controllers with BMDMA
CONFIG_SATA_MV=m
# CONFIG_SATA_NV is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_SVW is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set
vvn_black ★★★★★
() автор топика
Ответ на: комментарий от vvn_black

Ну не верю, либо вы что-то не то указали, либо делаете что-либо не правильно.

Перечитайте ещё раз документацию по fontoo или gentoo как обновлять ядро и какие действия нужно при этом выполнять.

Так же, вы уверены, что у вас там ext4 а не ext3 ?

Попробуйте собрать поддержку ext3 модулем, а ext4 монолитно, т.к. может быть путаница с определением типа файловой системы, идентификатор 0x83 используется как для ext2, ext3, так и для ext4. Поэтому оставьте монолитно в ядре ту файловую систему, которая у вас на корневом разделе., остальные модулем.

Конфигурацию ядра напишите с нуля вручную.

Так же можете увеличить log level, что бы выводилось больше информации по ошибке.

Допишите к параметрам ядра:

  • debug - включение отладки
  • loglevel=7 - самый высокий уровень вывода сообщений.
  • 0 (KERN_EMERG) system is unusable
  • 1 (KERN_ALERT) action must be taken immediately
  • 2 (KERN_CRIT) critical conditions
  • 3 (KERN_ERR) error conditions
  • 4 (KERN_WARNING) warning conditions
  • 5 (KERN_NOTICE) normal but significant condition
  • 6 (KERN_INFO) informational
  • 7 (KERN_DEBUG) debug-level messages

И смотрите сообщения об ошибке, может вам поможет более детальная информация.

Так же могу посоветовать, если вам не лень конечно, собрать свой initrd, busybox, mdev и bash.

Вот руководство http://en.gentoo-wiki.com/wiki/Initramfs, оно подойдёт для funtoo.

Пропишите запуск mdev, что бы видеть устройства, которые видит ядро и укажите запуск rescue_shell или просто сразу запуск bash (busybox /bin/sh). Только уберите exec switch_root /mnt/root /sbin/init.

Как только запуститься оболочка в initrd проверьте видит ли ядро ваш жёсткий диск., простое наличие или отсутствие /dev/sdX, так же в busybox должна быть утилита blkid, затем, если жёсткий диск виден, пробуйте смонтировать раздел с корневой файловой системой.

Это всё для диагностики, но скорее всего вам хватит только повышение debug level.

И всё же вы используете сейчас initrd или нет ?

Если вы сделали как я указал, поддержка контроллера дисков (CONFIG_SATA_AHCI=Y) и файловой системы (CONFIG_FS_EXT4=Y) монолитно в ядре, то initrd вам не нужен, ибо не зачем, только разве для initrd, но и тут можно использовать plymuth, а для процесса загрузки (монтирования корневого раздела) он в этом случае не нужен.

Вы его хоть пересоздаёте после сборки нового ядра, если используете ?

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

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

kostik87, спасибо за помошь и оказанное внимание.

Гуглёж натолкнул меня на проблемы, которые наблюдались у genkernel с включением blkid в initrd. После обновления до 3.4.18, «genkernel all» выдал рабочий вариант.

Почему паника без initrd, буду разбираться попозже, драйверы ФС и SATA включал непосредственно в ядро.

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