1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2d39a206bSSam Ravnborg# 3d39a206bSSam Ravnborg# kbuild file for usr/ - including initramfs image 4d39a206bSSam Ravnborg# 51da177e4SLinus Torvalds 665e00e04SMasahiro Yamada# cmd_bzip2, cmd_lzma, cmd_lzo, cmd_lz4 from scripts/Makefile.lib appends the 765e00e04SMasahiro Yamada# size at the end of the compressed file, which unfortunately does not work 865e00e04SMasahiro Yamada# with unpack_to_rootfs(). Make size_append no-op. 965e00e04SMasahiro Yamadaoverride size_append := : 109e3596b0SNicholas Piggin 1165e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_NONE) := shipped 1265e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP) := gzip 1365e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) := bzip2 1465e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma 1565e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc 1665e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo 1765e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4 186ae64e42SHendrik Brueckner 196ae64e42SHendrik Bruecknerobj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o 201da177e4SLinus Torvalds 2165e00e04SMasahiro Yamada$(obj)/initramfs_data.o: $(obj)/initramfs_inc_data 221da177e4SLinus Torvalds 2365e00e04SMasahiro Yamadaramfs-input := $(strip $(shell echo $(CONFIG_INITRAMFS_SOURCE))) 2465e00e04SMasahiro Yamadacpio-data := 2565e00e04SMasahiro Yamada 2665e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the 2765e00e04SMasahiro Yamada# default contents. 2865e00e04SMasahiro Yamadaifeq ($(ramfs-input),) 2965e00e04SMasahiro Yamadaramfs-input := $(srctree)/$(src)/default_cpio_list 3065e00e04SMasahiro Yamadaendif 3165e00e04SMasahiro Yamada 3265e00e04SMasahiro Yamadaifeq ($(words $(ramfs-input)),1) 3365e00e04SMasahiro Yamada 3465e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with 3565e00e04SMasahiro Yamada# .cpio, use it directly as an initramfs. 3665e00e04SMasahiro Yamadaifneq ($(filter %.cpio,$(ramfs-input)),) 3765e00e04SMasahiro Yamadacpio-data := $(ramfs-input) 3865e00e04SMasahiro Yamadaendif 3965e00e04SMasahiro Yamada 4065e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with 4165e00e04SMasahiro Yamada# .cpio.*, use it directly as an initramfs, and avoid double compression. 4265e00e04SMasahiro Yamadaifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2) 4365e00e04SMasahiro Yamadacpio-data := $(ramfs-input) 4465e00e04SMasahiro Yamadacompress-y := shipped 4565e00e04SMasahiro Yamadaendif 4665e00e04SMasahiro Yamada 4765e00e04SMasahiro Yamadaendif 4865e00e04SMasahiro Yamada 4965e00e04SMasahiro Yamada# For other cases, generate the initramfs cpio archive based on the contents 5065e00e04SMasahiro Yamada# specified by CONFIG_INITRAMFS_SOURCE. 5165e00e04SMasahiro Yamadaifeq ($(cpio-data),) 5265e00e04SMasahiro Yamada 5365e00e04SMasahiro Yamadacpio-data := $(obj)/initramfs_data.cpio 54d39a206bSSam Ravnborg 55*5f2fb52fSMasahiro Yamadahostprogs := gen_init_cpio 56d39a206bSSam Ravnborg 5765e00e04SMasahiro Yamada# .initramfs_data.cpio.d is used to identify all files included 58d39a206bSSam Ravnborg# in initramfs and to detect if any files are added/removed. 59d39a206bSSam Ravnborg# Removed files are identified by directory timestamp being updated 60d39a206bSSam Ravnborg# The dependency list is generated by gen_initramfs.sh -l 6165e00e04SMasahiro Yamada-include $(obj)/.initramfs_data.cpio.d 629e3596b0SNicholas Piggin 6358a2f7d8SSam Ravnborg# do not try to update files included in initramfs 6458a2f7d8SSam Ravnborg$(deps_initramfs): ; 6558a2f7d8SSam Ravnborg 6665e00e04SMasahiro Yamadaquiet_cmd_initfs = GEN $@ 6765e00e04SMasahiro Yamada cmd_initfs = \ 6865e00e04SMasahiro Yamada $(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \ 6965e00e04SMasahiro Yamada $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \ 7065e00e04SMasahiro Yamada $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \ 7165e00e04SMasahiro Yamada $(ramfs-input) 7265e00e04SMasahiro Yamada 73a26ee60fSAlain Knaff# We rebuild initramfs_data.cpio if: 74c7fe0608SEugen Cazacu# 1) Any included file is newer than initramfs_data.cpio 75d39a206bSSam Ravnborg# 2) There are changes in which files are included (added or deleted) 76a26ee60fSAlain Knaff# 3) If gen_init_cpio are newer than initramfs_data.cpio 77c7fe0608SEugen Cazacu# 4) Arguments to gen_initramfs.sh changes 7865e00e04SMasahiro Yamada$(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE 79d39a206bSSam Ravnborg $(call if_changed,initfs) 80d6fc9fcbSMasahiro Yamada 8165e00e04SMasahiro Yamadaendif 8265e00e04SMasahiro Yamada 8365e00e04SMasahiro Yamada$(obj)/initramfs_inc_data: $(cpio-data) FORCE 8465e00e04SMasahiro Yamada $(call if_changed,$(compress-y)) 8565e00e04SMasahiro Yamada 8665e00e04SMasahiro Yamadatargets += initramfs_data.cpio initramfs_inc_data 8765e00e04SMasahiro Yamada 88d6fc9fcbSMasahiro Yamadasubdir-$(CONFIG_UAPI_HEADER_TEST) += include 89