Паника в ядре с ошибкой «Не удается открыть корневое устройство», где добавить параметр «root =»?

7

всякий раз, когда я пытаюсь загрузиться с linux kernel 3.0.0.13 (тот, который установлен обновлениями), я получаю ошибку Kernel Panic:

  

VFS: не удается открыть корневое устройство «sda1» или неизвестный блок (0,0)   Добавьте правильный вариант загрузки root =

К счастью, если я загружаюсь с использованием предыдущей версии, у меня нет никаких проблем. Как я могу это решить? Где я должен добавить правильный root= option ? Если я не получу это Ядро для работы, как я могу удалить его по умолчанию и придерживаться старого?

    
задан lucacerone 24.10.2011 в 07:48
источник

2 ответа

8

Вы не предоставили много информации с журналами и так далее, но я предполагаю, что, скорее всего, эта ошибка, с которой вы сталкиваетесь, связана с тем, что ядро ​​запутано с помощью диска IDE / SATA. Выполнение быстрого поиска Google привело меня к ссылке 1 , link 2 , link 3

Ниже приведена выдержка из ссылки, ссылки на которую на один из ссылок выше :

  

Скорее всего, одна из самых серьезных проблем (но как только вы ее решили,   вы, скорее всего, никогда не увидите его снова):

Unable to mount root fs on unknown-block(0,0)
     

или

VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
  sda driver: sd
    sda1 sda2
     

Цифры 0,0 или 8,3 могут быть разными в вашем случае - это относится к   устройство, к которому ядро ​​пытается получить доступ (и который не работает).   Вообще говоря, можно сказать, что если первая цифра равна 0, то   Ядро не может идентифицировать оборудование. Если это другая цифра   (например, 8), он не может идентифицировать файловую систему (но способен   доступ к оборудованию).

     

Проблема заключается в том, что ядро, которое вы загружаете, не может   переведите параметр root=/dev/... , который вы ему дали (внутри загрузки   конфигурации загрузчика) в реальную доступную файловую систему. Несколько   причины могут привести к такому отказу:

     
  • В конфигурации ядра отсутствуют драйверы для вашего контроллера жесткого диска (случаи 1, 4, 5).
  •   
  • В конфигурации ядра отсутствуют драйверы для шины, используемой вашим контроллером жесткого диска.
  •   
  • В конфигурации ядра отсутствуют драйверы для используемой файловой системы.
  •   
  • устройство неверно идентифицировано в вашем корневом параметре (случаи 2, 3)
  •   

Решение проблемы легко, если вы знаете, в чем причина. Вы больше всего   скорее всего, нет, так что вот быстрая проверка.

     

Откройте мастер настройки ядра (раздел make menuconfig ), чтобы   что вы можете соответствующим образом обновить конфигурацию ядра.

     
  • Проверьте, есть ли у вас встроенная (а не как модуль) поддержка шины / протокола, которую использует ваш контроллер жесткого диска.
  •   
  • Скорее всего, это поддержка PCI, поддержка SATA (которая находится под поддержкой устройства SCSI), ...
  •   
  • Проверьте, есть ли у вас встроенная (а не как модуль) поддержка используемого вами контроллера жесткого диска.      Один из наиболее часто встречающихся случаев: вы выбрали поддержку вашего протокола контроллера жесткого диска (IDE, SATA, SCSI, ...), но забыли использовать   выберите сам драйвер контроллера жесткого диска (например, Intel PIIX). Попробуйте
      запуская следующую команду lscpi и вставляя ее вывод на странице Ссылка . На сайте будет показано, какое ядро   драйверов, которые необходимо выбрать для вашей системы. В меню menuconfig,
      вы можете ввести «/», чтобы открыть функцию поиска, и введите драйвер /   чтобы узнать, где он находится.      %код%
  •   
  • Убедитесь, что вы создали встроенную (а не как модуль) поддержку файловой системы (ов), которую вы используете.
  •   
  • Предположим, что ваша корневая файловая система использует btrfs (которую я определенно не рекомендую), но вы ее не выбрали, или выбрали ее для создания как файла   модуль, то вы получите сообщение об ошибке. Убедитесь, что файловая система
      поддержка встроена в ядро.
  •   
  • Проверьте, указывает ли параметр ядра для # lspci -n на правильный раздел.

         

    Это не так глупо, как кажется. Когда вы загружаетесь с одним   ядро, оно может отображать ваши диски как / dev / sda, тогда как ваши   (настроенное) ядро ​​ожидает, что оно будет / dev / hda. Это не   потому что ядра несовместимы друг с другом, но из-за   используемые драйверы: более старые драйверы используют синтаксис hda, новый sda.

         

    Попробуйте переключить hda с помощью sda (и hdb с помощью sdb и ...).

         

    Кроме того, последние ядра дают обзор разделов, которые они обнаружили   на устройстве сказал. Если это так, это может помочь вам определить,   misselected раздел (в примере, указанном в начале этого раздела   раздел, только два раздела найдены, тогда как ядро   поручил загрузить третий). Если это не так, то, скорее всего,   потому что ядро ​​не знает устройство для начала (поэтому он не может   попытка отображения разделов).

  •   
  • Проверьте, является ли ядро, загружаемое загрузчиком, правильным ядром.      Я видел людей, которые после создания первого ядра (которое не загружается) забывают, что им нужно установить root= перед   перезапишите ядро ​​новым. В результате они копируют   ядро в корневую файловую систему ( /boot ), тогда как загрузчик по-прежнему   ожидает, что образ ядра будет находиться в разделе / .

  •   
    
ответ дан Nitin Venkatesh 27.02.2012 в 04:51
источник
0

Прочитав этот ответ, в котором объясняется, что происходит, попробуйте использовать [Boot-Reapir CD] [1] [1]: Ссылка

Отлично справился с тем, что «устройство неверно идентифицировано в вашем корневом параметре (случаи 2, 3)».

    
ответ дан madcap66 30.09.2013 в 12:25