实际上,我在运行 Ubuntu 20.04 Server 时遇到一个问题,如果我们自定义用户数据文件,我只会通过安装 Ubuntu 20.04 收到提示。
案件:
我们想使用 Packer 为 qemu vm 构建一个 Ubuntu 20.04 映像。标准配置工作正常,但如果我们在用户数据文件中更改某些内容并重新启动构建,我们会收到安装提示,我们必须选择用户语言等。
解决方案:
我们想更改 efibootmgr 顺序,因为我们的安装循环运行,在成功安装 ubuntu 后,从 iso 而不是从磁盘启动机器。安装再次运行并出现错误。我正在测试通过 late_command 或 user-data -> runcmd 部分编辑命令,但如果我添加该行,ubuntu 安装程序找不到用户数据文件并开始使用提示进行安装。
我的用户数据文件:
#cloud-config
autoinstall:
version: 1
early-commands:
- systemctl stop ssh
locale: en_US
apt:
geoip: true
keyboard:
layout: en
variant: us
network:
network:
version: 2
ethernets:
ens33:
dhcp4: true
storage:
layout:
name: lvm
identity:
hostname: ubuntu
username: ubuntu
# pass is ubuntu
password: #########
ssh:
install-server: yes
allow-pw: true
packages:
- vim
- tmux
- curl
user-data:
disable_root: false
late-commands:
- 'sed -i "s/dhcp4: true/&\n dhcp-identifier: mac/" /target/etc/netplan/00-installer-config.yaml'
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
- echo 'test123' > /target/root/test.txt
如果我- curtin in-target --target=/target -- efibootmgr -o 0007
通过后期命令添加,安装程序将找不到用户数据
如果我在用户数据部分下添加,则安装程序找不到 runcmd [efibootmgr -o 0007]
你有什么想法吗?如果你需要更多信息,请问我。
答案1
默认情况下,科廷“重新排序 UEFI BootOrder,将 BootCurrent 放在第一位“。这就是为什么 ISO 启动时您会陷入循环的原因。这也是 PXE 安装的一个问题。
reorder_uefi
已添加配置选项科廷可以禁用此功能。您可以将其添加到文件中autoinstall
,它将传递给科廷。但是,你可以不是如果您想使用该设置,请使用layout
下面的选项。使用该选项时,其他配置将被忽略。storage
reorder_uefi
layout
storage
我曾使用过autoinstall
类似下面的文件。
#cloud-config
autoinstall:
...
storage:
grub:
reorder_uefi: False
config:
- {ptable: gpt, path: /dev/sda, preserve: false, name: '', grub_device: false, type: disk, id: disk-sda}
...
也可以看看
答案2
我能够通过告诉它首先从 HD 启动,然后从 cdrom 启动来解决我的 virsh xml 文件中的循环问题。第一次启动时 HD 是空的,因此我们启动 iso 并进行安装,但下次启动时 HD 有一个操作系统,因此它会从操作系统启动。这是我使用 virsh create /path/to/xml 加载的 XML 文件的相关部分
<os>
<type arch='x86_64' machine='pc-q35-4.2'>hvm</type>
<boot dev='hd'/>
<boot dev='cdrom'/>
</os>
我还遇到了修改用户数据时卡在语言选择屏幕的问题,解决方法如下: https://github.com/covertsh/ubuntu-autoinstall-generator/pull/32