system: don't attempt swapon/swapoff in inittab if not available
PATCH 1/1 system: don't attempt swapon/swapoff in inittab if not available
From: Thomas De Schampheleire <[email protected]>
The default inittab files added by busybox and sysvinit run 'swapon -a' during init and 'swapoff -a' during shutdown.
But, the swapon/swapoff programs are not guaranteed to be available. For the busybox versions, it is steered by CONFIG_SWAPON/CONFIG_SWAPOFF. For the util-linux versions, it is steered by BR2_PACKAGE_UTIL_LINUX_BINARIES.
In a case where swapon/swapoff is not available but the inittab tries to execute them, the boot log would be polluted by error messages like:
swapon: not found
Avoid this by commenting out the swapon/swapoff lines if the swapon/swapoff binaries are not available.
--- package/busybox/busybox.mk | 1 + package/sysvinit/sysvinit.mk | 1 + system/system.mk | 13 +++++++++++++ 3 files changed, 15 insertions(+)
package/busybox/busybox.mk +1 -0
@@ -226,6 +226,7 @@ endif # BR2_TARGET_GENERIC_GETTY BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB +BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_UPDATE_SWAPON_SWAPOFF_INITTAB endif # BR2_INIT_BUSYBOX
package/sysvinit/sysvinit.mk +1 -0
@@ -45,5 +45,6 @@ endif # BR2_TARGET_GENERIC_GETTY SYSVINIT_TARGET_FINALIZE_HOOKS += SYSVINIT_SET_GETTY SYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB +SYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_UPDATE_SWAPON_SWAPOFF_INITTAB $(eval $(generic-package))
system/system.mk +13 -0
@@ -87,6 +87,19 @@ define SYSTEM_REMOUNT_ROOT_INITTAB endef endif +define SYSTEM_UPDATE_SWAPON_SWAPOFF_INITTAB + if [ -e $(TARGET_DIR)/sbin/swapon ]; then \ + $(SED) '\%:/sbin/swapon%s/^#*//' $(TARGET_DIR)/etc/inittab ; \ + else \ + $(SED) '\%:/sbin/swapon%s/^#*/#/' $(TARGET_DIR)/etc/inittab ; \ + fi + if [ -e $(TARGET_DIR)/sbin/swapoff ]; then \ + $(SED) '\%:/sbin/swapoff%s/^#*//' $(TARGET_DIR)/etc/inittab ; \ + else \ + $(SED) '\%:/sbin/swapoff%s/^#*/#/' $(TARGET_DIR)/etc/inittab ; \ + fi +endef + ifeq ($(BR_BUILDING)$(BR2_SYSTEM_DEFAULT_PATH),y"") $(error BR2_SYSTEM_DEFAULT_PATH can't be empty) endif
Signature · 1 line
2.24.1
PATCH 1/1 system: don't attempt swapon/swapoff in inittab if not available
Quoted 58 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas De Schampheleire <[email protected]> writes:
From: Thomas De Schampheleire <[email protected]> The default inittab files added by busybox and sysvinit run 'swapon -a' during init and 'swapoff -a' during shutdown.
But, the swapon/swapoff programs are not guaranteed to be available. For the busybox versions, it is steered by CONFIG_SWAPON/CONFIG_SWAPOFF. For the util-linux versions, it is steered by
BR2_PACKAGE_UTIL_LINUX_BINARIES.In a case where swapon/swapoff is not available but the inittab tries to execute them, the boot log would be polluted by error messages like:
swapon: not found
Avoid this by commenting out the swapon/swapoff lines if the swapon/swapoff binaries are not available.
Signed-off-by Thomas De Schampheleire <[email protected]>--- package/busybox/busybox.mk | 1 + package/sysvinit/sysvinit.mk | 1 + system/system.mk | 13 +++++++++++++ 3 files changed, 15 insertions(+)package/busybox/busybox.mk +1
-0@@ -226,6 +226,7 @@ endif # BR2_TARGET_GENERIC_GETTY BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB +BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_UPDATE_SWAPON_SWAPOFF_INITTAB endif # BR2_INIT_BUSYBOXpackage/sysvinit/sysvinit.mk +1
-0@@ -45,5 +45,6 @@ endif # BR2_TARGET_GENERIC_GETTY SYSVINIT_TARGET_FINALIZE_HOOKS += SYSVINIT_SET_GETTY SYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB +SYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_UPDATE_SWAPON_SWAPOFF_INITTAB $(eval $(generic-package))system/system.mk +1
-0@@ -87,6 +87,19 @@ define SYSTEM_REMOUNT_ROOT_INITTAB endef endif +define SYSTEM_UPDATE_SWAPON_SWAPOFF_INITTAB
system/system.mk define SYSTEM_REMOUNT_ROOT_INITTAB · line 100
Quoted 10 lines
system/system.mk +10
-0+ if [ -e $(TARGET_DIR)/sbin/swapon ]; then \ + $(SED) '\%:/sbin/swapon%s/^#*//' $(TARGET_DIR)/etc/inittab ; \ + else \ + $(SED) '\%:/sbin/swapon%s/^#*/#/' $(TARGET_DIR)/etc/inittab ; \ + fi + if [ -e $(TARGET_DIR)/sbin/swapoff ]; then \ + $(SED) '\%:/sbin/swapoff%s/^#*//' $(TARGET_DIR)/etc/inittab ; \ + else \ + $(SED) '\%:/sbin/swapoff%s/^#*/#/' $(TARGET_DIR)/etc/inittab ; \ + fi
It seems a bit more "normal" to check for execute permissions, like we do in alsa-utils.mk, so I changed it to -x and committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard