在 Ubuntu 安装程序中预置

在 Ubuntu 安装程序中预置

我想在安装 Ubuntu 后立即运行一些命令。因此我想到使用预置概念。我提取了我的 iso 并在 preseed 文件夹中将以下行附加到 custom.seed 文件

di preseed/late_command 字符串在目标 mkdir /home/abc

现在我重新打包了iso并使用它安装了ubuntu..但是没有发生任何变化..我在这里做错了什么?

答案1

我不能告诉你这有什么问题,但我可以告诉你我是如何在经过大量的尝试和错误后让我的工作正常工作的。

我的要求是将新文件和替换文件打包到 ISO 中,并在安装后运行脚本。

预置文件

d-i preseed/late_command string /bin/sh -c "$(cat /setup.sh); exit 0"

毫无疑问,这是一种奇怪的运行脚本的方式,但它确实有效。

安装程序.sh

# [ hardware/hosting detection, other customizations ]
# set PackageList string
in-target --pass-stdout /bin/sh -c \
  "apt-get update &&
   apt-get install -y $PackageList &&
   apt-get dist-upgrade -y
  "

该脚本在重新启动后丢失的安装程序环境中运行。您必须使用该in-target命令在安装的环境中运行。

此处解压 ISO 的现有流程

initrd 中的打包文件

initrd是一个文件系统存档,在启动和安装程序运行的环境中扩展。setup.sh我的例子中的文件需要复制到该存档。

扩张 initrd档案

cd $ExpandedISO/install
mkdir initrd
cd initrd
gzip -dc ../initrd.gz | cpio -id --no-absolute-filenames

复制新文件进入扩展initrd目录。

重建 initrd档案:

# in $ExpandedISO/install/initrd/
find . | cpio -o -H newc | gzip > ../initrd.gz
# expanded dir can now be deleted to not take up space in ISO
rm -rf $ExpandedISO/install/initrd/

此处重新打包 ISO 的现有流程

相关内容