Tengo una máquina que solía iniciar dual Ubuntu (16.04 actualmente) y Windows 7, con GRUB de Ubuntu como gestor de arranque.
Ahora acabo de agregar Arch Linux como tercer sistema operativo, siguiendo las instrucciones oficiales de instalación. No instalé GRUB desde Arch porque quería usar el controlado por Ubuntu. Las instrucciones contenían un comando mkinitcpio -p linux
que probablemente generó algunos archivos de arranque que ejecuté como se describe.
Ahora, cuando intento arrancar Ubuntu desde GRUB a través de su entrada predeterminada, aparece este error desagradable (perdón por la foto de la pantalla):
Como uname -a
muestra la salida , está intentando arrancar el núcleo Arch, pero /dev/sda6
es la partición raíz de Ubuntu.
Tengo que navegar Advanced options for Ubuntu
y seleccionar una de las Ubuntu, with Linux 4.4.0-*
entradas para poder cargar Ubuntu, aunque no pude encontrar una entrada que cargue correctamente Arch.
Ejecutar sudo update-grub
desde Ubuntu ( " update-grub
es un código auxiliar para ejecutar grub-mkconfig -o /boot/grub/grub.cfg
para generar un archivo de configuración grub2" ) no cambia nada. La grub-customizer
herramienta también fue inútil para solucionar esto hasta ahora.
¿Qué causa esta confusión de GRUB y cómo lo soluciono para que cada versión de Linux arranque con el núcleo correcto y desde la partición correcta?
Parece que instalé estúpidamente Arch con Ubuntu / boot montado, por lo que probablemente colocó sus archivos de arranque allí.
Estoy bien con borrar todo lo relacionado con Arch para volver a cargar el cargador de arranque de Ubuntu y hacer una instalación limpia de Arch más tarde.
Actualizaciones (gracias a @terdon por su apoyo en el chat Ask Ubuntu):
Aquí esta mi /boot/grub/grub.cfg
.
Todas las entradas de Linux parecen apuntar a mi partición / dev / sda6, que es la raíz de Ubuntu:
$ grep ' linux /' /boot/grub/grub.cfg
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
Intenté actualizar la configuración de GRUB desde Ubuntu:
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
dpkg: warning: version 'linux' has bad syntax: version number does not start with a digit
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found linux image: /boot/vmlinuz-4.4.0-21-generic
Found initrd image: /boot/initrd.img-4.4.0-21-generic
Found linux image: /boot/vmlinuz-4.2.0-35-generic
Found initrd image: /boot/initrd.img-4.2.0-35-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
Found Arch on /dev/sda8
done
Intenté reinstalar GRUB en el MBR desde Ubuntu:
$ sudo grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
$ sudo grub-install --recheck /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Esos son los paquetes de kernel de Ubuntu instalados por cierto, intenté con dpkg-reconfigure
todos ellos, pero sin ningún efecto sobre el problema:
$ dpkg -l linux-image* | grep ^ii
ii linux-image-4.2.0-35-generic 4.2.0-35.40 amd64 Linux kernel image for version 4.2.0 on 64 bit x86 SMP
ii linux-image-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.2.0-35-generic 4.2.0-35.40 amd64 Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
También intenté regenerar Ubuntu initramfs:
$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-4.4.0-21-generic
update-initramfs: Generating /boot/initrd.img-4.2.0-35-generic
Mi diseño de partición:
Comprobado desde el sistema Ubuntu. Las etiquetas deben explicarse por sí mismas.
$ lsblk -f /dev/sda
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ntfs win7-boot 90DCF3A5DCF3842E /win/boot
├─sda2 ntfs windows7 482C7A572C7A3FCC /win/c
├─sda3 ext4 grub-boot 6dbb8633-dadd-4b5e-8d85-b0895fde9dfb /boot
├─sda5 ext4 images 81dc42c4-a161-4ccd-b704-6e5c09298943 /images
├─sda6 ext4 ubuntu-1604 eee18451-b607-4875-8a88-c9cb6c6544c8 /
├─sda7 ext4 ubuntu-home 485b3ef1-7216-4053-b25c-f656d529e8e6 /home
├─sda8 ext4 arch-root 8d281a0c-969c-44cf-ba6a-1d3c7b4be7ec
├─sda9 ext4 arch-home 32522902-a53d-44c8-90f2-6bbf14c40f1f
└─sda10 swap linux-swap 8b05bd9b-bc42-46f6-8c18-50711a3c48b9 [SWAP]
Mi estructura de menú GRUB:
Opciones avanzadas para Ubuntu:
Mi /boot
directorio:
$ ls -la /boot
total 118480
drwxr-xr-x 4 root root 4096 Apr 24 20:50 .
drwxr-xr-x 28 root root 4096 Apr 24 19:44 ..
-rw-r--r-- 1 root root 1313029 Mär 16 01:45 abi-4.2.0-35-generic
-rw-r--r-- 1 root root 1239577 Apr 19 00:21 abi-4.4.0-21-generic
-rw-r--r-- 1 root root 184888 Mär 16 01:45 config-4.2.0-35-generic
-rw-r--r-- 1 root root 189412 Apr 19 00:21 config-4.4.0-21-generic
drwxr-xr-x 6 root root 4096 Apr 26 19:58 grub
-rw-r--r-- 1 root root 18598360 Apr 24 20:59 initramfs-linux-fallback.img
-rw-r--r-- 1 root root 3516429 Apr 24 20:59 initramfs-linux.img
-rw-r--r-- 1 root root 33642388 Apr 24 18:31 initrd.img-4.2.0-35-generic
-rw-r--r-- 1 root root 36143341 Apr 24 19:51 initrd.img-4.4.0-21-generic
drwx------ 2 root root 16384 Okt 28 17:43 lost+found
-rw-r--r-- 1 root root 182704 Jan 28 13:44 memtest86+.bin
-rw-r--r-- 1 root root 184380 Jan 28 13:44 memtest86+.elf
-rw-r--r-- 1 root root 184840 Jan 28 13:44 memtest86+_multiboot.bin
-rw------- 1 root root 3745312 Mär 16 01:45 System.map-4.2.0-35-generic
-rw------- 1 root root 3853719 Apr 19 00:21 System.map-4.4.0-21-generic
-rw------- 1 root root 6829104 Mär 16 01:45 vmlinuz-4.2.0-35-generic
-rw------- 1 root root 7013968 Apr 19 00:21 vmlinuz-4.4.0-21-generic
-rw-r--r-- 1 root root 4435552 Apr 14 19:20 vmlinuz-linux
Los núcleos 4.4.0 y 4.2.0 deberían ser Ubuntu, Arch debería tener un kernel 4.5.0. Pero, ¿cómo puedo saber qué archivo sin la versión del kernel en su nombre pertenece a qué?
Mi directorio raíz de Ubuntu (directorios excluidos):
$ ls -la / | grep ^[^d]
total 124
lrwxrwxrwx 1 root root 32 Apr 24 19:44 initrd.img -> boot/initrd.img-4.4.0-21-generic
lrwxrwxrwx 1 root root 32 Apr 5 17:45 initrd.img.old -> boot/initrd.img-4.2.0-35-generic
lrwxrwxrwx 1 root root 29 Apr 24 19:44 vmlinuz -> boot/vmlinuz-4.4.0-21-generic
lrwxrwxrwx 1 root root 29 Apr 5 17:45 vmlinuz.old -> boot/vmlinuz-4.2.0-35-generic
El directorio raíz de My Arch no contiene ningún archivo o enlace.
os-prober
. luego ejecuta estossudo mkinitcpio -p linux
ysudo grub-mkconfig -o /boot/grub/grub.cfg
finalmentesudo grub-install /dev/sda
Root device mounted successfully, but /sbin/init does not exists
. ¿Investigaste esto? ¿init
Realmente falta? Si es así, definitivamente debe instalarlo, si en cambio está presente, ¿alguna idea de por qué no se puede encontrar?Respuestas:
Finalmente lo resolví atacando la partición Arch y sus archivos de arranque en el
/boot
directorio de mi Ubuntu desde la órbita. Ubuntu está bien nuevamente ahora, todas las entradas restantes de GRUB están funcionando nuevamente.Aquí hay una lista de lo que hice:
Eliminar los
initramfs
archivos de Arch :Eliminar el
vmlinuz
archivo de Arch :Formatee la partición Arch (
/dev/sda8
) usando GPartedActualice la configuración de GRUB:
Reiniciar y disfrutar!
fuente
initramfs-linux
no debe contener...ranfs...
Fijación manual de grub.cfg (no recomendado)
Mirando tu
grub.cfg
la entrada de Ubuntu está rota (y algunas de las siguientes también)
Las dos últimas líneas son su comando emitido por grub para cargar kernel e initrd, y actualmente están buscando el kernel ARCH y initiramfs. Además, los busca en la
/
partición in identificada por lauuid=eee18451-b607-4875-8a88-c9cb6c6544c8
cual podrían o no alojar los archivos de Ubuntu previstos.Puedes arreglar esto de la siguiente manera:
para obtener el uuid de su partición raíz de ubuntu.
Luego reemplace las dos últimas líneas con el enlace simbólico a sus últimas imágenes de kernel e initrd (ya que esta es la forma en que ubuntu espera que sea)
Si esto no lo soluciona de inmediato, es posible que se requiera alguna otra corrección. Puede encontrarlos "copiando" una de las entradas probadas y en funcionamiento, y le recomiendo que use la más vainilla (p. Ej., Ningún parámetro advenedizo u otro parámetro del núcleo, como el nomodeset que se pasa).
Este debería ser un buen candidato:
La entrada Arch está igualmente rota, ya que probablemente busca Arch initramfs y el núcleo en la partición raíz de Ubuntu. La ubicación predeterminada de esos es bajo / boot. Ajuste las dos líneas finales de la entrada de Arch corrigiendo la ubicación y verificando que la partición raíz uuid sea la que contenga la raíz de Arch.
Una (varias) palabra (s) de advertencia:
En general, NO se recomienda que los usuarios de Ubuntu jueguen a
grub.cfg
mano. Definitivamente haga una copia y tenga cuidado en su edición. Esté preparado para la posibilidad de que su sistema no se pueda iniciar (pero podrá resucitarlo utilizando el procedimiento de inicio descrito en mi respuesta anterior).Además, si bien esto podría solucionar su problema esta vez, podría volver a morderle la próxima vez que tenga que repoblar su menú de grub. Por alguna razón, el sondeo del sistema operativo de grub bajo ubuntu se confunde con la presencia del kernel de Arch bajo / boot. Supongo que una utilidad como la reparación de arranque debería poder hacer que todas sus distribuciones sean de arranque correctamente, pero si no recuerdo mal, no funcionó para usted.
Una solución permanente podría consistir en instalar el núcleo del archivo y las imágenes en un directorio diferente al predeterminado / boot. Esto es complicado y debe consultar la entrada de grub de Arch wiki sobre cómo hacerlo correctamente.
ANTIGUA RESPUESTA (recomendada si planea cambiar a Arch a largo plazo) Esto es lo que haría, y de alguna manera lo he hecho hace unos meses.
Vaya a la página de grub wiki del arco y lea la sección correspondiente para su tabla de particiones (es probable que sea UEFI, así que lea sobre ESP y así sucesivamente).
Arrancar en Arch manualmente
Esta es una experiencia altamente formativa que recomiendo probar. Suponiendo que su núcleo Arch Linux se encuentra en algún lugar de su disco, presione
c
en el indicador de grub y escriba ls para ver una lista de dispositivos y particiones que se vean como(hd0,msdos1),(hd1,gpt1),...
. Puede ver cada uno de ellos para ver el contenido.Necesitas descubrir tres cosas:
/
partición raíz de Arch?vmlinuz
intiramfs-linux.img
una vez que posea estos tres, ejecutará tres comandos en grub> prompt, algo similar a esto.
Tenga en cuenta que grub puede encontrar, por ejemplo
(el grub no puede encontrar automáticamente y darle un pánico al núcleo;))
Todo esto lo he aprendido aquí , una fuente que recomiendo encarecidamente. Si puedes hacerlo, ¡salta a arreglar grub! De otra manera...
Arranque Arch desde una clave en vivo! Obtenga un entorno de Arch en vivo y siga la wiki de instalación
chroot
en Arch de la misma manera que lo hizo la primera vez.Gusano de fijación
Desde el interior de Arch, instale los paquetes de grub relevantes, y en particular
os-prober
para permitirgrub-install
detectar su otro sistema. Siga cuidadosamente la guía de instalación allí y debería poder (al menos) arrancar tanto arch como ubuntu desde el menú de grub. La instalación de comandos terminará luciendo así.** Advertencia ** No ejecute estos comandos, son ejemplos, necesita resolver los apropiados para su sistema
** Si todo lo demás falla **
Desafortunadamente, esto es tan específico como se obtiene dada la cantidad limitada de información y SE no es realmente un foro para tales problemas, por lo tanto, mi respuesta "genérica" se refiere a recursos útiles.
Si no puede resolverlo, tal vez pase por los foros de Arch, y siempre que haya hecho todo lo posible y haya leído los documentos de antemano, puede encontrar ayuda.
Hacer todo esto a través de Arch ha sido una experiencia de aprendizaje fundamental para mí.
fuente
Mi solución es más simple. Yo uso el terminal y hago lo siguiente:
Si tiene más problemas, simplemente use
boot-repair
, que es una descarga gratuita, lo suficientemente pequeña como para grabar en un disco CD.fuente
update-grub
. La reparación de arranque es muy poco probable que ayude con este problema en particular.sudo grub-mkconfig -o /boot/grub/grub.cfg
está ahí.update-grub
es un script de shell muy simple que se ejecutagrub-mkconfig -o /boot/grub/grub.cfg
. Puedes ver esto concat /usr/sbin/update-grub
.