我正在尝试openssh-server
使用 Automatic Ubiquity Installator 在 Xubuntu 20.04 上安装。根据https://help.ubuntu.com/lts/installation-guide/amd64/apbs04.html点“B.4.11.包选择”,我可以使用
ubiquity pkgsel/include string openssh-server
这不起作用(未安装openssh服务器)。
根据https://wiki.ubuntu.com/UbiquityAutomation我可以使用ubiquity/success_command
(或preseed/late_command
)运行自己的命令......所以我尝试了这样的事情:
ubiquity ubiquity/success_command string \
echo 'engineer ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/99_engineer; \
chmod 440 /target/etc/sudoers.d/99_engineer; \
chroot /target apt-get update; \
chroot /target apt-get install -y openssh-server
也不工作。这很有趣,因为 sudoers 行似乎工作 - 只有 openssh-server 没有安装......
我做错了什么?什么 Ubuntu 20.04 发生了变化并且没有在任何地方记录?因为整个互联网上关于 Ubuntu 18.04 的所有示例都说上面应该可以工作。
最后,我深入研究了 Ubuntu 20.04 中使用的 Ubiquity 源代码,似乎开发人员已经删除了诸如
pkgsel/include
. Ubuntu 文档对此保持沉默。另外,我确认preseed/late_command
没有被解雇。唯一有效的是ubiquity/success_command
. 我不知道是不是从一开始就是这样,而是success_command
用 运行sh -c "commands here"
,从我的测试来看,这意味着你无法在ubiquity/success_command
. 经过很长时间的修补,我的最终(工作)解决方案是使用 cron 在重新启动后创建一个命令,该命令将等待 Internet 访问(通过检查8.8.8.8
):请注意,我在这里也使用了
floppy_files
Packer - 这就是我可以使用/dev/fd0
.sudoers
文件:firstboot.sh
文件:顺便说一句,对于所有负责删除
pkgsel/include
和其他更改的人来说,这是一个巨大的减号,这些更改随处可见,目前在 中不起作用automatic-ubiquity
,并且允许以简单的方式安装所需的额外内容。在我找到答案之前,我一直在为这个问题苦苦挣扎服务器几天。显然,安装程序在安装结束时关闭了网络接口。您需要启动网络接口以允许网络访问,以便它可以下载应用程序。试试这个,但更改接口名称 ens160 以匹配您的。
ubiquity ubiquity/success_command string
string ip link setup dev ens160;
dhclient ens160;
apt-get 更新 -y;
目标内 apt-get install -y openssh-server;