Kontext

Kontext

Kontext

  • Windows 10 Home 21H1
  • Virtualbox 6.1
  • CentOS 8 VM
  • BIOS-Modus:

VirtualBox BIOS-Einstellung

Frage

Welche Boot-Technologie wird auf dieser VM verwendet?

Ich vermute, dass das BIOS einen MBR-Bootloader der Stufe 1 lädt, der GRUB2 lädt. Verwirrend ist das weitaus modernere Layout der /bootPartition.

Es fühlt sich wie ein Hybrid aus einem vorbereiteten Systemd-Boot an /boot, mit einer Konfiguration im Systemd-Boot-Stil, aber unter Kontrolle von BIOS, MBR und GRUB2.

Analyse

Ich glaube, dass systemd-boot nur auf UEFI-Systemen mit GPT-Festplatten verwendet werden kann, die ein FAT-basiertes Dateisystem für enthalten /boot.

Mein Installationsprogramm hat keine legitime erweiterte Bootloaderpartition (XBOOTLDR) für systemd-boot erstellt, da /dev/sda1XFS nicht FAT-basiert ist.

Da meine VM so eingestellt ist, dass sie EFI NICHT verwendet (und daher standardmäßig auf BIOS eingestellt ist), glaube ich, dass CentOS 8 dasrichtige Verzeichnisstrukturfür systemd-boot ( /boot/loader/entries/), aber auf einemfalscher Partitionstyp(XFS auf Nicht-ESP/XBOOTLDR). Das ist kein Problem, da ich BIOS verwende.

Soweit ich das beurteilen kann, wird GRUB2 vom MBR-Bootsektor geladen. GRUB2 holt dann die Bootmenüfragmente in /boot/loader/entries/? ab.

/boot/efi/*sind leere Verzeichnisse. Normalerweise sehe ich sie mit einer Grub-Konfigurationsdatei und EFI-Images gefüllt.

/boot/grub2/enthält grub.cfg, device.mapund i386-pc/*.mod– gute Anzeichen für eine fehlerfreie GRUB2-Installation.

Es gibt Einträge, die darauf hinweisen, dass das System eine Konfiguration im systemd-boot-Stil und nicht einfaches GRUB verwendet:

[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

Festplattenprüfung

MBR-Festplatten- und MSDOS-Partitionstabelle:

[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

Das von der Firmware geladene Image kann nicht überprüft werden. Dies ist ein weiteres Zeichen dafür, dass das BIOS die Kontrolle hat:

[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.

Antwort1

Ab Fedora 30enthält das GRUB2-Paket der Distribution eine neueModul „blscfg“das die Konfigurationsdateien der Bootloader-Spezifikation liest und GRUB-Menüelemente erstellt.


Im Allgemeinen kann die GRUB-Konfiguration aus vielen Quellen stammen. Die Standard-grub.cfg wird durch erweiterbare Skripte generiert, von denen einige durch separate Pakete (wie os-prober) installiert werden, und ist nicht darauf beschränkt, nur eine Liste von Kerneln aus /boot zu sammeln – es wäre nichts besonders Ungewöhnliches, wenn Ihre Distribution stattdessen grub-mkconfig hätte, das /boot/loader/entries in eine grub.cfg umwandelt.

verwandte Informationen