
Apaguei por engano um dos vmlinuz
arquivos do meu /boot
diretório. Porém, fiz um backup de /boot
inside /tmp
, só para ter certeza.
Conseqüentemente, não consigo inicializar porque recebo o erro de arquivo vmlinuz ausente. Então inicializei usando um USB ativo, mas quando entrei no /boot
diretório do meu disco rígido (sda5), ele estava completamente vazio. Se eu copiar os arquivos /tmp/boot
para esse /boot
diretório, ainda não consigo inicializar.
Como posso restaurar esses arquivos para o diretório apropriado?
Responder1
vmlinuz
é a própria imagem do kernel Linux (o z indica que ela está compactada).
Reinstalando o pacote do kernel atualmente referenciado porlinux-image-genérico(ou seuKernel HWE) e provavelmentelinux-singed-image-genéricoem ambientes de inicialização segura UEFI devem resolver seu problema.
Reinstalando um kernel a partir de um chroot
De preferência inicialize a mídia live da mesma versão e monte a partição da sua instalação (você pode fazer isso com o Nautilus, será algo parecido /media/ubuntu/…
) ou a sua /boot
partição (isso será um pouco mais complexo). Isso estará ${my_installation}
nas instruções a seguir.
Procure /lib/modules/
em sua instalação ( ${my_installation}/lib/modules/
) as versões específicas do kernel que foram instaladas e escolha o número de versão mais recente que você pode encontrar, isso é referenciado como ${kernel_ver}
nas instruções a seguir, em minha VM de teste era 3.16.0-46.
Como afirmei em um comentário anterior, o procedimento é muito semelhante à reinstalação do Grub no chroot, então deixe-me citaresta respostacom algumas pequenas modificações:
Vincule monte algumas outras coisas necessárias:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "${my_installation}$i"; done
chroot
em sua instalação do Ubuntu:sudo chroot ${my_installation}
Neste ponto, você está na instalação, não na sessão ao vivo, e executando como root. …
Agora reinstale seu kernel (osigned
pacote é para inicialização segura UEFI):
apt-get install --reinstall linux-image-${kernel_ver}-generic linux-signed-image-${kernel_ver}-generic
Verifique o /boot
diretório se o initrd
arquivo deste kernel ainda estiver faltando. Para gerá-lo manualmente, execute:
mkinitramfs -o /boot/initrd.img-${kernel_ver}-generic ${kernel_ver}-generic
Meu exemplo:
mkinitramfs -o /boot/initrd.img-3.16.0-46-generic 3.16.0-46-generic
Em seguida, execute update-grub
como na resposta citada para ter certeza de que o "novo" kernel e o initrd estão incluídos.
Se você precisar reinstalar o Grub também, você pode seguir as etapas restantes. Lembre-se de que estas instruções foram escritas para MBR, se você tiver UEFI (onde bootloaders de sistemas operacionais diferentes não devem se sobrescrever), você precisa verificar se grub-efi-amd64-bin
está instalado antes de reinstalar o Grub.