sábado, 18 de junio de 2022

Debian no reconoce otros sistemas operativos

Hasta Debian 10 (Buster), el instalador de Debian te reconocía todos los sistemas operativos instalados en el pc.

A partir de Debian 11 (Bullseye) hay un cambio importante en grub2, ahora por defecto no detecta y añade otros sistemas operativos al menú de arranque, solo reconocerá Debian GNU/Linux.

Ejemplos reales de los sistemas operativos que no detecta por defecto:

- otras versiones de Debian

- otros distribuciones de GNU/Linux

- otros sistemas operativos como microsoft windows.

Entonces al instalar Debian GNU/Linux y reiniciar, o al actualizar grub2, vemos que nos ha dejado un grub2 con solo Debian GNU/Linux.





Si has actualizado el paquete grub2 y ademas tienes instalado el paquete: apt-listchanges, durante la actualización, el instalador nos informa, de los nuevos cambios realizados, es decir que no incluirá otros sistemas operativos, y nos informa de lo que tenemos que hacer para detectar y añadir otros sistemas operativos instalados en el pc,

En caso de no tener instalado el paquete apt-listchanges, lo instalamos usando el siguiente comando:

# apt install apt-listchanges




=================================================
En Inglés:
boot menus entries for other operating system are no longer generated by default. To re-enable this, set GRUB_DISABLE_OS_PROBER=false in /etc/default/grub.

En español:
Las entradas de los menús de arranque para otros sistemas operativos ya no se generan de forma predeterminada. Para volver a habilitar esto, configure GRUB_DISABLE_OS_PROBER=false en /etc/default/grub.
=================================================

 

debe instalar el paquete: os-prober

apt install os-prober 

 



=================================================
En inglés:
This package detects other OSes available on a system and outputs the results in a generic machine-readable format.

En español:
Este paquete detecta otros sistemas operativos instalador en el pc y genera las entradas necesarias para el grub2
=================================================


Luego tenemos que editar el fichero:

# nano /etc/default/grub




y añadimos la siguiente línea, al final del archivo:

GRUB_DISABLE_OS_PROBER=false 

 


 


Finalmente ejecutamos:

update-grub

 

 

 


A partir de este momento ya nos tiene que aparecer todos los sistemas operativos instalados en nuestro pc

 

 

 



 Cuidado al actualizar el sistema 

Cuando actualizamos el sistema, puede pasar que alguna actualización, actualice los paquetes y la configuración del grub, normalmente cuando una actualización del sistema va a realizar cambios en algún fichero que previamente hemos modificado nosotros, el sistema nos avisa que existen cambios por defecto en la actualización de dicho fichero, entonces nos pregunta: ¿quieres conservar el archivo actual o quieres la configuración por defecto de dicho paquete?. Si respondemos erróneamente o nos equivocamos, pues nos tocará volver a modificar el archivo nuevamente, para dejarlo según nuestros gustos, necesidades o preferencias.

Para evitar que aparezca nuevamente el "problema" del grub, en lugar de modificar el archivo: /etc/default/grub, nos vamos a crear un nuevo archivo en:

/etc/defatult/grub.d y le llamamos: 20-osprober.cfg y dentro de dicho archivo le ponemos la siguiente linea:

GRUB_DISABLE_OS_PROBER=false

de este modo evitamos modificar el archivo principal y que una actualización sobreescriba accidentalmente el archivo modificado.

Para finalizar ejecutamos nuevamente el comando:

update-grub

 

 

 

 

 

 

 



grub - cambiar el sistema operativo por defecto

GRUB (GNU GRand Unified Bootloader) es un cargador de arranque múltiple, desarrollado por el proyecto GNU, que permite elegir el Sistema Operativo que vamos a arrancar de entre todos los sistemas operativos instalados en este pc. Aunque realmente lo que hacemos es seleccionar el kernel que queremos usar.

Kernel o núcleo es un programa fundamental del sistema operativo. Es el principal responsable de facilitar el acceso de los programas al hardware del pc. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá usar un dispositivo hardware y durante cuánto tiempo. (algunos ejemplos de hardware: impresora, escaner, tarjeta sonido, tarjeta de red, puertos usb, etc...)

Conforme añadimos nuevos kernel al sistema operativo, GRUB añade sus respectivas entradas (la entrada por defecto llamada: Debian GNU/Linux y la entrada de recuperación por defecto del sistema operativo: recovery mode) en el menú del GRUB. Con el tiempo, la pantalla principal del menú del GRUB crecía y podía contener muchas entradas de kernel que el usuario ya no seleccionaba regularmente, ya que en condiciones normales, el usuario selecciona el ultimo kernel que a instalado, y la visualización se volvía difícil de ver a simple vista.

Entonces los desarrolladores cambiaron la estructura, creando submenús, para que la visualización de la pantalla principal sea mas limpia, corta, rápida y fácil de usar.

En el submenú solo se añade, como primera opción el modo de recuperación del ultimo kernel instalado (llamada: recovery mode), mas los kernel mas antiguo que ya teníamos instalados junto a sus entradas de recuperación del sistema operativo (llamada: recovery mode). Y si tenemos mas de un sistema operativo GNU/Linux instalado, se crea un menú diferente por cada sistema operativo GNU/Linux instalado.

A partir de la versión 1.99 de GRUB, se añadió submenús. El nombre del submenú predeterminado es: Advanced options for Debian GNU/Linux y aparece como la segunda opción predeterminada del menú del gestor de arranque GRUB. Y si tenemos otros sistemas operativos GNU/Linux instalado, nos crea otro submenú aparte llamado: Advanced options for Debian GNU/Linux mas el numero de la versión, mas el nombre de la versión, mas la unidad en la que se encuentra instalada: (on /dev/sdXX)

================================================
NOTA MUY IMPORTANTE: para las entradas de los sistemas operativos Windows, NO se crea submenús.
================================================

Ejemplo de GRUB2 con dos submenús, y con una entrada de Windows



En la imagen de arriba se ven los dos submenús, llamados:

- Advanced options for Debian GNU/Linux
- Advanced options for Debian GNU/Linux 11 (bullseye) (on /dev/sda1)

y las entradas llamadas:

- Debian GNU/Linux
- Debian GNU/Linux 11 (bullseye) (on /dev/sda1)
- Windows 10 (on /dev/sdc1)



Seleccionar otro kernel

En algún momento, nos interesa arrancar con un kernel mas antiguo, (no importa el motivo), entonces tenemos que seleccionar en el grub el kernel que nos interesa. Para ello utilizamos las teclas de los cursores: Subir y Bajar, y pulsamos Intro para cargar dicho kernel


Submenú en GRUB

El menú de GRUB2 por defecto solo incorpora el kernel de instalación y el submenú del modo re recuperación (recovery mode) del kernel instalado, y no cambiará hasta que haya más de un kernel instalado, o mas sistemas operativos instalados para seleccionar.

El kernel más reciente se muestra en el menú principal. Y el modo recuperación del kernel actual, más los antiguos kernel se muestran en el submenú

- Para acceder a la opción de recuperación y a los kernel antiguos, usamos la teclas de los cursores (subir y bajar) y una vez seleccionado pulsamos la tecla ENTER.

- Una vez que se selecciona el submenú, nos aparece los kernel antiguos en dicho submenú.








Proceso de instalación de un nuevo kernel

Cuando se instala un nuevo kernel, el proceso que realiza automáticamente es el siguiente:

- El grub actualiza automáticamente, las entradas y los submenús
- El kernel por defecto, esta siempre seleccionado,
- El nuevo kernel se añade en el menú principal de grub.
- El modo recuperación del sistema (recovery mode) se añade en el submenú: Advanced options for Debian GNU/Linux
- el submenú: Advanced options for Debian GNU/Linux, es creado automaticamente por el grub
- Los kernel mas antiguos del submenú se colocan los ultimos en la lista del submenú, apareciendo los mas recientes arriba de la lista.





Cambiar kernel por defecto

Para configurar manualmente un kernel específico para que arranque, el administrador tiene que editar el archivo /etc/default/grub 

# nano /etc/default/grub

Buscamos la línea:

GRUB_DEFAULT = "0"


Grub enumera las entradas del menú y del submenú, empezando de arriba hacía abajo, comenzando por el numero 0 (Aunque la numeración no se muestra en el menú del grub. En este manual aparece los números para una mejor comprensión. los números de color verde indican que son submenús, y los números azules indican que son las entradas del submenú)

El grub por defecto, muestra el menú principal, y la línea seleccionada por defecto es: 0 La entrada seleccionada por defecto en el menú del grub, es aquella que aparece precedida con el símbolo: *

OBSERVACION: Solo puede haber una línea por defecto, o bien en el menú o en el submenú. En las imágenes de abajo se ven dos lineas por defecto una en el menú principal o otra en el submenú, pero solo es para que se vea y comprenda que se puede indicar en ambos sitios





El grub por defecto, muestra el menú principal, y la línea seleccionada por defecto es: 0 

GRUB_DEFAULT = "0"

Las entradas que se muestran en el menú principal se pueden designar por números (0,1,2,3,4....) o título (Debian GNU/Linux).

La primera entrada en el menú principal es 0, la segunda entrada es 1, y asín sucesivamente.

La entrada por defecto debe estar encerrada por un solo conjunto de comillas dobles " ".

GRUB_DEFAULT = "3"

GRUB_DEFAULT = "Debian GNU/Linux"

El submenú también se cuenta como una entrada.

Por último actualizamos el grub usando el siguiente comando:

# update-grub



Podemos seleccionar por defecto, una entrada de un submenú

1- Para seleccionar por defecto una entrada del submenú el proceso es el mismo que hemos realizado hasta ahora. Indicando el numero o el nombre de línea.

2- Ahora le añadimos el símbolo: > (después del numero o el nombre de la línea)

3- Añadimos el segundo número o nombre de la línea del submenú
La entrada por defecto debe estar encerrada por un solo conjunto de comillas dobles " ".

Ejemplos de como se puede configurar:

GRUB_DEFAULT = "1>0"

GRUB_DEFAULT = "Advanced options for Debian GNU/Linux>0"

GRUB_DEFAULT = "Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 5.17.0-1-amd64"

GRUB_DEFAULT = "1>Debian GNU/Linux, with Linux 5.17.0-1-amd64"



Por último actualizamos el grub usando el siguiente comando:

# update-grub




Arranque del kernel a por un error en la configuración

Si GRUB no puede encontrar el kernel para arrancar debido a una configuración incorrecta o erronea de GRUB_DEFAULT = " " en /etc/default/grub, GRUB intentará arrancar la primera entrada del menú principal, es decir el ultimo kernel instalado, que es la que corresponde con la configuración oficial de grub.


Actualización automatiza

La configuración GRUB_DEFAULT en el archivo /etc/default/grub solo cambia automáticamente, cuando el sistema actualiza o instala un nuevo kernel. Y hace que el sistema inicie la entrada del menú por defecto 0, que puede ser la no esperada por el usuario.











GRUB (GRand Unified Bootloader)

GRUB (GRand Unified Bootloader) en español (Gran Cargador de Arranque Unificado) es un cargador de arranque múltiple, desarrollado por el proyecto GNU que nos permite elegir qué Sistema Operativo arrancar de entre todos los que tengas instalados.




Características

GRUB es un cargador de arranque que cumple la Especificación Multiboot. De esta forma puede arrancar de forma uniforme los kernels que cumplen la Especificación Multiboot.​

Está diseñado para cumplir los siguientes objetivos, listados por orden de importancia:

- Funciones básicas tienen que ser sencillas para los usuarios finales.
- Amplia funcionalidad para apoyar a los expertos y diseñadores del kernel.
- Compatibilidad con versiones anteriores para arrancar FreeBSD, NetBSD, OpenBSD y Linux. Los núcleos compatibles como DOS, Windows NT y OS/2, son arrancables mediante una función de carga en cadena.

Características adicionales que soporta:​

- Reconoce múltiples formatos ejecutables.
- Soporta kernels que no cumplen especificación multiboot.
- Admite comandos de configuración y puede cargar una configuración preestablecida.
- Provee interfaz de menú.
- Tiene una interfaz de línea de comandos flexible.
- Admite muchos sistemas de ficheros (BtrFS, ext2/ext3/ext4, FAT12/FAT16/FAT32, exFAT, HFS, HFS+” ISO9660, nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS, ...).
- Descompresión automática.
- Acceso a datos ubicados en cualquier dispositivo instalado.
- Independiente de la geometría de la unidad.
- Detecta toda la RAM instalada.
- Admite direccionamiento de bloque lógico (LBA).
- Arranque de red.
- Terminales remotos para permitir el control desde una estación remota.

Proceso de inicio de GRUB Legacy

1- El BIOS busca un dispositivo de inicio (como el disco duro) y de ahí pasa el control al primer sector físico del dispositivo conocido como master boot record, son los primeros 512 bytes (primer sector) del disco duro y que forman la fase 1 de GRUB.
2- La fase 1 de GRUB carga la siguiente fase de GRUB, ubicada físicamente en cualquier parte del disco duro. La fase 1 puede cargar ya sea la fase 1.5 o, directamente, la 2.
3- La fase 1.5 de GRUB, ubicada en los siguientes 30 kilobytes del disco duro, carga la fase 2. En GRUB 2, esta fase ha dejado de existir.5​
4- La fase 2 de GRUB (cargada por las fases 1 o 1.5) recibe el control, y presenta al usuario el menú de inicio.
5- GRUB carga el kernel seleccionado por el usuario, en la memoria y le pasa el control.

En el caso de computadoras con sistema de arranque EFI, el firmware carga el ejecutable de GRUB directamente (fase 2), siempre y cuando esté correctamente instalado en la partición EFI y configurado en la NVRAM.


GRUB2

GRUB 2 es una reescritura de GRUB que comparte muchas características con su versión anterior, ahora conocida como GRUB Legacy. Las más importantes diferencias entre GRUB 2 y GRUB Legacy son:

- El fichero de configuración de GRUB 2 es ‘grub.cfg’ en lugar del ‘grub.conf’ o ‘menu.lst’. Se añade nueva sintaxis y muchos nuevos comandos. El fichero ‘grub.cfg’ es típicamente automáticamente generado por ‘grub2-mkconfig’ lo que facilita mucho el uso.
- Los números de partición en los nombres de los dispositivos GRUB ahora empiezan en 1, en lugar de en 0.
- Una pequeña cantidad de almacenamiento persistente está disponible entre reinicios, usando los comandos ‘save_env’ y ‘load_env’ y la utilidad ‘grub2-editenv’. Esto no está disponible en todas las configuraciones.
- GRUB 2 tiene formas más confiables de encontrar sus propios ficheros y los de los kernels de destino en sistemas de varios discos, y tiene comandos para buscar dispositivos usando etiquetas del sistema de archivos o identificadores únicos universales (UUID).
- GRUB 2 soporta muchos más sistemas de ficheros, incluyendo pero no limitado a Ext4, HFS+, y NTFS.
- GRUB 2 puede leer ficheros directamente de dispositivos LVM y RAID.
- GRUB 2 tiene disponible un terminal gráfico y un sistema de menú gráfico
- Los archivos de imagen que componen GRUB se han reorganizado; La etapa 1, la etapa 1.5 y la etapa 2 ya no existen. En su lugar GRUB 2 dispone de una variedad de imágenes de arranque (boot.img, diskboot.img, cdboot.img, pxeboot.img, lnxboot.img, kernel.img) para iniciar GRUB de varias formas, una imagen del núcleo (core.img) y un conjunto de módulos que se combinan con la imagen del núcleo (*.mod).6​
- GRUB 2 introduce muchas instalaciones en módulos cargados dinámicamente, lo que permite que la imagen del núcleo sea más pequeña y que se construya de formas más flexibles


====================================




 Instalación del paquete GRUB en Debian 

Hasta Debian 5.0 (Lenny)

GRUB v1 para Debian (paquete grub) se puede instalar con:

apt-get install grub

Para instalar GRUB v2, debe instalar la variante apropiada de grub v2, según el firmware de su sistema (generalmente grub-pc , consulte las variantes de grub2).



Debian 6.0 (Squeeze) y posterior

GRUB v2 para Debian (paquete grub) se puede instalar con:

apt-get install grub

Es lo normal en PC (es decir, si su sistema tiene EFI u OpenFirmware en lugar de un BIOS), es posible que deba instalar otra versión de GRUB (consulte las variantes de GRUB 2).



Configuración de GRUB

Configuración de GRUB v1

El archivo de configuración es: /boot/grub/menu.lst

En Debian, el archivo de configuración de GRUB se actualiza automáticamente cuando instalas un nuevo kernel. Esto se hace automáticamente mediante el comando: update-grub

Puede editar la configuración en /boot/grub/menu.lst. Asegúrese de leer los comentarios, /usr/share/doc/grub/README.Debian.gz para obtener más información y la página de manual update-grub de su distribución.

 Configuración de GRUB v2 

El archivo de configuración es /boot/grub/grub.cfg, pero no debe editarlo directamente. Este archivo es generado por update-grub, basado en:

Los fragmentos de script en /etc/grub.d/

El archivo de configuración /etc/default/grub

Para configurar grub v2, debe editar /etc/default/grub y luego ejecutar update-grub. La configuración avanzada se logra modificando los fragmentos en /etc/grub.d/

Consulte también la GRUB2 para obtener instrucciones, ideas y sugerencias de configuración más detalladas.



Actualización de v1 a v2

Para actualizar a GRUB v2, debe:

Instale GRUB v2 (pero no elimine el grub 1 todavía).

Siga las instrucciones que se muestran en la instalación del paquete (es decir, GRUB v1 ahora tiene una entrada para conectarse en cascada a GRUB v2, así que reinicie y pruébelo , luego puede habilitar el cargador de arranque grub2 ejecutando upgrade-from-grub-legacy ).

Transición de v1 a v2

transición de GRUB .


Instalando GRUB en disco

Si está de acuerdo con su configuración de GRUB, puede instalar GRUB en el MBR de su disco usando el comando:

# grub-install


 

Preguntas más frecuentes

Cuando actualicé de GRUB a GRUB2, perdí una entrada a XP/WP7, ¿cómo puedo recuperar la entrada del menú para iniciar allí?

Debe instalar os-prober, asegurarse de que esté habilitado en la configuración de GRUB2 y sincronizar GRUB2.

apt install os-prober

Luego edite /etc/default/grub y asegúrese de tener una línea como esta:

GRUB_DISABLE_OS_PROBER=false

Finalmente ejecuta:

update-grub



Debian 11 (Bullseye) no me reconoce otros sistemas operativos

Hasta Debian 10 (Buster), el instalador de Debian te reconocía todos los sistemas operativos instalados en el pc.

A partir Debian 11 (Bullseye) hay un cambio en grub2, ahora por defecto no detecta y añade otros sistemas operativos al menú de arranque, como puede ser windows.

Si alguien está usando esta versión y tiene otro sistema operativo instalado, debe instalar os-prober, asegurarse de que esté habilitado en la configuración de GRUB2 y sincronizar GRUB2.

Para habilitarlo, se deberá añadir en el arhivo: /etc/default/grub la siguiente línea:

GRUB_DISABLE_OS_PROBER=false


y luego ejecutar el siguiente comando para que reconozca todos los sistemas operativos instalados:

# update-grub


 


==========================================================

Información copiada de los siguientes enlaces:
https://es.wikipedia.org/wiki/GNU_GRUB
https://wiki.debian.org/Grub