From 3b75f68d7ce73f2135f8001c3b80a136064320de Mon Sep 17 00:00:00 2001 From: Joe Zheng Date: Wed, 7 May 2025 08:58:12 +0800 Subject: [PATCH 1/2] allow to merge modules in the same folder we want to merge the modules in the same folder both explictly or implicitly, here is an example: copy_including_deps /$LMK/kernel/fs/fuse copy_including_deps /$LMK/kernel/drivers/virtio kernel/fs/fuse/virtiofs.ko depends on: * kernel/drivers/virtio/virtio_ring.ko * kernel/drivers/virtio/virtio.ko * kernel/fs/fuse/fuse.ko so folder $INITRAMFS/kernel/drivers/virtio is created when coping kernel/fs/fuse/virtiofs.ko, and then nothing will be copied for the kernel/drivers/virtio, because $INITRAMFS/kernel/drivers/virtio has already been created, as the previous implementation did, which is not what we wanted only return if the target exists and is not a folder, so that we can merge the wanted modules in the same folder --- initramfs/initramfs_create | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/initramfs/initramfs_create b/initramfs/initramfs_create index 9a82361c..bedc7e2f 100755 --- a/initramfs/initramfs_create +++ b/initramfs/initramfs_create @@ -13,7 +13,7 @@ INITRAMFS=/tmp/$LIVEKITNAME-initramfs-$$ copy_including_deps() { # if source doesn't exist or target exists, do nothing - if [ ! -e "$1" -o -e "$INITRAMFS"/"$1" ]; then + if [ ! -e "$1" ] || [ -f "$1" -a -e "$INITRAMFS"/"$1" ]; then return fi From 42ec9f2f8ded622a79c47915d313e943f475d932 Mon Sep 17 00:00:00 2001 From: Joe Zheng Date: Wed, 7 May 2025 09:25:22 +0800 Subject: [PATCH 2/2] add necessary modules for the QEMU VM use case in a QEMU VM use case, the block device for the rootfs is most probably based on virtio, so we need to include these necessary virtio modules to load root device --- initramfs/initramfs_create | 2 ++ 1 file changed, 2 insertions(+) diff --git a/initramfs/initramfs_create b/initramfs/initramfs_create index bedc7e2f..607e4a1d 100755 --- a/initramfs/initramfs_create +++ b/initramfs/initramfs_create @@ -100,6 +100,7 @@ done copy_including_deps /$LMK/kernel/drivers/staging/zsmalloc # needed by zram copy_including_deps /$LMK/kernel/drivers/block/zram copy_including_deps /$LMK/kernel/drivers/block/loop.* +copy_including_deps /$LMK/kernel/drivers/block/virtio_blk.* # usb drivers copy_including_deps /$LMK/kernel/drivers/usb/storage @@ -120,6 +121,7 @@ copy_including_deps /$LMK/kernel/drivers/scsi/sg.* copy_including_deps /$LMK/kernel/drivers/ata copy_including_deps /$LMK/kernel/drivers/nvme copy_including_deps /$LMK/kernel/drivers/mmc +copy_including_deps /$LMK/kernel/drivers/virtio # network support drivers if [ "$NETWORK" = "true" ]; then