Ubuntu 16.04 не будет загружаться после обновления [duplicate]

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

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

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

69
задан 19 November 2016 в 18:39

19 ответов

Вам не хватает initramf для этого ядра. Выберите другое ядро ​​из меню grub или запустите update-initramfs -u -k version, чтобы сгенерировать initrd для версии, затем update-grub.

48
ответ дан 18 July 2018 в 08:10

Вам не хватает initramf для этого ядра. Выберите другое ядро ​​из меню grub или запустите update-initramfs -u -k version, чтобы сгенерировать initrd для версии, затем update-grub.

48
ответ дан 24 July 2018 в 19:01

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

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

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

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

0
ответ дан 18 July 2018 в 08:10

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

Например, если в моей тестовой установке 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).

0
ответ дан 18 July 2018 в 08:10

Начните с 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

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

44
ответ дан 18 July 2018 в 08:10

В дополнение к инструкциям Томеу, перед chroot мне понадобилось:

sudo mount --bind /dev /mnt/dev

Кроме того, после chroot:

cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/

(Получил это отсюда.)

0
ответ дан 18 July 2018 в 08:10

Вы также можете загрузить сервер в аварийном режиме и переустановить только grub

http://info.w3calculator.com/free-code/linux/recover-from-corrupted-boot-image /

0
ответ дан 18 July 2018 в 08:10

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

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

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

7
ответ дан 18 July 2018 в 08:10

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

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

17
ответ дан 18 July 2018 в 08:10

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

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

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

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

0
ответ дан 24 July 2018 в 19:01

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

Например, если в моей тестовой установке 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).

0
ответ дан 24 July 2018 в 19:01

Начните с 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

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

44
ответ дан 24 July 2018 в 19:01
  • 1
    Я добавил sudo mount --bind /dev/pts /mnt/dev/pts и sudo mount --bind /sys /mnt/sys в моем редактировании; без этого update-grub2 жаловался. – Hbf 8 November 2012 в 21:51
  • 2
    как я могу узнать точный version? – knocte 29 January 2014 в 15:05
  • 3
    Ни одна из точек монтирования не существует за пределами первого / dev / sdax, если вы используете EFI. – Paul Gregoire 28 July 2014 в 19:36
  • 4
    @knocte попробуйте ls /mnt/boot и найдите последнюю версию ядра. Если вы хотите сделать это правильно, прочитайте menuentry 'Ubuntu' из /mnt/boot/grub/grub.cfg – Ciro Santilli 新疆改造中心 六四事件 法轮功 1 October 2015 в 10:10
  • 5
    Работал на Ubuntu 14.04! В /boot отсутствует initrd. Вопрос в том, как возможно, что файл просто исчез? Я ничего не делал, что казалось опасным. – Ciro Santilli 新疆改造中心 六四事件 法轮功 1 October 2015 в 10:11

В дополнение к инструкциям Томеу, перед chroot мне понадобилось:

sudo mount --bind /dev /mnt/dev

Кроме того, после chroot:

cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/

(Получил это отсюда.)

0
ответ дан 24 July 2018 в 19:01

Вы также можете загрузить сервер в аварийном режиме и переустановить только grub

http://info.w3calculator.com/free-code/linux/recover-from-corrupted-boot-image /

0
ответ дан 24 July 2018 в 19:01

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

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

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

8
ответ дан 24 July 2018 в 19:01

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

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

17
ответ дан 24 July 2018 в 19:01
  • 1
    Это было самым близким к моему решению; просто запустить dpkg --configure -a было достаточно, чтобы вызвать hook-update-initramfs и исправить разбитое ядро. – Symmetric 12 May 2013 в 00:44
  • 2
    Вы имеете в виду, что у вас есть отдельный раздел /boot? – Ciro Santilli 新疆改造中心 六四事件 法轮功 1 October 2015 в 10:00
  • 3
    Это был сервер, настроенный до моего приезда, и он был настроен с помощью / boot на своем собственном разделе и без присмотра – sheepeatingtaz 1 October 2015 в 17:24
  • 4
    Вы можете использовать sudo apt-get autoremove для удаления старых ядер в случае, если вы закончили пространство на /boot. – Florian Brucker 21 July 2016 в 08:42
  • 5
    Я загрузился в более старое ядро, сделал sudo apt-get autoremove, снова перезагрузился (старшее ядро), затем сделал sudo apt-get dist-upgrade, и это сработало. Это было на небольшой тестовой машине, которую у меня есть. Тем не менее, 100% /boot – jmlumpkin 23 May 2018 в 05:51

В дополнение к инструкциям Томеу перед chroot мне понадобилось:

sudo mount --bind /dev /mnt/dev

Кроме того, после chroot:

cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/

( Получил это отсюда. )

0
ответ дан 31 July 2018 в 22:06

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

Например, если в моей тестовой установке 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
ответ дан 2 August 2018 в 15:22

Начните с 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

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

44
ответ дан 6 August 2018 в 21:13

Другие вопросы по тегам:

Похожие вопросы: