[Add meta-cmf-filogic sdk cmf for rdkb development]
[Description]
Add meta-cmf-filogic sdk cmf for rdkb development
1. rdkb base on dunfell rdkb-next (> 2022q1)
2. cmf is mostly from meta-turris implementation
3. some 64bit support are port from rp4-64 cmf
4. arm64/arm 32bit bsp both can run on rdkb
[Release-log]
N/A
diff --git a/recipes-core/base-files/base-files_%.bbappend b/recipes-core/base-files/base-files_%.bbappend
new file mode 100644
index 0000000..ba97544
--- /dev/null
+++ b/recipes-core/base-files/base-files_%.bbappend
@@ -0,0 +1,7 @@
+do_install_append_broadband () {
+ # deal with hostname
+ if [ "${hostname}" ]; then
+ echo "TurrisOmnia-GW" > ${D}${sysconfdir}/hostname
+ echo "127.0.1.1 TurrisOmnia-GW" >> ${D}${sysconfdir}/hosts
+ fi
+}
diff --git a/recipes-core/busybox/busybox/rdkb.cfg b/recipes-core/busybox/busybox/rdkb.cfg
new file mode 100644
index 0000000..90a1211
--- /dev/null
+++ b/recipes-core/busybox/busybox/rdkb.cfg
@@ -0,0 +1,8 @@
+CONFIG_NTPD=y
+CONFIG_FEATURE_NTPD_SERVER=y
+CONFIG_EJECT=y
+CONFIG_CHRT=y
+CONFIG_UMOUNT=n
+CONFIG_MOUNT=n
+CONFIG_FSCK=n
+CONFIG_REV=y
diff --git a/recipes-core/busybox/busybox/timeout.cfg b/recipes-core/busybox/busybox/timeout.cfg
new file mode 100644
index 0000000..9c7d020
--- /dev/null
+++ b/recipes-core/busybox/busybox/timeout.cfg
@@ -0,0 +1,2 @@
+# Fri Jul 10 12:47:58 2020
+CONFIG_TIMEOUT=y
diff --git a/recipes-core/busybox/busybox_%.bbappend b/recipes-core/busybox/busybox_%.bbappend
new file mode 100644
index 0000000..2498e52
--- /dev/null
+++ b/recipes-core/busybox/busybox_%.bbappend
@@ -0,0 +1,13 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += " \
+ file://timeout.cfg \
+ file://rdkb.cfg \
+ "
+
+do_install_append_dunfell() {
+ rm ${D}${sysconfdir}/syslog.conf
+}
+
+FILES_${PN}-syslog_remove_dunfell = "${sysconfdir}/syslog.conf"
+
diff --git a/recipes-core/dropbear/dropbear_%.bbappend b/recipes-core/dropbear/dropbear_%.bbappend
new file mode 100644
index 0000000..743d263
--- /dev/null
+++ b/recipes-core/dropbear/dropbear_%.bbappend
@@ -0,0 +1,20 @@
+SRC_URI_remove = "file://verbose.patch"
+SRC_URI_remove = "file://revsshipv6.patch"
+SYSTEMD_SERVICE_${PN}_remove_broadband = "dropbear.socket"
+
+do_configure_prepend_hybrid () {
+ export LIBS="${LIBS} -ltelemetry_msgsender"
+}
+
+do_configure_prepend_client () {
+ export LIBS="${LIBS} -ltelemetry_msgsender"
+}
+
+do_configure_prepend_broadband () {
+ export LIBS="${LIBS} -ltelemetry_msgsender"
+}
+
+do_install_append_broadband() {
+ rm -rf ${D}${systemd_unitdir}
+ rm -rf ${D}/lib
+}
diff --git a/recipes-core/glibc/glibc_2.31.bbappend b/recipes-core/glibc/glibc_2.31.bbappend
new file mode 100644
index 0000000..242f47a
--- /dev/null
+++ b/recipes-core/glibc/glibc_2.31.bbappend
@@ -0,0 +1,11 @@
+EXTRA_OECONF += " --enable-obsolete-rpc"
+
+#avoiding the conflicts with libnsl2
+do_install_append_dunfell() {
+rm -rf ${D}/usr/include/rpcsvc
+}
+
+# provided by libnsl2
+do_install_append_class-nativesdk() {
+ rm -f ${D}${includedir}/rpcsvc/yppasswd.*
+}
diff --git a/recipes-core/images/core-image-minimal.bbappend b/recipes-core/images/core-image-minimal.bbappend
new file mode 100644
index 0000000..d8af638
--- /dev/null
+++ b/recipes-core/images/core-image-minimal.bbappend
@@ -0,0 +1,20 @@
+SUMMARY = "Marvell RFS"
+
+inherit rdk-image
+
+MACHINE_IMAGE_NAME = "core-image-minimal"
+
+IMAGE_FEATURES_remove = "read-only-rootfs"
+
+IMAGE_INSTALL_append = " \
+ packagegroup-turris-core \
+ "
+ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts"
+
+IMAGE_INSTALL += " ${ROOTFS_PKGMANAGE_BOOTSTRAP} \
+ ${CORE_IMAGE_EXTRA_INSTALL} \
+ "
+
+BB_HASH_IGNORE_MISMATCH = "1"
+
+IMAGE_NAME[vardepsexclude] = "DATETIME"
diff --git a/recipes-core/images/image-exclude-files.inc b/recipes-core/images/image-exclude-files.inc
new file mode 100644
index 0000000..645715a
--- /dev/null
+++ b/recipes-core/images/image-exclude-files.inc
@@ -0,0 +1,17 @@
+REMOVED_FILE_LIST = "\
+usr/bin/CcspMtaAgentSsp \
+usr/lib/libmta_tr181.so* \
+usr/ccsp/mta \
+usr/bin/CcspEPONAgentSsp \
+usr/lib/libepon_tr181.so* \
+usr/ccsp/epon \
+usr/lib/python* \
+usr/bin/GponManager \
+usr/rdk/gponmanager \
+usr/bin/xdslmanager \
+usr/rdk/xdslmanager \
+etc/rdk/conf/xdsl_manager_conf.json \
+etc/rdk/conf/gpon_manager_conf.json \
+etc/rdk/schemas/xdsl_hal_schema.json \
+etc/rdk/schemas/gpon_hal_schema.json \
+"
diff --git a/recipes-core/images/rdk-generic-broadband-5.10-kernel-image.bb b/recipes-core/images/rdk-generic-broadband-5.10-kernel-image.bb
new file mode 100644
index 0000000..065d62d
--- /dev/null
+++ b/recipes-core/images/rdk-generic-broadband-5.10-kernel-image.bb
@@ -0,0 +1,38 @@
+inherit rdk-image
+
+IMAGE_FEATURES_remove = "read-only-rootfs"
+
+SYSTEMD_TOOLS = "systemd-analyze systemd-bootchart"
+# systemd-bootchart doesn't currently build with musl libc
+SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
+
+IMAGE_INSTALL += " packagegroup-turris-core \
+ ${SYSTEMD_TOOLS} \
+ linux-firmware-ath10k \
+ network-hotplug \
+ libmcrypt \
+ bzip2 \
+ nmap \
+ libpcap \
+ tcpdump \
+ ebtables \
+ iw \
+ ethtool \
+ bc \
+ mesh-agent \
+ opensync \
+ openvswitch \
+ "
+
+BB_HASH_IGNORE_MISMATCH = "1"
+IMAGE_NAME[vardepsexclude] = "DATETIME"
+
+require image-exclude-files.inc
+
+remove_unused_file() {
+ for i in ${REMOVED_FILE_LIST} ; do rm -rf ${IMAGE_ROOTFS}/$i ; done
+}
+
+ROOTFS_POSTPROCESS_COMMAND_append = "remove_unused_file; "
+
+MACHINE_IMAGE_NAME = "rdk-generic-broadband-5.10-kernel-image"
diff --git a/recipes-core/images/rdk-generic-broadband-image.bbappend b/recipes-core/images/rdk-generic-broadband-image.bbappend
new file mode 100644
index 0000000..7b98407
--- /dev/null
+++ b/recipes-core/images/rdk-generic-broadband-image.bbappend
@@ -0,0 +1,60 @@
+inherit rdk-image
+
+IMAGE_FEATURES_remove = "read-only-rootfs"
+
+SYSTEMD_TOOLS = "systemd-analyze systemd-bootchart"
+# systemd-bootchart doesn't currently build with musl libc
+SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
+
+IMAGE_INSTALL += " packagegroup-turris-core \
+ ${SYSTEMD_TOOLS} \
+ linux-mac80211 \
+ kernel-module-compat \
+ kernel-module-cfg80211 \
+ kernel-module-mac80211 \
+ linux-mt76 \
+ kernel-module-mt76 \
+ kernel-module-mt7915e \
+ linux-firmware-mt76 \
+ network-hotplug \
+ libmcrypt \
+ bzip2 \
+ libpcap \
+ tcpdump \
+ ebtables \
+ iw \
+ ethtool \
+ bc \
+ mesh-agent \
+ openvswitch \
+ opensync \
+ "
+
+BB_HASH_IGNORE_MISMATCH = "1"
+IMAGE_NAME[vardepsexclude] = "DATETIME"
+
+#ESDK-CHANGES
+do_populate_sdk_ext_prepend() {
+ builddir = d.getVar('TOPDIR')
+ if os.path.exists(builddir + '/conf/templateconf.cfg'):
+ with open(builddir + '/conf/templateconf.cfg', 'w') as f:
+ f.write('meta/conf\n')
+}
+
+sdk_ext_postinst_append() {
+ echo "ln -s $target_sdk_dir/layers/openembedded-core/meta-rdk $target_sdk_dir/layers/openembedded-core/../meta-rdk \n" >> $env_setup_script
+}
+
+PRSERV_HOST = "localhost:0"
+INHERIT += "buildhistory"
+BUILDHISTORY_COMMIT = "1"
+
+
+
+require image-exclude-files.inc
+
+remove_unused_file() {
+ for i in ${REMOVED_FILE_LIST} ; do rm -rf ${IMAGE_ROOTFS}/$i ; done
+}
+
+ROOTFS_POSTPROCESS_COMMAND_append = "remove_unused_file; "
diff --git a/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend b/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend
new file mode 100644
index 0000000..0c9a515
--- /dev/null
+++ b/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend
@@ -0,0 +1,60 @@
+inherit rdk-image
+
+IMAGE_FEATURES_remove = "read-only-rootfs"
+
+SYSTEMD_TOOLS = "systemd-analyze systemd-bootchart"
+# systemd-bootchart doesn't currently build with musl libc
+SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
+
+IMAGE_INSTALL += " packagegroup-turris-core \
+ ${SYSTEMD_TOOLS} \
+ linux-mac80211 \
+ kernel-module-compat \
+ kernel-module-cfg80211 \
+ kernel-module-mac80211 \
+ linux-mt76 \
+ kernel-module-mt76 \
+ kernel-module-mt7915e \
+ linux-firmware-mt76 \
+ linux-firmware-ath10k \
+ network-hotplug \
+ libmcrypt \
+ bzip2 \
+ nmap \
+ libpcap \
+ tcpdump \
+ ebtables \
+ iw \
+ ethtool \
+ bc \
+ mesh-agent \
+ opensync \
+ openvswitch \
+ "
+
+BB_HASH_IGNORE_MISMATCH = "1"
+IMAGE_NAME[vardepsexclude] = "DATETIME"
+
+#ESDK-CHANGES
+do_populate_sdk_ext_prepend() {
+ builddir = d.getVar('TOPDIR')
+ if os.path.exists(builddir + '/conf/templateconf.cfg'):
+ with open(builddir + '/conf/templateconf.cfg', 'w') as f:
+ f.write('meta/conf\n')
+}
+
+sdk_ext_postinst_append() {
+ echo "ln -s $target_sdk_dir/layers/openembedded-core/meta-rdk $target_sdk_dir/layers/openembedded-core/../meta-rdk \n" >> $env_setup_script
+}
+
+PRSERV_HOST = "localhost:0"
+INHERIT += "buildhistory"
+BUILDHISTORY_COMMIT = "1"
+
+require image-exclude-files.inc
+
+remove_unused_file() {
+ for i in ${REMOVED_FILE_LIST} ; do rm -rf ${IMAGE_ROOTFS}/$i ; done
+}
+
+ROOTFS_POSTPROCESS_COMMAND_append = "remove_unused_file; "
diff --git a/recipes-core/images/rdk-generic-extender-image.bb b/recipes-core/images/rdk-generic-extender-image.bb
new file mode 100644
index 0000000..32e9b09
--- /dev/null
+++ b/recipes-core/images/rdk-generic-extender-image.bb
@@ -0,0 +1,39 @@
+SUMMARY = "A image for the RDK extender yocto build"
+
+inherit rdk-image
+
+IMAGE_FEATURES_remove = "read-only-rootfs"
+
+IMAGE_ROOTFS_SIZE = "8192"
+
+IMAGE_INSTALL += " packagegroup-turris-core \
+ rdk-logger \
+ ${SYSTEMD_TOOLS} \
+ linux-firmware-ath10k \
+ libmcrypt \
+ bzip2 \
+ libpcap \
+ tcpdump \
+ ebtables \
+ dropbear \
+ iw \
+ opensync \
+ openvswitch \
+ libcap \
+ bridge-utils \
+ strace \
+ wpa-supplicant \
+ "
+IMAGE_INSTALL_append_dunfell += " network-hotplug"
+
+SYSTEMD_TOOLS = "systemd-analyze systemd-bootchart"
+# systemd-bootchart doesn't currently build with musl libc
+SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
+
+do_rootfs[nostamp] = "1"
+
+remove_unused_file() {
+ rm -rf ${IMAGE_ROOTFS}/usr/lib/python* ;
+}
+
+ROOTFS_POSTPROCESS_COMMAND_append = "remove_unused_file; "
diff --git a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend
new file mode 100644
index 0000000..92af54b
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend
@@ -0,0 +1,34 @@
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-moca"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-moca-ccsp"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "sys-resource"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-cm-agent-ccsp"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-cm-agent"
+
+#removing memstress for now following a build issue
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "memstress"
+
+#removing mesh-agent for now. will be brought back along with opensync
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "mesh-agent"
+
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "xupnp"
+
+#removing wanmanager components for now following runtime issues
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "rdktelcovoicemanager"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "rdk-vlanmanager"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "rdk-ppp-manager"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "rdk-fwupgrade-manager"
+
+RDEPENDS_packagegroup-rdk-ccsp-broadband_append = "\
+ rdk-logger \
+ libseshat \
+ start-parodus \
+"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove_dunfell = "start-parodus"
+
+#TODO: need to revisit if it breaks functionality. removing since it depends on ucresolv
+#RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "parodus"
+
+RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_wan_manager', ' rdk-wanmanager ', '', d)} "
+
+GWPROVAPP = ""
+
diff --git a/recipes-core/packagegroups/packagegroup-rdk-oss-broadband.bbappend b/recipes-core/packagegroups/packagegroup-rdk-oss-broadband.bbappend
new file mode 100644
index 0000000..3a3baaf
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-rdk-oss-broadband.bbappend
@@ -0,0 +1,2 @@
+RDEPENDS_packagegroup-rdk-oss-broadband_remove = "alljoyn"
+RDEPENDS_packagegroup-rdk-oss-broadband_append_dunfell = " zilker-sdk"
diff --git a/recipes-core/packagegroups/packagegroup-turris-core.bb b/recipes-core/packagegroups/packagegroup-turris-core.bb
new file mode 100644
index 0000000..87a44fe
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-turris-core.bb
@@ -0,0 +1,57 @@
+SUMMARY = "Custom core image package group for marvell boards"
+
+LICENSE = "MIT"
+
+inherit packagegroup
+
+DEPENDS = "libnl"
+
+PACKAGES = " \
+ packagegroup-turris-core \
+ "
+
+RDEPENDS_packagegroup-turris-core = " \
+ packagegroup-core-boot \
+ devmem2 \
+ lttng-tools \
+ pptp-linux \
+ rp-pppoe \
+ iputils \
+ btrfs-tools \
+ util-linux-readprofile \
+ wireless-tools \
+ trace-cmd \
+ cryptsetup \
+ coreutils \
+ dosfstools \
+ e2fsprogs \
+ fftw \
+ hostapd \
+ wpa-supplicant \
+ iproute2 \
+ libpcap \
+ nfs-utils \
+ openssh \
+ openssl \
+ rpcbind \
+ python-core \
+ sg3-utils \
+ squashfs-tools \
+ valgrind \
+ testfloat \
+ iperf \
+ dhcp-server \
+ iptables \
+ dnsmasq \
+ dt \
+ wireless-regdb-static \
+ "
+RDEPENDS_packagegroup-turris-core_remove = "\
+dt \
+"
+
+#turris omnia uses dropbear, so removing openssh
+RDEPENDS_packagegroup-turris-core_remove = "openssh"
+
+#for yocto 3.1 migration, the following components are removed
+RDEPENDS_packagegroup-turris-core_remove_dunfell = " iperf trace-cmd"
diff --git a/recipes-core/safec/safec_3.5.bbappend b/recipes-core/safec/safec_3.5.bbappend
new file mode 100644
index 0000000..20ede5a
--- /dev/null
+++ b/recipes-core/safec/safec_3.5.bbappend
@@ -0,0 +1,3 @@
+SRC_URI_remove = "file://0001-memrchr-Use-_ISOC11_SOURCE-only-with-glibc.patch"
+
+CPPFLAGS_remove = "-D_GNU_SOURCE"
diff --git a/recipes-core/systemd/files/systemd-set-wdt.patch b/recipes-core/systemd/files/systemd-set-wdt.patch
new file mode 100644
index 0000000..a0a7b81
--- /dev/null
+++ b/recipes-core/systemd/files/systemd-set-wdt.patch
@@ -0,0 +1,15 @@
+diff --git a/src/core/system.conf b/src/core/system.conf
+index db8b7acd78..7d1ea864e0 100644
+--- a/src/core/system.conf
++++ b/src/core/system.conf
+@@ -23,8 +23,8 @@
+ #CrashReboot=no
+ #CPUAffinity=1 2
+ #JoinControllers=cpu,cpuacct net_cls,net_prio
+-#RuntimeWatchdogSec=0
+-#ShutdownWatchdogSec=10min
++RuntimeWatchdogSec=120
++ShutdownWatchdogSec=10min
+ #CapabilityBoundingSet=
+ #SystemCallArchitectures=
+ #TimerSlackNSec=
diff --git a/recipes-core/systemd/files/systemd-strerror_r-handling.patch b/recipes-core/systemd/files/systemd-strerror_r-handling.patch
new file mode 100644
index 0000000..7f9e246
--- /dev/null
+++ b/recipes-core/systemd/files/systemd-strerror_r-handling.patch
@@ -0,0 +1,28 @@
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index 5e8a3e3200..f017a301ee 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -358,8 +359,8 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
+ if (errno == 0) {
+ char error[sizeof("ERRNO=")-1 + DECIMAL_STR_MAX(int) + 1];
+
+- if (j != buffer + 8 + k)
+- memmove(buffer + 8 + k, j, strlen(j)+1);
++ //if (j != buffer + 8 + k)
++ // memmove(buffer + 8 + k, j, strlen(j)+1);
+
+ memcpy(buffer, "MESSAGE=", 8);
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index 26219bdeed..3c895c061e 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -378,7 +378,7 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
+
+ errno = 0;
+ x = strerror_r(error, m, k);
+- if (errno == ERANGE || strlen(x) >= k - 1) {
++ if (errno == ERANGE || strlen(m) >= k - 1) {
+ free(m);
+ k *= 2;
+ continue;
diff --git a/recipes-core/systemd/files/systemd-turris.patch b/recipes-core/systemd/files/systemd-turris.patch
new file mode 100644
index 0000000..988d9a0
--- /dev/null
+++ b/recipes-core/systemd/files/systemd-turris.patch
@@ -0,0 +1,29 @@
+--- git/configure.ac 2019-03-12 13:11:06.811881687 +0000
++++ git1/configure.ac 2019-03-12 13:13:25.315022850 +0000
+@@ -316,7 +316,6 @@
+
+ AC_CHECK_FUNCS([__secure_getenv secure_getenv])
+ AC_CHECK_DECLS([
+- memfd_create,
+ gettid,
+ pivot_root,
+ canonicalize_file_name,
+--- git/src/basic/missing_syscall.h 2019-03-12 13:11:06.167885674 +0000
++++ git1/src/basic/missing_syscall.h 2019-03-12 13:14:14.146719924 +0000
+@@ -77,7 +77,7 @@
+ # warning "__NR_memfd_create unknown for your architecture"
+ # endif
+ # endif
+-
++/*
+ static inline int memfd_create(const char *name, unsigned int flags) {
+ # ifdef __NR_memfd_create
+ return syscall(__NR_memfd_create, name, flags);
+@@ -86,6 +86,7 @@
+ return -1;
+ # endif
+ }
++*/
+ #endif
+
+ /* ======================================================================= */
diff --git a/recipes-core/systemd/systemd_230.bbappend b/recipes-core/systemd/systemd_230.bbappend
new file mode 100644
index 0000000..c51cd47
--- /dev/null
+++ b/recipes-core/systemd/systemd_230.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI_append_extender = " \
+ file://systemd-turris.patch \
+"
+SRC_URI_append = " \
+ file://systemd-set-wdt.patch \
+ file://systemd-strerror_r-handling.patch \
+ "
diff --git a/recipes-core/systemd/systemd_244.%.bbappend b/recipes-core/systemd/systemd_244.%.bbappend
new file mode 100644
index 0000000..04f64b4
--- /dev/null
+++ b/recipes-core/systemd/systemd_244.%.bbappend
@@ -0,0 +1,5 @@
+#set the watch dog timer
+do_install_append_dunfell () {
+sed -i "/RuntimeWatchdogSec/c\RuntimeWatchdogSec=120" ${D}/${sysconfdir}/systemd/system.conf
+sed -i "/ShutdownWatchdogSec/c\ShutdownWatchdogSec=10min" ${D}/${sysconfdir}/systemd/system.conf
+}
diff --git a/recipes-core/util-linux/util-linux_%.bbappend b/recipes-core/util-linux/util-linux_%.bbappend
new file mode 100644
index 0000000..3d93363
--- /dev/null
+++ b/recipes-core/util-linux/util-linux_%.bbappend
@@ -0,0 +1,19 @@
+do_install_append_broadband() {
+ rm -rf ${D}${base_sbindir}/hwcloc
+ rm -rf ${D}${base_bindir}/more
+ rm -rf ${D}${base_bindir}/kill
+ rm -rf ${D}${base_bindir}/dmesg
+ rm -rf ${D}${bindir}/chrt
+ rm -rf ${D}${bindir}/eject
+ rm -rf ${D}${bindir}/flock
+ rm -rf ${D}${bindir}/hexdump
+ rm -rf ${D}${bindir}/logger
+ rm -rf ${D}${bindir}/mesg
+ rm -rf ${D}${bindir}/renice
+ rm -rf ${D}${bindir}/setsid
+}
+do_install_append_dunfell_broadband() {
+ rm -rf ${D}${base_sbindir}/swapon
+ rm -rf ${D}${base_sbindir}/swapoff
+ rm -rf ${D}${base_sbindir}/losetup
+}