Ядро паники - не синхронизируется: VFS: невозможно смонтировать root fs на unknown-block (0,0)


98

После попытки обновления с 10.10 до 11.04, казалось, все шло хорошо до перезагрузки. Это сообщение об ошибке, что появляется:

Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Как мы это исправим?


1
Ваши проблемы могут не иметь ничего общего с вашей основной системой, а скорее с вашим установочным носителем (USB-накопителем) ... ➪ см. Здесь: askubuntu.com/a/632636/479118
Фрэнк Нок

Я не могу опубликовать ответ, так как мне не хватает представителя, но когда я получил эту проблему, я решил ее, загрузившись с USB-флешки, смонтировав основной раздел и раздел EFI , включив сеть и выполнив sudo apt-get install linux-image-genericобновление до последней версии. ядро.
Оуэн

Ответы:


84

Вам не хватает initramfs для этого ядра. Выберите другое ядро ​​в меню GRUB в разделе « Дополнительные параметры» для Ubuntu и запустите, sudo update-initramfs -u -k versionчтобы сгенерировать initrd для version(затем замените versionстроку версии ядра, например 4.15.0-36-generic) sudo update-grub.


2
Что делать, если при выборе уникальной опции ядра, существующей для этой ОС (в случае мультизагрузки), отображается паника ядра, как можно запустить update-initramfs?
knocte

3
@Dew, плохой комментарий ...
psusi

3
@knocte, см. ответ Томеу Роиг.
psusi

1
Это похоже на плохой ответ, но это правда!
user3215

2
Я не могу ввести Ubuntu Systemили Recovery Mode, как я могу выполнить эту команду, чтобы проверить, работает ли она?
Каспер

53

Начните с livecd, откройте терминал

sudo fdisk -l
sudo mount /dev/sdax /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt 

и теперь вы можете сделать update-initramfsи обновить-grub без ошибок.

update-initramfs -u -k 2.6.38-8-generic (or your version)

Если вы не знаете свою версию. Использование:

dpkg --list | grep linux-image

И просто обновить Grub.

update-grub2

Перезагрузите вашу систему.


1
Я добавил sudo mount --bind /dev/pts /mnt/dev/ptsи sudo mount --bind /sys /mnt/sysв моем редактировании; без этого update-grub2жаловался.
Hbf

5
как я могу узнать точное version ?
knocte

1
Ни одна из точек монтирования не существует, кроме первой / dev / sdax, если вы используете EFI.
Пол Грегуар

@knocte попробуйте ls /mnt/bootнайти последнюю версию ядра. Или, если вы хотите сделать это правильно, прочитайте menuentry 'Ubuntu'от/mnt/boot/grub/grub.cfg
Сиро Сантилли

Работал на Ubuntu 14.04! initrdНе хватало /boot. Вопрос: как это возможно, что файл просто исчез? Я не делал ничего, что казалось опасным.
Сиро Сантилли 新疆 at 中心 法轮功 六四 事件

22

В моей ситуации проблема была в том, что /bootемкость была 100%, поэтому последние 2 обновления ядра не были успешно завершены, поэтому при перезагрузке, когда GRUB2 выбрал последнее ядро, произошел сбой.

Я решил проблему путем загрузки самого старого установленного ядра и удаления некоторых неиспользуемых ядер с помощью aptitude. Используя aptitude , после того, как деинсталляция произошла, dpkg автоматически попытался настроить поврежденные пакеты, и на этот раз это удалось.


3
Это было ближе всего к моему решению; достаточно dpkg --configure -aбыло просто запустить хук update-initramfs и исправить поврежденное ядро.
Симметричный

Вы имеете в виду, что у вас был отдельный /bootраздел?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
Это был сервер, настроенный до моего приезда, и он был настроен с / boot на своем собственном разделе и автоматических обновлениях
sheepeatingtaz

3
Вы можете использовать sudo apt-get autoremoveдля удаления старых ядер, если у вас заканчивается свободное место /boot.
Флориан Брукер

Я загрузился в старое ядро, сделал a sudo apt-get autoremove, перезагрузил снова (старое ядро), затем сделал a sudo apt-get dist-upgrade, и это сработало. Это было на небольшой тестовой машине у меня. Та же проблема, хотя, 100%/boot
Jmlumpkin

20

В случае, если это произошло после прерванного обновления ядра (например, сбой системы во время aptitude safe-upgrade),

  1. загрузиться с более старым ядром и
  2. бежать dpkg --configure -a.

Это завершит обновление, включая настройку параметров загрузки, как объясняет psusi .


1

В загрузочных сообщениях ядра указано, какие диски вы можете использовать

Например, если в моем тесте Linux 4,17 виртуальной установки машины я заменяю правильно root=/dev/vdaс root=/dev/vdbпоследним сообщением является:

---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)-

Тем не менее , несколькими строками выше показаны сообщения типа:

VFS: Cannot open root device "vdb" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
fe00          524288 vda
 driver: virtio_blk

который в основном говорит мне прямо, что vdbне был найден, но что есть, /dev/vdaкоторый может быть прочитан из-за virtio_blkдрайвера ( CONFIG_VIRTIO_BLK=y).




0

Я получил эту проблему из-за того, что мой / boot раздел был переполнен, поэтому мои обновления ядра не были выполнены. Мне удалось это исправить, загрузившись со старого ядра в меню GRUB.

Когда мне удалось загрузиться, я начал очищать старые ядра, но мне удалось получить некоторые проблемы с зависимостями, поэтому сначала мне пришлось удалить пакет linux-server

apt-get remove linux-server
apt-get update
apt-get -f install
apt-get upgrade

Потом я перезагрузился и все работало нормально!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.