Arrancada UEFI

Objectiu

  • Entendre com funciona la UEFI i la partició ESP.
  • Configurar una màquina virtual amb dual boot.
  • Practicar la gestió de l’ordre d’arrencada i la creació d’entrades UEFI.

Al final, hauries de poder seleccionar entre AlmaLinux i Debian a l’inici de la màquina virtual.

Preparació de les Màquines Virtuals

En primer lloc, heu de crear dues màquines virtuals amb UEFI com a firmware.

Nom OS Disc Firmware
VM1-AlmaLinux AlmaLinux 9 20 GB UEFI
VM2-Debian Debian 12 20 GB UEFI
NotaNota

Assegureu-vos que ambdues màquines virtuals tinguin UEFI com a firmware. En el moment de fer les particions, heu de veure que es crea una partició ESP (EFI System Partition) automàticament. Si no és així, pot ser que la màquina virtual no estigui configurada correctament per utilitzar UEFI. No continuïs fins que no tinguis aquesta partició.

AlertaAdvertència

Si VMWare no us deixa seleccionar UEFI com a firmware, un cop creada la màquina virtual amb BIOS, heu de modificar el fitxer .vmx de la màquina virtual i afegir al final les línies següents:

firmware = "efi"
efi.secureBoot.enabled = "FALSE"

Guarda els canvis i inicia la màquina virtual de nou, i instal·la el sistema operatiu.

Migrar el disc de Debian a la màquina virtual d’AlmaLinux

  1. Apaga la màquina virtual de Debian si està en funcionament.
  2. Localitza el fitxer de disc virtual de la màquina virtual de Debian. Aquest fitxer al programa VMware sol tenir l’extensió .vmdk.
  3. A la configuració de la màquina virtual d’AlmaLinux, aneu a l’opció de disc dur i afegiu un disc dur existent, seleccionant el disc dur de la màquina virtual de Debian que heu localitzat en el pas anterior.
  4. Confirmar els parametres i aplica els canvis.

Test

Assegureu-vos que la màquina virtual ara té dos discs durs: un amb AlmaLinux i un altre amb Debian utilitzant la comanda lsblk, hauria de mostrar-vos alguna cosa com això:

[root@localhost ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0                 11:0    1  1.7G  0 rom
nvme0n1            259:0    0   20G  0 disk
├─nvme0n1p1        259:1    0  600M  0 part /boot/efi
├─nvme0n1p2        259:2    0    1G  0 part /boot
└─nvme0n1p3        259:3    0 18.4G  0 part
├─almalinux-root 253:0    0 16.4G  0 lvm  /
└─almalinux-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2            259:4    0   20G  0 disk
├─nvme0n2p1        259:5    0  512M  0 part
├─nvme0n2p2        259:6    0 18.5G  0 part
└─nvme0n2p3        259:7    0  976M  0 part

On nvme0n1 és el disc d’AlmaLinux i nvme0n2 és el disc de Debian. Es posible que el nom del disc no sigui nvme, pot ser sda, vda, etc. Depèn del tipus de disc que tinguis.

Tasca

Reinicia la màquina virtual d’AlmaLinux i entra a la UEFI (normalment prement F2 o Esc durant l’arrencada). La teva tasca es configurar la UEFI per afegir una entrada d’arrencada per a Debian. Has de poder arrancar tant AlmaLinux com Debian des del menú d’arrencada de la UEFI.

  1. El primer pas és identificar com podem arrancar Debian.
  2. Analitzeu la comanda bcfg amb help bcfg per veure com funciona.
ImportantNota

La comanda bcfg es troba disponible a partir de la versió 2.3 de UEFI Shell. Si la vostra màquina virtual utilitza una versió anterior, és possible que no tingueu aquesta comanda disponible. En aquest cas, haureu d’actualitzar el firmware UEFI de la vostra màquina virtual o utilitzar una altra eina per gestionar les entrades d’arrencada com efibootmgr des de Linux.

En cas de no poder accedir a la shell o no tenir disponible la comanda bcfg encara que es compleixi el requisit de la versió de UEFI Shell >= 2.3, cal arrencar des d’un fitxer EFI Shell V2 més complet. Podeu descarregar-lo aquí.

Per poder arrencar aquest fitxer des de VMware, l’hem d’escriure amb el format correcte a una imatge vmdk:

  1. El primer pas és crear una imatge de disc buida on després escriurem l’arbre de directoris adequat per EFI així com el fitxer descarregat a arrencar.

    dd if=/dev/zero of=Shell.img bs=1M count=64
  2. Ara utilitzem parted per crear una taula de particions GPT i una partició FAT32 marcada com a bootable.

    parted Shell.img --script mklabel gpt
    parted Shell.img --script mkpart ESP fat32 1MiB 100%
    parted Shell.img --script set 1 boot on
  3. Per poder treballar amb les particions dins del fitxer de disc, l’associem a un dispositiu loop.

    sudo losetup -Pf Shell.img
  4. Formatem la partició EFI amb FAT32, obligatori per a UEFI:

    sudo mkfs.vfat -F32 /dev/loop0p1
  5. Muntem la partició, creem l’arbre de directoris correcte i copiem el fitxer .efi amb el nom BOOTX64.EFI. Finalment, desmuntem la partició i desassociem el dispositiu loop.

    sudo mount /dev/loop0p1 /mnt
    sudo mkdir -p /mnt/EFI/BOOT
    sudo cp Shellx64.efi /mnt/EFI/BOOT/BOOTX64.EFI
    sudo umount /mnt
    sudo losetup -d /dev/loop0
  6. Finalment convertim la imatge RAW a VMDK perquè pugui ser utilitzada a VMware:

    qemu-img convert -f raw -O vmdk Shell.img Shell.vmdk

Per usar aquest fitxer generat, afegiu un disc dur (Hard Disk) a la vostra màquina i obriu-lo.

ImportantNota

En cas de tenir un altre disc dur bootejable a la màquina virtual, per defecte no arrencarà des del de UEFI Shell. Per poder executar-ho, heu d’entrar a la UEFI (normalment prement F2 o Esc durant l’arrencada) i seleccionar el disc dur corresponent a la UEFI Shell.

Si per alguna raó no podeu executar les comandes per crear un disc dur amb l’imatge de UEFI Shell, el podeu descarregar des d’aquí.

A partir d’aquesta shell ja teniu disponible la comanda bcfg

Entrega

Has de presentar un document amb els següents punts:

  • Els passos que has seguit per configurar la UEFI i afegir l’entrada d’arrencada per a Debian.
  • Fes una captura de pantalla del menú d’arrencada de la UEFI mostrant les dues entrades (AlmaLinux i Debian) i puja-la a l’aula virtual juntament amb una breu descripció dels passos que has seguit per aconseguir-ho.