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.
-
Inicialize a partir de um CD / DVD ao vivo do Ubuntu ou de uma unidade flash USB ao vivo.
-
Selecione Experimente o Ubuntu (não Instale o Ubuntu ).
-
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.
-
Abra uma janela do Terminal com Ctrl + Alt + T .
-
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!
-
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.)
-
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
-
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).
-
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
-
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
.
-
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.
-
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 ).
-
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.
-
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.
-
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
-
Desmonte os sistemas de arquivos, chroot
ing do hosts
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
-
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.)