我尝试在用户数据中自定义存储布局以进行自动安装,这是我的用户数据的一部分
storage:
#layout:
# name: direct
config:
- type: disk
match:
size: largest
#ssd: true
id: ssd0
ptable: gpt
wipe: superblock
- type: partition # create partitions on ssd0
number: 1
id: efi-partition
device: ssd0
size: 256M
flag: boot # uefi partition needs boot flag
grub_device: true # and must be the grub device?
- type: partition
number: 2
id: boot-partition
device: ssd0
size: 768M
- type: partition
number: 3
id: root-partition
device: ssd0
size: -1
- type: format # format partitions on ssd0
id: efi-format
volume: efi-partition
fstype: fat32 # ESP gets FAT32
label: ESP
- type: format
id: boot-format
volume: boot-partition
fstype: ext4
label: BOOT
- type: format
id: root-format
volume: root-partition
fstype: ext4 # / (root) gets ext4, xfs, btrfs
label: ROOT
- type: mount # mount formatted partitions on ssd0
id: root-mount # / (root) gets mounted first
device: root-format
path: /
- type: mount
id: boot-mount # /boot gets mounted next
device: boot-format
path: /boot
- type: mount
id: efi-mount # /boot/efi gets mounted next
device: efi-format
path: /boot/efi
然后我在安装过程中收到此错误
“自动安装配置没有创建所需的引导加载程序分区”
我对这个“自动安装程序”真的很失望......
答案1
由于我遇到了这里提到的相同问题(以及其他问题),我按照@dleidert 的建议运行交互式操作并查看生成的配置。
对我来说,解决方法是添加grub_device: true
到disk
,而不是分区。wipe: superblock
和preserve: false
也被添加到生成的配置中的所有内容中。 实际上与文档中的示例非常相似:https://curtin.readthedocs.io/en/latest/topics/storage.html#basic-layout
另外,grub_boot
分区似乎是必需的,没有它grub-install
就会失败。以下是两个相关部分:
更新:这比这更复杂,但合乎逻辑:D
MBR/BIOS:grub_device: true
必须处于disk
同一级别。
config:
- type: disk
id: disk-vda
ptable: gpt
path: /dev/vda
wipe: superblock-recursive
preserve: false
grub_device: true
bios_grub 分区:
- type: partition
id: grub-partition
device: disk-vda
size: 1M
flag: bios_grub
partition_type: EF02
wipe: superblock
preserve: false
GPT/UEFI:grub_device: true
必须在efi
分区上。bios_grub
不需要分区。但您应该添加reorder_uefi: false
。
grub:
reorder_uefi: false
config:
- type: disk
id: disk-vda
ptable: gpt
path: /dev/vda
wipe: superblock-recursive
preserve: false
efi 分区:
- type: partition
id: boot-partition
device: disk0
size: 512M
flag: boot
partition_type: EF00
wipe: superblock
preserve: false
grub_device: true
答案2
尝试grub_device: false
为磁盘本身设置。另外,fstype: fat32
实际上允许吗?我认为这应该是vfat
。
但是,您可以创建storage
一个交互式部分(这将使您的存储部分无效),在将系统设置为 UEFI 的情况下运行安装程序(JFTR:启用安全启动就可以了),然后将您找到的结果用户数据文件与您的文件进行比较/var/log/installer/
。
答案3
您不能将其用作largest
分区大小。它只能在match
块中使用。
从你的user-data
。
- type: partition
number: 3
id: root-partition
device: ssd0
size: largest
答案4
经过几天的测试,也许这与 UEFI/BIOS 启动有关,使用 acer 台式机,当我以 BIOS 模式(安全启动禁用,CSM 启用传统模式)启动桌面时,使用默认存储布局
storage:
layout:
name: direct
自动安装没有错误,但安装完成后,机器无法启动到 ubuntu。然后我使用实时 USB 启动来检查磁盘布局,有一个 1MB 的分区,类型为 bios_grub,我不知道这是否看起来正确。
然后我尝试以 UEFI 模式(安全启动禁用/ CSM 禁用)启动机器,机器无法启动到安装程序,我必须使用 UEFI 创建配置 PXE(这是另一个故事),这一次,使用相同的用户数据,安装程序创建一个 1G 分区,类型为 ESP,重启后,该死的,机器启动并进入 ubuntu 桌面 !!!
我不知道所有这些测试是否有意义,但是 ubuntu 22.04 是否不支持 BIOS 启动?我是否应该考虑不再使用 BIOS 启动?