Public bug reported:

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

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  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.

** Description changed:

  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

** Description changed:

  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:
+ `dmesg | grep -i initramfs` reports:
  Trying to unpack rootfs image as initramfs...
- Initramfs unpacking failed: write error
+ Initramfs unpacking failed: Decoding failed

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1840945

Title:
  Concatenated lz4 initrds don't work

Status in linux package in Ubuntu:
  New

Bug 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

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1840945/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to