всякий раз, когда я пытаюсь загрузиться с ядром Linux 3.0.0.13 (которое установлено при обновлении), я получаю сообщение об ошибке Kernel Panic:
VFS: Невозможно открыть корневое устройство "sda1" или неизвестный блок (0,0) Пожалуйста, добавьте правильный параметр загрузки «root =»;
blockquote>К счастью, если я загружаюсь с использованием предыдущей версии, у меня нет проблем. Как я могу решить это? Где я должен добавить правильный
root= option
? Если я не заставлю это ядро работать, как я могу удалить его по умолчанию и придерживаться более старого?
Вы не предоставили много информации о журналах и прочем, чтобы продолжить, но я предполагаю, что, скорее всего, эта ошибка возникает из-за того, что ядро перепутано с диском 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 ), чтобы вы могли соответствующим образом обновить конфигурацию ядра.
blockquote>
- Проверьте, встроена ли (а не как модуль) поддержка шины / протокола, которую использует ваш контроллер жесткого диска.
- Скорее всего, это поддержка PCI, поддержка SATA (что ниже поддержки устройств SCSI), ...
- Проверьте, есть ли у вас встроенная (а не модульная) поддержка используемого вами контроллера жесткого диска. Один из наиболее частых случаев: вы выбрали поддержку протокола контроллера жесткого диска (IDE, SATA, SCSI, ...), но забыли
выбрать сам драйвер контроллера жесткого диска (например, Intel PIIX). Попробуйте
выполнить следующую команду lscpi и вставьте ее вывод в
http://kmuto.jp/debian/hcl/ . Сайт покажет вам, какие драйверы ядра вам нужно выбрать для вашей системы. В menuconfig,
вы можете набрать «/», чтобы открыть функцию поиска, и ввести имя драйвера
, чтобы узнать, где оно находится.# lspci -n
- Проверьте, встроена ли (а не как модуль) поддержка файловой системы, которую вы используете.
- Скажем, ваша корневая файловая система использует btrfs (что я определенно не рекомендую), но вы не выбрали его или выбрали для сборки в качестве модуля
, тогда вы получите ошибку ты видишь. Убедитесь, что в ядре встроена поддержка файловой системы
.Проверьте, указывает ли параметр ядра для
1144 Это не так глупо, как кажется. Когда вы загружаетесь с одним ядром, оно может отображать ваши диски как / dev / sda, тогда как ваше (сконфигурированное) ядро ожидает, что оно будет / dev / hda. Это не потому, что ядра несовместимы друг с другом, а из-за используемых драйверов: более старые драйверы используют синтаксис hda, более новый sda.root=
на правильный раздел.
Попробуйте переключить hda с sda (и hdb с sdb и ...).
Кроме того, последние ядра дают обзор разделов, которые они нашли на устройстве. Если это так, это может помочь вам определить, если вы неправильно выбрали раздел (в примере, приведенном в начале этого раздела, только два раздела найдены, тогда как ядру было поручено загрузить третий). Если это не так, скорее всего, потому что ядро не знает устройства с самого начала (поэтому оно не может пытаться отобразить разделы).
Проверьте, является ли ядро, которое загружается загрузчиком, правильным ядром. Я видел людей, которые после сборки первого ядра (которое не загружается) забывают, что им нужно смонтировать
/boot
перед тем, как перезаписать ядро новым. В результате они копируют ядро в корневую файловую систему (/
), тогда как загрузчик все еще ожидает, что образ ядра находится в разделе/boot
.
После чтения этого ответа, который объясняет, что продолжается, попытайтесь использовать [Начальная-загрузка-Reapir CD] [1] [1]: https://help.ubuntu.com/community/Boot-Repair
Работавший отлично при восстановлении "устройство не распознано в Вашем корне = параметр (случаи 2, 3)".
Возможно, эта ошибка связана со слишком большим размером образа 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