如何从自定义编译的内核构建实时映像? (现场构建)

如何从自定义编译的内核构建实时映像? (现场构建)

我想创建一个最终的基础设施来启动 PXE 自定义内核映像,但在整个过程中,我一直无法使用之前使用该live-build工具编译的自定义内核映像来创建中间“实时”CD ISO。

我不知道如何/在哪里指定lb配置/实时构建工具来使用我自己的内核 deb 包而不是默认amd64-kernel风格。

我认为我必须使用该--linux-packages参数,但我不太明白如何使用。我找不到任何类型的信息或示例。我已阅读所有手册页等,但我陷入困境。

我当前的auto/lb配置:

*lb config no auto \  
    --architectures amd64 \  
    --distribution stretch \    
    --system live \  
    --chroot-filesystem squashfs \  
    --apt-recommends false \  
    --apt-indices none \  
    --memtest none \  
    --debian-installer false \  
    --interactive shell \  
    --bootloaders syslinux \ 
    --bootappend-live "boot=live components hostname=test username=test sudo" \  
    "${@}"*

如何使用自定义编译的内核创建实时映像?

答案1

抱歉,我迟到了,但是对于其他也想这样做的人来说...好吧,您可以将自定义编译的内核 deb 放在 config/packages.chroot 文件夹中...并且 lb build 会自动安装它们

答案2

正如 Sounak Kar 所说,您必须将自定义内核放在 config/packages.chroot 文件夹中。

内核名称必须以“-arch”结尾,用架构替换“arch”,对于amd64,可以使用以下命令编译,对于4线程CPU:

make bindeb-pkg -j4 LOCALVERSION="-custom-amd64" KDEB_PKGVERSION="1"

您可能需要在 chroot 构建结束时添加一个钩子,以便删除内置内核,并为自定义内核创建一个 initramfs。

例如,一个可执行文件名为:config/hooks/normal/0600-kernel.hook.chroot

#!/bin/sh

set +e

# delete built-in kernel of bookworm:
apt -y remove linux-image-amd64
apt -y remove linux-image-6.0.0-*
apt -y autoremove
apt -y clean

# make initramfs for all installed kernels:
update-initramfs -c -k all

set -e

在这个为制作书虫直播 DVD 而编写的脚本中,您必须apt -y remove根据您正在构建的发行版安装的内核名称来替换后面的内置内核名称。

相关内容