如何将软件包添加到 Debian ISO 以便自动安装

如何将软件包添加到 Debian ISO 以便自动安装

我在这里按照手册操作:Debian 安装程序/修改/CD

首先我制作了一个 deb 文件(名为 mytest.deb)。然后bsdtar将 Debian ISO ( debian-10.1.0-amd64-netinst.iso) 放入名为 buster-iso 的目录中,并将其所有文件设置为可写,并将 mytest.deb 文件放入以下路径中:pool/main/m/

然后我制作了这个配置文件apt-ftparchive

# config-deb

Dir {
    ArchiveDir "buster-iso";
};

# Sets the top of the .deb directory tree.
TreeDefault {
   Directory "pool/";
};

# The location for a Packages file.                
BinDirectory "pool/main" {
   Packages "dists/buster/main/binary-amd64/Packages";
};

# We are only interested in .deb files (.udeb for udeb files).                                
Default {
   Packages {
       Extensions ".deb";
    };
};

并运行apt-ftparchive generate config-deb,然后运行接下来的三个命令,如手册中所示(仅进行细微更改,以便名称与我使用的文件名匹配)。我还确认 mytest.deb 存在于 和dists/buster/main/binary-amd64/Packagesmd5sum.txt

然后我将整个目录转回一个新的ISO文件(也是根据手册)。此外,与原始 ISO 相比,新生成的 ISO 的大小也正确增加。但是当我安装这个 Debian 时,我的 deb 软件包没有按预期安装。

我已经在我自己的系统上测试了 deb 文件的安装(使用dpkg -i mytest.deb),并且工作正常。该 deb 文件中的层次结构非常简单,usr/local并且mytest.tar.gz文件位于此路径中。我希望该文件/usr/local/mytest.tar.gz在安装新的 Debian ISO 时预先存在。但它不在那里。

也许我使用了错误的路径并且它被安装中的其他程序覆盖?也许我误解了手册中的某些内容?任何帮助,将不胜感激。

答案1

您已成功将包添加到 ISO;这就是链接指令所实现的全部功能。如你看到的说明中的进一步内容,结果是可以手动安装自定义包;但安装映像中的任何内容都不会导致其自动安装。

如果您希望自动安装该软件包,则必须进行进一步的更改。可能可以向安装程序添加参数(我必须检查);其他可能性包括将您的包添加到任务选择中 ( tasksel) 或者将其设为“必需”。

答案2

我遇到了同样的问题,我希望任何人都可以在将来发现它有所帮助。该文件已添加软件包 hub/pool 但未调用安装。

这可以通过多种方式实现

  1. 使用 debconf 预置 缺点:每次您想要更改预置时,需要执行几个额外的步骤来解压缩重新打包 initrd.gz

  2. 简单的cdd 缺点:第一次需要在实时系统中进行设置,并且可以从那里在解压的 iso 中进行更改

相关内容