如何通过USB闪存驱动器实现Ubuntu Core 22的无人值守安装?
如何通过USB闪存驱动器实现Ubuntu Core 22的无人值守安装?
你提到的直接用dd写入官方Ubuntu Core镜像的方式确实会把系统安装到USB驱动器本身——这是因为默认的Ubuntu Core镜像设计就是将启动介质作为目标安装盘。要实现无人值守安装到工业PC的内部SSD,我们需要走自定义Ubuntu Core镜像+自动配置的路线,这和Ubuntu Server的preseed方式思路类似,但适配了Ubuntu Core基于Snap的架构特性。
下面是具体的实现步骤:
1. 准备必要工具与文件
首先在一台Ubuntu Desktop/Server机器上安装创建自定义Ubuntu Core镜像的工具:
sudo snap install ubuntu-image --classic
同时,你需要获取Ubuntu Core 22的官方model断言文件(以amd64通用机型为例),可以通过以下命令导出:
curl -O https://raw.githubusercontent.com/canonical/ubuntu-core-models/main/generic/ubuntu-core-22-amd64.model
2. 创建Cloud-Init自动配置文件
创建一个名为user-data的yaml文件,这是实现无人值守的核心配置,里面要指定安装目标磁盘、系统身份信息等。示例配置如下:
#cloud-config autoinstall: storage: layout: name: direct match: # 这里替换成你的工业PC内部SSD的设备名,比如/dev/sda或/dev/nvme0n1 path: /dev/nvme0n1 identity: hostname: industrial-ubuntu-core username: admin # 这里用mkpasswd生成哈希密码(执行mkpasswd命令输入密码即可得到) password: $6$rounds=4096$example$abcdefghijklmnopqrstuvwxyz1234567890
storage.layout.match.path:务必根据你的工业PC内部磁盘的实际设备名调整,如果不确定,可以先手动启动Ubuntu Core查看磁盘列表(用lsblk命令)。- 密码必须是哈希格式,不能用明文,避免安全风险。
3. 生成自定义Ubuntu Core镜像
用ubuntu-image工具将model文件和cloud-init配置打包成可引导的自定义镜像:
sudo ubuntu-image create \ --image-size 4G \ --cloud-init user-data \ ubuntu-core-22-amd64.model
执行完成后,会生成一个名为ubuntu-core-22-amd64.img的镜像文件。
4. 将自定义镜像写入USB闪存驱动器
用dd命令把生成的镜像写入USB(注意替换/dev/sdb为你的USB设备名,别写错成内部磁盘!):
sudo dd if=ubuntu-core-22-amd64.img of=/dev/sdb bs=32M status=progress && sync
5. 启动工业PC完成无人值守安装
将USB插入工业PC,设置从USB启动。系统启动后会自动读取cloud-init配置,将Ubuntu Core 22安装到你指定的内部SSD,整个过程无需人工干预。
额外提示
- 如果你的工业PC内部磁盘设备名不固定,可以在
storage.layout.match里用更灵活的匹配规则,比如按磁盘大小或类型:match: size: largest # 自动选择最大的磁盘作为目标 - 自定义镜像还可以预装你需要的Snap包,只需要在model文件里添加对应的
snaps条目即可,进一步定制工业PC的初始环境。
备注:内容来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

