我从 Ubuntu 网站下载了一个 Ubuntu mini iso,并想进行完全自动化安装。我创建了一个预置文件(预播种)
我使用 iso 中的这个文件创建了一个映像。
当我尝试使用 txt.cfg 中的以下内容启动它时。它询问我所有问题,但似乎没有从预置文件中获取任何内容。这是关于 Ubuntu 15.10 的
我尝试以不同的顺序提供参数并调整预置文件。我还尝试了 Ubuntu 服务器映像,但同样不起作用。
default install
label install
menu label ^Install
menu default
kernel linux
append file=/cdrom/pre.seed priotity=critical locale=en_US console-setup/layoutcode=us vga=788 initrd=initrd.gz quiet ---
我迄今为止尝试过的 txt.cfg 版本:配置文件
答案1
以下是我经过 30 个小时的折腾后得到的结果:
- Ubuntu mini ISO 无法从 ISO 内部文件预先植入
- Debian netinstall ISO 可以从 ISO 中的文件预先设置
- Ubuntu 和 Debian Netinstalls 无法通过 SSL 检索预置文件
现在我创建了一个公共可用的 Web 服务器并从那里加载预置文件。Ubuntu 无法使用 ISO 中的预置文件的原因对我来说是个谜,但肯定有正当理由。
答案2
不确定在后续版本中是否有所改变,但对于 Ubuntu 16.04.2(使用 amd64 的 mini.iso),我必须使用以下选项通过 HTTP 进行预置:
auto=true priority=critial url=http://...
请注意添加auto=true
(如果没有它,预置文件将不会被考虑)以及 的正确拼写priority
。有关这些关键词含义的更多信息,请参阅手册:https://help.ubuntu.com/lts/installation-guide/amd64/apbs02.html
答案3
一个解决方案是提取initrd.gz
,将预置文件添加到根路径并再次打包。在启动参数中file=/preseed.cfg
。
首先,获取压缩
initrd.gz
文件并解压:mkdir preseeded cd preseeded && gzip -d < path/to/initrd.gz | cpio -id
添加preseed.cfg文件并重新打包initrd:
cp mypreseed.cfg preseeded/preseed.cfg cd preseeded && find . | cpio -o -H newC | gzip) > path/to/initrd.gz
我在 Ubuntu 18.04-LTS 和 20.04-LTS 上测试了此解决方案,两者都是最小 ISO。
当然,带有的选项url=http://xxx/ps.cfg
不需要提取;可以在 Debian 和 Ubuntu 上正常运行。
auto=true priority=critical file=/preseed.cfg
应从文件或网络添加的参数auto=true priority=critical url=http://xxx/ps.cfg
答案4
除了提取和重新打包之外,还有一种替代方法initrd.gz
:将预置文件放入另一个 initrd(例如preseed.gz
)并通过以下方式链式加载它
initrd=initrd.gz,preseed.gz
它的优点是不需要修改原始的 initrd 映像。