
Я по ошибке удалил один из vmlinuz
файлов в своей /boot
директории. Однако я сделал резервную копию /boot
внутри /tmp
, просто чтобы быть уверенным.
Соответственно, я не могу загрузиться, так как получаю ошибку об отсутствии файла vmlinuz. Поэтому я загрузился с помощью Live USB, но когда я попал в /boot
каталог на моем жестком диске (sda5), он оказался совершенно пустым. Если я скопирую файлы из /tmp/boot
этого каталога в этот /boot
каталог, я все равно не смогу загрузиться.
Как мне восстановить эти файлы в соответствующий каталог?
решение1
vmlinuz
— это сам образ ядра Linux (z указывает на то, что он сжат).
Переустановка пакета ядра, на который в данный момент ссылаетсяlinux-образ-generic(или вашЯдро HWE) и, вероятно,linux-singed-image-genericв средах безопасной загрузки UEFI должно решить вашу проблему.
Переустановка ядра из chroot
Желательно загрузить live media той же версии и смонтировать раздел вашей установки (можно сделать с помощью Nautilus, тогда будет что-то вроде /media/ubuntu/…
этого) или ваш /boot
раздел (это будет немного сложнее). Это будет ${my_installation}
в следующих инструкциях.
Просмотрите /lib/modules/
свою установку ( ${my_installation}/lib/modules/
) на предмет конкретных версий ядра, которые были установлены, и выберите последний номер версии, который вы сможете найти, он указан ${kernel_ver}
в следующих инструкциях; в моей тестовой виртуальной машине это был 3.16.0-46.
Как я уже говорил в комментарии ранее, процедура очень похожа на переустановку Grub в chroot, поэтому позвольте мне процитировать:этот ответс небольшими изменениями:
Привязать крепление и еще кое-что необходимое:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "${my_installation}$i"; done
chroot
в вашу установку Ubuntu:sudo chroot ${my_installation}
На этом этапе вы находитесь в процессе установки, а не в сеансе работы, и работаете как пользователь root. …
Теперь переустановите ядро (signed
пакет предназначен для безопасной загрузки UEFI):
apt-get install --reinstall linux-image-${kernel_ver}-generic linux-signed-image-${kernel_ver}-generic
Проверьте /boot
каталог, если initrd
для этого ядра все еще отсутствует. Чтобы сгенерировать его вручную, выполните:
mkinitramfs -o /boot/initrd.img-${kernel_ver}-generic ${kernel_ver}-generic
Мой пример:
mkinitramfs -o /boot/initrd.img-3.16.0-46-generic 3.16.0-46-generic
Затем выполните команду update-grub
, как в цитируемом ответе, чтобы убедиться, что «новое» ядро и initrd включены.
Если вам нужно переустановить Grub, вы можете выполнить оставшиеся шаги. Помните, что эти инструкции были написаны для MBR, если у вас UEFI (где загрузчики из разных ОС не должны перезаписывать друг друга), вам нужно проверить, что grub-efi-amd64-bin
установлен install, прежде чем переустанавливать Grub.