Reinstalando um kernel a partir de um chroot

Reinstalando um kernel a partir de um chroot

Apaguei por engano um dos vmlinuzarquivos do meu /bootdiretório. Porém, fiz um backup de /bootinside /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 /bootdiretório do meu disco rígido (sda5), ele estava completamente vazio. Se eu copiar os arquivos /tmp/bootpara esse /bootdiretó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 /bootpartiçã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:

  1. Vincule monte algumas outras coisas necessárias:

     for i in /sys /proc /run /dev; do sudo mount --bind "$i" "${my_installation}$i"; done
    
  2. chrootem sua instalação do Ubuntu:

     sudo chroot ${my_installation}
    
  3. Neste ponto, você está na instalação, não na sessão ao vivo, e executando como root. …

Agora reinstale seu kernel (osignedpacote é para inicialização segura UEFI):

apt-get install --reinstall linux-image-${kernel_ver}-generic linux-signed-image-${kernel_ver}-generic

Verifique o /bootdiretório se o initrdarquivo 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-grubcomo 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-binestá instalado antes de reinstalar o Grub.


informação relacionada