VFS: Cannot Open Root Device

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
Аватара пользователя
art
free-lance moderator
Сообщения: 653
Зарегистрирован: 15 май 2003, 11:25
Откуда: SPb

VFS: Cannot Open Root Device

Сообщение art » 28 сен 2007, 11:18

Система:
система x86 Gentoo, загрузчик Grub, ядро 2.6xx
имеется LSI-150-6 с одним RAID разделом, который представляется системе как  SDA.

В ядро собран драйвер для Qlogic qla23xx, которое успешно определяется. В этом виде все работает.

Проблема:
если на этапе загрузки Qlogic'у доступны LUN на дисковом массиве, то ядро грузится, но не может смонтировать /
Ругается так:
VFS: Cannot Open Root Device

Очевидно, проблема в том, что изменился порядок устройств.
Вопрос:
как определить название диска с /,
и как вообще линукс ядро переименовывает новые scsi устройства?
___
Под FreeBSD, если / не найден, kernel panic не будет, можно руками подбирать устройства для монтирования. Нет ли такого приема и тут, чтобы не перегружаться по 10 раз?

Oleg2
Заслуженный сетевик
Сообщения: 494
Зарегистрирован: 15 окт 2004, 17:47
Откуда: Москва

Re: VFS: Cannot Open Root Device

Сообщение Oleg2 » 28 сен 2007, 12:28

art писал(а):Система:
система x86 Gentoo, загрузчик Grub, ядро 2.6xx
имеется LSI-150-6 с одним RAID разделом, который представляется системе как  SDA.

В ядро собран драйвер для Qlogic qla23xx, которое успешно определяется. В этом виде все работает.

Проблема:
если на этапе загрузки Qlogic'у доступны LUN на дисковом массиве, то ядро грузится, но не может смонтировать /
Ругается так:
VFS: Cannot Open Root Device

Очевидно, проблема в том, что изменился порядок устройств.
Вопрос:
как определить название диска с /,
и как вообще линукс ядро переименовывает новые scsi устройства?
___
Под FreeBSD, если / не найден, kernel panic не будет, можно руками подбирать устройства для монтирования. Нет ли такого приема и тут, чтобы не перегружаться по 10 раз?
Выкиньте упоминание о Qlogic из драйверного набора в Initrd и будет
Вам счастье. :)  Бороться с перенумерацией PCI устройств дело неблагодарное.

Аватара пользователя
art
free-lance moderator
Сообщения: 653
Зарегистрирован: 15 май 2003, 11:25
Откуда: SPb

Сообщение art » 28 сен 2007, 12:29

сделал копию системного раздела на SAN,
физичеcки отключил LSI-150-6 и попытаться грузиться с копии с Qlogic - получил ту же проблему.

Загрузился с live-cd,  sda виден и монтируется.
Последний раз редактировалось art 28 сен 2007, 14:52, всего редактировалось 1 раз.

and3008
Заслуженный сетевик
Сообщения: 1109
Зарегистрирован: 03 янв 2004, 23:30
Откуда: Н.Новгород

Сообщение and3008 » 28 сен 2007, 14:29

Да вроде как на тему ниже ответ на подобные грабли.

Аватара пользователя
art
free-lance moderator
Сообщения: 653
Зарегистрирован: 15 май 2003, 11:25
Откуда: SPb

Re: VFS: Cannot Open Root Device

Сообщение art » 28 сен 2007, 14:51

Oleg2 писал(а): Выкиньте упоминание о Qlogic из драйверного набора в Initrd и будет
Вам счастье. :)  Бороться с перенумерацией PCI устройств дело неблагодарное.
я, если честно, уже и не помню, что такое initrd -(
Если драйвер собран в ядро, а не модулем, то вывернуться нельзя, нужно вспоминать, что такое initrd?

Oleg2
Заслуженный сетевик
Сообщения: 494
Зарегистрирован: 15 окт 2004, 17:47
Откуда: Москва

Re: VFS: Cannot Open Root Device

Сообщение Oleg2 » 01 окт 2007, 12:04

art писал(а):
Oleg2 писал(а): Выкиньте упоминание о Qlogic из драйверного набора в Initrd и будет
Вам счастье. :)  Бороться с перенумерацией PCI устройств дело неблагодарное.
я, если честно, уже и не помню, что такое initrd -(
Если драйвер собран в ядро, а не модулем, то вывернуться нельзя, нужно вспоминать, что такое initrd?
Initrd - загрузочный Ramdisk Linux. При старте ядро грузит его в память, и, после начальной инициализации оборудования, монтирует его и начинает загружать с него драйверы устройств, которы могут понадобиться при загрузке ОС (например драйвер контроллера диска, на котором стоит система).
После окончания загрузки драйверов делается попытка смонтировать корневую файловую систему с устройства, которое в параметрах ядра объявлено как загрузочное.

Справиться с Initrd просто.
-В файле конфигурации загрузчика системы ищем ссылку на
загрузочный Ramdisk нужного нам ядра.
-Копируем этот файл в свободную папку.
-переименовываем его в файл с расширением gz.
-gzip`ом распаковываем.
-монтируем его через loop device (mount filename /mountpoint -o loop)
-идём в каталог, куда смонтировали файл
-удаляем ненужные модули (qlogic)
-повторяем все шаги в обратном порядке.


Ну и естественно ненужного драйвера не должно быть в ядре.

Удачи.

Аватара пользователя
art
free-lance moderator
Сообщения: 653
Зарегистрирован: 15 май 2003, 11:25
Откуда: SPb

Re: VFS: Cannot Open Root Device

Сообщение art » 01 окт 2007, 12:40

Oleg2 писал(а): Ну и естественно ненужного драйвера не должно быть в ядре.
Удачи.
Большое спасибо за детальное объяснение.
Не понял одного, как я буду использовать свой массив без модуля Qlogic?
Грузить модуль скриптом после загрузки?

Oleg2
Заслуженный сетевик
Сообщения: 494
Зарегистрирован: 15 окт 2004, 17:47
Откуда: Москва

Re: VFS: Cannot Open Root Device

Сообщение Oleg2 » 01 окт 2007, 13:51

art писал(а):
Oleg2 писал(а): Ну и естественно ненужного драйвера не должно быть в ядре.
Удачи.
Большое спасибо за детальное объяснение.
Не понял одного, как я буду использовать свой массив без модуля Qlogic?
Грузить модуль скриптом после загрузки?
После монтирования root file system запускается rc скрипт.
Из него запускается много всякой всячины, в том чиле и повторное сканирование оборудования и подгрузка драйверов, но уже не из initrd,
а из /lib/modules/%kernel_version%/kernel/drivers/...

Вот в это время и будет подгружен драйвер qlogic и, при необходимости, смонтированы файловые системы на дисковом массиве, подключенном к этому контроллеру.

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

Аватара пользователя
CrazyFrog
Advanced member
Сообщения: 210
Зарегистрирован: 16 авг 2005, 23:09
Откуда: Мурманск

Сообщение CrazyFrog » 02 окт 2007, 00:43

После монтирования корневой ФС модуль загрузится udev'ом или (в винтажных системах) - hotplug'ом.

btw, если кому интересно почитать про ограниченных красноглазых жертв gentoo, архив замечательно-смешного сайта доступен на http://web.archive.org/web/200610040225 ... loops.org/

Аватара пользователя
setar
Site Admin
Site Admin
Сообщения: 1990
Зарегистрирован: 22 авг 2002, 12:03
Откуда: St. Petersburg

Сообщение setar » 03 окт 2007, 15:59

8) ох намудрили ....
за что я люблю генту, за её лаконичность в настройках,
сейчас напишем решение ...

Аватара пользователя
Alexxy
Junior member
Сообщения: 12
Зарегистрирован: 13 фев 2007, 16:08
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Alexxy » 03 окт 2007, 16:12

Для начала ответь на следующие вопросы
  • 1 какая фс на корне?
    2 она собрана статично в ядро?
    3 контроллер жд статично собран?
    4 используются ли лейблы фс ?
    5 как собирал ядро?
    6 приведи версию ядра и вывод lspci
самое простое решение собрать ядро генкернелом сконфигурив его при этом руками и добавив поддержку лейблов фс
тогда не надо заботится о именах девайсов фс можно будет монтировать по лейблам

пример
правим

Код: Выделить всё

/etc/genkernel.conf
там надо включить следующие опции

Код: Выделить всё

MENUCONFIG="yes"
BOOTLOADER="grub"
CLEAR_CACHE_DIR="yes"
MAKEOPTS="-j16"
потом выбираем нужное нам ядро

Код: Выделить всё

eselect kernel list
eselect kernel set N <n это номер нужного ядра>
потом собираем и конфигурим ядро

Код: Выделить всё

genkernel --disklabel all
теперь остается только с ливсд создать лейблы разделов
это можно сделать только с отмонтированными фс
как читать здесь

Код: Выделить всё

http://ru.gentoo-wiki.com/Fstab

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей