Como restaurar um sistema após a remoção acidental de todos os kernels?

62

Eu estava tentando apagar os kernels antigos, mas devo ter deletado todos os kernels do meu Ubuntu 11.04. Existe alguma maneira de corrigir isso via boot USB ou montar o disco rígido em outro sistema?

    
por user7242 25.02.2011 / 23:31

5 respostas

83

Inicialize em um live CD (ou live USB), monte alguns sistemas, faça um chroot nele e instale o kernel. Após uma instalação bem-sucedida do kernel, desmonte os sistemas de arquivos.

  1. Abra o terminal
  2. Monte a partição do Ubuntu: sudo mount /dev/sdXY /mnt
  3. Monte algumas partições especiais:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  4. (opcional) Quando você está conectado a uma rede, use os servidores DNS do seu ambiente Live (caso contrário, os nomes de host podem não ser resolvidos):

    cp /etc/resolv.conf /mnt/etc/resolv.conf
    
  5. Chroot no /mnt : sudo chroot /mnt
  6. Instale o kernel do Linux: apt-get install linux-image-generic (não é necessário sudo como você é root após um chroot)
  7. Após uma instalação bem-sucedida do kernel, retire o chroot e desmonte alguns sistemas de arquivos:

    exit
    sudo umount /mnt/sys
    sudo umount /mnt/proc
    sudo umount /mnt/dev
    sudo umount /mnt
    
  8. Reinicie e remova CD ou USB: sudo reboot
por Lekensteyn 25.02.2011 / 23:41
51

O procedimento expandiu representa a maioria das complicações que poderiam ocorrer, incluindo problemas de conexão com a Internet na pasta chroot , sem saber qual pacote kernel para instalar (antes Ubuntu 12.10, ele não vai sempre ser linux-image-generic ), sem saber desde o início que partição ou até mesmo qual unidade física contém o% sistema de arquivos% co_de, e ter uma partição separada%% co_de.

Eu não escrevi isso com referência a qualquer um dos outros procedimentos aqui, embora você note algumas semelhanças. Baseei-me, vagamente, no procedimento aqui (embora essas instruções sejam para algo bem diferente, adaptei-as extensivamente , e apenas alguns comandos, não em prosa, são copiados).

Você removeu todos os pacotes do kernel, e o Ubuntu não pode inicializar sem um kernel instalado. Portanto, a solução é inicializar a partir de um CD / DVD / USB ativo, / no sistema instalado e instalar um kernel nele.

  1. Inicialize a partir de um CD / DVD ao vivo do Ubuntu ou de uma unidade flash USB ao vivo.

  2. Selecione Experimente o Ubuntu (não Instale o Ubuntu ).

  3. Quando a área de trabalho aparecer, verifique se você está conectado à Internet. Se você não estiver, conecte-se à Internet. Uma maneira de ver se você está conectado à Internet é abrir um navegador da web. Você pode até seguir o resto das instruções, trazendo esta resposta Ask Ubuntu no seu navegador, no sistema live CD / DVD / USB. Eu recomendo strongmente fazer isso.

  4. Abra uma janela do Terminal com Ctrl + Alt + T .

  5. Na janela do Terminal, execute este comando para listar suas partições:

     sudo parted -l
    

    Você verá algo assim (mas não será exatamente como este):

    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sda: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End     Size    Type      File system     Flags
     1      1049kB  20.4GB  20.4GB  primary   ext4            boot
     2      20.4GB  21.5GB  1072MB  extended
     5      20.4GB  21.5GB  1072MB  logical   linux-swap(v1)
    
    
    Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0
    has been opened read-only.
    Error: Can't have a partition outside the disk!
    
  6. Examine a saída que você tem, para determinar o nome da partição que contém o /boot sistema de arquivos do dispositivo Sistema Ubuntu instalado no disco rígido (que você está reparando).

    • Se você tiver apenas uma partição chroot , essa é a única.

    • Se você tiver mais de uma partição / , provavelmente é a primeira. No entanto, se o primeiro é muito pequeno - menos que um gigabyte - então isso pode ser uma partição ext4 separada (lembre-se disso também).

      Observe se o ext4 está ou não listado em /boot tem muito pouco a ver se uma partição é ou não uma partição boot separada. Meu sistema, cujas informações estão listadas acima, não tem uma partição Flags separada.

    • O nome do dispositivo para a partição começa com o nome do dispositivo para a unidade física, declarado imediatamente após /boot na segunda linha. Em seguida, basta adicionar o número da partição ao final disso. Portanto, o nome do dispositivo para a partição que contém o meu /boot filesystem é Disk . Aqui estão as duas linhas em que encontrei essa informação:

      Disk /dev/sda: 21.5GB
       1      1049kB  20.4GB  20.4GB  primary   ext4            boot
    • Se você tiver mais de uma unidade física, receberá mais de uma listagem, como mostrado acima. Mas a menos que você tenha outro sistema semelhante ao Unix instalado, provavelmente terá apenas uma unidade que contém / partitions, pelo menos sem criá-las intencionalmente em outra unidade. Se você tiver várias unidades com /dev/sda1 partições, a partição ext4 que contém seus ext4 sistema de arquivos é, provavelmente, em uma unidade que também contém uma partição ext4 .

    • É possível que o sistema de arquivos / do seu sistema Ubuntu esteja em uma partição do tipo diferente de linux-swap . Quando isso acontece, quase sempre é / e quase sempre em um sistema bastante antigo. É muito incomum que este seja o caso, a menos que você mesmo configure as coisas dessa maneira.

    Lembre-se do nome do dispositivo da partição que continha o seu sistema de arquivos ext4 (ou anote-o). Se for diferente de ext3 , você substituirá / nas etapas abaixo.

    (Se parecer que você tem uma partição /dev/sda1 separada, lembre-se também do nome do dispositivo.)

  7. Monte o sistema de arquivos /dev/sda1 em /boot e monte seu sistema de arquivos / :

    sudo mount /dev/sda1 /mnt
    sudo mount --bind /dev /mnt/dev
  8. Verifique se o sistema Ubuntu corrompido que você está reparando tem uma partição /mnt separada que deve ser montada separadamente. (Se você estiver certo não, você pode pular isto.)

    Para verificar, execute:

    ls /mnt/boot
    

    Se houver saída (como /dev , mas não necessariamente exatamente isso), o /boot do sistema quebrado estará na mesma partição que seu grub memtest86+.bin memtest86+_multiboot.bin e você não precisará montar nada para acessá-lo.

    Mas se não houver saída, você terá que montar o sistema de arquivos /boot :

    sudo mount BOOT-PARTITION /mnt/boot

    Substitua / pelo nome do dispositivo da partição /boot (consulte a etapa 6 acima).

  9. BOOT-PARTITION no sistema corrompido, monte as informações virtuais importantes restantes sistemas de arquivos e defina algumas variáveis de ambiente importantes:

    sudo chroot /mnt
    mount -t proc none /proc
    mount -t sysfs none /sys
    mount -t devpts none /dev/pts
    export HOME=/root
    export LC_ALL=C
    
  10. Determine se o acesso à Internet funciona dentro do /boot em chroot

    ping -c 5 www.google.com
    

    Você deve ver algo assim:

    PING www.l.google.com (74.125.131.147) 56(84) bytes of data.
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms
    
    --- www.l.google.com ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4006ms
    rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
    
    • Se a maioria parece assim, e o número antes de chroot é menor que 100, a conexão com a Internet no ping está funcionando:

      5 packets transmitted, 5 received, 0% packet loss, time 4006ms

      Está funcionando, então você pode pular a etapa 11 .

    • Se a maioria parece assim, e o número antes de % packet loss é 100, a conexão precisa de solução de problemas. Certifique-se de que a conexão no sistema live CD (por exemplo, por meio de um navegador da Web ou executando o mesmo comando em uma guia / janela separada em chroot ed Terminal) funcione. Certifique-se de que você está digitando o comando corretamente. Use % packet loss se você não foi.

    • Se a saída não se parece com a acima, mas diz chroot , a rede ainda não está funcionando no www.google.com .

  11. Configure a rede no ping: unknown host www.google.com . Ignore esta etapa, a menos que tenha recebido um erro chroot na etapa 10 acima.

    Para configurar a rede, faça backup do arquivo chroot do sistema corrompido e copie os arquivos unknown host e hosts do sistema de CD ao vivo. (Você não precisa fazer backup da versão do hosts do sistema quebrado, já que esse arquivo é automaticamente regenerado na hora).

    Abra uma nova guia Terminal ( Ctrl + Deslocamento + T ) ou, se preferir, um new Janela de terminal ( Ctrl + Deslocamento + N , ou apenas Ctrl + < kbd> Alt + T ). Execute estes comandos:

    sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
    sudo cp /etc/hosts /mnt/etc/hosts
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
    exit
    

    (O comando resolv.conf no final fecha a nova aba / janela.)

    Repita o passo 10 acima para garantir que o acesso à Internet funcione agora a partir do resolv.conf . Deveria.

  12. Descobrir qual pacote do kernel deve ser instalado. Geralmente, isso será exit . Mas nem sempre.

    Se você não tiver certeza sobre qual instalar, isso dependerá, em parte, de qual versão do Ubuntu você instalou e, em parte, de outras informações. Se você não tem certeza de qual versão do Ubuntu você instalou, descubra executando este comando (no chroot , não em uma janela / guia do Terminal separada):

    lsb_release -r
    
    • No Ubuntu 12.10 (o próximo lançamento do Ubuntu, atualmente em desenvolvimento), sempre será linux-image-generic . (Veja isto , isto , e isso .

    • No Ubuntu 12.04 LTS, as possibilidades possíveis são chroot e linux-image-generic . (Ao contrário das versões anteriores, o 12.04 não tem mais kernels de servidor e desktop separados.)

      • Se o sistema Ubuntu instalado (que você está corrigindo) for a versão de 64 bits, use linux-image-generic . ( linux-image-generic-pae só se aplica a sistemas de 32 bits.)

        É possível ter um sistema Ubuntu de 32 bits instalado em um computador de 32 bits ou 64 bits. Além disso, você pode estar usando um CD de 32 ou 64 bits para corrigir um sistema instalado de 32 bits. Então, se você não sabe se o sistema Ubuntu instalado é 32-bit ou 64-bit, verifique executando este comando (no linux-image-generic , não em um Separar janela / aba do terminal):

        dpkg-architecture -qDEB_HOST_ARCH_BITS
        

        A saída será linux-image-generic-pae ou chroot .

        (Observe que 32 é não uma maneira correta de encontrar essas informações, porque mesmo quando executado no 64 , isso informará a arquitetura do > executando o kernel , que é o kernel do sistema live CD e não o kernel do sistema instalado (quebrado).

      • Se o sistema Ubuntu instalado (que você está corrigindo) for a versão de 32 bits, o melhor kernel a ser usado dependerá da quantidade de memória RAM que você possui. Eu recomendo:

        • uname -m se você tiver menos de 3 GB de RAM
        • chroot se você tiver 3 GB de RAM ou mais.

        (É assim que o instalador do Ubuntu escolhe qual configurar, desde que o instalador tenha conseguido instalar os kernels PAE. Veja a resolução para este bug . Se você quiser saiba o que é PAE, veja este artigo da Wikipedia .Se você quiser aprender sobre o PAE no Ubuntu, veja esta página wiki do Ubuntu .

        Se você não sabe quanta RAM tem, execute este comando para descobrir:

        grep MemTotal /proc/meminfo
        

        Isso está listado em kilobytes . Para converter para gigabytes , divida por 1,048,576 (1024 2 ).

        • 3 shows = 3,145,728 kB
    • Nos lançamentos do Ubuntu anteriores 12.04, provavelmente as possibilidades são linux-image-generic , linux-image-generic-pae e linux-image-generic .

      • Se você estiver executando um sistema Ubuntu Server, use linux-image-generic-pae .
      • Caso contrário, siga o conselho acima para 12.04 sistemas.
  13. Este é o momento que você estava esperando! Instale um kernel no sistema quebrado.

    (Como antes, exceto quando explicitamente indicado de outra forma, esses comandos são executados no linux-image-server , não em uma janela / guia do Terminal separada.)

    apt-get update
    apt-get -y install linux-image-generic

    Substitua linux-image-server por qualquer outro pacote de kernel que você tenha decidido instalar na etapa 12 acima, se diferente.

  14. Se você tivesse que executar a etapa 11 para configurar a rede no chroot , restaure o antigo arquivo linux-image-generic . Se você pulou a etapa 11, pule esta etapa também.

    Para restaurá-lo, execute este comando:

    cp /etc/hosts.old /etc/hosts
    
  15. Desmonte os sistemas de arquivos, chroot ing do hosts :

    umount /proc || umount -lf /proc
    umount /sys /dev/pts
    exit
    sudo umount /mnt/dev /mnt
    
  16. Encerre o sistema live CD / DVD / USB, removendo o CD / DVD ou a unidade flash USB. Inicialize no sistema instalado no disco rígido que você acabou de reparar. Você instalou um pacote do kernel nele (e como parte da instalação, o kernel que ele fornece será adicionado de volta ao menu de inicialização do GRUB2). Se tudo funcionou corretamente, seu sistema deve inicializar sem problemas. (Eu acho que é possível que demore um pouco mais para inicializar do que o habitual, desta vez.)

ISENÇÃO DE RESPONSABILIDADE: Eu não testei o procedimento acima em todo possível sistema Ubuntu, então é possível que haja um erro nele que eu não tenha identificado.

No futuro, recomendo sempre manter os kernels dois instalados. É bom ter dois no caso de um deles parar de funcionar por qualquer motivo (você pode selecionar o outro no menu de inicialização do GRUB2). Além disso, se você pretende manter dois kernels e desinstalar acidentalmente mais um do que deveria e reinicializar, você ainda tem um para inicializar.

    
por Eliah Kagan 20.07.2012 / 17:58
0

Quando removi meu kernel, encontrei esta solução nos fóruns do Ubuntu. Eu segui todas as etapas e o sistema foi recuperado. Espero que isso te ajude.

Um chroot pode funcionar, chroot significa que quando você inicia um sistema, você altera o sistema de arquivos raiz. Por exemplo, você começou a partir de um CD ao vivo, mas mudou a raiz "/" para onde o seu Ubuntu está instalado.

Digamos que o seu Ubuntu esteja instalado em / dev / sda2, então você pode tentar os seguintes comandos:

Código:

sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

agora que você está root "/" está em / dev / sda2, tente instalar o kernel

apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub

Eu tive que fazer um pouco de adivinhação aqui desde que eu nunca tive que fazer isso antes, mas isso deve ser sobre isso. Não sei se você recebe algum aviso de erro do fstab (como não consegue encontrar o root).

Agora você precisa limpar algumas coisas e desmontar as partições montadas: Código:

rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt

E você pode reiniciar para ver se funcionou.

URL do tópico: link

    
por Melvin 26.02.2011 / 13:23
0

Depois que eu removi os kernels antigos do Trusty14.04 ontem (FTR: eu fiz não remove os dois mais recentes!) meu sistema não inicializaria mais. O GRUB mostrou

Error: File not found
Error: You need to load the kernel first

Não faço ideia do porquê.

Segui, então, as excelentes instruções do Eliah Kagan para instalar linux-image-generic de um CD ao vivo. Ele instalou 150 MB de novo kernel, mas infelizmente isso não resolveu o problema.

Felizmente, encontrei esta página . A ferramenta Boot-Repair acertou, meu sistema está funcionando novamente.

    
por leftaroundabout 16.07.2015 / 13:00
0

Eu só queria adicionar minha experiência pela qual passei hoje na atualização para o Willy. Eu limpei um pouco e me encontrei apenas com o memtest. o google me levou a entender que eu havia removido os kernels. Uma restrição que eu tive é uma rede lenta e, portanto, baixar o ISO completo não era uma opção. Então eu usei o CD Minimal do Ubuntu (apenas 40MB) e inicializei nele. Depois de detectar a opção de hardware (que me ajudou a conectar a wireless), entrei na opção shell. Eu segui as instruções do @Lekensteyn e consegui. Algumas coisas: você tem que copiar resolv.conf antes de ir chroot ou então o seu DNS será parafusado e desde que o usuário logado não há raiz, não há necessidade de sudo em qualquer lugar.

Eu sei que é antigo, mas eu pensei que adicionar essa resposta acrescentaria valor àqueles que encontrariam o problema.

    
por Stefano Mtangoo 14.04.2016 / 22:28

Tags