我在这里按照手册操作: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/Packages
中md5sum.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 但未调用安装。
这可以通过多种方式实现
使用 debconf 预置 缺点:每次您想要更改预置时,需要执行几个额外的步骤来解压缩重新打包 initrd.gz
简单的cdd 缺点:第一次需要在实时系统中进行设置,并且可以从那里在解压的 iso 中进行更改