Tabla de contenido
¡Hola! Hoy exponemos 4 cosas que no sabías sobre GRUB útiles que no sabías. Con estos cuatro puntos podrás solucionar algunos de problemas más comunes. Empecemos:
1. Se pueden añadir nuevas entradas de otros sistemas de tu disco duro
Cuando instalas Linux en una maquina con varios sistemas operativos, en ocasiones, estos otros sistemas no son detectados. Esto puede solucionarse añadiendo la entrada al menú de GRUB del sistema operativo que no aparece en el listado.
En este caso hay una entrada para el sistema Windows debajo de las entradas de Linux. Si queremos hacer esto solo tenemos que hacer una cosa, insertar lo siguiente en el fichero «/boot/grub/grub.cfg»:
### BEGIN /etc/grub.d/30_os-prober ### menuentry 'Windows 10 (en /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-chain-7EA0E3B659836131' { insmod part_msdos insmod ntfs set root='hd1,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 7EA0E3B659836131 else search --no-floppy --fs-uuid --set=root 7EA0E3B659836131 fi parttool ${root} hidden- drivemap -s (hd0) ${root} chainloader +1 }
Donde se tiene que definir el disco (en este caso era /dev/sdb1) y se debe definir el UUID del disco ( sdb1 en este caso tiene 7EA0E3B659836131), tambien hay que definir el numero del disco y partición, por ejemplo «hd1,msdos1», donde hd1 es el disco 2 (empieza desde hd0), y msdos1 es la partición 1 del disco.
Se puede navegar e interactuar con los ficheros del sistema desde grub, para ello hay que pulsar la tecla «e» en el menú de GRUB antes de que cargue el sistema en cuestión.
Una vez pulsada la tecla «e» se pueden ver las entradas del menú de GRUB:
Después pulsaremos «F2»:
Se puede navegar por los ficheros del sistema (en este caso es LVM y por esos solo se ve /boot al hacer ls). Los comandos que nos permiten movernos por el sistema de ficheros desde el la consola de GRUB son:
- ls: Nos permite listar el contenido de la misma forma que en un sistema unix/linux. También se puede utilizar «ls -al» o «ls -l», si se utiliza sin indicar el directorio nos listará los discos disponibles y sus particiones por ejemplo: (hd0) (hd0,1) (hd0,2). Si se indica el disco o una partición seguido de «/», por ejemplo «ls -l (hd0,1)/» nos listará el contenido como se puede ver en la imagen anterior.
- cat fichero: Nos permite leer un fichero igual que se haría en un sistema unix/linux
Por desgracia no se puede editar ficheros desde esta consola, pero si se puede arrancar el sistema eligiendo partición, kernel etc (aunque no esté en el menú) y editarlo una vez arrancado el sistema.
3. Se puede poner contraseña a GRUB
Para securizar el menú GRUB en RHEL/Centos 7 & 7.1 lo primero es generar el password cifrado con el comando «grub2-mkpasswd-pbkdf2» como se puede ver en:
Para securizar el arranque debes introducir lo siguiente en el fichero: «/etc/grub2/01_users»
set superusers=”usuario”
password_pbkdf2 john grub.pbkdf2.sha512.EL-HASH-DEL-RESULTADO-ANTERIOR
Esta vez configuraremos el usuario root con el hash anterior:
Tras hacer esto, ejecutamos «grub2-mkconfig –o /boot/grub2/grub.cfg»
Ahora reiniciamos y pulsamos la tecla «e» para entrar en la linea de comandos de GRUB, veremos que nos pide password:
En caso de que el sistema sea RHEL/Centos 7.2 el proceso cambia un poco, primero, corre los siguientes comandos como “root”:
- «grub2-setpassword»: Introduce la password y copia el hash resultante
- El Hash para la password creado se tiene que introducir en /boot/grub/user.cfg y el usuario ”root” está definido en /boot/grub2/grub.cfg.
- Ejecuta grub2-mkconfig –o /boot/grub2/grub.cfg
- Reinicia y comprueba que pide password
En caso de que el sistema sea RHEL/Centos 5 o 6 el proceso también cambia:
- «grub-md5-crypt»: Introduce la password y copia el hash resultante
- Abre «/boot/grub/grub.con» e introduce en la linea de arranque: password –md5 “HASH CREADO”
- Reinicia y comprueba que pide password
4. Muchos de los problemas de arranque se pueden solucionar desde GRUB
Algunas veces al hacer alguna actualización de sistema, instalación de software o algún cambio especifico, se puede «romper» el arranque de GRUB. Esto normalmente se puede solicionar haciendo pruebas de arranque desde el CLI de grub, antes de conseguir arrancar y modificar el menú desdeel sistema.
Como hemos dicho antes, desde el CLI de GRUB se pueden listar los discos y las particiones con el comando «ls «:
grub> ls (hd0) (hd0,msdos2) (hd0,msdos1)
Y pasando el disco y partición seguidos de «/» como parametro al comando ls, se pueden listar los ficheros de la partición
grub> ls (hd0,1)/ lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/ lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old
Podemos ver el fichero que nos indica el sistema operativo en un linux, esto nos sirve si tenemos varios sistemas linux al arranque, para identificar el sistema:
grub> cat (hd0,1)/etc/issue Ubuntu 18.04 LTS \n \l
Arrancando desde GRUB CLI:
Lo primero es verificar que versiones kernel, vmlinux y initrd.img, para arrancar correctamente estos tres ficheros tienen que ser de la misma versión. Una vez elegida la versión, establecemos el root en el disco y partición correspondiente (set root=xxx). Después establecemos el kernel linux con «linux /boot/vmlinuzXXX root=/dev/YYY» donde XXX es la versión e YYY es el disco y partición que tendrá la raíz del sistema. También establecemos el initrd.img con «initrd /boot/initrd.imgXXX». Ya solo nos queda arrancar con estos parametros utilizando el comando «boot»:
grub> set root=(hd0,1) grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub> initrd /boot/initrd.img-3.13.0-29-generic grub> boot
Para ver las versiones disponibles de los ficheros de kernel y initrd solo debemos ejecutar ls -l en la raíz del sistema y en /boot:
$ ls -l (hd0,1)/ vmlinuz -> boot/vmlinuz-3.13.0-29-generic initrd.img -> boot/initrd.img-3.13.0-29-generic
Para arrancar en modo rescate:
grub> set root=(hd0,1) grub> linux /vmlinuz root=/dev/sda1 grub> initrd /initrd.img grub> boot Booting From grub-rescue>
Si estás en el GRUB de rescate los comandos son distintos, y tienes qe cargar los modulos normal.mod y linux.mod:
grub rescue> set prefix=(hd0,1)/boot/grub grub rescue> set root=(hd0,1) grub rescue> insmod normal grub rescue> normal grub rescue> insmod linux grub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub rescue> initrd /boot/initrd.img-3.13.0-29-generic grub rescue> boot
Y con esto ya podríamos acceder al sistema para corregir el arranque del GRUB y hacer que cargue las versiones adecuadas.
Esto ha sido todo por hoy.
Si te ha gustado comparte en tus redes sociales y/o deja un comentario.
¡Nos vemos pronto!