Вы не предоставили много информации о журналах и прочем, чтобы продолжить, но я предполагаю, что, скорее всего, ошибка, с которой вы столкнулись, связана с тем, что ядро сбито с толку диском IDE / SATA. Быстрый поиск в Google привел меня к ссылке 1 , ссылке 2 , ссылке 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)
- в конфигурации ядра отсутствуют драйверы для шины, используемой вашим контроллером жесткого диска
- в конфигурации ядра отсутствуют драйверы для используемой файловой системы
- устройство неверно идентифицируется в параметре root = (случаи 2, 3)
Решение проблемы легко, если вы знаете, в чем причина. Скорее всего, нет, так что здесь быстрая проверка.
Откройте мастер настройки ядра ( часть make menuconfig ), чтобы вы могли соответствующим образом обновить конфигурацию ядра.
- Проверьте, есть ли у вас встроенная (а не как модуль) поддержка шины / протокола, которую использует ваш контроллер жесткого диска.
- Скорее всего, это поддержка PCI, поддержка SATA (что ниже поддержки устройств SCSI), ...
- Проверьте, есть ли у вас встроенная (а не модульная) поддержка используемого вами контроллера жесткого диска. Один из наиболее частых случаев: вы выбрали поддержку протокола контроллера жесткого диска (IDE, SATA, SCSI, ...), но забыли
выбрать сам драйвер контроллера жесткого диска (например, Intel PIIX). Попробуйте
выполнить следующую команду lscpi и вставьте ее вывод в
http://kmuto.jp/debian/hcl/ . Сайт покажет вам, какие драйверы ядра вам нужно выбрать для вашей системы. Внутри menuconfig
вы можете нажать «/», чтобы открыть функцию поиска, и ввести
имя драйвера, чтобы узнать, где он находится.
# lspci -n
- Проверьте, встроена ли (а не как модуль) поддержка файловой системы, которую вы используете.
- Скажем, ваша корневая файловая система использует btrfs (что я определенно не рекомендую), но вы ее не выбрали или не выбрали для сборки в качестве
модуля, тогда вы получите ошибку, которую видите. Убедитесь, что
поддержка файловой системы встроена в ядро.
Проверьте, root=указывает ли параметр ядра на правильный раздел.
Это не так глупо, как кажется. Когда вы загружаетесь с одним ядром, оно может отображать ваши диски как / dev / sda, тогда как ваше (сконфигурированное) ядро ожидает, что оно будет / dev / hda. Это не потому, что ядра несовместимы друг с другом, а из-за используемых драйверов: старые драйверы используют синтаксис hda, более новые sda.
Попробуйте переключить HDA с SDA (и HDB с SDB, и ...).
Кроме того, последние ядра дают обзор разделов, которые они обнаружили на устройстве. Если это так, это может помочь вам определить, если вы неправильно выбрали раздел (в примере, приведенном в начале этого раздела, только два раздела найдены, тогда как ядру было поручено загрузить третий). Если это не так, скорее всего, потому что ядро не знает устройства с самого начала (поэтому оно не может пытаться отобразить разделы).
Проверьте, является ли ядро, которое загружается загрузчиком, правильным ядром. Я видел людей, которые после сборки первого ядра (которое не загружается) забывают, что им нужно монтировать, /bootпрежде чем перезаписать ядро новым. В результате они копируют ядро в корневую файловую систему ( /), тогда как загрузчик все еще ожидает, что образ ядра находится в /bootразделе.