mirror of
https://github.com/jiazhang0/meta-secure-core.git
synced 2026-07-16 12:47:00 +00:00
kernel-initramfs: define this package to include the initramfs image for kernel boot
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
inherit user-key-store deploy
|
||||
|
||||
# Always fetch the latest initramfs image
|
||||
do_install[nostamp] = "1"
|
||||
|
||||
fakeroot python do_sign() {
|
||||
initramfs = None
|
||||
|
||||
if d.getVar('BUNDLE', True) == '0':
|
||||
initramfs = d.expand('${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz')
|
||||
else:
|
||||
initramfs = d.expand('${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}')
|
||||
|
||||
if initramfs == None or not os.path.exists(initramfs):
|
||||
return
|
||||
|
||||
uks_sel_sign(initramfs, d)
|
||||
}
|
||||
addtask sign after do_install before do_deploy do_package
|
||||
|
||||
do_deploy() {
|
||||
initramfs=""
|
||||
initramfs_dest=""
|
||||
|
||||
if [ "${BUNDLE}" = "0" ]; then
|
||||
initramfs="${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz"
|
||||
initramfs_dest="${DEPLOYDIR}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz"
|
||||
else
|
||||
initramfs="${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}"
|
||||
initramfs_dest="${DEPLOYDIR}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin"
|
||||
fi
|
||||
|
||||
if [ -f "$initramfs.p7b" ]; then
|
||||
install -d "${DEPLOYDIR}"
|
||||
|
||||
install -m 0644 "$initramfs.p7b" "$initramfs_dest.p7b"
|
||||
fi
|
||||
}
|
||||
addtask deploy after do_install before do_build
|
||||
|
||||
pkg_postinst_${PN}_append() {
|
||||
if [ "${BUNDLE}" = "1" ] ; then
|
||||
update-alternatives --install "/boot/${KERNEL_IMAGETYPE}.p7b" \
|
||||
"${KERNEL_IMAGETYPE}.p7b" \
|
||||
"/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b" 50101
|
||||
fi
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
pkg_prerm_${PN}_append() {
|
||||
if [ "${BUNDLE}" = "1" ] ; then
|
||||
update-alternatives --remove "${KERNEL_IMAGETYPE}.p7b" \
|
||||
"${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b"
|
||||
fi
|
||||
|
||||
true
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
SUMMARY = "Initramfs kernel boot"
|
||||
DESCRIPTION = "This package includes the initramfs for the kernel boot. \
|
||||
"
|
||||
LICENSE = "MIT"
|
||||
|
||||
DEPENDS = "virtual/kernel"
|
||||
|
||||
PROVIDES = "virtual/kernel-initramfs"
|
||||
|
||||
ALLOW_EMPTY_${PN} = "1"
|
||||
|
||||
S = "${STAGING_KERNEL_DIR}"
|
||||
B = "${WORKDIR}/${BPN}-${PV}"
|
||||
|
||||
inherit linux-kernel-base kernel-arch
|
||||
|
||||
INITRAMFS_BASE_NAME = "${KERNEL_IMAGETYPE}-initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"
|
||||
INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME"
|
||||
INITRAMFS_EXT_NAME = "-${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
|
||||
|
||||
BUNDLE = "${@'1' if d.getVar('INITRAMFS_IMAGE', True) and \
|
||||
d.getVar('INITRAMFS_IMAGE_BUNDLE', True) == '1' \
|
||||
else '0'}"
|
||||
|
||||
python() {
|
||||
image = d.getVar('INITRAMFS_IMAGE', True)
|
||||
if image:
|
||||
d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_rootfs')
|
||||
}
|
||||
|
||||
do_unpack[depends] += "virtual/kernel:do_deploy"
|
||||
do_populate_lic[depends] += "virtual/kernel:do_deploy"
|
||||
|
||||
do_install() {
|
||||
[ -z "${INITRAMFS_IMAGE}" ] && exit 0
|
||||
|
||||
if [ "${BUNDLE}" = "0" ]; then
|
||||
for suffix in cpio.gz cpio.lzo cpio.lzma cpio.xz; do
|
||||
img="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$suffix"
|
||||
|
||||
if [ -s "$img" ]; then
|
||||
install -d "${D}/boot"
|
||||
install -m 0644 "$img" \
|
||||
"${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.$suffix"
|
||||
break
|
||||
fi
|
||||
done
|
||||
else
|
||||
if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" ]; then
|
||||
install -d "${D}/boot"
|
||||
install -m 0644 "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" \
|
||||
"${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst_${PN}() {
|
||||
if [ "${BUNDLE}" = "1" ]; then
|
||||
update-alternatives --install "/boot/${KERNEL_IMAGETYPE}" \
|
||||
"${KERNEL_IMAGETYPE}" "/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" \
|
||||
50101 || true
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_prerm_${PN}() {
|
||||
if [ "${BUNDLE}" = "1" ]; then
|
||||
update-alternatives --remove "${KERNEL_IMAGETYPE}" \
|
||||
"${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" || true
|
||||
fi
|
||||
}
|
||||
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
|
||||
FILES_${PN} = "/boot/*"
|
||||
Reference in New Issue
Block a user