diff --git a/meta-openeuler/conf/machine/kernel-modules-conf/common.inc b/meta-openeuler/conf/machine/kernel-modules-conf/common.inc new file mode 100644 index 0000000000000000000000000000000000000000..0d418cb3e13f4f95f7ce192248b281096bac87f8 --- /dev/null +++ b/meta-openeuler/conf/machine/kernel-modules-conf/common.inc @@ -0,0 +1,44 @@ +INSTALLMODULES = " \ +kernel-module-overlay \ +kernel-module-8021q \ +kernel-module-jbd2 \ +kernel-module-mbcache \ +kernel-module-ext2 \ +kernel-module-ext4 \ +kernel-module-inet-diag \ +kernel-module-ip-tables \ +kernel-module-ip-tunnel \ +kernel-module-ip6-tables \ +kernel-module-ip6-udp-tunnel \ +kernel-module-ip6table-filter \ +kernel-module-ipip \ +kernel-module-ipt-reject \ +kernel-module-iptable-filter \ +kernel-module-ipv6 \ +kernel-module-nf-conntrack \ +kernel-module-nf-defrag-ipv4 \ +kernel-module-nf-defrag-ipv6 \ +kernel-module-nf-nat \ +kernel-module-nf-reject-ipv4 \ +kernel-module-nf-reject-ipv6 \ +kernel-module-x-tables \ +kernel-module-xt-tcpudp \ +kernel-module-tunnel4 \ +kernel-module-af-packet \ +kernel-module-nfs-ssc \ +kernel-module-fscache \ +kernel-module-grace \ +kernel-module-sunrpc \ +kernel-module-auth-rpcgss \ +kernel-module-lockd \ +kernel-module-nfs-acl \ +kernel-module-nfs \ +kernel-module-nfsv3 \ +kernel-module-nfsd \ +kernel-module-crc-ccitt \ +kernel-module-ipv6 \ +kernel-module-iptable-nat \ +kernel-module-ip6table-nat \ +kernel-module-ip6t-reject \ +kernel-module-xt-nat \ +" diff --git a/meta-openeuler/conf/machine/qemu-aarch64-common.inc b/meta-openeuler/conf/machine/qemu-aarch64-common.inc index d324bb17bb343cc3f375424648d270df06079d77..37d46511e4777ad566a0891ed53487309abe9171 100644 --- a/meta-openeuler/conf/machine/qemu-aarch64-common.inc +++ b/meta-openeuler/conf/machine/qemu-aarch64-common.inc @@ -3,6 +3,10 @@ MACHINEOVERRIDES =. "march64:" require conf/machine/qemu-common.inc +#kernel modules to install and autoload +require conf/machine/kernel-modules-conf/common.inc +KERNEL_MODULE_AUTOLOAD = "${INSTALLMODULES}" + # Different from arm32, here we use armv8a.inc instead # of conf/machine/include/tune-cortexa53.inc because # we are not sure our CPU is cortex a53. diff --git a/meta-openeuler/conf/machine/qemu-arm-common.inc b/meta-openeuler/conf/machine/qemu-arm-common.inc index 41e617d0b25323c71bbaed064ae4b1668da784b9..1818863013bb8b66d761b9c18ec06da2d4e2791b 100644 --- a/meta-openeuler/conf/machine/qemu-arm-common.inc +++ b/meta-openeuler/conf/machine/qemu-arm-common.inc @@ -4,6 +4,13 @@ MACHINEOVERRIDES =. "march32:" require conf/machine/qemu-common.inc require conf/machine/include/arm/arch-armv7a.inc +#kernel modules to install and autoload +require conf/machine/kernel-modules-conf/common.inc +INSTALLMODULES += " \ +kernel-module-unix \ +" +KERNEL_MODULE_AUTOLOAD = "${INSTALLMODULES}" + TUNE_FEATURES_append += " cortexa9" TUNE_FEATURES_remove += " vfp" 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 e54fb7b188a0ada9b998a61077b706c5103db46a..d8bcaa53149ada8f31ddce9eca2d9d9e8de3b8da 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 @@ -50,8 +50,4 @@ do_install_append_arm() { echo "unix" >> ${D}/etc/modules } -do_install_append_raspberrypi4() { - sed -i '/\# load kernel modules/imount -o remount,rw \/' ${D}/etc/rc.d/rc.sysinit -} - FILES_${PN} = "/" diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-core-base-utils.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-core-base-utils.bb index 00ed86c1ff8253da661ec1221cbbaf3100fd582e..e54cca10d578c742f2668db2d27237803acfee31 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-core-base-utils.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-core-base-utils.bb @@ -22,4 +22,3 @@ shadow-securetty \ bash \ " -RDEPENDS_${PN}_append_arm += "kernel-module-unix" diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb index 0f1477b195817f17be1a12f0d32d0b555a2046e5..c603f20362c8de70a974c90e7fe79b21175db903 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb @@ -7,51 +7,12 @@ inherit packagegroup PACKAGES = "${PN}" -RDEPENDS_${PN} = " \ -kernel-module-overlay \ -kernel-module-8021q \ -kernel-module-jbd2 \ -kernel-module-mbcache \ -kernel-module-ext2 \ -kernel-module-ext4 \ -kernel-module-inet-diag \ -kernel-module-ip-tables \ -kernel-module-ip-tunnel \ -kernel-module-ip6-tables \ -kernel-module-ip6-udp-tunnel \ -kernel-module-ip6table-filter \ -kernel-module-ipip \ -kernel-module-ipt-reject \ -kernel-module-iptable-filter \ -kernel-module-ipv6 \ -kernel-module-nf-conntrack \ -kernel-module-nf-defrag-ipv4 \ -kernel-module-nf-defrag-ipv6 \ -kernel-module-nf-nat \ -kernel-module-nf-reject-ipv4 \ -kernel-module-nf-reject-ipv6 \ -kernel-module-x-tables \ -kernel-module-xt-tcpudp \ -kernel-module-tunnel4 \ -kernel-module-af-packet \ -kernel-module-nfs-ssc \ -kernel-module-fscache \ -kernel-module-grace \ -kernel-module-sunrpc \ -kernel-module-auth-rpcgss \ -kernel-module-lockd \ -kernel-module-nfs-acl \ -kernel-module-nfs \ -kernel-module-nfsv3 \ -kernel-module-nfsd \ -kernel-module-crc-ccitt \ -kernel-module-ipv6 \ -kernel-module-iptable-nat \ -kernel-module-ip6table-nat \ -kernel-module-ip6t-reject \ -kernel-module-xt-nat \ -" -RDEPENDS_${PN}_raspberrypi4 = " \ -" -RDEPENDS_${PN}_aarch64-pro = " \ +RDEPENDS_${PN} += " \ +modutils-initscripts \ " + +# please do not add any MACHINE related modules here +# You can use INSTALLMODULES which is defined in machine conf layer +# like: meta-openeuler/conf/machine/kernel-modules-conf/common.inc +RDEPENDS_${PN} += "${INSTALLMODULES}" + diff --git a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb index 77d8717c811e6cea449dfd574205cb39a911fd83..156dfc58ecf9d7ff1e5c7978fc79bdd1698ade8f 100644 --- a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb +++ b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb @@ -64,3 +64,40 @@ do_install_append(){ pkg_postinst_${KERNEL_PACKAGE_NAME}-base () { : } + +# KERNEL_MODULE_AUTOLOAD need ko_basename to work, +# we make automatic conversion from pkgname to ko_basename +# then we can use pkgname in KERNEL_MODULE_AUTOLOAD +# reference 1: split_kernel_module_packages: yocto-poky/meta/classes/kernel-module-split.bbclass +# reference 2: do_split_packages: yocto-poky/meta/classes/package.bbclass +split_kernel_module_packages_prepend () { + def update_module_loadlist (): + module_regex = r'^(.*)\.k?o(?:\.[xg]z)?$' + kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel" + module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX') + module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX') + module_pattern = module_pattern_prefix + kernel_package_name + '-module-%s' + module_pattern_suffix + root = '${nonarch_base_libdir}/modules' + dvar = d.getVar('PKGD') + root = d.expand(root) + objs = [] + for walkroot, dirs, files in os.walk(dvar + root): + for file in files: + relpath = os.path.join(walkroot, file).replace(dvar + root + '/', '', 1) + if relpath: + objs.append(relpath) + for o in sorted(objs): + import re, stat + m = re.match(module_regex, os.path.basename(o)) + if not m: + continue + basename = m.group(1) + on = legitimize_package_name(basename) + pkg = module_pattern % on + if pkg in (d.getVar("KERNEL_MODULE_AUTOLOAD") or "").split(): + old_list = d.getVar("KERNEL_MODULE_AUTOLOAD") + d.setVar("KERNEL_MODULE_AUTOLOAD", "%s %s" % (old_list, basename)) + + update_module_loadlist() +} + diff --git a/meta-openeuler/recipes-kernel/modutils-initscripts/modutils-initscripts.bbappend b/meta-openeuler/recipes-kernel/modutils-initscripts/modutils-initscripts.bbappend new file mode 100644 index 0000000000000000000000000000000000000000..0f3ceeaede27edfe7e386cc5ecc9419b0d5c9770 --- /dev/null +++ b/meta-openeuler/recipes-kernel/modutils-initscripts/modutils-initscripts.bbappend @@ -0,0 +1,6 @@ +# main bbfile: yocto-poky/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb + +# current we not enable sysvint in DISTRO_FEATURES, just use busybox's init, but we want populate_packages_updatercd to work. +# In other word, we want update-rc.d always work when INITSCRIPT_NAME and INITSCRIPT_PARAMS generate with all none systemd scene. +PACKAGESPLITFUNCS_prepend = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'populate_packages_updatercd ', d)}" +