Activity log for bug #1840945

Date Who What changed Old value New value Message
2019-08-21 16:41:46 Alkis Georgopoulos bug added bug
2019-08-21 16:45:03 Alkis Georgopoulos description Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist. Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # date > date.txt # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist.
2019-08-21 16:49:35 Alkis Georgopoulos description Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # date > date.txt # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist. Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # date > date.txt # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist. `dmesg` reports: Trying to unpack rootfs image as initramfs... Initramfs unpacking failed: write error
2019-08-21 16:50:32 Alkis Georgopoulos description Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # date > date.txt # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist. `dmesg` reports: Trying to unpack rootfs image as initramfs... Initramfs unpacking failed: write error Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # date > date.txt # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist. `dmesg | grep -i initramfs` reports: Trying to unpack rootfs image as initramfs... Initramfs unpacking failed: Decoding failed
2019-08-21 17:00:16 Ubuntu Kernel Bot linux (Ubuntu): status New Incomplete
2019-08-21 17:45:51 Alkis Georgopoulos linux (Ubuntu): status Incomplete Confirmed
2019-08-24 08:26:42 Alkis Georgopoulos summary Concatenated lz4 initrds don't work Mixed compression initrds partially work
2019-08-24 08:32:14 Alkis Georgopoulos description Concatenating multiple initrds works fine with gzipped initrds. (microcode+gzip+gzip) => the kernel properly decompresses that With lz4, it can't decompress anything after the first lz4: (microcode+lz4+whatever) => it doesn't decompress whatever. To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create an lz4 (or gzip or uncompressed cpio, it doesn't matter): # date > date.txt # echo date.txt | cpio -oH newc | lz4 > date.img Concatenate them: # cat initrd.img.original date.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The additional file doesn't exist. `dmesg | grep -i initramfs` reports: Trying to unpack rootfs image as initramfs... Initramfs unpacking failed: Decoding failed Updated description: The kernel supports loading multiple initrds, like: [cpio microcode, gzip initrd.img]. Appending yet another initrd after that only works for selected compressions, not all of them. I'm not sure if this is a bug or a feature request. So for example, this works: [cpio microcode, xz initrd.img, gzip extra.img] And this doesn't: [cpio microcode, lz4 initrd.img, gzip extra.img] To reproduce: Get vmlinuz and initrd.img from an eoan daily build and put them in a directory. Create a compressed extra.img: # date > date.txt # echo date.txt | cpio -oH newc | gzip > extra.img Concatenate them: # cat initrd.img.original extra.img > initrd.img Boot them: # kvm -m 512 -kernel vmlinuz -initrd initrd.img -append rdinit=/bin/sh Then inside kvm: # ls /date.txt The date.txt file doesn't exist when initrd.img is lz4, while it appears if it's xz. `dmesg | grep -i initramfs` reports: Trying to unpack rootfs image as initramfs... Initramfs unpacking failed: Decoding failed
2019-10-05 08:36:50 Reupen Shah bug added subscriber Reupen Shah