Контекст

Контекст

Контекст

  • Windows 10 Домашняя 21H1
  • Виртуалбокс 6.1
  • CentOS 8 ВМ
  • Режим BIOS:

Настройка BIOS VirtualBox

Вопрос

Какая технология загрузки используется на этой виртуальной машине?

Я подозреваю, что BIOS загружает загрузчик MBR первой стадии, который загружает GRUB2. Что сбивает с толку, так это гораздо более современная структура раздела /boot.

Похоже на гибрид подготовленного systemd-boot /bootс конфигурацией в стиле systemd-boot, но с управлением BIOS, MBR и GRUB2.

Анализ

Я считаю, что systemd-boot можно использовать только в системах UEFI с дисками GPT, содержащими файловую систему на основе FAT для /boot.

Мой установщик не создал законный раздел расширенного загрузчика systemd-boot (XBOOTLDR), поскольку /dev/sda1он основан на XFS, а не на FAT.

Учитывая, что моя виртуальная машина НЕ настроена на использование EFI (поэтому по умолчанию используется BIOS), я полагаю, что CentOS 8 создалправильная структура каталоговдля systemd-boot ( /boot/loader/entries/), но нанеправильный тип раздела(XFS на не-ESP/XBOOTLDR). Это не проблема, так как я использую BIOS.

Насколько я могу судить, GRUB2 загружается загрузочным сектором MBR. Затем GRUB2 подбирает фрагменты загрузочного меню в /boot/loader/entries/?

/boot/efi/*являются пустыми каталогами - обычно я вижу их заполненными файлом конфигурации grub и образами EFI.

/boot/grub2/содержит grub.cfg, device.mapи i386-pc/*.mod- хорошие признаки успешной установки GRUB2.

Имеются записи, указывающие на то, что система использует конфигурацию в стиле systemd-boot, а не простой GRUB:

[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

Проверка диска

Диск MBR и таблица разделов 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

Невозможно проверить образ, загруженный прошивкой — еще один признак того, что за все отвечает BIOS:

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

решение1

Начиная с Fedora 30, пакет GRUB2 дистрибутива поставляется с новыммодуль "blscfg"который считывает файлы конфигурации спецификации загрузчика и создает пункты меню GRUB.


В общем, конфигурация GRUB может поступать из многих источников. Стандартный grub.cfg генерируется посредством расширяемых скриптов, некоторые из которых устанавливаются отдельными пакетами (например, os-prober), и не ограничивается только сбором списка ядер из /boot – не было бы ничего особенно необычного, если бы вместо этого в вашем дистрибутиве был grub-mkconfig, который преобразовывал /boot/loader/entries в grub.cfg.

Связанный контент