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 |
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ó.
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
- Apaga la màquina virtual de Debian si està en funcionament.
- Localitza el fitxer de disc virtual de la màquina virtual de Debian. Aquest fitxer al programa VMware sol tenir l’extensió
.vmdk
. - 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.
- 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.
- El primer pas és identificar com podem arrancar Debian.
- Analitzeu la comanda
bcfg
ambhelp bcfg
per veure com funciona.
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:
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
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
Per poder treballar amb les particions dins del fitxer de disc, l’associem a un dispositiu loop.
sudo losetup -Pf Shell.img
Formatem la partició EFI amb FAT32, obligatori per a UEFI:
sudo mkfs.vfat -F32 /dev/loop0p1
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
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.
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.