| Submitter | Qi.Chen@windriver.com |
|---|---|
| Date | Feb. 19, 2013, 7:38 a.m. |
| Message ID | <faa3ee348ac4e3d74d7f2f00d954ed6ee845bba1.1361258872.git.Qi.Chen@windriver.com> |
| Download | mbox | patch |
| Permalink | /patch/44825/ |
| State | New |
| Headers | show |
Comments
On 19 February 2013 08:38, <Qi.Chen@windriver.com> wrote: > From: Chen Qi <Qi.Chen@windriver.com> > > 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. > > For now, it has real effect only if the init system is sysvinit. > > [YOCTO #3406] > > Signed-off-by: Chen Qi <Qi.Chen@windriver.com> > --- > meta/classes/image.bbclass | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > index dd78acb..7d533b6 100644 > --- a/meta/classes/image.bbclass > +++ b/meta/classes/image.bbclass > @@ -233,6 +233,24 @@ run_intercept_scriptlets () { > fi > } > > +# A hook function to support read-only-rootfs IMAGE_FEATURES > +# Currently, it only supports sysvinit system. > +read_only_rootfs_hook () { > + if ${@base_contains("DISTRO_FEATURES", "sysvinit", "true", "false", d)}; then > + # Tweak the mount option in fstab > + sed -i '/rootfs/ s/defaults/ro/' ${IMAGE_ROOTFS}/etc/fstab to be cautious i would say sed -i -e '/^[#[:space:]]*rootfs/s/defaults/ro/' ${IMAGE_ROOTFS}/etc/fstab for ro rootfs fs_passno should be set to 0, too, imo: sed -i -e '/^[#[:space:]]*rootfs/{s/defaults/ro/;s/\([[:space:]]*[[:digit:]]\)\([[:space:]]*\)[[:digit:]]$/\1\20/}' ${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 -x if you want to execute it below. > + ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh > + fi > + fi > +} > + > fakeroot do_rootfs () { > #set -x > # When use the rpm incremental image generation, don't remove the rootfs
On 02/19/2013 07:39 PM, Bernhard Reutner-Fischer wrote: > On 19 February 2013 08:38, <Qi.Chen@windriver.com> wrote: >> From: Chen Qi <Qi.Chen@windriver.com> >> >> 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. >> >> For now, it has real effect only if the init system is sysvinit. >> >> [YOCTO #3406] >> >> Signed-off-by: Chen Qi <Qi.Chen@windriver.com> >> --- >> meta/classes/image.bbclass | 18 ++++++++++++++++++ >> 1 file changed, 18 insertions(+) >> >> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass >> index dd78acb..7d533b6 100644 >> --- a/meta/classes/image.bbclass >> +++ b/meta/classes/image.bbclass >> @@ -233,6 +233,24 @@ run_intercept_scriptlets () { >> fi >> } >> >> +# A hook function to support read-only-rootfs IMAGE_FEATURES >> +# Currently, it only supports sysvinit system. >> +read_only_rootfs_hook () { >> + if ${@base_contains("DISTRO_FEATURES", "sysvinit", "true", "false", d)}; then >> + # Tweak the mount option in fstab >> + sed -i '/rootfs/ s/defaults/ro/' ${IMAGE_ROOTFS}/etc/fstab > to be cautious i would say > sed -i -e '/^[#[:space:]]*rootfs/s/defaults/ro/' ${IMAGE_ROOTFS}/etc/fstab > for ro rootfs fs_passno should be set to 0, too, imo: > sed -i -e '/^[#[:space:]]*rootfs/{s/defaults/ro/;s/\([[:space:]]*[[:digit:]]\)\([[:space:]]*\)[[:digit:]]$/\1\20/}' > ${IMAGE_ROOTFS}/etc/fstab Thank you for your suggestion. Version 2 has been sent out. Best Regards, Chen Qi >> + # 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 > -x if you want to execute it below. >> + ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh >> + fi >> + fi >> +} >> + >> fakeroot do_rootfs () { >> #set -x >> # When use the rpm incremental image generation, don't remove the rootfs >
Patch
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index dd78acb..7d533b6 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -233,6 +233,24 @@ run_intercept_scriptlets () { fi } +# A hook function to support read-only-rootfs IMAGE_FEATURES +# Currently, it only supports sysvinit system. +read_only_rootfs_hook () { + if ${@base_contains("DISTRO_FEATURES", "sysvinit", "true", "false", d)}; then + # 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 + fi +} + fakeroot do_rootfs () { #set -x # When use the rpm incremental image generation, don't remove the rootfs