我有自己的基于 Ubuntu 22.04 的 ISO,是我自己生成的。这是我的自动安装 -
#cloud-config
autoinstall:
version: 1
identity:
hostname: foo-ubuntu
password: "ToReplace"
username: abcabc
source:
id: ubuntu-server-minimal
early-commands:
- cat /cdrom/casper/install-sources.yaml | awk 'NR>1 && /^-/{exit};1' > /run/my-sources.yaml
- mount -o ro,bind /run/my-sources.yaml /cdrom/casper/install-sources.yaml
late-commands:
- cp -r /cdrom/copy_to_iso/ /target/opt/
user-data:
runcmd:
- |
mkdir -vp /opt/INIT/
mv -v /opt/copy_to_iso/upgrade_or_install_packages/ /opt/
mv -v /opt/copy_to_iso/foo_installation/* /opt/INIT/
mv -v /opt/copy_to_iso/abc_scripts /opt/abc_scripts
rm -rvf /opt/copy_to_iso
bash -x /opt/abc_scripts/copy_system_files.sh
bash -x /opt/abc_scripts/setup_system_config.sh install_mode
在early-commands
和期间late-commands
,我在 /cdrom/copy_to_iso/packages 下有一个包含所有所需软件包的本地存储库。在 部分期间user-data
,位置是 /opt/packages。
当我在服务器上安装 ISO 时没有互联网连接后,安装过程非常顺利,所有必要的软件包都已安装。另一方面,当我在服务器上安装 ISO 时和互联网连接,我在日志中看到它在互联网上找到了外部更新的包,并且它使从 /opt/packages 安装包的部分失败。
我在网上看到了一些相关的问题,但我希望让自动安装中的所有部分都能正常工作仅有的使用我的本地存储库。以下是我尝试过的方法 -
请查看“使用本地镜像的替代选项”。我的问题是,我在本地存储库中不使用 http,而是使用“文件”。
我试过 -
#cloud-config
autoinstall:
apt:
disable_components: [restricted,multiverse]
disable_suites: [backports,security]
primary:
- arches:
- default
uri: file:///cdrom/copy_to_iso/packages/
而且file:/cdrom/copy_to_iso/packages/
- 什么都不起作用,它仍然从外部存储库安装软件包。
就我的情况我应该怎么写呢?
答案1
我设法通过禁用网络作为自动安装的一部分来禁用自动更新:
network:
ethernets: {}
version: 2
我late-commands
添加以下内容/etc/netplan/50-cloud-init.yaml
-
network:
ethernets:
ens160:
dhcp4: true
dhcp6: false
然后我运行netplan apply
并且我的机器有网络。
答案2
此自动安装配置可能适合您
#cloud-config
autoinstall:
apt:
disable_components: [restricted,multiverse]
disable_suites: [backports,security]
primary:
- arches:
- amd64
- i386
uri: http://archive.ubuntu.com/ubuntu
- arches:
- default
uri: http://ports.ubuntu.com/ubuntu-ports
preferences:
- package: "*"
pin: "release a=jammy-updates"
pin-priority: 200
late-commands:
- |
rm /target/etc/apt/preferences.d/90curtin.pref
true
这将使用不包含给定组件和套件的标准镜像来配置 apt。
该preferences
配置将禁用任何更新。从技术角度来说,来自jammy
存储库的软件包将优先于来自jammy-updates
存储库的软件包。这可能会避免在互联网上查找更新软件包的问题。将late-commands
删除此首选项配置,以便它只会影响安装。
如果不了解更多信息,很难说如何使用自定义存储库。 看起来uri
合理,但即使它在安装过程中确实有效,安装的系统也会有一个损坏的 apt 配置,因为/cdrom/copy_to_iso/packages
不存在。 这个问题可以通过 more 来修复late-commands
。