home: hub: mkinitfs

Download patch

ref: 30c782493e162e1f283985d7ef2c865bde3e9e15
parent: 255cc02bfa6603498e1c5f7f0f7dbb49a6449072
author: Natanael Copa <ncopa@alpinelinux.org>
date: Tue Nov 28 10:42:55 CST 2023

init: add disable feature to tiny-cloud

Some VPS providers provide cloud-init files (meta-data, user-data) on
/dev/sr0, which overwrite existing .apkovl.tar.gz configuration.

Creating a blank (/etc/tiny-cloud-init.disabled) file in the
.apkovl.tar.gz ensures that tiny-cloud is not loaded.

ref: https://gitlab.alpinelinux.org/alpine/mkinitfs/-/merge_requests/133

--- a/initramfs-init.in
+++ b/initramfs-init.in
@@ -698,7 +698,7 @@
 		rc_add sshd default
 	fi
 
-	if findfs LABEL=cidata >/dev/null 2>&1 || findfs LABEL=CIDATA >/dev/null 2>&1; then
+	if ! [ -f "$sysroot/etc/tiny-cloud.disabled" ] && (findfs LABEL=cidata >/dev/null 2>&1 || findfs LABEL=CIDATA >/dev/null 2>&1); then
 		pkgs="$pkgs tiny-cloud-alpine ifupdown-ng"
 		rc_add tiny-cloud-boot boot
 		rc_add tiny-cloud-early default
--- a/tests/initramfs-init.test
+++ b/tests/initramfs-init.test
@@ -11,7 +11,8 @@
 	initramfs_init_tmpfs_root_console_serial \
 	initramfs_init_tmpfs_root_autodetect_serial \
 	initramfs_init_tmpfs_root_remount_opts \
-	initramfs_init_tmpfs_root_tiny_cloud
+	initramfs_init_tmpfs_root_tiny_cloud \
+	initramfs_init_tmpfs_root_tiny_cloud_disabled
 
 fake_cmdline() {
 	mkdir -p proc
@@ -209,5 +210,24 @@
 	atf_check \
 		-o not-empty \
 		find sysroot/ -name '*tiny-cloud*'
+}
+
+initramfs_init_tmpfs_root_tiny_cloud_disabled_body() {
+	fake_cmdline ""
+	fake_switch_root
+	fake_sysroot_init
+	fake_bin findfs <<-EOF
+		#!/bin/sh
+		true
+	EOF
+
+	mkdir -p sysroot/etc
+	touch sysroot/etc/tiny-cloud.disabled
+
+	atf_check \
+		-o ignore \
+		initramfs-init
+	atf_check \
+		find sysroot/etc/runlevels -name '*tiny-cloud*'
 }