mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	usr: Add support for zstd compressed initramfs
- Add support for a zstd compressed initramfs. - Add compression for compressing built-in initramfs with zstd. I have tested this patch by boot testing with buildroot and QEMU. Specifically, I booted the kernel with both a zstd and gzip compressed initramfs, both built into the kernel and separate. I ensured that the correct compression algorithm was used. I tested on arm, aarch64, i386, and x86_64. This patch has been tested in production on aarch64 and x86_64 devices. Additionally, I have performance measurements from internal use in production. On an aarch64 device we saw 19 second boot time improvement from switching from lzma to zstd (27 seconds to 8 seconds). On an x86_64 device we saw a 9 second boot time reduction from switching from xz to zstd. Signed-off-by: Nick Terrell <terrelln@fb.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Tested-by: Sedat Dilek <sedat.dilek@gmail.com> Reviewed-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20200730190841.2071656-5-nickrterrell@gmail.com
This commit is contained in:
		
							parent
							
								
									48f7ddf785
								
							
						
					
					
						commit
						a30d8a39f0
					
				
					 2 changed files with 21 additions and 0 deletions
				
			
		
							
								
								
									
										20
									
								
								usr/Kconfig
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								usr/Kconfig
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -100,6 +100,15 @@ config RD_LZ4
 | 
			
		|||
	  Support loading of a LZ4 encoded initial ramdisk or cpio buffer
 | 
			
		||||
	  If unsure, say N.
 | 
			
		||||
 | 
			
		||||
config RD_ZSTD
 | 
			
		||||
	bool "Support initial ramdisk/ramfs compressed using ZSTD"
 | 
			
		||||
	default y
 | 
			
		||||
	depends on BLK_DEV_INITRD
 | 
			
		||||
	select DECOMPRESS_ZSTD
 | 
			
		||||
	help
 | 
			
		||||
	  Support loading of a ZSTD encoded initial ramdisk or cpio buffer.
 | 
			
		||||
	  If unsure, say N.
 | 
			
		||||
 | 
			
		||||
choice
 | 
			
		||||
	prompt "Built-in initramfs compression mode"
 | 
			
		||||
	depends on INITRAMFS_SOURCE != ""
 | 
			
		||||
| 
						 | 
				
			
			@ -196,6 +205,17 @@ config INITRAMFS_COMPRESSION_LZ4
 | 
			
		|||
	  If you choose this, keep in mind that most distros don't provide lz4
 | 
			
		||||
	  by default which could cause a build failure.
 | 
			
		||||
 | 
			
		||||
config INITRAMFS_COMPRESSION_ZSTD
 | 
			
		||||
	bool "ZSTD"
 | 
			
		||||
	depends on RD_ZSTD
 | 
			
		||||
	help
 | 
			
		||||
	  ZSTD is a compression algorithm targeting intermediate compression
 | 
			
		||||
	  with fast decompression speed. It will compress better than GZIP and
 | 
			
		||||
	  decompress around the same speed as LZO, but slower than LZ4.
 | 
			
		||||
 | 
			
		||||
	  If you choose this, keep in mind that you may need to install the zstd
 | 
			
		||||
	  tool to be able to compress the initram.
 | 
			
		||||
 | 
			
		||||
config INITRAMFS_COMPRESSION_NONE
 | 
			
		||||
	bool "None"
 | 
			
		||||
	help
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA)	:= lzma
 | 
			
		|||
compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ)	:= xzmisc
 | 
			
		||||
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO)	:= lzo
 | 
			
		||||
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4)	:= lz4
 | 
			
		||||
compress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD)	:= zstd
 | 
			
		||||
 | 
			
		||||
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue