自定义服务器 ISO 找不到要安装的内核

自定义服务器 ISO 找不到要安装的内核

我正在尝试构建自定义 Ubuntu Server ISO,但遇到了一个奇怪的问题,希望有人能帮我解决。我正在使用 UCK 和这些说明

当我尽可能少地构建“自定义” ISO 时,它会生成一个可以安装并正常运行的 ISO。

uck-remaster-unpack-iso ./ubuntu_trusty-server-amd64.iso 
uck-remaster-pack-iso 

但是,我也希望能够在我的 ISO 中包含自定义软件包。UCK 会为您设置环境,然后获取您的 GPG 密钥并自动为您签名所有内容:

uck-remaster-clean
uck-remaster-unpack-iso ubuntu_trusty-server-amd64.iso 
uck-remaster-prepare-alternate 
gpg --list-keys
uck-remaster-finalize-alternate 60FB276F
uck-remaster-pack-iso 

它生成了一个没有任何错误的 ISO,但是 ISO 出现了这个奇妙的错误:

未找到内核

Syslog 显示这些(满的):

Mar 19 19:37:28 base-installer: Using CD-ROM mount point /media/cdrom/
Mar 19 19:37:28 base-installer: Identifying.. 
Mar 19 19:37:28 base-installer: [53fed41586d1f78a456ce051a5c87264-2]
Mar 19 19:37:28 base-installer: Scanning disc for index files..
Mar 19 19:37:29 base-installer: Found 3 package indexes, 0 source indexes, 0 translation indexes and 1 signatures
Mar 19 19:37:29 base-installer: Found label 'Ubuntu-Server 14.04 LTS _Trusty Tahr_ - Alpha amd64 (20140306)'
Mar 19 19:37:29 base-installer: This disc is called: 
Mar 19 19:37:29 base-installer: 'Ubuntu-Server 14.04 LTS _Trusty Tahr_ - Alpha amd64 (20140306)'
Mar 19 19:37:29 base-installer: Copying package lists...
Mar 19 19:37:29 base-installer: gpgv: Signature made Fri 14 Mar 2014 01:18:54 AM UTC using RSA key ID 60FB276F
Mar 19 19:37:29 base-installer: gpgv: Can't check signature: public key not found
Mar 19 19:37:29 base-installer: E: Sub-process gpgv returned an error code (2)
Mar 19 19:37:29 base-installer: W: Signature verification failed for: /media/cdrom/dists/trusty/Release.gpg
Mar 19 19:37:29 base-installer: E: No CD-ROM could be auto-detected or found using the default mount point.
Mar 19 19:37:29 base-installer: You may try the --cdrom option to set the CD-ROM mount point. See 'man apt-cdrom' for more information about the CD-ROM auto-detection and mount point.
Mar 19 19:37:29 base-installer: error: error while running apt-cdrom

我也尝试过此处的说明但结果是一样的——从源头来看,UCK 似乎遵循了这些指示。

任何想法或建议都将受到赞赏。

进一步调查后的更新:

在出现“坏内核”消息后跳转到 shell:检查由 UCK 注入的签名密钥或手动通过 ubuntu-keyring 重建找到的密钥时,这些密钥/usr/share/keyringsgpg --list-keys --keyring ./ubuntu-archive-keyring.gpg安装程序中的 apt-cdrom 调用之前未安装。因此,dists/trusty/Release.gpggpg 验证失败。

手动运行dpkg -i重建的 ubuntu-keyring 包可以正确安装替换密钥;在/usr/share/keyrings适当的 gpg 信封中和信封中 - 但是,退出 shell 并从安装菜单恢复软件安装,并不能修复 apt-cdrom gpg 验证过程 - 看起来好像 gpg 密钥是从其他 udeb 注入的,并且在 apt-cdrom 检查之前没有安装 ubuntu-keyring。

不幸的是,显示的错误消息并不能反映根本问题。问题是无法apt-cdrom验证 gpg 签名,因此无法将 CDRom 识别为有效的软件包源。这意味着没有可供安装的内核。

答案1

[cdrom]/install/filesystem.squashfs 包含预安装的 ubuntu-keyring 版本,并且 CD 上 /pool/ 内的 ubuntu-keyring 包在 apt-cdrom 被 debian-installer 执行之前未安装 - 因此 apt-cdrom 无法验证修改后的 Release 文件,并且 apt 不会触及 CD 上的软件包。

为了用修改后的版本替换基线键,需要类似这样的操作:

mkdir /tmp/CDRom
mount -o loop /path/to/trusty.iso /tmp/CDRom

mkdir /tmp/SquashFS
cd /tmp/SquashFS

unsquashfs /tmp/CDRom/install/filesystem.squashfs
cd squashfs-root
cp /path/to/modified/ubuntu-archive-keyring.gpg usr/share/keyrings/ubuntu-archive-keyring.gpg
rm /path/to/FinalCD/install/filesystem.size /path/to/FinalCD/install/filesystem.squashfs
du -sx --block-size=1 ./ | cut -f1 > /path/to/FinalCD/install/filesystem.size
mksquashfs ./ /path/to/FinalCD/install/filesystem.squashfs

apt-cdrom 将会正常工作。

答案2

看来您现在不必签署自定义安装。事实上,如果您尝试,它将安装失败。

我还尝试创建 14.04 服务器 64 位的自定义安装,并在 Release.gpg 的签名验证中遇到了同样的问题。(未找到公钥)。我已经对许多以前的版本都这样做了,包括 12.04 64 位服务器版本。我使用的是https://help.ubuntu.com/community/InstallCDCustomization指南。已重新创建 ubuntu-keyring debs 并添加我的密钥,然后替换了 pool/main/u/ubuntu-keyring debs。

事实证明,如果我不签署发布版本,安装程序将不再关心我正在创建我的附加目录、使用自定义的预置以及调整和安装我想要的所有内容。

答案3

在我添加了两个额外的密钥环文件后,RedPhoenix 的答案对我有用:

cp /path/to/modified/ubuntu-archive-keyring.gpg usr/share/keyrings/ubuntu-archive-keyring.gpg
cp /path/to/modified/ubuntu-archive-keyring.gpg etc/apt/trusted.gpg
cp /path/to/modified/ubuntu-archive-keyring.gpg var/lib/apt/keyrings/ubuntu-archive-keyring.gpg

相关内容