Contexto

Contexto

Contexto

  • Windows 10 Inicio 21H1
  • Caja virtual 6.1
  • Máquina virtual CentOS 8
  • Modo BIOS:

Configuración del BIOS de VirtualBox

Pregunta

¿Qué tecnología de arranque se utiliza en esta máquina virtual?

Sospecho que BIOS está cargando un cargador de arranque MBR de etapa 1, que carga GRUB2. Lo que resulta confuso es el diseño mucho más moderno de la /bootpartición.

Se siente como un híbrido de systemd-boot preparado /boot, con configuración de estilo systemd-boot, pero BIOS, MBR y GRUB2 en control.

Análisis

Creo que systemd-boot solo se puede usar en sistemas UEFI con discos GPT que contengan un sistema de archivos basado en FAT para /boot.

Mi instalador no ha creado una partición legítima del cargador de arranque extendido systemd-boot (XBOOTLDR), ya /dev/sda1que XFS no está basado en FAT.

Dado que mi máquina virtual está configurada para NO usar EFI (por lo que está predeterminada en BIOS), creo que CentOS 8 ha creado elestructura de directorio correctapara systemd-boot ( /boot/loader/entries/), pero en untipo de partición incorrecto(XFS en versiones que no sean ESP/XBOOTLDR). Esto no es un problema ya que estoy usando BIOS.

Por lo que puedo decir, GRUB2 está siendo cargado por el sector de arranque MBR. Entonces, GRUB2 recoge los fragmentos del menú de inicio en /boot/loader/entries/?

/boot/efi/*son directorios vacíos; normalmente los veo llenos de un archivo de configuración de grub e imágenes EFI.

/boot/grub2/contiene grub.cfgy device.map- i386-pc/*.modbuenas señales de una instalación de GRUB2 saludable.

Hay entradas que indican que el sistema está utilizando la configuración de estilo systemd-boot en lugar de GRUB simple:

[root@c8 ~]# cat /boot/loader/entries/7d05af5fc5db47fbb5e0c5c6d5bdece7-4.18.0-305.10.2.el8_4.x86_64.conf
title CentOS (4.18.0-305.10.2.el8_4.x86_64) 8
version 4.18.0-305.10.2.el8_4.x86_64
linux /vmlinuz-4.18.0-305.10.2.el8_4.x86_64
initrd /initramfs-4.18.0-305.10.2.el8_4.x86_64.img $tuned_initrd
options $kernelopts $tuned_params
id centos-20210720173403-4.18.0-305.10.2.el8_4.x86_64
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel

Inspección de disco

Disco MBR y tabla de particiones msdos:

[root@c8 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   80G  0 disk
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   79G  0 part
  ├─cl-root 253:0    0 49.8G  0 lvm  /
  ├─cl-swap 253:1    0    5G  0 lvm  [SWAP]
  └─cl-home 253:2    0 24.3G  0 lvm  /home
sr0          11:0    1 1024M  0 rom

[root@c8 ~]# parted -l /dev/sda
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  xfs          boot
 2      1075MB  85.9GB  84.8GB  primary               lvm


[root@c8 ~]# file -sL /dev/{sda,sda1}
/dev/sda:  DOS/MBR boot sector
/dev/sda1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)

[root@c8 ~]# df -hTP
Filesystem          Type      Size  Used Avail Use% Mounted on
/dev/mapper/cl-root xfs        50G  6.1G   44G  13% /
/dev/sda1           xfs      1014M  407M  608M  41% /boot

No se puede inspeccionar la imagen cargada por el firmware; otra señal de que el BIOS está a cargo:

[root@c8 ~]# bootctl status
Couldn't find EFI system partition. It is recommended to mount it to /boot or /efi.
Alternatively, use --path= to specify path to mount point.
System:
    Not booted with EFI

[root@c8 ~]# efibootmgr -v
EFI variables are not supported on this system.

Respuesta1

A partir de Fedora 30, el paquete GRUB2 de la distribución viene con un nuevomódulo "blscfg"que lee los archivos de configuración de la especificación del cargador de arranque y produce elementos del menú de GRUB.


En general, la configuración de GRUB puede provenir de muchas fuentes. El grub.cfg estándar se genera a través de scripts extensibles, algunos de los cuales se instalan mediante paquetes separados (como os-prober), y no se limita simplemente a recopilar una lista de kernels de /boot; no habría nada particularmente inusual si su En cambio, la distribución tenía grub-mkconfig que transformó /boot/loader/entries en un grub.cfg.

información relacionada