IES Miguel Romero Esteo - Departamento de Informática - Linux/Unix

Gestores de arranque / Práctica 04

Comandos:

Aplicaciones:

Enunciado:


**** Sólo se puede hacer con systemrescuecd v 5.x ***

    La tecnología de almacenamiento en soporte magnético (discos duros) avanza a pasos agigantados y a la sazón la tecnología SSD y SSD M.2 no anda rezagada, así que muy pronto los DISCOS se medirán sólo en Terabytes y el Gigabyte pasará al puesto que le corresponde entre sus hermanos pequeños: Megabytes, Kilobytes, etc... Con este panorama, el particionado de discos bajo el esquema MBR (Master Boot Record) está destinado a desaparecer ya que el límite de direccionamiento de este esquema es de 2 Tb.


    Para sustituir a MBR se creó hace algunos años el esquema de particionado GPT, el cual, fue descrito como parte del proyecto UEFI, que como el alumno sabe, sustituye al firmware embutido en las placas madre de arquitectura x86 y x86_64 conocido como BIOS. Sin duda, en el futuro sólo se hablará de UEFI y GPT pero durante el tiempo de tránsito, el cual se prevee largo, los sysadmin,s tienen que trabajar con ambas cosas mezclando en las recetas de particionado de discos, instalación de sistemas e instalación de cargadores de arranque todos o parte de estos ingredientes.

    Esta práctica va a permitir al alumno adquirir conocimiento y habilidades en el particionado de un disco bajo el esquema GPT y hacer que desde él, GRUB, pueda iniciar un sistema GNU/Linux en una máquina con BIOS o UEFI indistintamente.

Procedimieto

    En el USB-HDD del alumno crear y conectar a la VM deb- un nuevo disco duro SATA con una capacidad de 1Gb de tamaño fijo y de nombre gpt-disk.vdi.

    Iniciar la vm deb-, conectarse como root de forma remota (no usar la consola) y particionar
gpt-disk.vdi como GPT con el esquema de particiones indicado abajo, todo ello con el comando gdisk (instalarlo si no está disponible). Antes de proceder, es muy conveniente que se ojeé con interés y atención la página de manual de este comando.





    Formatear las particiones 2 y 3 con el sistema de fichero adecuado al tipo de partición y por consiguiente a su futuro contenido:

    Llevar a la partición 3 el contenido mínimo necesario para que arranque GNU/linux, el alumno debe tener en cuenta que no se pretende llegar a tener un entorno completamente
operativo, sólo deseamos que se inicie el kernel y el ramdisk sabiendo que cuando acaben su tarea se entrará en un estado de inconsistencia por inexistencia del resto del sistema
, se vuelve a repetir que el objetivo de esta práctica es verificar el funcionamiento de las secuencias BIOS-->GRUB-->Kernel-linux y UEFI-->GRUB-->Kernel-linux después de particionar un HD como se ha hecho más arriba.
    El alumno pondrá a prueba sus conocimientos para poblar la partición 3 haciendo uso de estas indicación: En la partición 3 sólo necesitamos el material de arranque propio de un sistema GNU/Linux bajo la estructura de directorios habitual.

    Instalar GRUB en el disco
gpt-disk. Para ello se ejecutará el comando grub-install convenientemente argumentado. Como orientación,  se informa al alumno que debe utilizar los modificadores --boot-directory y --modules. El valor del primero debe averiguarlo el alumno, el segundo queda asi --modules="ext2 part_gpt".

    Modificar manualmente el archivo de configuración de GRUB (grub.cfg; OJO! el de la particion 3 de esta práctica, no el del sistema deb- del alumno) para que GRUB tire del kernel y el ramdisk de la partición 3. La modificación de este archivo supone eliminar las líneas innecesarias o que puedan provocar colapso en el arranque, de hecho, en el interior del archivo grub.cfg debería quedar un pequeño conjunto de instrucciones
    Seguramente el alumno acabará sabiendo qué tiene que tocar en
grub.cfg iniciando la máquina desde el disco gpt-disk (como se indica en el siguiente paso) varias veces y experimentando errores.

    Prueba de arranque BIOS-->GRUB-->Kernel-Linux: Parar la máquina deb-, eliminar la conexión del disco deb- para dejar sólo el disco gpt-disk e iniciar la máquina. Si todo va bien, el arranque e inicio del kernel y el ramdisk funcionará hasta que aparezca el prompt de BusyBox, lo cual significa que no hay arbol de directorio de un sistema GNU/Linux y que la cosa se queda en una shell auxiliar muy limitada. El prompt tiene este aspecto: (initramfs)

    Terminado con éxito lo anterior, se da por finalizada la primera parte de la práctica, a saber, arrancar un sistema GNU/Linux (limitado a kernel+ramdisk) en una máquina con BIOS desde un disco GPT estableciendo como cargador de arranque GRUB.
Queda hacer lo mismo cambiando BIOS por UEFI, algo que haremos a partir de este punto:

    Lo primero que el alumno hará es modificar la máquina virtual para configurarla con firmware de inicio UEFI, algo que se hace
con el comando VboxManage modifyvm o desde el panel gráfico de VirtualBox activando la opción Habilitar EFI (sólo SO especiales) a la que se llega siguiendo este camino: Máquina->Configuración-> Sistema-> Pestaña Placa base.
   
    Arrancar la máquina deb- y observar el inicio "defectuoso" que se produce. Esto es a consecuencia de que el disco GPT gpt-disk no está preparado para recibir el relevo de la UEFI en el inicio de un sistema operativo.

    Modificar de nuevo el firmware de la máquina a BIOS
,conectar el disco deb- a la máquina deb-, arrancar el sistema y hacer login como root.

    Como ya se ha dicho, la partición 2 debe alojar la parte de GRUB que será invocada por el UEFI, así que lo primero que hay que hacer es montarla para operar sobre ella. No perder de vista que el caracter especial de esta partición viene dado por su identificador EF00 (Partición de tipo EFI system).

    El comando grub-mkimage genera una imagen bootable de GRUB, es decir, la pieza que sustituye a core.img cuyo nombre es
grubx64.efi. La virtud de este comando es que la construye a medida de las necesidades, pudiendose elegir la arquitectura y el procesador (i386, x86_64, powerpc, amr, sparc, ia64, etc..) así como los módulos funcionales que introducimos en su interior, evitando así la carga en tiempo de ejecución como ocurre inevitablemente con el esquema MBR. Dicho esto, el alumno tendrá que hacer dos cosas:
1) Instalar el paquete que proporciona el stage3 de GRUB para plataformas hardware X86_64 dotatas de UEFI. Este paquete en los repositorios Debian se denomina grub-efi-amd64-bin
2) Crear los directorios /EFI/BOOT en la partición 2 y en su interior guardar el resultado de ejecutar grub-mkimage de la siguiente manera:

${MOUNTDIR}="direccionamiento absoluto del directorio donde el alumno ha montado la partición 2"

grub-mkimage \
-o ${MOUNTDIR}/EFI/BOOT/bootx64.efi \
-d /usr/lib/grub/x86_64-efi \
-p /efi/boot \
-O  x86_64-efi \
fat \
iso9660 \

part_gpt \
part_msdos \
normal \
boot \
linux \
configfile \
loopback \
chain \
efifwsetup \
efi_gop \

efi_uga \
ls\
search \
search_label \
search_fs_uuid \
search_fs_file \
gfxterm \
gfxterm_background \
gfxterm_menu \
test \
all_video \
loadenv \
exfat \
ext2 \
ntfs \
btrfs \
hfsplus \
udf

    Ahora toca crear el fichero grub.cfg que instruya a bootx64.efi, algo que el alumno hará de la misma forma que lo hizo para el arranque desde BIOS, de hecho puede utilizar aquel fichero pero cambiando la referencia al disco duro ya que en el caso de de la pieza bootx64.efi que se ha creado en el paso anterior los HD,s empiezan a numerarse por 1, no por 0.

    Verificar que en
${MOUNTDIR}/EFI/BOOT existen los archivos bootx64.efi y grub.cfg. ${MOUNTDIR}="direccionamiento absoluto del directorio donde el alumno ha montado la partición 2"

    Apagar la máquina deb-, desconectar el disco deb-, modificar el firmware de la placa base a EFI
, arrancar la máquina y rezar para que funcione ;-)