Xubuntu 20.04 自动普及 - 安装附加软件包

Xubuntu 20.04 自动普及 - 安装附加软件包

我正在尝试openssh-server使用自动 Ubiquity 安装程序在 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 的所有示例都表明上述操作应该可行。

答案1

最后,我深入研究了 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):

ubiquity ubiquity/success_command string \
    mkdir -p /mnt/floppy; \
    mount -t vfat /dev/fd0 /mnt/floppy; \
    cp /mnt/floppy/sudoers /target/etc/sudoers.d/99_engineer; \
    chmod 440 /target/etc/sudoers.d/99_engineer; \
    mkdir -p /target/root; \
    cp /mnt/floppy/firstboot.sh /target/root/firstboot.sh; \
    chmod 750 /target/root/firstboot.sh; \
    echo '@reboot root bash /root/firstboot.sh >> /var/log/firstboot.log 2>&1' >> /target/etc/crontab;

请注意,我在这里也使用了floppy_filesPacker - 这就是我可以使用的原因/dev/fd0

sudoers文件:

engineer ALL=(ALL) NOPASSWD:ALL

firstboot.sh文件:

#!/bin/bash

echo "Waiting for Internet ..."
while ! timeout 0.2 ping -c 1 -n 8.8.8.8 &> /dev/null
do
    printf "%c" "."
done
echo "OK"

# Instal SSH Server
apt-get -y update
apt-get -y install openssh-server

# Remove from crontab
sed -i '/firstboot/d' /etc/crontab

顺便说一句,对于所有负责删除pkgsel/include和其他更改的人来说,这是一个巨大的减分,这些更改到处都有记录,目前在 中不起作用automatic-ubiquity,并且允许以简单的方式安装所需的额外东西。

答案2

我花了好几天的时间才找到答案。显然,安装程序会在安装结束时关闭网络接口。您需要打开网络接口以允许网络访问,以便它可以下载应用程序。尝试一下,但要将接口名称 ens160 更改为与您的名称匹配。

ubiquity ubiquity/success_command 字符串
字符串 ip 链接设置 dev ens160;
dhclient ens160;
apt-get update -y;
in-target apt-get install -y openssh-server;

相关内容