情境

情境

情境

  • Windows 10 家用版 21H1
  • 虛擬盒 6.1
  • CentOS 8 虛擬機
  • BIOS模式:

VirtualBox BIOS 設定

問題

此 VM 使用什麼啟動技術?

我懷疑 BIOS 正在加載第 1 階段 MBR 引導程序,該加載程序加載 GRUB2。令人困惑的是分區的現代佈局/boot

感覺就像是 systemd-boot prepped 的混合體/boot,具有 systemd-boot 風格的配置,但由 BIOS、MBR 和 GRUB2 控制。

分析

我相信 systemd-boot 只能在具有 GPT 磁碟的 UEFI 系統上使用,該磁碟包含基於 FAT 的檔案系統/boot

我的安裝程式尚未建立合法的 systemd-boot 擴充功能引導程式分區 (XBOOTLDR),因為/dev/sda1XFS 不是基於 FAT 的。

鑑於我的虛擬機器設定為不使用 EFI(因此預設為 BIOS),我相信 CentOS 8 已經創建了正確的目錄結構對於 systemd-boot ( /boot/loader/entries/),但在分區類型不正確(非 ESP/XBOOTLDR 上的 XFS)。這不是問題,因為我使用的是 BIOS。

據我所知,GRUB2 是由 MBR 引導磁區載入的。然後 GRUB2 將在/boot/loader/entries/?中拾取引導選單片段。

/boot/efi/*是空目錄 - 我通常會看到它們填充有 grub 設定檔和 EFI 映像。

/boot/grub2/包含grub.cfgdevice.mapi386-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。

相關內容