Estaba tratando de eliminar los núcleos antiguos, pero debo haber eliminado todos los núcleos de mi computadora portátil Ubuntu 11.04. ¿Hay alguna forma de solucionar esto mediante el arranque USB o el montaje del disco duro en otro sistema?
Estaba tratando de eliminar los núcleos antiguos, pero debo haber eliminado todos los núcleos de mi computadora portátil Ubuntu 11.04. ¿Hay alguna forma de solucionar esto mediante el arranque USB o el montaje del disco duro en otro sistema?
Respuestas:
Arranque en un CD en vivo (o USB en vivo), monte algunos sistemas, realice un arranque en él e instale el kernel. Después de una instalación exitosa del kernel, desmonte los sistemas de archivos.
sudo mount /dev/sdXY /mnt
Monta algunas particiones especiales:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(opcional) Cuando esté conectado a una red, use los servidores DNS de su entorno Live (de lo contrario, los nombres de host posiblemente no se puedan resolver):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(no se requiere sudo ya que es root después de un chroot)Después de una instalación exitosa del kernel, salga del chroot y desmonte algunos sistemas de archivos:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
. Ubuntu generalmente se encarga de desmontar / sincronizar los sistemas de archivos, pero esto me parece más limpio.
/dev/mdxxx
unidad, suponiendo que sea mdadm.
/etc/resolv.conf
(elimínelo si es un enlace simbólico) y coloque algo parecido nameserver 8.8.8.8
en él (servidor DNS público de Google). Reemplácelo si es necesario.
cp /etc/resolv.conf /mnt/etc/resolv.conf
antes de entrar en chroot. De todos modos
Este procedimiento ampliado explica la mayoría de las complicaciones que podrían ocurrir, incluidos los problemas de conexión a Internet en chroot
, sin saber qué paquete de kernel instalar (antes de Ubuntu 12.10, no siempre será linux-image-generic
), sin saber desde el principio qué partición o incluso qué unidad física contiene el /
sistema de archivos y que tiene una /boot
partición separada .
No he escrito esto con referencia a ninguno de los otros procedimientos aquí, aunque notará algunas similitudes. Lo basé, libremente, en el procedimiento aquí (aunque esas instrucciones son para algo bastante diferente, las he adaptado ampliamente, y solo se copian algunos comandos, no en prosa).
Eliminó todos los paquetes del núcleo, y Ubuntu no puede arrancar sin un núcleo instalado. Entonces, la solución es arrancar desde un CD / DVD / USB chroot
en vivo en el sistema instalado e instalar un núcleo en él.
Arranque desde un CD / DVD en vivo de Ubuntu o una unidad flash USB en vivo.
Seleccione Probar Ubuntu (no Instalar Ubuntu ).
Cuando aparezca el escritorio, asegúrese de estar conectado a Internet. Si no es así, conéctese a Internet. Una forma de ver si está conectado a Internet es abrir un navegador web. Incluso puede seguir el resto de las instrucciones llevando esta respuesta a Ask Ubuntu en su navegador web, en el sistema de CD / DVD / USB en vivo. Recomiendo hacer eso.
Abra una ventana de Terminal con Ctrl+ Alt+ T.
En la ventana Terminal, ejecute este comando para enumerar sus particiones:
sudo parted -l
Verá algo como esto (pero no será exactamente así):
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 el resultado que obtuvo para determinar el nombre del dispositivo de la partición que contiene el /
sistema de archivos del sistema Ubuntu que está instalado en el disco duro (que está reparando).
Si solo tiene una ext4
partición, esa es.
Si tiene más de una ext4
partición, probablemente sea la primera. Sin embargo, si el primero es muy pequeño, menos de un gigabyte, entonces esa podría ser una /boot
partición separada (recuerde esa también).
Tenga en cuenta que si boot
se incluye o no en la lista Flags
tiene muy poco que ver con si una partición es o no una partición separada /boot
. Mi sistema, cuya información se enumera arriba, no tiene una /boot
partición separada .
El nombre del dispositivo para la partición comienza con el nombre del dispositivo para la unidad física, indicado inmediatamente después Disk
en la segunda línea. Luego solo agregue el número de partición al final de eso. Entonces, el nombre del dispositivo para la partición que contiene mi /
sistema de archivos es /dev/sda1
. Aquí están las dos líneas donde encontré esa información:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Si tiene más de una unidad física, obtendrá más de una lista como la que se muestra arriba. Pero a menos que tenga otro sistema similar a Unix instalado, probablemente solo tendrá una unidad que contenga ext4
particiones, al menos sin haberlas creado intencionalmente en otra unidad. Si tiene varias unidades con ext4
particiones, entonces la ext4
partición que contiene su /
sistema de archivos está probablemente en una unidad que también contiene una linux-swap
partición.
Es posible que el sistema de /
archivos de su sistema Ubuntu esté en una partición de otro tipo que no sea ext4
. Cuando esto sucede, es casi siempre ext3
, y casi siempre en un sistema bastante antiguo. Es muy raro que este sea el caso, a menos que usted mismo configure las cosas intencionalmente de esta manera.
Recuerde el nombre del dispositivo de la partición que contenía su /
sistema de archivos (o escríbalo). Si es diferente de /dev/sda1
, entonces lo reemplazará /dev/sda1
en los pasos a continuación.
(Si parecía que tenía una /boot
partición separada , recuerde también el nombre del dispositivo para eso).
Montar el /
sistema de archivos /mnt
y montar su /dev
sistema de archivos:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Compruebe si el sistema Ubuntu dañado que está reparando tiene una /boot
partición separada que debe montarse por separado. (Si está seguro de que no, puede omitir esto).
Para verificar, ejecute:
ls /mnt/boot
Si hay salida (como grub memtest86+.bin memtest86+_multiboot.bin
, pero no necesariamente eso), entonces el sistema roto /boot
está en la misma partición /
y no tiene que montar nada para acceder a él.
Pero si no hay salida, entonces tendrá que montar el /boot
sistema de archivos:
sudo mount BOOT-PARTITION /mnt/boot
Reemplace BOOT-PARTITION
con el nombre del dispositivo de la /boot
partición (consulte el paso 6 anterior).
chroot
en el sistema roto, monte los sistemas de archivos virtuales importantes restantes y establezca algunas variables de entorno 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 si el acceso a Internet funciona desde dentro chroot
mediante ping
un host confiable que se sabe que responde normalmente a pings:
ping -c 5 www.google.com
Debería ver algo como esto:
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
Si se ve así en su mayoría, y el número anterior % packet loss
es inferior a 100, entonces la conexión a Internet chroot
está funcionando:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Está funcionando, por lo que puede omitir el paso 11 .
Si se ve principalmente así, y el número anterior % packet loss
es 100, la conexión necesita solución de problemas. Asegúrese de que la conexión en el sistema de CD en vivo (por ejemplo, a través de un navegador web o ejecutando el mismo comando en una chroot
ventana / pestaña Terminal no editada) funcione. Asegúrese de escribir el comando correctamente. Úselo www.google.com
si no ha estado.
Si la salida no se parece a la anterior, sino que dice ping: unknown host www.google.com
, entonces la red aún no funciona en el chroot
.
Configurar redes en chroot
. Omita este paso a menos que tenga un unknown host
error en el paso 10 anterior.
Para configurar la red, haga una copia de seguridad del hosts
archivo del sistema roto y copie sobre el sistema de CD en vivo hosts
y los resolv.conf
archivos. (No tiene que hacer una copia de seguridad de la versión del sistema roto resolv.conf
, ya que ese archivo se regenera automáticamente sobre la marcha).
Abra una nueva pestaña Terminal ( Ctrl+ Shift+ T) o, si lo prefiere, una nueva ventana Terminal ( Ctrl+ Shift+ N, o simplemente Ctrl+ Alt+ T). Ejecute estos comandos en él:
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
(El exit
comando al final cierra la nueva pestaña / ventana).
Repita el paso 10 anterior para asegurarse de que el acceso a Internet funcione ahora desde dentro del chroot
. Debería.
Averigua qué paquete de kernel debe instalarse. Por lo general, esto será linux-image-generic
. Pero no siempre.
Si no está seguro de qué instalar, dependerá en parte de la versión de Ubuntu que haya instalado, y en parte de otra información. Si no está seguro de qué versión de Ubuntu ha instalado, infórmese ejecutando este comando (en chroot
, no en una ventana / pestaña de Terminal separada):
lsb_release -r
En Ubuntu 12.10 (la próxima versión de Ubuntu, actualmente en desarrollo), siempre lo será linux-image-generic
. (Mira esto , esto y esto .)
En Ubuntu 12.04 LTS, las posibilidades probables son linux-image-generic
y linux-image-generic-pae
. (A diferencia de las versiones anteriores, 12.04 ya no tiene núcleos de servidor y escritorio separados).
Si el sistema Ubuntu instalado (que está arreglando) es la versión de 64 bits, use linux-image-generic
. ( linux-image-generic-pae
solo se aplica a sistemas de 32 bits).
Es posible tener un sistema Ubuntu de 32 bits instalado en una computadora de 32 bits o 64 bits. Además, puede estar utilizando un CD en vivo de 32 bits o 64 bits para reparar un sistema instalado de 32 bits. Entonces, si no sabe si el sistema Ubuntu instalado es de 32 bits o de 64 bits, verifique ejecutando este comando (en chroot
, no en una ventana / pestaña de Terminal separada):
dpkg-architecture -qDEB_HOST_ARCH_BITS
La salida será 32
o 64
.
(Tenga en cuenta que nouname -m
es una forma correcta de encontrar esta información, porque incluso cuando se ejecuta en , eso le dirá la arquitectura del núcleo en ejecución , que es el núcleo del sistema de CD en vivo y no el núcleo del sistema instalado (roto)).chroot
Si el sistema Ubuntu instalado (que está arreglando) es la versión de 32 bits, el mejor kernel para usar dependerá de la cantidad de RAM que tenga. Yo recomiendo:
linux-image-generic
si tiene menos de 3 GB de RAMlinux-image-generic-pae
si tienes 3 GB de RAM o más.(Así es como el instalador de Ubuntu elige cuál configurar, desde que el instalador adquirió la capacidad de instalar núcleos PAE. Consulte la resolución de este error . Si desea saber qué es PAE, consulte este artículo de Wikipedia . Si desea aprenda sobre PAE en Ubuntu, vea esta página wiki de Ubuntu .)
Si no sabe cuánta RAM tiene, ejecute este comando para averiguar:
grep MemTotal /proc/meminfo
Eso aparece en kilobytes . Para convertir a gigabytes , divida por 1,048,576 (1024 2 ).
En Ubuntu libera antes 12.04, posibilidades probables son linux-image-generic
, linux-image-generic-pae
y linux-image-server
.
linux-image-server
.¡Este es el momento que has estado esperando! Instale un kernel en el sistema roto.
(Al igual que antes, excepto donde se indique explícitamente lo contrario, estos comandos se ejecutan en chroot
, no en una ventana / pestaña de Terminal separada).
apt-get update
apt-get -y install linux-image-generic
Reemplace linux-image-generic
con cualquier otro paquete de kernel que haya decidido instalar en el paso 12 anterior, si es diferente.
Si tuvo que realizar el paso 11 para configurar la red en el chroot
, restaure el hosts
archivo antiguo . Si omitió el paso 11, omita este paso también.
Para restaurarlo, ejecute este comando:
cp /etc/hosts.old /etc/hosts
Desmontar sistemas de archivos, exit
saliendo de chroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
Apague el sistema de CD / DVD / USB en vivo, quitando el CD / DVD en vivo o la unidad flash USB. Inicie en el sistema instalado en el disco duro que acaba de reparar. Ha instalado un paquete de kernel en él (y como parte de la instalación, el kernel que proporciona se agregará nuevamente al menú de arranque de GRUB2). Si todo funcionó correctamente, su sistema debería arrancar sin problemas. (Creo que es posible que esta vez tarde un poco más en arrancar de lo habitual).
DESCARGO DE RESPONSABILIDAD: No probé el procedimiento anterior en todos los sistemas Ubuntu posibles , por lo que es posible que haya un error que no he identificado.
En el futuro, recomiendo siempre tratar de mantener dos núcleos instalados. Es bueno tener dos en caso de que uno deje de funcionar por algún motivo (puede seleccionar el otro en el menú de arranque de GRUB2). Además, si tiene la intención de mantener dos núcleos y desinstala accidentalmente uno más de lo que pretendía y reinicia, aún le queda uno para iniciar.
/etc/resolv.conf
hoy en día es administrado por resolvconf
, se generará automáticamente al usar NetworkManager y se puede eliminar de forma segura usando rm /etc/resolv.conf
como descubrió.
Cuando eliminé mi kernel encontré esta solución en los foros de Ubuntu. Seguí cada paso y el sistema se recuperó. Espero que te ayude.
Un chroot podría funcionar, chroot significa que cuando inicia un sistema, cambia el sistema de archivos raíz. Por ejemplo, comenzó desde un CD en vivo pero cambia la raíz "/" a donde está instalado su ubuntu.
Digamos que tu ubuntu está instalado en / dev / sda2, entonces puedes probar los siguientes 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
ahora que su raíz "/" está en / dev / sda2, intente instalar el núcleo
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Tuve que hacer algunas conjeturas aquí ya que nunca tuve que hacer esto antes, pero esto debería ser al respecto. No sé si recibe alguna advertencia de error de fstab (como no puede encontrar la raíz).
Ahora necesita limpiar algunas cosas y desmontar las particiones 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
Y puede reiniciar para ver si funcionó.
URL para el hilo: http://art.ubuntuforums.org/showthread.php?t=1688928
/etc/hosts
y eliminarías /sbin/initctl
? Está ahí por una razón.
/sbin/initctl
o dbus-uuidgen
o dpkg-divert
. Es posible que deba reemplazarlo /etc/hosts
para conectarse a Internet, pero generalmente no, y si lo hace, debe volver a colocar el original. En un sistema instalado (en lugar de un CD en vivo que arranca y luego desempaqueta un sistema de archivos squashfs), no tiene que ejecutarlo update-initramfs
ni siquiera update-grub
después de instalar el núcleo.
linux-image-2.6.32-26-generic
no será el núcleo correcto para la mayoría de las personas que lo instalen.
Después quité los núcleos antiguos de Trusty14.04 ayer (FTR: Yo no quito los dos más recientes!) Mi sistema no arranque más. GRUB mostró
Error: File not found
Error: You need to load the kernel first
No tengo idea de por qué.
Luego seguí las excelentes instrucciones de Eliah Kagan para instalar linux-image-generic
desde un CD en vivo. Instaló 150 MB de kernel nuevo, pero lamentablemente eso no resolvió el problema.
Afortunadamente, encontré esta página . La Boot-Repair
herramienta lo hizo bien, mi sistema se está ejecutando nuevamente.
Solo quería agregar mi experiencia por la que pasé hoy al actualizarme a Willy. Limpié un poco y me encontré con solo memtest. Google me hizo comprender que había eliminado los núcleos. Una restricción que tuve fue una red lenta, por lo que descargar ISO completo no era una opción. Entonces utilicé Ubuntu Minimal CD (solo 40 MB) y lo inicié. Después de detectar la opción de hardware (que me ayudó a conectarme a la conexión inalámbrica) entré en la opción de shell. Seguí las instrucciones de @Lekensteyn y tuve éxito. Sin embargo, hay algunas cosas: tiene que copiar resolv.conf
antes de ir a chroot o de lo contrario su DNS se arruinará y, dado que el usuario que inició sesión, no hay necesidad de sudo en ninguna parte.
Sé que es antiguo, pero pensé que agregar esta respuesta agregaría valor a aquellos que encontrarían el problema.