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?
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?
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:
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
/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:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/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 parecido nameserver 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 maneira
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 /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:
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 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 em Flags
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:
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 ext4
partições, pelo menos sem as ter criado intencionalmente em outra unidade. Se você possui várias unidades com ext4
partições, a ext4
partição que contém seu /
sistema de arquivos provavelmente está em uma unidade que também contém uma linux-swap
partiçã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 /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:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
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:
ls /mnt/boot
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:
sudo mount BOOT-PARTITION /mnt/boot
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:
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 chroot
por ping
ing 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 loss
for menor que 100, a conexão com a Internet chroot
está 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 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 uma chroot
guia / janela separada do Terminal) não funciona. Verifique se você está digitando o comando corretamente. Use www.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 no chroot
.
Configure a rede no chroot
. Pule esta etapa, a menos que haja um unknown host
erro na etapa 10 acima.
Para configurar a rede, faça backup do hosts
arquivo do sistema quebrado e copie nos arquivos hosts
e 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:
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 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):
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-generic
e 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-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):
dpkg-architecture -qDEB_HOST_ARCH_BITS
A saída será 32
ou 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 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:
grep MemTotal /proc/meminfo
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
e linux-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.)
apt-get update
apt-get -y install linux-image-generic
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 o hosts
arquivo 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, exit
dentre os seguintes chroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
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.
/etc/resolv.conf
dia, o @ xcal400 é gerenciado por resolvconf
, 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:
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 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:
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 para o tópico: http://art.ubuntuforums.org/showthread.php?t=1688928
/etc/hosts
e remover /sbin/initctl
? Está lá por uma razão.
/sbin/initctl
ou dbus-uuidgen
ou dpkg-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 executar update-initramfs
ou mesmo update-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
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-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.
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.