Como restaurar arquivos apagados em / boot? (vmlinuz faltando, o sistema não inicializa)

4

Por engano, apaguei um dos arquivos vmlinuz no meu diretório /boot . No entanto, fiz um backup de /boot dentro de /tmp , só para ter certeza.

Consequentemente, não consigo inicializar, pois recebo o erro de arquivo vmlinuz ausente. Então eu iniciei usando um USB ao vivo, mas quando entrei no /boot dir no meu disco rígido (sda5), está completamente vazio. Se eu copiar os arquivos do /tmp/boot para o diretório /boot , ainda não consigo inicializar.

Como posso restaurar esses arquivos para o diretório apropriado?

    
por NVaughan 10.11.2015 / 20:47

1 resposta

6

vmlinuz é a própria imagem do kernel do Linux (o z indica que está compactado).

Reinstalando o pacote do kernel que é atualmente referenciado por linux-image-generic (ou o seu Kernel HWE ) e provavelmente linux-singed-image-generic em ambientes de inicialização segura UEFI deve resolver o seu problema.

Reinstalando um kernel de um chroot

De preferência, inicialize a mídia ao vivo da mesma versão e monte a partição da sua instalação (você pode fazer isso com o Nautilus, será algo como /media/ubuntu/… ) ou sua partição /boot (isso será um pouco mais complexo ). Isso será ${my_installation} nas instruções a seguir.

Observe /lib/modules/ de sua instalação ( ${my_installation}/lib/modules/ ) para as versões de kernel específicas 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, na minha VM de teste foi 3.16.0-46.

Como afirmei em um comentário antes, o procedimento é muito semelhante a reinstalar o Grub no chroot, então deixe-me citar esta resposta com algumas pequenas modificações:

  
  1. Ligue algumas outras coisas necessárias:

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

    sudo chroot ${my_installation}
    
  4.   
  5. Neste ponto, você está na sua instalação, não na sessão ao vivo e sendo executado como root. …

  6.   

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

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

Verifique o diretório /boot se o initrd 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, pode seguir as etapas restantes. Lembre-se que estas instruções foram escritas para MBR, se você tiver UEFI (onde bootloaders de sistemas diferentes não devem sobrescrever um ao outro) você precisa verificar se a instalação grub-efi-amd64-bin está instalada antes de reinstalar o Grub.

por LiveWireBT 11.11.2015 / 11:53