chore: use fixed module list

Use a fixed list of modules to copy into Talos initramfs.

This makes sure we can still enable thing in Talos kernel as modules but
not ship it as default in Talos (extra modules could be extensions).

Also fixes: #7341

Signed-off-by: Noel Georgi <git@frezbo.dev>
This commit is contained in:
Noel Georgi 2023-06-09 00:06:55 +05:30
parent c719aa2316
commit aef2192a65
No known key found for this signature in database
GPG Key ID: 21A9F444075C9E36
6 changed files with 68 additions and 8 deletions

View File

@ -482,13 +482,41 @@ LABEL org.opencontainers.image.source https://github.com/siderolabs/talos
ENTRYPOINT ["/talosctl"] ENTRYPOINT ["/talosctl"]
# The kernel target is the linux kernel. # The kernel target is the linux kernel.
FROM scratch AS kernel FROM scratch AS kernel
ARG TARGETARCH ARG TARGETARCH
COPY --from=pkg-kernel /boot/vmlinuz /vmlinuz-${TARGETARCH} COPY --from=pkg-kernel /boot/vmlinuz /vmlinuz-${TARGETARCH}
# The rootfs target provides the Talos rootfs. FROM tools AS depmod-amd64
WORKDIR /staging
COPY hack/modules-amd64.txt .
COPY --from=pkg-kernel-amd64 /lib/modules lib/modules
RUN <<EOF
KERNEL_VERSION=$(ls lib/modules)
xargs -a modules-amd64.txt -I {} install -D lib/modules/${KERNEL_VERSION}/{} /build/lib/modules/${KERNEL_VERSION}/{}
depmod -b /build ${KERNEL_VERSION}
EOF
FROM scratch AS modules-amd64
COPY --from=depmod-amd64 /build/lib/modules /lib/modules
FROM tools AS depmod-arm64
WORKDIR /staging
COPY hack/modules-arm64.txt .
COPY --from=pkg-kernel-arm64 /lib/modules lib/modules
RUN <<EOF
KERNEL_VERSION=$(ls lib/modules)
xargs -a modules-arm64.txt -I {} install -D lib/modules/${KERNEL_VERSION}/{} /build/lib/modules/${KERNEL_VERSION}/{}
depmod -b /build ${KERNEL_VERSION}
EOF
FROM scratch AS modules-arm64
COPY --from=depmod-arm64 /build/lib/modules /lib/modules
# The rootfs target provides the Talos rootfs.
FROM build AS rootfs-base-amd64 FROM build AS rootfs-base-amd64
COPY --from=pkg-fhs / /rootfs COPY --from=pkg-fhs / /rootfs
COPY --from=pkg-ca-certificates / /rootfs COPY --from=pkg-ca-certificates / /rootfs
@ -513,7 +541,7 @@ COPY --from=pkg-util-linux-amd64 /lib/libuuid.* /rootfs/lib/
COPY --from=pkg-util-linux-amd64 /lib/libmount.* /rootfs/lib/ COPY --from=pkg-util-linux-amd64 /lib/libmount.* /rootfs/lib/
COPY --from=pkg-kmod-amd64 /usr/lib/libkmod.* /rootfs/lib/ COPY --from=pkg-kmod-amd64 /usr/lib/libkmod.* /rootfs/lib/
COPY --from=pkg-kmod-amd64 /usr/bin/kmod /rootfs/sbin/modprobe COPY --from=pkg-kmod-amd64 /usr/bin/kmod /rootfs/sbin/modprobe
COPY --from=pkg-kernel-amd64 /lib/modules /rootfs/lib/modules COPY --from=modules-amd64 /lib/modules /rootfs/lib/modules
COPY --from=machined-build-amd64 /machined /rootfs/sbin/init COPY --from=machined-build-amd64 /machined /rootfs/sbin/init
# the orderly_poweroff call by the kernel will call '/sbin/poweroff' # the orderly_poweroff call by the kernel will call '/sbin/poweroff'
RUN ln /rootfs/sbin/init /rootfs/sbin/poweroff RUN ln /rootfs/sbin/init /rootfs/sbin/poweroff
@ -567,7 +595,7 @@ COPY --from=pkg-util-linux-arm64 /lib/libuuid.* /rootfs/lib/
COPY --from=pkg-util-linux-arm64 /lib/libmount.* /rootfs/lib/ COPY --from=pkg-util-linux-arm64 /lib/libmount.* /rootfs/lib/
COPY --from=pkg-kmod-arm64 /usr/lib/libkmod.* /rootfs/lib/ COPY --from=pkg-kmod-arm64 /usr/lib/libkmod.* /rootfs/lib/
COPY --from=pkg-kmod-arm64 /usr/bin/kmod /rootfs/sbin/modprobe COPY --from=pkg-kmod-arm64 /usr/bin/kmod /rootfs/sbin/modprobe
COPY --from=pkg-kernel-arm64 /lib/modules /rootfs/lib/modules COPY --from=modules-amd64 /lib/modules /rootfs/lib/modules
COPY --from=machined-build-arm64 /machined /rootfs/sbin/init COPY --from=machined-build-arm64 /machined /rootfs/sbin/init
# the orderly_poweroff call by the kernel will call '/sbin/poweroff' # the orderly_poweroff call by the kernel will call '/sbin/poweroff'
RUN ln /rootfs/sbin/init /rootfs/sbin/poweroff RUN ln /rootfs/sbin/init /rootfs/sbin/poweroff
@ -804,7 +832,7 @@ ONBUILD RUN xz -d /usr/install/${TARGETARCH}/initramfs.xz \
&& rm /usr/install/${TARGETARCH}/initramfs \ && rm /usr/install/${TARGETARCH}/initramfs \
&& rm rootfs.sqsh && rm rootfs.sqsh
ONBUILD COPY --from=customization / /rootfs ONBUILD COPY --from=customization / /rootfs
ONBUILD RUN find /rootfs \ ONBUILD RUN depmod -b /rootfs $(ls /rootfs/lib/modules) \
&& mksquashfs /rootfs rootfs.sqsh -all-root -noappend -comp xz -Xdict-size 100% -no-progress \ && mksquashfs /rootfs rootfs.sqsh -all-root -noappend -comp xz -Xdict-size 100% -no-progress \
&& set -o pipefail && find . 2>/dev/null | cpio -H newc -o | xz -v -C crc32 -0 -e -T 0 -z >/usr/install/${TARGETARCH}/initramfs.xz \ && set -o pipefail && find . 2>/dev/null | cpio -H newc -o | xz -v -C crc32 -0 -e -T 0 -z >/usr/install/${TARGETARCH}/initramfs.xz \
&& rm -rf /rootfs \ && rm -rf /rootfs \

View File

@ -14,7 +14,7 @@ NAME = Talos
ARTIFACTS := _out ARTIFACTS := _out
TOOLS ?= ghcr.io/siderolabs/tools:v1.5.0-alpha.0-14-ge0c76c0 TOOLS ?= ghcr.io/siderolabs/tools:v1.5.0-alpha.0-14-ge0c76c0
PKGS ?= v1.5.0-alpha.0-23-ga859f4f PKGS ?= v1.5.0-alpha.0-24-g1eefa66
EXTRAS ?= v1.5.0-alpha.0-1-ga73d524 EXTRAS ?= v1.5.0-alpha.0-1-ga73d524
# renovate: datasource=github-tags depName=golang/go # renovate: datasource=github-tags depName=golang/go
GO_VERSION ?= 1.20 GO_VERSION ?= 1.20

18
hack/modules-amd64.txt Normal file
View File

@ -0,0 +1,18 @@
kernel/drivers/infiniband/sw/rxe/rdma_rxe.ko
kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
kernel/drivers/net/ethernet/mellanox/mlxfw/mlxfw.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_minimal.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
kernel/drivers/virtio/virtio_balloon.ko
kernel/drivers/virtio/virtio_input.ko
kernel/drivers/virtio/virtio_mmio.ko
kernel/drivers/virtio/virtio_pci.ko
kernel/drivers/virtio/virtio_pci_legacy_dev.ko
kernel/drivers/virtio/virtio_pci_modern_dev.ko
kernel/lib/objagg.ko
kernel/lib/parman.ko

14
hack/modules-arm64.txt Normal file
View File

@ -0,0 +1,14 @@
kernel/drivers/infiniband/sw/rxe/rdma_rxe.ko
kernel/drivers/irqchip/irq-imx-mu-msi.ko
kernel/drivers/mailbox/bcm-flexrm-mailbox.ko
kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
kernel/drivers/net/ethernet/mellanox/mlxfw/mlxfw.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_minimal.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
kernel/lib/objagg.ko
kernel/lib/parman.ko

View File

@ -1 +1 @@
v1.5.0-alpha.0-23-ga859f4f v1.5.0-alpha.0-24-g1eefa66

View File

@ -64,7 +64,7 @@ COPY --from=ghcr.io/talos-user/kernel:{{< release >}}-nvidia /boot/vmlinuz /usr/
Now build the image and push it to the registry. Now build the image and push it to the registry.
```bash ```bash
DOCKER_BUILDKIT=0 docker build --squash --build-arg RM="/lib/modules" -t ghcr.io/talos-user/installer:{{< release >}}-nvidia . DOCKER_BUILDKIT=0 docker build --squash -t ghcr.io/talos-user/installer:{{< release >}}-nvidia .
docker push ghcr.io/talos-user/installer:{{< release >}}-nvidia docker push ghcr.io/talos-user/installer:{{< release >}}-nvidia
``` ```