Ядро паники - не синхронизируется: VFS: невозможно смонтировать root fs на unknown-block(0,0)
После попытки обновления с 10.10 до 11.04, казалось, все шло хорошо до перезагрузки. Это сообщение об ошибке, что появляется:
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Как мы это исправим?
12 ответов
Вам не хватает initramfs для этого ядра. Выберите другое ядро из меню GRUB в разделе Дополнительные параметры для Ubuntu и запустите sudo update-initramfs -u -k version
генерировать initrd для version
(заменить version
со строкой версии ядра, такой как 4.15.0-36-generic
) затем sudo update-grub
,
Начните с 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
и update-grub без ошибок.
update-initramfs -u -k 2.6.38-8-generic (or your version)
Если вы не знаете свою версию. Использование:
dpkg --list | grep linux-image
И просто обновить Grub.
update-grub2
Перезагрузите вашу систему.
В случае, если это произошло после прерванного обновления ядра (например, сбой системы во время aptitude safe-upgrade
),
- загрузиться с более старым ядром и
- бежать
dpkg --configure -a
,
Это завершит обновление, включая настройку параметров загрузки, как объясняет psusi.
В моей ситуации проблема была в том, что /boot
была заполнена на 100%, поэтому последние 2 обновления ядра не были успешно завершены, поэтому при перезагрузке, когда GRUB2 выбрал последнее ядро, произошел сбой.
Я решил проблему путем загрузки самого старого установленного ядра и удаления некоторых неиспользуемых ядер с помощью aptitude. Используя aptitude, после того, как деинсталляция произошла, dpkg автоматически попытался настроить поврежденные пакеты, и на этот раз это удалось.
В загрузочных сообщениях ядра указано, какие диски вы можете использовать
Например, если в моей тестовой настройке виртуальной машины 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
).
Я столкнулся с этой проблемой, так как заголовки linux обновлялись, и электричество пропало. Я восстановился, как показано ниже,
Перейдите в меню grub и выберите дополнительные параметры> выберите предыдущее ядро и загрузитесь,
Как только вы получите терминал, запустите команду ниже,
sudo dpkg --configure -a
здесь со страницы руководства dpkg,
--configure package...|-a|--pending
Configure a package which has been unpacked but not yet configured. If -a or --pending is given instead of package, all unpacked but unconfigured packages are configured.
To reconfigure a package which has already been configured, try the dpkg-reconfigure(8) command instead.
Configuring consists of the following steps:
1. Unpack the conffiles, and at the same time back up the old conffiles, so that they can be restored if something goes wrong.
2. Run postinst script, if provided by the package.
журналы, как показано ниже,
Setting up linux-image-4.15.0-76-generic (4.15.0-76.86) ...
Processing triggers for initramfs-tools (0.130ubuntu3.9) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-74-generic
Processing triggers for linux-image-4.15.0-76-generic (4.15.0-76.86) ...
/etc/kernel/postinst.d/dkms:
* dkms: running auto installation service for kernel 4.15.0-76-generic
...done.
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.15.0-76-generic
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-76-generic
Found initrd image: /boot/initrd.img-4.15.0-76-generic
Found linux image: /boot/vmlinuz-4.15.0-74-generic
Found initrd image: /boot/initrd.img-4.15.0-74-generic
Found linux image: /boot/vmlinuz-4.15.0-72-generic
Found initrd image: /boot/initrd.img-4.15.0-72-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 on /dev/sda1
done
и вуаля, новый пакет, который был загружен, но не настроен, работает.
В моем случае это произошло из-за того, что у моего Dell XPS 15 9550 возникла какая-то странная проблема с невозможностью загрузить полный образ initrd в ОЗУ по процедуре UEFI. Ответил на другой вопрос, специфичный для этого.
https://askubuntu.com/a/1412273/170833
В моем случае:
Это произошло из-за сбоя при обновлении до LTS 20.04.
dpkg --configure -a
снова открыл меню восстановления, поэтому пакеты не были (повторно) настроены.Поэтому мне пришлось перечислить установленные ядра
dpkg --list | grep linux-kernel | more
и настройте конкретно только что установленное ядро:
dpkg --configure linux-kernel-5.20.0-52-generic
В связи с этим, причины сбоя обновления могут быть следующими:
При установке закончилось место на томе с ядрами:
dpkg --purge remove linux-kernel-<someOldVersion>
Я бы не стал сразу же " удалить все старые ядра", потому что вы хотите, чтобы некоторые из них загружались, если новейшее не работает.
Ваш диск изнашивается - запускайте
smartctl --health --all
иe2fsck ...
Какой-то драйвер привел к зависанию всей ОС - для меня это происходит с драйвером nVidia при воспроизведении фильма 4K на экране 4K.
Протестировано для Lubuntu 22.04 с шифрованием LUKS.
Простой способ. Никаких команд терминала, никакого редактирования файлов.
- перезагрузите компьютер, введите пароль шифрования LUKS, нажмите
Enter
- Выберите другие варианты загрузки
- Выбрать старое ядро (режим восстановления)
- Нажмите «Исправить сломанные пакеты»
- Нажмите «обновить grub».
- Перезагрузитесь в обычном режиме
Я получил эту проблему из-за того, что мой /boot раздел был переполнен, поэтому мои обновления ядра не прошли Мне удалось это исправить, загрузившись со старого ядра в меню GRUB.
Когда мне удалось загрузиться, я начал очищать старые ядра, но мне удалось получить некоторые проблемы с зависимостями, поэтому сначала мне пришлось удалить пакет linux-server
apt-get remove linux-server
apt-get update
apt-get -f install
apt-get upgrade
Потом я перезагрузился и все работало нормально!
В дополнение к инструкциям Tomeu, перед chroot мне нужно было:
sudo mount --bind /dev /mnt/dev
Дополнительно после chroot:
cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/
Вы также можете загрузить сервер в режиме восстановления и переустановить только grub
http://info.w3calculator.com/free-code/linux/recover-from-corrupted-boot-image/