From 9c0e57e48adee4fa9277ab9bba333e1ab0695971 Mon Sep 17 00:00:00 2001 From: lisimin Date: Thu, 13 Jan 2022 14:14:33 +0800 Subject: [PATCH 1/3] release Image and vmlinux for kernel Signed-off-by: lisimin --- meta-openeuler/conf/machine/qemu-common.inc | 2 ++ meta-openeuler/recipes-core/images/openeuler-image.bb | 5 ++++- meta-openeuler/recipes-kernel/linux/linux-openeuler.bb | 7 +++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/meta-openeuler/conf/machine/qemu-common.inc b/meta-openeuler/conf/machine/qemu-common.inc index 8cc61831956..89943981703 100644 --- a/meta-openeuler/conf/machine/qemu-common.inc +++ b/meta-openeuler/conf/machine/qemu-common.inc @@ -1 +1,3 @@ MACHINEOVERRIDES =. "eulermachine:" +KERNEL_IMAGETYPE ?= "zImage" +KERNEL_IMAGETYPE_FOR_MAKE ?= "zImage" diff --git a/meta-openeuler/recipes-core/images/openeuler-image.bb b/meta-openeuler/recipes-core/images/openeuler-image.bb index 1e5c1edff8c..50e3a02d89d 100644 --- a/meta-openeuler/recipes-core/images/openeuler-image.bb +++ b/meta-openeuler/recipes-core/images/openeuler-image.bb @@ -37,9 +37,11 @@ fakeroot do_openeuler_initrd() { test -d "${rootfs_dir}" && rm -r "${rootfs_dir}" cp -a "${WORKDIR}/rootfs" "${rootfs_dir}" pushd "${rootfs_dir}" - local imagename=$(ls boot/*Image-* | xargs basename) + local imagename=$(ls boot/${KERNEL_IMAGETYPE}-* | xargs basename) rm -f "${OUTPUT_DIR}"/*Image "${OUTPUT_DIR}"/initrd mv boot/${imagename} "${OUTPUT_DIR}"/$(echo ${imagename} | cut -d "-" -f 1) + mv boot/vmlinux* "${OUTPUT_DIR}"/ + mv boot/Image* "${OUTPUT_DIR}"/ echo "${HOSTNAME}" > etc/hostname chmod +x etc/rc.d/* touch etc/security/opasswd @@ -130,6 +132,7 @@ libarchive \ libevent \ iSulad \ kernel-module-overlay-5.10.0 \ +kernel-img \ " IMAGE_INSTALL += "${ROOTFS_BOOTSTRAP_INSTALL} ${IMAGE_INSTALL_normal} ${IMAGE_INSTALL_pro}" diff --git a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb index 9d01d839f24..f8f8320aceb 100644 --- a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb +++ b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb @@ -14,7 +14,6 @@ inherit kernel-version kernel-module-split export EXTRA_CFLAGS = "${CFLAGS}" export EXTRA_LDFLAGS = "${LDFLAGS}" -EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y HOSTCC='${BUILD_CC}' HOSTCPP='${BUILD_CPP}'" EXTRA_OEMAKE = "CC='${CC}' V=1 ARCH=${ARCH} CROSS_COMPILE=${TARGET_PREFIX} SKIP_STRIP=y HOSTCC='${BUILD_CC}' HOSTCPP='${BUILD_CPP}'" PACKAGES_DYNAMIC += "^kernel-module-.*" @@ -25,13 +24,12 @@ KERNEL_CLASSES ?= " kernel-uimage " inherit ${KERNEL_CLASSES} KERNEL_VERSION = "${@get_kernelversion_headers('${B}')}" -KERNEL_IMAGETYPE_FOR_MAKE = "zImage" KERNEL_PACKAGE_NAME ??= "kernel" -KERNEL_IMAGETYPE ?= "zImage" # kernel-base becomes kernel-${KERNEL_VERSION} # kernel-image becomes kernel-image-${KERNEL_VERSION} -PACKAGES = "${PN} ${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-base ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules" +PACKAGES = "${PN} ${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-base ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules ${KERNEL_PACKAGE_NAME}-img" FILES_${PN} = "" +FILES_${KERNEL_PACKAGE_NAME}-img = "/boot/Image-${KERNEL_VERSION}" FILES_${KERNEL_PACKAGE_NAME}-base = "${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.order ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin.modinfo" FILES_${KERNEL_PACKAGE_NAME}-image = "/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} /boot/vmlinux-${KERNEL_VERSION}" FILES_${KERNEL_PACKAGE_NAME}-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build" @@ -159,6 +157,7 @@ do_install() { install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION} install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION} install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION} + install -m 0644 ${KERNEL_OUTPUT_DIR}/Image ${D}/${KERNEL_IMAGEDEST}/Image-${KERNEL_VERSION} [ -e Module.symvers ] && install -m 0644 Module.symvers ${D}/boot/Module.symvers-${KERNEL_VERSION} install -d ${D}${sysconfdir}/modules-load.d install -d ${D}${sysconfdir}/modprobe.d -- Gitee From 930547ced3d5a6a6cde49d7d09e4016c33ad3337 Mon Sep 17 00:00:00 2001 From: lisimin Date: Thu, 13 Jan 2022 15:19:13 +0800 Subject: [PATCH 2/3] change hostname and opasswd to os-base, not config when do_rootfs Signed-off-by: lisimin --- .../recipes-core/images/openeuler-image.bb | 4 ---- .../recipes-core/os-base/os-base_1.0.bb | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/meta-openeuler/recipes-core/images/openeuler-image.bb b/meta-openeuler/recipes-core/images/openeuler-image.bb index 50e3a02d89d..36981fe7c33 100644 --- a/meta-openeuler/recipes-core/images/openeuler-image.bb +++ b/meta-openeuler/recipes-core/images/openeuler-image.bb @@ -29,7 +29,6 @@ TOOLCHAIN_TARGET_TASK_remove += "${@multilib_pkg_extend(d, 'packagegroup-core-st TOOLCHAIN_HOST_TASK_task-populate-sdk-ext = "" TOOLCHAIN_HOST_TASK = "" OUTPUT_DIR = "${TOPDIR}/output" -HOSTNAME = "openeuler" fakeroot do_openeuler_initrd() { test -d "${OUTPUT_DIR}" || mkdir -p "${OUTPUT_DIR}" @@ -42,10 +41,7 @@ fakeroot do_openeuler_initrd() { mv boot/${imagename} "${OUTPUT_DIR}"/$(echo ${imagename} | cut -d "-" -f 1) mv boot/vmlinux* "${OUTPUT_DIR}"/ mv boot/Image* "${OUTPUT_DIR}"/ - echo "${HOSTNAME}" > etc/hostname chmod +x etc/rc.d/* - touch etc/security/opasswd - chmod 600 etc/security/opasswd rm -r ./boot chown -R root:root ./* find . | cpio -H newc -o | gzip -c > "${OUTPUT_DIR}"/initrd diff --git a/meta-openeuler/recipes-core/os-base/os-base_1.0.bb b/meta-openeuler/recipes-core/os-base/os-base_1.0.bb index bfd77f44809..c41a3665a2c 100644 --- a/meta-openeuler/recipes-core/os-base/os-base_1.0.bb +++ b/meta-openeuler/recipes-core/os-base/os-base_1.0.bb @@ -25,6 +25,8 @@ SRC_URI = "file://bashrc \ file://rc.sysinit \ file://rc.local" +hostname = "openeuler" + do_install() { install -d ${D}/etc cp ${WORKDIR}/bashrc ${D}/etc/ @@ -39,9 +41,9 @@ do_install() { install -m 0600 ${WORKDIR}/shadow ${D}/etc/ install -m 0600 ${WORKDIR}/sysctl.conf ${D}/etc/ install -d ${D}/etc/rc.d - cp ${WORKDIR}/rc.functions ${D}/etc/rc.d - cp ${WORKDIR}/rc.sysinit ${D}/etc/rc.d - cp ${WORKDIR}/rc.local ${D}/etc/rc.d + install -m 0744 ${WORKDIR}/rc.functions ${D}/etc/rc.d + install -m 0744 ${WORKDIR}/rc.sysinit ${D}/etc/rc.d + install -m 0744 ${WORKDIR}/rc.local ${D}/etc/rc.d install -m 0755 -d ${D}/etc/init.d/ install -m 0750 ${WORKDIR}/rcS ${D}/etc/init.d/ mkdir -p ${D}/var/log/ @@ -49,6 +51,13 @@ do_install() { mkdir -p ${D}/var/run/faillock ${D}/tmp mkdir -p ${D}/proc ${D}/sys ${D}/root ${D}/dev ${D}/sys/fs/cgroup mkdir -p ${D}/var/log/audit ${D}/var/run/sshd + if [ "${hostname}" ]; then + echo ${hostname} > ${D}${sysconfdir}/hostname + echo "127.0.1.1 ${hostname}" >> ${D}${sysconfdir}/hosts + fi + mkdir -p ${D}${sysconfdir}/security/ + touch ${D}${sysconfdir}/security/opasswd + chmod 600 ${D}${sysconfdir}/security/opasswd } FILES_${PN} = "/" -- Gitee From ed048fe8df82867bd5626dc2b895a2a041777ec1 Mon Sep 17 00:00:00 2001 From: lisimin Date: Thu, 13 Jan 2022 17:48:36 +0800 Subject: [PATCH 3/3] change initrd from tar.gz to cpio.gz change image by IMAGE_PREPROCESS_COMMAND and IMAGE_POSTPROCESS_COMMAND, not custom function Signed-off-by: lisimin --- .../recipes-core/images/openeuler-image.bb | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/meta-openeuler/recipes-core/images/openeuler-image.bb b/meta-openeuler/recipes-core/images/openeuler-image.bb index 36981fe7c33..77cf77484d5 100644 --- a/meta-openeuler/recipes-core/images/openeuler-image.bb +++ b/meta-openeuler/recipes-core/images/openeuler-image.bb @@ -8,12 +8,15 @@ IMAGE_LINGUAS = " " LICENSE = "MIT" inherit core-image -IMAGE_TYPES = "cpio" -IMAGE_FSTYPES_DEBUGFS = "cpio" +IMAGE_FSTYPES = "cpio.gz" +IMAGE_FSTYPES_DEBUGFS = "cpio.gz" +INITRAMFS_MAXSIZE = "262144" +#delete depends to cpio-native +do_image_cpio[depends] = "" + #not add run-postinsts to PACKAGE_INSTALL, so that not fail when do_rootfs?? ROOTFS_BOOTSTRAP_INSTALL = "" -#tar:lower version has no --sort=name -IMAGE_CMD_tar = "${IMAGE_CMD_TAR} --format=posix --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]" + #not depends to update-alternatives do_rootfs[depends] = "" #not depends to ldconfig-native @@ -30,24 +33,23 @@ TOOLCHAIN_HOST_TASK_task-populate-sdk-ext = "" TOOLCHAIN_HOST_TASK = "" OUTPUT_DIR = "${TOPDIR}/output" -fakeroot do_openeuler_initrd() { +delete_boot_from_rootfs() { test -d "${OUTPUT_DIR}" || mkdir -p "${OUTPUT_DIR}" - local rootfs_dir="${WORKDIR}/rootfs_tmp" - test -d "${rootfs_dir}" && rm -r "${rootfs_dir}" - cp -a "${WORKDIR}/rootfs" "${rootfs_dir}" - pushd "${rootfs_dir}" - local imagename=$(ls boot/${KERNEL_IMAGETYPE}-* | xargs basename) - rm -f "${OUTPUT_DIR}"/*Image "${OUTPUT_DIR}"/initrd - mv boot/${imagename} "${OUTPUT_DIR}"/$(echo ${imagename} | cut -d "-" -f 1) + pushd "${IMAGE_ROOTFS}" + rm -f "${OUTPUT_DIR}"/*Image* "${OUTPUT_DIR}"/initrd "${OUTPUT_DIR}"/vmlinux* + mv boot/${KERNEL_IMAGETYPE}-* "${OUTPUT_DIR}"/${KERNEL_IMAGETYPE} mv boot/vmlinux* "${OUTPUT_DIR}"/ mv boot/Image* "${OUTPUT_DIR}"/ - chmod +x etc/rc.d/* rm -r ./boot - chown -R root:root ./* - find . | cpio -H newc -o | gzip -c > "${OUTPUT_DIR}"/initrd popd } -addtask do_openeuler_initrd after do_image_complete before do_build + +copy_openeuler_distro() { + cp -fp ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${IMAGE_FSTYPES} "${OUTPUT_DIR}"/initrd +} + +IMAGE_PREPROCESS_COMMAND += "delete_boot_from_rootfs;" +IMAGE_POSTPROCESS_COMMAND += "copy_openeuler_distro;" #No kernel-abiversion file found, cannot run depmod, aborting USE_DEPMOD = "0" -- Gitee