From patchwork Mon Jan 14 08:35:40 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [V7, 2/6] image.bbclass: add a hook funtion to support readonly rootfs Date: Mon, 14 Jan 2013 08:35:40 -0000 From: Qi.Chen@windriver.com X-Patchwork-Id: 42551 Message-Id: <4d6a5afdcd4222d653334ae32e75df962eac5df1.1358152182.git.Qi.Chen@windriver.com> To: Cc: Zhenfeng.Zhao@windriver.com From: Chen Qi read_only_rootfs_hook: this funtion is invoked only if 'read-only-rootfs' is in IMAGE_FEATURES. It tweaks some basic files and makes populate- volatile.sh script run at rootfs time. [YOCTO #3406] Signed-off-by: Chen Qi --- meta/classes/image.bbclass | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index e494689..834497a 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -185,7 +185,6 @@ do_build[nostamp] = "1" # task, so that we have a single fakeroot context for the whole process. do_rootfs[umask] = "022" - run_intercept_scriptlets () { if [ -d ${WORKDIR}/intercept_scripts ]; then cd ${WORKDIR}/intercept_scripts @@ -396,6 +395,21 @@ zap_root_password () { mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd } +# A hook function to support read-only-rootfs IMAGE_FEATURES +read_only_rootfs_hook () { + # Tweak the mount option in fstab + sed -i '/rootfs/ s/defaults/ro/' ${IMAGE_ROOTFS}/etc/fstab + # Change the value of ROOTFS_READ_ONLY in /etc/default/rcS to yes + if [ -e ${IMAGE_ROOTFS}/etc/default/rcS ]; then + sed -i 's/ROOTFS_READ_ONLY=no/ROOTFS_READ_ONLY=yes/' ${IMAGE_ROOTFS}/etc/default/rcS + fi + # Run populate-volatile.sh at rootfs time to set up basic files + # and directories to support read-only rootfs. + if [ -e ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh ]; then + ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh + fi +} + # allow openssh accept login with empty password string openssh_allow_empty_password () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then