meta-google: recipes-phosphor: initrdscripts: Import from gBMC

Initial recipes-phosphor/initrdscripts code from gBMC.

Google-Bug-Id: 179618491
Upstream: 1182879e906e67ca171b21c1eaa4027f9d162e49
Signed-off-by: Brandon Kim <brandonkim@google.com>
Change-Id: I810f3a80d635d2c3a38fcb1db7ee4c396ae2d7bb
diff --git a/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend
new file mode 100644
index 0000000..905a39a
--- /dev/null
+++ b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend
@@ -0,0 +1,20 @@
+# This is needed to guarantee that our whitelist takes
+# precendence over the OpenBMC one
+FILESEXTRAPATHS_prepend_gbmc := "${THISDIR}/${PN}:"
+
+SRC_URI_append_gbmc_dev = " file://whitelist.dev"
+
+do_install_append_gbmc_dev() {
+    cat ${WORKDIR}/whitelist.dev >>${D}/whitelist
+}
+
+SRC_URI_append_gbmc_dev = " file://rwfs-clean-dev.patch"
+# Required for the clean-dev patch to detect version changes
+RDEPENDS_${PN}_append_gbmc_dev = " os-release"
+
+do_install_append_gbmc_prod() {
+    echo "clean-rwfs-filesystem" > ${D}/init-options-base
+    chmod 0644 ${D}/init-options-base
+}
+
+FILES_${PN}_append_gbmc_prod = " /init-options-base"
diff --git a/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/rwfs-clean-dev.patch b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/rwfs-clean-dev.patch
new file mode 100644
index 0000000..7631c85
--- /dev/null
+++ b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/rwfs-clean-dev.patch
@@ -0,0 +1,29 @@
+diff --git a/meta-phosphor/recipes-phosphor/initrdscripts/files/obmc-init.sh b/meta-phosphor/recipes-phosphor/initrdscripts/files/obmc-init.sh
+index 62be89f039..689fbea5bf 100644
+--- a/obmc-init.sh
++++ b/obmc-init.sh
+@@ -275,6 +275,14 @@ then
+ 	fi
+ fi
+ 
++# Ensure that we clean our rwfs on version change
++if mount $rwdev $rwdir -t $rwfst -o $rwopts; then
++	if ! cmp "$rwdir"/os-release /etc/os-release 2>/dev/null; then
++		echo "RWFS from older BMC version, cleaning"
++		touch $trigger
++	fi
++	umount "$rwdir"
++fi
+ if grep -w clean-rwfs-filesystem $optfile
+ then
+ 	echo "Cleaning of read-write overlay filesystem requested."
+@@ -399,6 +407,9 @@ HERE
+ 	debug_takeover "$msg"
+ fi
+ 
++# Keep track of the last version to use this rwfs
++cp /etc/os-release "$rwdir"/os-release
++
+ rm -rf $work
+ mkdir -p $upper $work
+ 
diff --git a/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/whitelist b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/whitelist
new file mode 100644
index 0000000..a2244cc
--- /dev/null
+++ b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/whitelist
@@ -0,0 +1,6 @@
+/etc/dropbear/dropbear_rsa_host_key
+/etc/hostname
+/etc/machine-id
+/etc/systemd/network
+/var/google
+/var/lib/phosphor-inventory-manager
diff --git a/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/whitelist.dev b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/whitelist.dev
new file mode 100644
index 0000000..89dd3bb
--- /dev/null
+++ b/meta-google/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/whitelist.dev
@@ -0,0 +1 @@
+/home/root