我正在尝试使用Autoinstall安装 Ubuntu 22.04 。我生成的包含 userdata.yml(主自动安装文件)的 ISO 有storage
部分,应该支持EFI和Legacy 引导,但我找不到实现它的方法。
userdata.yml 中仅支持EFI 引导的存储部分:
storage:
config:
- ptable: gpt
path: /dev/sda
wipe: superblock-recursive
preserve: false
name: ''
grub_device: false
type: disk
id: disk-sda
- device: disk-sda
size: 1127219200
wipe: superblock
flag: boot
number: 1
preserve: false
grub_device: true
type: partition
id: partition-0
- fstype: fat32
volume: partition-0
preserve: false
type: format
id: format-0
- device: disk-sda
size: 1073741824
wipe: superblock
flag: ''
number: 2
preserve: false
grub_device: false
type: partition
id: partition-1
- fstype: ext4
volume: partition-1
preserve: false
type: format
id: format-1
- device: disk-sda
size: 54760833024
wipe: superblock
flag: ''
number: 3
preserve: false
grub_device: false
type: partition
id: partition-2
- name: myvg
devices:
- partition-2
preserve: false
type: lvm_volgroup
id: lvm_volgroup-0
- name: slashlv
volgroup: lvm_volgroup-0
size: 53687091200B
wipe: superblock
preserve: false
type: lvm_partition
id: lvm_partition-0
- fstype: ext4
volume: lvm_partition-0
preserve: false
type: format
id: format-2
- path: /
device: format-2
type: mount
id: mount-2
- path: /boot
device: format-1
type: mount
id: mount-1
- path: /boot/efi
device: format-0
type: mount
id: mount-0
userdata.yml 中仅支持Legacy 引导的存储部分:
storage:
config:
- ptable: gpt
path: /dev/sda
wipe: superblock-recursive
preserve: false
name: ''
grub_device: true
type: disk
id: disk-sda
- device: disk-sda
size: 1048576
flag: bios_grub
number: 1
preserve: false
grub_device: false
type: partition
id: partition-0
- device: disk-sda
size: 1073741824
wipe: superblock
flag: ''
number: 2
preserve: false
grub_device: false
type: partition
id: partition-1
- fstype: ext4
volume: partition-1
preserve: false
type: format
id: format-1
- device: disk-sda
size: 54760833024
wipe: superblock
flag: ''
number: 3
preserve: false
grub_device: false
type: partition
id: partition-2
- name: myvg
devices:
- partition-2
preserve: false
type: lvm_volgroup
id: lvm_volgroup-0
- name: slashlv
volgroup: lvm_volgroup-0
size: 53687091200B
wipe: superblock
preserve: false
type: lvm_partition
id: lvm_partition-0
- fstype: ext4
volume: lvm_partition-0
preserve: false
type: format
id: format-2
- path: /
device: format-2
type: mount
id: mount-1
- path: /boot
device: format-1
type: mount
id: mount-0
当我尝试使用仅支持旧版引导(反之亦然)的 userdata.yml 安装 EFI 时失败 -
2022-11-03 09:48:37,448 ERROR root:39 finish: subiquity/Filesystem/apply_autoinstall_config: FAIL: autoinstall config did not create needed bootloader partition
2022-11-03 09:48:37,448 ERROR root:39 finish: subiquity/apply_autoinstall_config: FAIL: autoinstall config did not create needed bootloader partition
同样,我需要在同一个userdata.yml 文件中同时支持EFI 和 Legacy 引导。
谢谢!
正式地,您不能创建同时支持 BIOS 和 UEFI 的单个存储配置。
grub_device
设置不兼容。引用其中一位安装程序(subquity)开发人员的话作为一种解决方法,
early-commands
可用于使单个配置工作。user-data
这是我使用的示例片段。它将/autoinstall.yaml
根据/sys/firmware/efi
.使用此代码段,所有设备最终都将具有相同的分区布局,这可能会造成混淆。例如,基于 BIOS 的机器最终仍会在 处挂载一个不必要的 ESP 分区
/boot/efi
,而基于 UEFI 的机器将有一个不必要的bios_grub
分区。云图像有一个分区布局,用作此配置的灵感。云映像支持 BIOS 和 UEFI,我想复制它。生成的分区表如下所示,其中最终分区填满了磁盘。
解决方案:
我删除了整个
storage
部分user-data
;无论您是在 UEFI 系统还是 Legacy BIOS 中运行,默认的自动安装“知道”如何处理它。注意:它默认创建以下内容 -