При попытке обновления с 10.10 по 11.04 все, казалось, прошло хорошо до перезапуска. Это сообщение об ошибке:
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Как мы это исправим?
Вам не хватает initramf для этого ядра. Выберите другое ядро из меню grub или запустите update-initramfs -u -k version, чтобы сгенерировать initrd для версии, затем update-grub.
Вам не хватает initramf для этого ядра. Выберите другое ядро из меню grub или запустите update-initramfs -u -k version, чтобы сгенерировать initrd для версии, затем update-grub.
У меня возникла эта проблема из-за того, что раздел my / boot был заполнен, поэтому мои обновления ядра не удались. Мне удалось исправить это, загрузившись из старого ядра в меню GRUB.
Когда мне удалось загрузиться, я начал очищать старые ядра, но мне удалось получить некоторые проблемы с зависимостями, поэтому сначала мне пришлось удалить пакет linux-server
apt-get remove linux-server
apt-get update
apt-get -f install
apt-get upgrade
. Затем я перезагрузился и все работает нормально!
Загрузочные сообщения ядра сообщают вам, какие диски вы можете использовать
Например, если в моей тестовой установке Linux 4.17 виртуальной машины я заменю правильный root=/dev/vda на root=/dev/vdb, последнее сообщение: [ ! d2] ---[ 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 не найден, но что есть a /dev/vda, который можно прочитать из-за драйвера virtio_blk (CONFIG_VIRTIO_BLK=y).
Начните с livecd, откройте aa terminal
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
Перезагрузите вашу систему.
В дополнение к инструкциям Томеу, перед 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 /
В случае, если это произошло после прерванного обновления ядра (например, сбой системы во время aptitude safe-upgrade),
загрузится с более старым ядром и запустит dpkg --configure -a.Это завершит обновление, включая настройку параметров загрузки, как объясняет psusi.
В моей ситуации проблема заключалась в том, что /boot был на 100% вместимости, поэтому последние 2 обновления ядра не были успешно завершены, поэтому при перезагрузке, когда GRUB2 выбрал последнее ядро, он потерпел неудачу.
Я решил проблему, загрузившись в самое старое установленное ядро и удалив некоторые неиспользуемые ядра, используя aptitude. С помощью GRUB2 , после удаления, dpkg автоматически попытался настроить разбитые пакеты, и на этот раз это удалось.
У меня возникла эта проблема из-за того, что раздел my / boot был заполнен, поэтому мои обновления ядра не удались. Мне удалось исправить это, загрузившись из старого ядра в меню GRUB.
Когда мне удалось загрузиться, я начал очищать старые ядра, но мне удалось получить некоторые проблемы с зависимостями, поэтому сначала мне пришлось удалить пакет linux-server
apt-get remove linux-server
apt-get update
apt-get -f install
apt-get upgrade
. Затем я перезагрузился и все работает нормально!
Загрузочные сообщения ядра сообщают вам, какие диски вы можете использовать
Например, если в моей тестовой установке Linux 4.17 виртуальной машины я заменю правильный root=/dev/vda на root=/dev/vdb, последнее сообщение: [ ! d2] ---[ 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 не найден, но что есть a /dev/vda, который можно прочитать из-за драйвера virtio_blk (CONFIG_VIRTIO_BLK=y).
Начните с livecd, откройте aa terminal
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
Перезагрузите вашу систему.
В дополнение к инструкциям Томеу, перед 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 /
В случае, если это произошло после прерванного обновления ядра (например, сбой системы во время aptitude safe-upgrade),
загрузится с более старым ядром и запустит dpkg --configure -a.Это завершит обновление, включая настройку параметров загрузки, как объясняет psusi.
В моей ситуации проблема заключалась в том, что /boot был на 100% вместимости, поэтому последние 2 обновления ядра не были успешно завершены, поэтому при перезагрузке, когда GRUB2 выбрал последнее ядро, он потерпел неудачу.
Я решил проблему, загрузившись в самое старое установленное ядро и удалив некоторые неиспользуемые ядра, используя aptitude. С помощью GRUB2 , после удаления, dpkg автоматически попытался настроить разбитые пакеты, и на этот раз это удалось.
В дополнение к инструкциям Томеу перед chroot мне понадобилось:
sudo mount --bind /dev /mnt/dev
Кроме того, после chroot:
cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/
Загрузочные сообщения ядра сообщают вам, какие диски вы можете использовать
Например, если в моей тестовой установке 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
).
Начните с livecd, откройте aa terminal
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
Перезагрузите вашу систему.