Como restaurar um sistema após remover acidentalmente todos os kernels?
69
Eu estava tentando excluir kernels antigos, mas devo ter excluído todos os kernels no meu laptop Ubuntu 11.04. Existe alguma maneira de corrigir isso via inicialização USB ou montar o disco rígido em outro sistema?
Inicialize em um CD ao vivo (ou USB ao vivo), monte alguns sistemas, faça chroot nele e instale o kernel. Após uma instalação bem-sucedida do kernel, desmonte os sistemas de arquivos.
Terminal Aberto
Monte a partição Ubuntu: sudo mount /dev/sdXY /mnt
Monte algumas partições especiais:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(opcional) Quando você estiver conectado a uma rede, use os servidores DNS do seu ambiente Live (caso contrário, os nomes de host não poderão ser resolvidos):
cp /etc/resolv.conf /mnt/etc/resolv.conf
Chroot no /mnt:sudo chroot /mnt
Instale o kernel do Linux: apt-get install linux-image-generic(não é necessário sudo, pois você é root após um chroot)
Após uma instalação bem-sucedida do kernel, saia do chroot e desmonte alguns sistemas de arquivos:
É o que eu teria sugerido. Não vejo por que não funcionaria.
Oli
Ok, obrigado por confirmar. Também adicionei as etapas de finalização, desmontagem /mnt. O Ubuntu geralmente cuida da desmontagem / sincronização dos sistemas de arquivos, mas isso me parece mais limpo.
Lekensteyn
11
@MaheshKatta Você precisará montar o RAID primeiro. Então, em vez da etapa dois (onde você monta uma única unidade), você estará mapeando uma /dev/mdxxxunidade - assumindo que seja mdadm.
Oli
4
@ James Edit /etc/resolv.conf(remova-o se for um link simbólico) e coloque algo parecido nameserver 8.8.8.8(servidor DNS público do Google). Substitua-o se necessário.
Lekensteyn
3
Nvm. Parece que eu tive que editar o arquivo no próprio chroot. Talvez você deva adicionar à resposta cp /etc/resolv.conf /mnt/etc/resolv.confantes de entrar no chroot. Que trabalhou para mim de qualquer maneira
Peter Raeves
56
Esse procedimento expandido é responsável pela maioria das complicações que podem ocorrer, incluindo problemas na conexão com a Internet no chroot, sem saber qual pacote de kernel instalar (antes do Ubuntu 12.10, nem sempre será linux-image-generic), sem saber desde o início qual partição ou mesmo qual unidade física contém o /sistema de arquivos e possui uma /bootpartição separada .
Não escrevi isso com referência a nenhum dos outros procedimentos aqui, embora você note algumas semelhanças. Baseei-o, vagamente, no procedimento aqui (embora essas instruções sejam para algo bem diferente, eu as adaptei extensivamente, e apenas alguns comandos, não 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, chrootno sistema instalado e instalar um kernel nele.
Inicialize a partir de um CD / DVD ao vivo do Ubuntu ou 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. Caso contrário, conecte-se à Internet. Uma maneira de verificar se você está conectado à Internet é abrir um navegador da web. Você pode até seguir o restante das instruções, trazendo essa resposta do Ask Ubuntu no seu navegador da web, no sistema de CD / DVD / USB ao vivo. Eu recomendo fortemente fazer isso.
Abra uma janela do Terminal com Ctrl+ Alt+ T.
Na janela Terminal, execute este comando para listar suas partições:
sudo parted -l
Você verá algo assim (mas não será exatamente assim):
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ê obteve para determinar o nome do dispositivo da partição que contém o /sistema de arquivos do sistema Ubuntu que está instalado no disco rígido (que você está reparando).
Se você possui apenas uma ext4partição, é essa.
Se você tiver mais de uma ext4partição, é provavelmente a primeira. No entanto, se o primeiro for muito pequeno - menos de um gigabyte -, isso poderá ser uma /bootpartição separada (lembre-se dessa também).
Observe que se está ou não bootlistado em Flagstem muito pouco a ver com se uma partição é ou não uma partição separada /boot. Meu sistema, cujas informações estão listadas acima, não possui uma /bootpartição separada .
O nome do dispositivo para a partição começa com o nome do dispositivo para a unidade física, indicado imediatamente após Diska segunda linha. Em seguida, basta adicionar o número da partição ao final disso. Portanto, o nome do dispositivo da partição que contém o meu/ sistema de arquivos é /dev/sda1. Aqui estão as duas linhas em que encontrei essas informações:
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 a mostrada acima. Mas, a menos que você tenha outro sistema semelhante ao Unix instalado, você provavelmente terá apenas uma unidade que contém ext4partições, pelo menos sem as ter criado intencionalmente em outra unidade. Se você possui várias unidades com ext4partições, a ext4partição que contém seu /sistema de arquivos provavelmente está em uma unidade que também contém uma linux-swappartição.
É possível que o sistema de /arquivos do seu sistema Ubuntu esteja em uma partição do tipo diferente de ext4. Quando isso acontece, é quase sempre ext3, e quase sempre, em um sistema bastante antigo. É muito incomum que seja esse o caso, a menos que você intencionalmente configure as coisas dessa maneira.
Lembre-se do nome do dispositivo da partição que continha seu /sistema de arquivos (ou anote-o). Se for diferente /dev/sda1, substitua /dev/sda1-o nas etapas abaixo.
(Se parecia que você tinha uma /bootpartição separada , lembre-se também do nome do dispositivo.)
Monte o /sistema de arquivos /mnte monte seu /devsistema de arquivos:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Verifique se o sistema Ubuntu quebrado que você está reparando possui uma /bootpartição separada que deve ser montada separadamente. (Se você tem certeza de que não, pode pular isso.)
Para verificar, execute:
ls /mnt/boot
Se houver saída (como grub memtest86+.bin memtest86+_multiboot.bin, mas não necessariamente exatamente isso), o sistema quebrado /bootestará na mesma partição que a sua /e você não precisará montar nada para acessá-lo.
Mas se não houver saída, você precisará montar o /bootsistema de arquivos:
sudo mount BOOT-PARTITION /mnt/boot
Substitua BOOT-PARTITIONpelo nome do dispositivo da /bootpartição (consulte a etapa 6 acima).
chroot no sistema quebrado, monte os restantes importantes sistemas de arquivos virtuais 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
Determinar se o acesso à Internet funciona de dentro do chrootpor pinging alguns anfitrião de confiança que é conhecido por responder normalmente para pings:
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 parecer mais com isso e o número anterior % packet lossfor menor que 100, a conexão com a Internet chrootestá funcionando:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Está funcionando, então você pode pular a etapa 11 .
Se parecer mais com isso e o número anterior % packet lossfor 100, a conexão precisará de solução de problemas. Verifique se a conexão no sistema de CD ao vivo (por exemplo, através de um navegador da Web ou executando o mesmo comando em uma chrootguia / janela separada do Terminal) não funciona. Verifique se você está digitando o comando corretamente. Use www.google.comse você não tiver sido.
Se a saída não se parece com a acima, mas diz ping: unknown host www.google.com: então a rede ainda não está funcionando no chroot.
Configure a rede no chroot. Pule esta etapa, a menos que haja um unknown hosterro na etapa 10 acima.
Para configurar a rede, faça backup do hostsarquivo do sistema quebrado e copie nos arquivos hostse sistema do CD ao vivo resolv.conf. (Você não precisa fazer backup da versão do sistema com defeito resolv.conf, pois esse arquivo é regenerado automaticamente em tempo real.)
Abra uma nova guia Terminal ( Ctrl+ Shift+ T) ou, se preferir, uma nova janela Terminal ( Ctrl+ Shift+ Nou apenas Ctrl+ Alt+ T). Execute estes comandos nele:
(O exitcomando no final fecha a nova guia / janela.)
Repita a etapa 10 acima para garantir que o acesso à Internet funcione agora de dentro do chroot. Deveria.
Descubra qual pacote do kernel deve ser instalado. Normalmente, isso será linux-image-generic. Mas não sempre.
Se você não tiver certeza sobre qual instalação, dependerá em parte da versão do Ubuntu que você instalou e em parte em outras informações. Se você não tiver certeza de qual versão do Ubuntu você instalou, descobrir através da execução deste comando (na chroot, não em uma janela Terminal / guia separada):
lsb_release -r
No Ubuntu 12.10 (a próxima versão do Ubuntu, atualmente em desenvolvimento), sempre será linux-image-generic. (Veja isto , isto e isto .)
No Ubuntu 12.04 LTS, as possibilidades prováveis são linux-image-generice linux-image-generic-pae. (Diferentemente das versões anteriores, o 12.04 não possui mais kernels de servidor e de área de trabalho separados.)
Se o sistema Ubuntu instalado (que você está corrigindo) for a versão de 64 bits, use linux-image-generic. ( linux-image-generic-paeaplica-se apenas a sistemas de 32 bits.)
É possível ter um sistema Ubuntu de 32 bits instalado em um computador de 32 ou 64 bits. Além disso, você pode estar usando um live CD de 32 ou 64 bits para corrigir um sistema instalado de 32 bits. Portanto, se você não sabe se o sistema Ubuntu instalado é de 32 ou 64 bits, verifique executando este comando (na chroot, não em uma janela / guia separada do Terminal):
dpkg-architecture -qDEB_HOST_ARCH_BITS
A saída será 32ou 64.
(Observe que nãouname -m é uma maneira correta de encontrar essas informações, porque mesmo quando executado no , isso mostrará a arquitetura do kernel em execução , que é o kernel do sistema do live CD e não o kernel do sistema instalado (quebrado).)chroot
Se o sistema Ubuntu instalado (que você está consertando) for a versão de 32 bits, o melhor kernel a ser utilizado dependerá da quantidade de RAM que você possui. Eu recomendo:
linux-image-generic se você tiver menos de 3 GB de RAM
linux-image-generic-pae se você tiver 3 GB de RAM ou mais.
(Esta é a forma como o instalador do Ubuntu escolhe um deles para configurar, desde que o instalador ganhou a habilidade de instalar kernels PAE. Veja a resolução para este erro . Se você quiser aprender o PAE é, consulte este artigo da Wikipedia . Se você quiser para aprender sobre o PAE no Ubuntu, consulte esta página wiki do Ubuntu .)
Se você não sabe quanta RAM você possui, execute este comando para descobrir:
grep MemTotal /proc/meminfo
Isso está listado em kilobytes . Para converter em gigabytes , divida por 1.048.576 (1024 2 ).
3 shows = 3.145.728 kB
No Ubuntu libera antes 12,04, prováveis possibilidades são linux-image-generic, linux-image-generic-paee linux-image-server.
Se você estiver executando um sistema Ubuntu Server, use linux-image-server.
Caso contrário, siga as orientações acima para os sistemas 12.04.
Este é o momento que você estava esperando! Instale um kernel no sistema quebrado.
(Como antes, exceto quando indicado explicitamente em contrário, esses comandos são executados na chrootjanela, não em uma aba / janela separada do Terminal.)
Substitua linux-image-genericpor qualquer outro pacote do kernel que você decidiu instalar na etapa 12 acima, se diferente.
Se você tiver que executar a etapa 11 para configurar a rede chroot, restaure o hostsarquivo antigo . 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, exitdentre os seguintes chroot:
Desligue o sistema de CD / DVD / USB ao vivo, removendo a unidade de CD / DVD ou USB flash ao vivo. Inicialize no sistema instalado no disco rígido que você acabou de reparar. Você instalou um pacote de kernel nele (e como parte da instalação, o kernel que ele fornece será adicionado ao menu de inicialização do GRUB2). Se tudo funcionou corretamente, seu sistema deve inicializar sem problemas. (Acho que é possível que demore um pouco mais para inicializar do que o normal, desta vez.)
AVISO LEGAL: Eu não testei o procedimento acima em todos os sistemas possíveis do Ubuntu, por isso é possível que exista um erro que eu não tenha identificado.
No futuro, recomendo sempre tentar manter dois kernels instalados. É bom ter dois caso um deles pare 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 acidentalmente desinstalar um a mais do que pretendia e reiniciar, ainda resta um para inicializar.
Esta pode ser a melhor explicação escrita de como fazer algo complexo no Linux que eu já li. Graças
ZincX
Uau, isso é tão super útil! Muito obrigado!
Rafał Cieślak 17/03/2013
2
Muito obrigado Eliah - depois de remover estupidamente todas as minhas imagens de linux, você salvou meu bacon. O único problema que eu tive foi na etapa: sudo cp /etc/resolv.conf /mnt/etc/resolv.conf Eu recebi o erro "cp: not write through dangling symlink` /mnt/etc/resolv.conf '". Encontrei este tópico e segui as instruções de um pôster para: "rm /mnt/etc/resolv.conf" antes de "cp /etc/resolv.conf /mnt/etc/resolv.conf" para resolver o problema de ligação simbólica pendente.
Hoje em /etc/resolv.confdia, o @ xcal400 é gerenciado por resolvconf, será gerado automaticamente ao usar o NetworkManager e poderá ser removido com segurança, rm /etc/resolv.confconforme você descobriu.
Lekensteyn
3
Essa deve ser a resposta aceita. Obrigado!
Jean-Michel Garcia
0
Quando removi meu kernel, encontrei esta solução nos fóruns do Ubuntu. Eu segui cada passo e o sistema foi recuperado. Espero que isso ajude você.
Um chroot pode funcionar, chroot significa que, quando você inicia um sistema, altera o sistema de arquivos raiz. Por exemplo, você iniciou a partir de um CD ao vivo, mas alterou a raiz "/" para onde seu ubuntu está instalado.
Digamos que seu ubuntu esteja instalado em / dev / sda2, então você pode tentar os seguintes comandos:
agora você está "/" root 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, pois nunca tive que fazer isso antes, mas isso deveria ser sobre isso. Não sei se você recebe algum aviso de erro do fstab (como não é possível encontrar o root).
Agora você precisa limpar algumas coisas e desmontar as partições montadas:
Por que você substituir /etc/hostse remover /sbin/initctl? Está lá por uma razão.
Lekensteyn
Parece, no final das contas, baseado no LiveCDCustomization ; algumas etapas não são necessárias para reparar um sistema já instalado. Em particular, não precisa fazer nada com /sbin/initctlou dbus-uuidgenou dpkg-divert. Você pode precisar substituir /etc/hostspara se conectar à Internet, mas geralmente não, e se você fizer isso, você deve colocar o original atrás. Em um sistema instalado (em vez de um CD ao vivo que inicializa e descompacta um sistema de arquivos squashfs), você não precisa executar update-initramfsou mesmo update-grubdepois de instalar o kernel.
Eliah Kagan
Além disso, como esse procedimento não instala nenhum metapacote do kernel, o kernel pode não ser atualizado corretamente posteriormente, a menos que um metapacote esteja instalado. Além disso, linux-image-2.6.32-26-genericnão será o kernel certo para a maioria das pessoas instalar.
Eliah Kagan
0
Depois que eu removido kernels antigos do Trusty14.04 ontem (FTR: eu fiz não remover os dois mais recentes!) O meu sistema não iria arrancar mais. GRUB mostrou
Error: File not found
Error: You need to load the kernel first
Não faço ideia do porquê.
Segui as excelentes instruções de Eliah Kagan para instalar a linux-image-genericpartir 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 Boot-Repairferramenta acertou, meu sistema está funcionando novamente.
Eu só queria adicionar minha experiência pela qual passei hoje na atualização para o Willy. Eu me limpei um pouco e me vi apenas com o memtest. o google me levou a entender que eu havia removido os núcleos. Uma restrição que eu tinha é a rede lenta e, portanto, o download do ISO completo não era uma opção. Então eu usei o CD Ubuntu Minimal (apenas 40 MB) e inicializei nele. Depois de detectar a opção de hardware (que me ajudou a conectar à rede sem fio), entrei na opção de shell. Segui as instruções @Lekensteyn e consegui. algumas coisas: você precisa copiar resolv.confantes de ficar chroot ou o seu DNS será danificado e, como o usuário conectado, não há raiz no sudo.
Eu sei que é antigo, mas pensei que adicionar esta resposta agregar valor àqueles que encontrarem o problema.
Respostas:
Inicialize em um CD ao vivo (ou USB ao vivo), monte alguns sistemas, faça chroot nele e instale o kernel. Após uma instalação bem-sucedida do kernel, desmonte os sistemas de arquivos.
sudo mount /dev/sdXY /mnt
Monte algumas partições especiais:
(opcional) Quando você estiver conectado a uma rede, use os servidores DNS do seu ambiente Live (caso contrário, os nomes de host não poderão ser resolvidos):
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(não é necessário sudo, pois você é root após um chroot)Após uma instalação bem-sucedida do kernel, saia do chroot e desmonte alguns sistemas de arquivos:
sudo reboot
fonte
/mnt
. O Ubuntu geralmente cuida da desmontagem / sincronização dos sistemas de arquivos, mas isso me parece mais limpo./dev/mdxxx
unidade - assumindo que seja mdadm./etc/resolv.conf
(remova-o se for um link simbólico) e coloque algo parecidonameserver 8.8.8.8
(servidor DNS público do Google). Substitua-o se necessário.cp /etc/resolv.conf /mnt/etc/resolv.conf
antes de entrar no chroot. Que trabalhou para mim de qualquer maneiraEsse procedimento expandido é responsável pela maioria das complicações que podem ocorrer, incluindo problemas na conexão com a Internet no
chroot
, sem saber qual pacote de kernel instalar (antes do Ubuntu 12.10, nem sempre serálinux-image-generic
), sem saber desde o início qual partição ou mesmo qual unidade física contém o/
sistema de arquivos e possui uma/boot
partição separada .Não escrevi isso com referência a nenhum dos outros procedimentos aqui, embora você note algumas semelhanças. Baseei-o, vagamente, no procedimento aqui (embora essas instruções sejam para algo bem diferente, eu as adaptei extensivamente, e apenas alguns comandos, não 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,
chroot
no sistema instalado e instalar um kernel nele.Inicialize a partir de um CD / DVD ao vivo do Ubuntu ou 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. Caso contrário, conecte-se à Internet. Uma maneira de verificar se você está conectado à Internet é abrir um navegador da web. Você pode até seguir o restante das instruções, trazendo essa resposta do Ask Ubuntu no seu navegador da web, no sistema de CD / DVD / USB ao vivo. Eu recomendo fortemente fazer isso.
Abra uma janela do Terminal com Ctrl+ Alt+ T.
Na janela Terminal, execute este comando para listar suas partições:
Você verá algo assim (mas não será exatamente assim):
Examine a saída que você obteve para determinar o nome do dispositivo da partição que contém o
/
sistema de arquivos do sistema Ubuntu que está instalado no disco rígido (que você está reparando).Se você possui apenas uma
ext4
partição, é essa.Se você tiver mais de uma
ext4
partição, é provavelmente a primeira. No entanto, se o primeiro for muito pequeno - menos de um gigabyte -, isso poderá ser uma/boot
partição separada (lembre-se dessa também).Observe que se está ou não
boot
listado emFlags
tem muito pouco a ver com se uma partição é ou não uma partição separada/boot
. Meu sistema, cujas informações estão listadas acima, não possui uma/boot
partição separada .O nome do dispositivo para a partição começa com o nome do dispositivo para a unidade física, indicado imediatamente após
Disk
a segunda linha. Em seguida, basta adicionar o número da partição ao final disso. Portanto, o nome do dispositivo da partição que contém o meu/
sistema de arquivos é/dev/sda1
. Aqui estão as duas linhas em que encontrei essas informações:Se você tiver mais de uma unidade física, receberá mais de uma listagem como a mostrada acima. Mas, a menos que você tenha outro sistema semelhante ao Unix instalado, você provavelmente terá apenas uma unidade que contém
ext4
partições, pelo menos sem as ter criado intencionalmente em outra unidade. Se você possui várias unidades comext4
partições, aext4
partição que contém seu/
sistema de arquivos provavelmente está em uma unidade que também contém umalinux-swap
partição.É possível que o sistema de
/
arquivos do seu sistema Ubuntu esteja em uma partição do tipo diferente deext4
. Quando isso acontece, é quase sempreext3
, e quase sempre, em um sistema bastante antigo. É muito incomum que seja esse o caso, a menos que você intencionalmente configure as coisas dessa maneira.Lembre-se do nome do dispositivo da partição que continha seu
/
sistema de arquivos (ou anote-o). Se for diferente/dev/sda1
, substitua/dev/sda1
-o nas etapas abaixo.(Se parecia que você tinha uma
/boot
partição separada , lembre-se também do nome do dispositivo.)Monte o
/
sistema de arquivos/mnt
e monte seu/dev
sistema de arquivos:Verifique se o sistema Ubuntu quebrado que você está reparando possui uma
/boot
partição separada que deve ser montada separadamente. (Se você tem certeza de que não, pode pular isso.)Para verificar, execute:
Se houver saída (como
grub memtest86+.bin memtest86+_multiboot.bin
, mas não necessariamente exatamente isso), o sistema quebrado/boot
estará na mesma partição que a sua/
e você não precisará montar nada para acessá-lo.Mas se não houver saída, você precisará montar o
/boot
sistema de arquivos:Substitua
BOOT-PARTITION
pelo nome do dispositivo da/boot
partição (consulte a etapa 6 acima).chroot
no sistema quebrado, monte os restantes importantes sistemas de arquivos virtuais e defina algumas variáveis de ambiente importantes:Determinar se o acesso à Internet funciona de dentro do
chroot
porping
ing alguns anfitrião de confiança que é conhecido por responder normalmente para pings:Você deve ver algo assim:
Se parecer mais com isso e o número anterior
% packet loss
for menor que 100, a conexão com a Internetchroot
está funcionando:Está funcionando, então você pode pular a etapa 11 .
Se parecer mais com isso e o número anterior
% packet loss
for 100, a conexão precisará de solução de problemas. Verifique se a conexão no sistema de CD ao vivo (por exemplo, através de um navegador da Web ou executando o mesmo comando em umachroot
guia / janela separada do Terminal) não funciona. Verifique se você está digitando o comando corretamente. Usewww.google.com
se você não tiver sido.Se a saída não se parece com a acima, mas diz
ping: unknown host www.google.com
: então a rede ainda não está funcionando nochroot
.Configure a rede no
chroot
. Pule esta etapa, a menos que haja umunknown host
erro na etapa 10 acima.Para configurar a rede, faça backup do
hosts
arquivo do sistema quebrado e copie nos arquivoshosts
e sistema do CD ao vivoresolv.conf
. (Você não precisa fazer backup da versão do sistema com defeitoresolv.conf
, pois esse arquivo é regenerado automaticamente em tempo real.)Abra uma nova guia Terminal ( Ctrl+ Shift+ T) ou, se preferir, uma nova janela Terminal ( Ctrl+ Shift+ Nou apenas Ctrl+ Alt+ T). Execute estes comandos nele:
(O
exit
comando no final fecha a nova guia / janela.)Repita a etapa 10 acima para garantir que o acesso à Internet funcione agora de dentro do
chroot
. Deveria.Descubra qual pacote do kernel deve ser instalado. Normalmente, isso será
linux-image-generic
. Mas não sempre.Se você não tiver certeza sobre qual instalação, dependerá em parte da versão do Ubuntu que você instalou e em parte em outras informações. Se você não tiver certeza de qual versão do Ubuntu você instalou, descobrir através da execução deste comando (na
chroot
, não em uma janela Terminal / guia separada):No Ubuntu 12.10 (a próxima versão do Ubuntu, atualmente em desenvolvimento), sempre será
linux-image-generic
. (Veja isto , isto e isto .)No Ubuntu 12.04 LTS, as possibilidades prováveis são
linux-image-generic
elinux-image-generic-pae
. (Diferentemente das versões anteriores, o 12.04 não possui mais kernels de servidor e de área de trabalho 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
aplica-se apenas a sistemas de 32 bits.)É possível ter um sistema Ubuntu de 32 bits instalado em um computador de 32 ou 64 bits. Além disso, você pode estar usando um live CD de 32 ou 64 bits para corrigir um sistema instalado de 32 bits. Portanto, se você não sabe se o sistema Ubuntu instalado é de 32 ou 64 bits, verifique executando este comando (na
chroot
, não em uma janela / guia separada do Terminal):A saída será
32
ou64
.(Observe que não
uname -m
é uma maneira correta de encontrar essas informações, porque mesmo quando executado no , isso mostrará a arquitetura do kernel em execução , que é o kernel do sistema do live CD e não o kernel do sistema instalado (quebrado).)chroot
Se o sistema Ubuntu instalado (que você está consertando) for a versão de 32 bits, o melhor kernel a ser utilizado dependerá da quantidade de RAM que você possui. Eu recomendo:
linux-image-generic
se você tiver menos de 3 GB de RAMlinux-image-generic-pae
se você tiver 3 GB de RAM ou mais.(Esta é a forma como o instalador do Ubuntu escolhe um deles para configurar, desde que o instalador ganhou a habilidade de instalar kernels PAE. Veja a resolução para este erro . Se você quiser aprender o PAE é, consulte este artigo da Wikipedia . Se você quiser para aprender sobre o PAE no Ubuntu, consulte esta página wiki do Ubuntu .)
Se você não sabe quanta RAM você possui, execute este comando para descobrir:
Isso está listado em kilobytes . Para converter em gigabytes , divida por 1.048.576 (1024 2 ).
No Ubuntu libera antes 12,04, prováveis possibilidades são
linux-image-generic
,linux-image-generic-pae
elinux-image-server
.linux-image-server
.Este é o momento que você estava esperando! Instale um kernel no sistema quebrado.
(Como antes, exceto quando indicado explicitamente em contrário, esses comandos são executados na
chroot
janela, não em uma aba / janela separada do Terminal.)Substitua
linux-image-generic
por qualquer outro pacote do kernel que você decidiu instalar na etapa 12 acima, se diferente.Se você tiver que executar a etapa 11 para configurar a rede
chroot
, restaure ohosts
arquivo antigo . Se você pulou a etapa 11, pule esta etapa também.Para restaurá-lo, execute este comando:
Desmonte os sistemas de arquivos,
exit
dentre os seguinteschroot
:Desligue o sistema de CD / DVD / USB ao vivo, removendo a unidade de CD / DVD ou USB flash ao vivo. Inicialize no sistema instalado no disco rígido que você acabou de reparar. Você instalou um pacote de kernel nele (e como parte da instalação, o kernel que ele fornece será adicionado ao menu de inicialização do GRUB2). Se tudo funcionou corretamente, seu sistema deve inicializar sem problemas. (Acho que é possível que demore um pouco mais para inicializar do que o normal, desta vez.)
AVISO LEGAL: Eu não testei o procedimento acima em todos os sistemas possíveis do Ubuntu, por isso é possível que exista um erro que eu não tenha identificado.
No futuro, recomendo sempre tentar manter dois kernels instalados. É bom ter dois caso um deles pare 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 acidentalmente desinstalar um a mais do que pretendia e reiniciar, ainda resta um para inicializar.
fonte
/etc/resolv.conf
dia, o @ xcal400 é gerenciado porresolvconf
, será gerado automaticamente ao usar o NetworkManager e poderá ser removido com segurança,rm /etc/resolv.conf
conforme você descobriu.Quando removi meu kernel, encontrei esta solução nos fóruns do Ubuntu. Eu segui cada passo e o sistema foi recuperado. Espero que isso ajude você.
Um chroot pode funcionar, chroot significa que, quando você inicia um sistema, altera o sistema de arquivos raiz. Por exemplo, você iniciou a partir de um CD ao vivo, mas alterou a raiz "/" para onde seu ubuntu está instalado.
Digamos que seu ubuntu esteja instalado em / dev / sda2, então você pode tentar os seguintes comandos:
Código:
agora você está "/" root em / dev / sda2, tente instalar o kernel
Eu tive que fazer um pouco de adivinhação aqui, pois nunca tive que fazer isso antes, mas isso deveria ser sobre isso. Não sei se você recebe algum aviso de erro do fstab (como não é possível encontrar o root).
Agora você precisa limpar algumas coisas e desmontar as partições montadas:
E você pode reiniciar para ver se funcionou.
URL para o tópico: http://art.ubuntuforums.org/showthread.php?t=1688928
fonte
/etc/hosts
e remover/sbin/initctl
? Está lá por uma razão./sbin/initctl
oudbus-uuidgen
oudpkg-divert
. Você pode precisar substituir/etc/hosts
para se conectar à Internet, mas geralmente não, e se você fizer isso, você deve colocar o original atrás. Em um sistema instalado (em vez de um CD ao vivo que inicializa e descompacta um sistema de arquivos squashfs), você não precisa executarupdate-initramfs
ou mesmoupdate-grub
depois de instalar o kernel.linux-image-2.6.32-26-generic
não será o kernel certo para a maioria das pessoas instalar.Depois que eu removido kernels antigos do Trusty14.04 ontem (FTR: eu fiz não remover os dois mais recentes!) O meu sistema não iria arrancar mais. GRUB mostrou
Não faço ideia do porquê.
Segui as excelentes instruções de Eliah Kagan para instalar a
linux-image-generic
partir 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
Boot-Repair
ferramenta acertou, meu sistema está funcionando novamente.fonte
Eu só queria adicionar minha experiência pela qual passei hoje na atualização para o Willy. Eu me limpei um pouco e me vi apenas com o memtest. o google me levou a entender que eu havia removido os núcleos. Uma restrição que eu tinha é a rede lenta e, portanto, o download do ISO completo não era uma opção. Então eu usei o CD Ubuntu Minimal (apenas 40 MB) e inicializei nele. Depois de detectar a opção de hardware (que me ajudou a conectar à rede sem fio), entrei na opção de shell. Segui as instruções @Lekensteyn e consegui. algumas coisas: você precisa copiar
resolv.conf
antes de ficar chroot ou o seu DNS será danificado e, como o usuário conectado, não há raiz no sudo.Eu sei que é antigo, mas pensei que adicionar esta resposta agregar valor àqueles que encontrarem o problema.
fonte