g3n*_*5i5 4 automation ubuntu-server ubuntu-20.04
我正在尝试使用全新的 Ubuntu Server 20.04 进行免提自动安装。显然,他们将他们的方法从预置更改为新的基于云初始化的自动安装方法。我跟着指示Ubuntu的wiki页面并创建了两个文件user-data
,并meta-data
描述在这里。之后,我通过启动一个 python3 网络服务器在我的内部网络中提供文件
python3 -m http.server 3003
Run Code Online (Sandbox Code Playgroud)
之后,我从 USB 安装棒启动了 ubuntu 服务器 20.04。在 grub 菜单中,我将引导条目更改为以下内容
...
linux /casper/vmlinuz quiet autoinstall ds=nocloud-net s=http://<my-laptop-ip>:3003/ ---
...
Run Code Online (Sandbox Code Playgroud)
但是当安装程序启动时,它不会访问配置文件(Web 服务器访问日志为空)并且“正常”服务器安装开始,您必须手动输入所有内容。
Ubuntu Wiki 页面上的快速入门教程明确提到了虚拟服务器的安装。有没有人对新的安装方法有任何经验,可以告诉我如何让它工作?
编辑:
与此同时,我可以验证自动安装过程是否适用于教程(在 KVM 中设置)。然而,事实仍然是在真实服务器上通过网络安装不起作用(没有请求 HTTP 服务器加载配置)。手动安装后,我检查了 HTTP 服务器是否可访问并且可以确认这一点。
未加载配置的原因是什么?
Soooo 我终于设法让 Ubuntu-Autoinstall 工作,这个错误很容易修复:我不知道 qemu 使用哪个“引导加载程序”,但这并不重要。无论如何,Ubuntu 安装程序使用 GRUB 引导加载程序。在 GRUB 引导加载程序中,分号字符终止命令。不幸的是,cloud-init 语法正是使用这个符号来参数化安装源:ds=nocloud-net[;key=val;key=val]
例如ds=nocloud-net;s=http://_gateway:3003/
。
tl;dr 那么,该怎么办?只需避开分号,一切都会回到它应该的方式:
...
linux /casper/vmlinuz quiet autoinstall ds=nocloud-net\;s=http://<my-laptop-ip>:3003/ ---
...
Run Code Online (Sandbox Code Playgroud)