Ядро паникует с & ldquo; Невозможно открыть корневое устройство & rdquo; ошибка, где я могу добавить & ldquo; root = & rdquo; вариант?

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

VFS: Невозможно открыть корневое устройство "sda1" или неизвестный блок (0,0) Пожалуйста, добавьте правильный параметр загрузки «root =»;

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

9
задан 26 February 2012 в 09:48

3 ответа

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

Ниже приводится выдержка из [ 1113] ссылка на ссылается на одну из ссылок выше :

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

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)
  • в конфигурации ядра отсутствуют драйверы для шина, используемая вашим контроллером жесткого диска
  • в конфигурации ядра отсутствуют драйверы для используемой файловой системы
  • устройство неверно идентифицируется в параметре root = (случаи 2, 3)
  • [ 1149]

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

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

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

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

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

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

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

0
ответ дан 26 February 2012 в 09:48

После чтения этого ответа, который объясняет, что продолжается, попытайтесь использовать [Начальная-загрузка-Reapir CD] [1] [1]: https://help.ubuntu.com/community/Boot-Repair

Работавший отлично при восстановлении "устройство не распознано в Вашем корне = параметр (случаи 2, 3)".

0
ответ дан 26 February 2012 в 09:48

Возможно, эта ошибка связана со слишком большим размером образа initrd.

Решение этой проблемы можно решить, изменив метод сжатия и удалив символы отладки из объектных файлов:

# Strip unneeded symbols of object files
$ cd /lib/modules/5.4.5-rt3  # or your new kernel
$ sudo find . -name *.ko -exec strip --strip-unneeded {} +

# Change the compression format
$ sudo vi /etc/initramfs-tools/initramfs.conf
# Modify COMPRESS=lz4 to COMPRESS=xz (line 53)

COMPRESS=xz 

ссылка: https://stackoverflow.com/a/59678390

0
ответ дан 30 July 2020 в 11:03

Другие вопросы по тегам:

Похожие вопросы: