Ваши проблемы могут не иметь ничего общего с вашей основной системой, а скорее с вашим установочным носителем (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.
Что делать, если при выборе уникальной опции ядра, существующей для этой ОС (в случае мультизагрузки), отображается паника ядра, как можно запустить 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)
Я добавил 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 автоматически попытался настроить поврежденные пакеты, и на этот раз это удалось.
Это было ближе всего к моему решению; достаточно 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),
загрузиться с более старым ядром и
бежать dpkg --configure -a.
Это завершит обновление, включая настройку параметров загрузки, как объясняет psusi .
---[ 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).
Я получил эту проблему из-за того, что мой / boot раздел был переполнен, поэтому мои обновления ядра не были выполнены. Мне удалось это исправить, загрузившись со старого ядра в меню GRUB.
Когда мне удалось загрузиться, я начал очищать старые ядра, но мне удалось получить некоторые проблемы с зависимостями, поэтому сначала мне пришлось удалить пакет linux-server
sudo apt-get install linux-image-generic
обновление до последней версии. ядро.Ответы:
Вам не хватает initramfs для этого ядра. Выберите другое ядро в меню GRUB в разделе « Дополнительные параметры» для Ubuntu и запустите,
sudo update-initramfs -u -k version
чтобы сгенерировать initrd дляversion
(затем заменитеversion
строку версии ядра, например4.15.0-36-generic
)sudo update-grub
.источник
Ubuntu System
илиRecovery Mode
, как я могу выполнить эту команду, чтобы проверить, работает ли она?Начните с livecd, откройте терминал
и теперь вы можете сделать
update-initramfs
и обновить-grub без ошибок.Если вы не знаете свою версию. Использование:
И просто обновить Grub.
Перезагрузите вашу систему.
источник
sudo mount --bind /dev/pts /mnt/dev/pts
иsudo mount --bind /sys /mnt/sys
в моем редактировании; без этогоupdate-grub2
жаловался.version
?ls /mnt/boot
найти последнюю версию ядра. Или, если вы хотите сделать это правильно, прочитайтеmenuentry 'Ubuntu'
от/mnt/boot/grub/grub.cfg
initrd
Не хватало/boot
. Вопрос: как это возможно, что файл просто исчез? Я не делал ничего, что казалось опасным.В моей ситуации проблема была в том, что
/boot
емкость была 100%, поэтому последние 2 обновления ядра не были успешно завершены, поэтому при перезагрузке, когда GRUB2 выбрал последнее ядро, произошел сбой.Я решил проблему путем загрузки самого старого установленного ядра и удаления некоторых неиспользуемых ядер с помощью aptitude. Используя aptitude , после того, как деинсталляция произошла, dpkg автоматически попытался настроить поврежденные пакеты, и на этот раз это удалось.
источник
dpkg --configure -a
было просто запустить хук update-initramfs и исправить поврежденное ядро./boot
раздел?sudo apt-get autoremove
для удаления старых ядер, если у вас заканчивается свободное место/boot
.sudo apt-get autoremove
, перезагрузил снова (старое ядро), затем сделал asudo apt-get dist-upgrade
, и это сработало. Это было на небольшой тестовой машине у меня. Та же проблема, хотя, 100%/boot
В случае, если это произошло после прерванного обновления ядра (например, сбой системы во время
aptitude safe-upgrade
),dpkg --configure -a
.Это завершит обновление, включая настройку параметров загрузки, как объясняет psusi .
источник
В загрузочных сообщениях ядра указано, какие диски вы можете использовать
Например, если в моем тесте Linux 4,17 виртуальной установки машины я заменяю правильно
root=/dev/vda
сroot=/dev/vdb
последним сообщением является:Тем не менее , несколькими строками выше показаны сообщения типа:
который в основном говорит мне прямо, что
vdb
не был найден, но что есть,/dev/vda
который может быть прочитан из-заvirtio_blk
драйвера (CONFIG_VIRTIO_BLK=y
).источник
В дополнение к инструкциям Tomeu, перед chroot мне нужно было:
sudo mount --bind /dev /mnt/dev
Дополнительно после chroot:
cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/
( Получил это отсюда. )
источник
/dev
на/mnt/dev
.Вы также можете загрузить сервер в режиме восстановления и переустановить только grub
http://info.w3calculator.com/free-code/linux/recover-from-corrupted-boot-image/
источник
Я получил эту проблему из-за того, что мой / boot раздел был переполнен, поэтому мои обновления ядра не были выполнены. Мне удалось это исправить, загрузившись со старого ядра в меню GRUB.
Когда мне удалось загрузиться, я начал очищать старые ядра, но мне удалось получить некоторые проблемы с зависимостями, поэтому сначала мне пришлось удалить пакет linux-server
Потом я перезагрузился и все работало нормально!
источник