initscripts: support read-only rootfs
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH v5 1/4 sysvinit: add ROOTFS_READ_ONLY variable to rcS-default
From: Chen Qi <[email protected]>
This variable indicates whether the rootfs is intended to be read-only or not. Changing this value from 'no' to 'yes' on a currently running system with read-write rootfs and rebooting will give the user a working system with read-only rootfs.
However, it is not suggested to change its value. Normally, if a read-only rootfs is required, we should build an image with 'read-only-rootfs' image feature.
[YOCTO #3406]
--- meta/recipes-core/sysvinit/sysvinit/rcS-default | 4 ++++ meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
meta/recipes-core/sysvinit/sysvinit/rcS-default +4 -0
@@ -23,3 +23,7 @@ FSCKFIX=yes #TICKADJ=10000 # Enable caching in populate-volatile.sh VOLATILE_ENABLE_CACHE=yes +# Indicate whether the rootfs is intended to be read-only or not. +# Setting ROOTFS_READ_ONLY to yes and rebooting will give you a read-only rootfs. +# Normally you should not change this value. +ROOTFS_READ_ONLY=no
meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb +1 -1
@@ -5,7 +5,7 @@ SECTION = "base" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ file://COPYRIGHT;endline=15;md5=349c872e0066155e1818b786938876a4" -PR = "r9" +PR = "r10" RDEPENDS_${PN} = "${PN}-inittab"
Signature · 1 line
1.7.9.5
Re: [PATCH V5 1/4] sysvinit: add ROOTFS_READ_ONLY variable to rcS-default
Quoted 24 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
This variable indicates whether the rootfs is intended to be read-only or not. Changing this value from 'no' to 'yes' on a currently running system with read-write rootfs and rebooting will give the user a working system with read-only rootfs.
However, it is not suggested to change its value. Normally, if a read-only rootfs is required, we should build an image with 'read-only-rootfs' image feature.
[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- meta/recipes-core/sysvinit/sysvinit/rcS-default | 4 ++++ meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)meta/recipes-core/sysvinit/sysvinit/rcS-default +0
-0
meta/recipes-core/sysvinit/sysvinit/rcS-default FSCKFIX=yes · line 29
Quoted 8 lines
meta/recipes-core/sysvinit/sysvinit/rcS-default +4
-0@@ -23,3 +23,7 @@ FSCKFIX=yes #TICKADJ=10000 # Enable caching in populate-volatile.sh VOLATILE_ENABLE_CACHE=yes +# Indicate whether the rootfs is intended to be read-only or not. +# Setting ROOTFS_READ_ONLY to yes and rebooting will give you a read-only rootfs. +# Normally you should not change this value. +ROOTFS_READ_ONLY=no
Please add a newline at the end of the fine.
Quoted 17 lines
meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb +1
-2@@ -5,7 +5,7 @@ SECTION = "base" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ file://COPYRIGHT;endline=15;md5=349c872e0066155e1818b786938876a4" -PR = "r9" +PR = "r10" RDEPENDS_${PN} = "${PN}-inittab" --1.7.9.5
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
--
Otavio Salvador O.S. Systems
E-mail: [email protected] http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
PATCH v5 2/4 image.bbclass: add two hook funtions
In reply to a message not in the archiveFrom: Chen Qi <[email protected]>
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.
choose_volatile_conf_file: this function is invoked no matter 'read-only-rootfs' is in IMAGE_FEATURES or not, it properly chooses the right conf file for volatile storage handling according to the IMAGE_FEATURES.
[YOCTO #3406]
--- meta/classes/image.bbclass | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
meta/classes/image.bbclass +30 -0
@@ -396,6 +396,36 @@ 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 +} + +# Choose the correct config file for volatile storage handling according to the image type +choose_volatile_conf_file () { + if ${@base_contains("IMAGE_FEATURES", "x11-sato", "true", "false" ,d)}; then + if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + else + if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + fi +} + # allow openssh accept login with empty password string openssh_allow_empty_password () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then
Signature · 1 line
1.7.9.5
Re: [PATCH V5 2/4] image.bbclass: add two hook funtions
Quoted 23 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
read_only_rootfs_hook: this funtion is invoked only if 'read-only-rootfs' is inIMAGE_FEATURES. It tweaks some basic files and makes populate-volatile.shscript run at rootfs time.
choose_volatile_conf_file: this function is invoked no matter 'read-only-rootfs' is inIMAGE_FEATURESor not, it properly chooses the right conf file for volatile storage handling according to theIMAGE_FEATURES.[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)meta/classes/image.bbclass +0
-0
meta/classes/image.bbclass zap_root_password () { · line 402
Quoted 7 lines
meta/classes/image.bbclass +4
-0@@ -396,6 +396,36 @@ 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
Maybe use 'defaults,ro' in fstab?
Quoted 14 lines
meta/classes/image.bbclass +14
-0+ # 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 +} + +# Choose the correct config file for volatile storage handling according to the image type +choose_volatile_conf_file () { + if ${@base_contains("IMAGE_FEATURES", "x11-sato", "true", "false" ,d)}; then
meta/classes/image.bbclass zap_root_password () { · line 426
Quoted 10 lines
meta/classes/image.bbclass +10
-0+ if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + else + if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + fi
Wouldn't be better to have a package which provides the need valatile config? this makes it easy to reuse for other images.
Quoted 9 lines
meta/classes/image.bbclass +2
-1+} + # allow openssh accept login with empty password string openssh_allow_empty_password () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then --1.7.9.5
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
--
Otavio Salvador O.S. Systems
E-mail: [email protected] http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
Re: [PATCH V5 2/4] image.bbclass: add two hook funtions
Hi Otavio,
Thank you for you review and suggestions :)
And please see some details below.
Quoted 27 lines · Otavio Salvador
Quoted 26 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
read_only_rootfs_hook: this funtion is invoked only if 'read-only-rootfs' is inIMAGE_FEATURES. It tweaks some basic files and makes populate-volatile.shscript run at rootfs time.
choose_volatile_conf_file: this function is invoked no matter 'read-only-rootfs' is inIMAGE_FEATURESor not, it properly chooses the right conf file for volatile storage handling according to theIMAGE_FEATURES.[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)meta/classes/image.bbclass +0
-0@@ -396,6 +396,36 @@ zap_root_password () { mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd }
Quoted 5 lines
meta/classes/image.bbclass zap_root_password () { · line 402
Quoted 4 lines
meta/classes/image.bbclass +4
-0+# 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/fstabMaybe use 'defaults,ro' in fstab?
In my understanding, 'ro' and 'defaults,ro' are the same. Maybe I'm wrong, but what's the difference between them?
Quoted 18 lines
Quoted 18 lines
meta/classes/image.bbclass +18
-0+ # 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 +} + +# Choose the correct config file for volatile storage handling according to the image type +choose_volatile_conf_file () { + if ${@base_contains("IMAGE_FEATURES", "x11-sato", "true", "false" ,d)}; then + if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi
Quoted 8 lines
meta/classes/image.bbclass zap_root_password () { · line 426
Quoted 6 lines
meta/classes/image.bbclass +6
-0+ else + if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + fiWouldn't be better to have a package which provides the need valatile config? this makes it easy to reuse for other images.
Yes, you're right.
In fact, I think it should be the initscripts recipe which provides the volatile conf files. Because both populate-volatile.sh and the conf files it uses logically belong to initscripts. So I'll remove this function from image.bbclass and choose the correct conf file in the initscripts recipe.
Also, for the purpose of easy use, as you mentioned above, I think we should allow users to use customized conf file if they want to. So I want to support customized conf file for volatile storages in initscripts recipe.
That's all what I've came up with for now.
I'll send out a patch V6 as soon as possible.
Cheers,
Chen Qi
Quoted 21 lines
Quoted 9 lines
meta/classes/image.bbclass +2
-1+} + # allow openssh accept login with empty password string openssh_allow_empty_password () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then --1.7.9.5
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core--
Otavio SalvadorO.S. Systems
E-mail: [email protected] http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
Re: [PATCH V5 2/4] image.bbclass: add two hook funtions
Quoted 73 lines · ChenQi
Hi Otavio,
Thank you for you review and suggestions :)
And please see some details below.Quoted 27 lines · Otavio Salvador
Quoted 26 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
read_only_rootfs_hook: this funtion is invoked only if 'read-only-rootfs' is inIMAGE_FEATURES. It tweaks some basic files and makes populate-volatile.shscript run at rootfs time.
choose_volatile_conf_file: this function is invoked no matter 'read-only-rootfs' is inIMAGE_FEATURESor not, it properly chooses the right conf file for volatile storage handling according to theIMAGE_FEATURES.[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)meta/classes/image.bbclass +0
-0@@ -396,6 +396,36 @@ zap_root_password () { mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd }Quoted 5 lines
meta/classes/image.bbclass zap_root_password () { · line 402
Quoted 4 lines
meta/classes/image.bbclass +4
-0+# 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/fstabMaybe use 'defaults,ro' in fstab?
In my understanding, 'ro' and 'defaults,ro' are the same. Maybe I'm wrong, but what's the difference between them?
Quoted 26 lines
Quoted 26 lines
meta/classes/image.bbclass +1
-0+ # Change the value of ROOTFS_READ_ONLY in /etc/default/rcSto yes
meta/classes/image.bbclass +2
-0+ if [ -e ${IMAGE_ROOTFS}/etc/default/rcS ]; then + sed -i 's/ROOTFS_READ_ONLY=no/ROOTFS_READ_ONLY=yes/'${IMAGE_ROOTFS}/etc/default/rcS
meta/classes/image.bbclass +9
-0+ 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 +} + +# Choose the correct config file for volatile storage handlingaccording to the image type
meta/classes/image.bbclass +2
-0+choose_volatile_conf_file () { + if ${@base_contains("IMAGE_FEATURES", "x11-sato", "true","false" ,d)}; then
+ if [ -e
${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato ]; then
+ cp
${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato \
+ ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonlymeta/classes/image.bbclass +3
-0+ fi + else + if [ -eQuoted 8 lines
meta/classes/image.bbclass
Quoted 6 lines
${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal ]; then
+ cp
${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal \
+ ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonlymeta/classes/image.bbclass +2
-0+ fi + fiWouldn't be better to have a package which provides the need valatile config? this makes it easy to reuse for other images.
Quoted 5 lines
Yes, you're right.
In fact, I think it should be the initscripts recipe which provides the volatile conf files. Because both
populate-volatile.shand the conf files it uses logically belong to initscripts. So I'll remove this function from image.bbclass and choose the correct conf file in the initscripts recipe.
After examining it a little more bit, I found out that the conf file has to be chosen at rootfs time. It cannot be done by other recipes like initscripts because of the sstate-cache.
For example, if we build a minimal image first and then a sato image without any change to recipes, the recipes will be skipped by bitbake. And as IMAGE_FEATURES are not fully determined until the core-image-xxx.bb file is built, using a do_xxx[vardeps] += "IMAGE_FEATURES" in other recipes still don't do the work.
Quoted 3 lines
Also, for the purpose of easy use, as you mentioned above, I think we should allow users to use customized conf file if they want to. So I want to support customized conf file for volatile storages in initscripts recipe.
The same reason stated above, I can't come up with an elegant solution to this feature. Any suggestion?
Cheers,
Chen Qi
Quoted 34 lines
That's all what I've came up with for now.
I'll send out a patch V6 as soon as possible.Cheers,
Chen QiQuoted 9 lines
Quoted 9 lines
meta/classes/image.bbclass +2
-0+} + # allow openssh accept login with empty password string openssh_allow_empty_password () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; thenSignature · 1 line
1.7.9.5Quoted 12 lines
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-coreSignature · 3 lines
Otavio Salvador O.S. Systems E-mail: [email protected] http://www.ossystems.com.br Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Re: [PATCH V5 2/4] image.bbclass: add two hook funtions
In reply to Otavio SalvadorHi Otavio:
V6 has been sent with support for customized conf files.
Also, the specific conf files are provided by corresponding image recipes, because the contents of the conf files are closely related to the image types.
Cheers,
Chen Qi
Quoted 81 lines · Otavio Salvador
Quoted 23 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
read_only_rootfs_hook: this funtion is invoked only if 'read-only-rootfs' is inIMAGE_FEATURES. It tweaks some basic files and makes populate-volatile.shscript run at rootfs time.
choose_volatile_conf_file: this function is invoked no matter 'read-only-rootfs' is inIMAGE_FEATURESor not, it properly chooses the right conf file for volatile storage handling according to theIMAGE_FEATURES.[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)meta/classes/image.bbclass +0
-0meta/classes/image.bbclass zap_root_password () { · line 402
Quoted 7 lines
meta/classes/image.bbclass +4
-0@@ -396,6 +396,36 @@ 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/fstabMaybe use 'defaults,ro' in fstab?
Quoted 14 lines
meta/classes/image.bbclass +14
-0+ # 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 +} + +# Choose the correct config file for volatile storage handling according to the image type +choose_volatile_conf_file () { + if ${@base_contains("IMAGE_FEATURES", "x11-sato", "true", "false" ,d)}; thenmeta/classes/image.bbclass zap_root_password () { · line 426
Quoted 10 lines
meta/classes/image.bbclass +10
-0+ if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-sato \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + else + if [ -e ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal ]; then + cp ${IMAGE_ROOTFS}/etc/default/volatiles_stage/volatiles-readonly-minimal \ + ${IMAGE_ROOTFS}/etc/default/volatiles/00_core_readonly + fi + fiWouldn't be better to have a package which provides the need valatile config? this makes it easy to reuse for other images.
Quoted 9 lines
meta/classes/image.bbclass +2
-1+} + # allow openssh accept login with empty password string openssh_allow_empty_password () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then --1.7.9.5
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core--
Otavio SalvadorO.S. Systems
E-mail: [email protected] http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
PATCH v5 3/4 core-image.bbclass: support read-only-rootfs image feature
In reply to a message not in the archiveFrom: Chen Qi <[email protected]>
Two hook functions are appended to ROOTFS_POSTPROCESS_COMMAND properly to support the 'read-only-rootfs' image feature.
[YOCTO #3406]
--- meta/classes/core-image.bbclass | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
meta/classes/core-image.bbclass +5 -2
@@ -28,6 +28,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3 # - dev-pkgs - development packages (headers, etc.) for all installed packages in the rootfs # - dbg-pkgs - debug symbol packages for all installed packages in the rootfs # - doc-pkgs - documentation packages for all installed packages in the rootfs +# - read-only-rootfs - tweaks an image to support read-only rootfs # PACKAGE_GROUP_x11 = "packagegroup-core-x11" PACKAGE_GROUP_x11-base = "packagegroup-core-x11-base"
@@ -73,9 +74,11 @@ inherit image # Create /etc/timestamp during image construction to give a reasonably sane default time setting ROOTFS_POSTPROCESS_COMMAND += "rootfs_update_timestamp ; " - +# Choose the correct configuartion files for volatile storage handling +ROOTFS_POSTPROCESS_COMMAND += "choose_volatile_conf_file ; " # Zap the root password if debug-tweaks feature is not enabled ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "", "zap_root_password ; ",d)}' # Allow openssh accept empty password login if both debug-tweaks and ssh-server-openssh are enabled ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks ssh-server-openssh", "openssh_allow_empty_password; ", "",d)}' - +# Tweak the mount options for rootfs in /etc/fstab if read-only-rootfs is enabled +ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "read_only_rootfs_hook; ", "",d)}'
Signature · 1 line
1.7.9.5
Re: [PATCH V5 3/4] core-image.bbclass: support read-only-rootfs image feature
Quoted 25 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
Two hook functions are appended to
ROOTFS_POSTPROCESS_COMMANDproperly to support the 'read-only-rootfs' image feature.[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- meta/classes/core-image.bbclass | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)meta/classes/core-image.bbclass +1
-0@@ -28,6 +28,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3 # - dev-pkgs - development packages (headers, etc.) for all installed packages in the rootfs # - dbg-pkgs - debug symbol packages for all installed packages in the rootfs # - doc-pkgs - documentation packages for all installed packages in the rootfs +# - read-only-rootfs - tweaks an image to support read-only rootfs # PACKAGE_GROUP_x11 = "packagegroup-core-x11" PACKAGE_GROUP_x11-base = "packagegroup-core-x11-base"
meta/classes/core-image.bbclass inherit image · line 78
Quoted 6 lines
meta/classes/core-image.bbclass +2
-1@@ -73,9 +74,11 @@ inherit image # Create /etc/timestamp during image construction to give a reasonably sane default time setting ROOTFS_POSTPROCESS_COMMAND += "rootfs_update_timestamp ; " - +# Choose the correct configuartion files for volatile storage handling +ROOTFS_POSTPROCESS_COMMAND += "choose_volatile_conf_file ; "
You can remove this if you use a package to provide the volatile configuration.
Quoted 11 lines
meta/classes/core-image.bbclass +2
-2# Zap the root password if debug-tweaks feature is not enabled ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "", "zap_root_password ; ",d)}' # Allow openssh accept empty password login if both debug-tweaks and ssh-server-openssh are enabled ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "debug-tweaks ssh-server-openssh", "openssh_allow_empty_password; ", "",d)}' - +# Tweak the mount options for rootfs in /etc/fstab if read-only-rootfs is enabled +ROOTFS_POSTPROCESS_COMMAND += '${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "read_only_rootfs_hook; ", "",d)}' --1.7.9.5
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
--
Otavio Salvador O.S. Systems
E-mail: [email protected] http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
PATCH v5 4/4 initscripts: support read-only rootfs
In reply to a message not in the archiveFrom: Chen Qi <[email protected]>
To support a read-only rootfs, we use symbolic links which point to volatile storage to create the illusion that some directories are writable.
Improve populate-volatile.sh script to support read-only rootfs. Add two default config files specific to read-only-rootfs image.
[YOCTO #3406]
--- .../initscripts/initscripts-1.0/bootmisc.sh | 9 +- .../initscripts-1.0/populate-volatile.sh | 281 ++++++++++---------- .../initscripts/initscripts-1.0/volatiles | 1 + .../initscripts-1.0/volatiles-readonly-minimal | 8 + .../initscripts-1.0/volatiles-readonly-sato | 14 + meta/recipes-core/initscripts/initscripts_1.0.bb | 11 +- 6 files changed, 171 insertions(+), 153 deletions(-) create mode 100644 meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal create mode 100644 meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-sato
meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh +1 -8
@@ -54,14 +54,7 @@ fi # # This is as good a place as any for a sanity check -# /tmp should be a symlink to /var/tmp to cut down on the number -# of mounted ramdisks. -if test ! -L /tmp && test -d /var/tmp -then - rm -rf /tmp - ln -sf /var/tmp /tmp -fi - +# # Set the system clock from hardware clock # If the timestamp is more recent than the current time, # use the timestamp instead.
meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh +138 -143
330 lines not on this page · raw message
meta/recipes-core/initscripts/initscripts-1.0/volatiles +1 -0
@@ -31,6 +31,7 @@ l root root 1777 /var/lock /var/volatile/lock l root root 0755 /var/log /var/volatile/log l root root 0755 /var/run /var/volatile/run l root root 1777 /var/tmp /var/volatile/tmp +l root root 1777 /tmp /var/tmp d root root 0755 /var/lock/subsys none f root root 0664 /var/log/wtmp none f root root 0664 /var/run/utmp none
meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal new file +8 -0
@@ -0,0 +1,8 @@ +# This configuration file lists filesystem objects specific to minimal image +# with read-only rootfs. +# This configuration file will only be applied if the image is minimal and the +# rootfs is read-only. +# For the detailed format information, refer to /etc/default/volatiles/00_core. +d root root 0755 /var/volatile/lib/ none +d root root 0755 /var/volatile/lib/urandom/ none +l root root 0755 /var/lib/urandom /var/volatile/lib/urandom
meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-sato new file +14 -0
@@ -0,0 +1,14 @@ +# This configuration file lists filesystem objects specific to sato image +# with read-only rootfs. +# This configuration file will only be applied if the image is sato and the +# rootfs is read-only. +# For the detailed format information, refer to /etc/default/volatiles/00_core. +d root root 0755 /var/volatile/lib/ none +d root root 0755 /var/volatile/lib/urandom/ none +d root root 0755 /var/volatile/lib/dropbear/ none +d root root 0755 /var/volatile/lib/nfs/ none +d root root 0755 /var/volatile/lib/dbus/ none +l root root 0755 /var/lib/urandom /var/volatile/lib/urandom +l root root 0755 /var/lib/dropbear /var/volatile/lib/dropbear +l root root 0755 /var/lib/nfs /var/volatile/lib/nfs +l root root 0755 /var/lib/dbus /var/volatile/lib/dbus
meta/recipes-core/initscripts/initscripts_1.0.bb +9 -2
@@ -3,7 +3,7 @@ DESCRIPTION = "Initscripts provide the basic system startup initialization scrip SECTION = "base" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" -PR = "r138" +PR = "r139" INHIBIT_DEFAULT_DEPS = "1"
@@ -30,8 +30,10 @@ SRC_URI = "file://functions \ file://device_table.txt \ file://populate-volatile.sh \ file://volatiles \ + file://volatiles-readonly-minimal \ + file://volatiles-readonly-sato \ file://save-rtc.sh \ - file://GPLv2.patch" + file://GPLv2.patch" SRC_URI_append_arm = " file://alignment.sh"
@@ -65,6 +67,7 @@ do_install () { install -d ${D}${sysconfdir}/rc6.d install -d ${D}${sysconfdir}/default install -d ${D}${sysconfdir}/default/volatiles + install -d ${D}${sysconfdir}/default/volatiles_stage install -m 0644 ${WORKDIR}/functions ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/bootmisc.sh ${D}${sysconfdir}/init.d
@@ -86,6 +89,10 @@ do_install () { install -m 0755 ${WORKDIR}/populate-volatile.sh ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/save-rtc.sh ${D}${sysconfdir}/init.d install -m 0644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/00_core + # Install read-only rootfs specific config files + install -m 0644 ${WORKDIR}/volatiles-readonly-sato ${D}${sysconfdir}/default/volatiles_stage/volatiles-readonly-sato + install -m 0644 ${WORKDIR}/volatiles-readonly-minimal ${D}${sysconfdir}/default/volatiles_stage/volatiles-readonly-minimal + if [ "${TARGET_ARCH}" = "arm" ]; then install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d fi
Signature · 1 line
1.7.9.5
Quoted 7 lines · On Mon, Dec 31, 2012 at 12:16 AM, <[email protected]> wrote:
From: Chen Qi <[email protected]>
To support a read-only rootfs, we use symbolic links which point to volatile storage to create the illusion that some directories are writable.
Improve
populate-volatile.shscript to support read-only rootfs.
Good.
Quoted 1 line
Add two default config files specific to read-only-rootfs image.
I'd prefer it to be in another package.
Quoted 52 lines
[YOCTO #3406]
Signed-off-by Chen Qi <[email protected]>--- .../initscripts/initscripts-1.0/bootmisc.sh | 9 +- .../initscripts-1.0/populate-volatile.sh | 281 ++++++++++---------- .../initscripts/initscripts-1.0/volatiles | 1 + .../initscripts-1.0/volatiles-readonly-minimal | 8 + .../initscripts-1.0/volatiles-readonly-sato | 14 + meta/recipes-core/initscripts/initscripts_1.0.bb | 11 +- 6 files changed, 171 insertions(+), 153 deletions(-) create mode 100644 meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal create mode 100644 meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-satometa/recipes-core/initscripts/initscripts-1.0/bootmisc.sh +1
-8@@ -54,14 +54,7 @@ fi # # This is as good a place as any for a sanity check -# /tmp should be a symlink to /var/tmp to cut down on the number -# of mounted ramdisks. -if test ! -L /tmp && test -d /var/tmp -then - rm -rf /tmp - ln -sf /var/tmp /tmp -fi - +# # Set the system clock from hardware clock # If the timestamp is more recent than the current time, # use the timestamp instead.meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh +6
-4@@ -8,192 +8,187 @@ # Short-Description: Populate the volatile filesystem ### END INIT INFO -. /etc/default/rcS - -CFGDIR="/etc/default/volatiles" -TMPROOT="/var/tmp" +# Get ROOT_DIR +DIRNAME=`dirname $0` +ROOT_DIR=`echo $DIRNAME | sed -ne 's:etc/.*::p'` + +. ${ROOT_DIR}/etc/default/rcS +# When running populat-volatile.sh at rootfs time, disable cache.
meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh line 26
Quoted 10 lines
meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh +9
-0+[ "$ROOT_DIR" != "/" ] && VOLATILE_ENABLE_CACHE=no +# If rootfs is read-only, disable cache. +[ "$ROOTFS_READ_ONLY" = "yes" ] && VOLATILE_ENABLE_CACHE=no +# All above statements will be moved to a central place, say var.sh which +# encapsulates '. /etc/default/rcS'. + +CFGDIR="${ROOT_DIR}/etc/default/volatiles" +TMPROOT="${ROOT_DIR}/var/volatile/tmp" COREDEF="00_core" +COREDEF_READONLY="00_core_readonly"
Why a specific readonly file?
Couldn't it be done using a 01_sato_readonly? for example?
Quoted 401 lines
meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh +123
-139-[ "${VERBOSE}" != "no" ] && echo "Populating volatile Filesystems." +[ "${VERBOSE}" != "no" ] && echo "Setting up basic files related to volatile storage under ${ROOT_DIR}." create_file() { - EXEC=" - touch \"$1\"; - chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1; - chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 " + EXEC=" + touch \"$1\"; + chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" > /dev/null 2>&1; + chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" > /dev/null 2>&1 " test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache.build [ -e "$1" ] && { - [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping." + [ "${VERBOSE}" != "no" ] && echo "Target $1 already exists. Skipping." } || { - eval $EXEC & + if [ "$ROOT_DIR" = "/" ]; then + eval $EXEC + else + # Some operations at rootfs time may fail and should fail, + # but these failures should not be logged. + eval $EXEC > /dev/null 2>&1 + fi } } mk_dir() { EXEC=" mkdir -p \"$1\"; - chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1; - chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 " + chown ${TUSER}.${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" 2>&1; + chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" 2>&1 " test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache.build [ -e "$1" ] && { - [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping." + [ "${VERBOSE}" != "no" ] && echo "Target ${1} already exists. Skipping." } || { - eval $EXEC + if [ "$ROOT_DIR" = "/" ]; then + eval $EXEC + else + # Some operations at rootfs time may fail and should fail, + # but these failures should not be logged. + eval $EXEC > /dev/null 2>&1 + fi } } link_file() { - EXEC="test -e \"$2\" -o -L $2 || ln -s \"$1\" \"$2\" >/dev/tty0 2>&1" - - test "$VOLATILE_ENABLE_CACHE" = yes && echo " $EXEC" >> /etc/volatile.cache.build - - [ -e "$2" ] && { - echo "Cannot create link over existing -${TNAME}-." >&2 - } || { - eval $EXEC & - } + EXEC=" + if [ -L \"$2\" ]; then + [ \"$(readlink -f \"$2\")\" != \"$(readlink -f \"$1\")\" ] && { rm -f \"$2\"; ln -sf \"$1\" \"$2\"; }; + elif [ -d \"$2\" ]; then + rm -rf \"$2\"; + ln -sf \"$1\" \"$2\"; + else + ln -sf \"$1\" \"$2\"; + fi + " + test "$VOLATILE_ENABLE_CACHE" = yes && echo " $EXEC" >> /etc/volatile.cache.build + if [ "$ROOT_DIR" = "/" ]; then + eval $EXEC + else + # Some operations at rootfs time may fail and should fail, + # but these failures should not be logged + eval $EXEC > /dev/null 2>&1 + fi } check_requirements() { + cleanup() { + rm "${TMP_INTERMED}" + rm "${TMP_DEFINED}" + rm "${TMP_COMBINED}" + } + + CFGFILE="$1" + [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0 + # $COREDEF_READONLY conf file should only be applied when rootfs is read-only + if [ `basename "${CFGFILE}"` = "${COREDEF_READONLY}" ]; then + [ "$ROOTFS_READ_ONLY" = "yes" ] && return 0 || return 1 + fi + + TMP_INTERMED="${TMPROOT}/tmp.$$" + TMP_DEFINED="${TMPROOT}/tmpdefined.$$" + TMP_COMBINED="${TMPROOT}/tmpcombined.$$" + + cat ${ROOT_DIR}/etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}" + cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}" + cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}" + NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`" + NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`" + + [ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && { + echo "Undefined users:" + diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>" + cleanup + return 1 + } - cleanup() { - rm "${TMP_INTERMED}" - rm "${TMP_DEFINED}" - rm "${TMP_COMBINED}" - } - - CFGFILE="$1" - - [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0 - - TMP_INTERMED="${TMPROOT}/tmp.$$" - TMP_DEFINED="${TMPROOT}/tmpdefined.$$" - TMP_COMBINED="${TMPROOT}/tmpcombined.$$" - - - cat /etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}" - cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}" - cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}" - - NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`" - NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`" - - [ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && { - echo "Undefined users:" - diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>" - cleanup - return 1 - } - - - cat /etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}" - cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}" - cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}" - NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`" - NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`" + cat ${ROOT_DIR}/etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}" + cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}" + cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}" - [ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && { - echo "Undefined groups:" - diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>" - cleanup - return 1 - } + NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`" + NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`" - # Add checks for required directories here + [ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && { + echo "Undefined groups:" + diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>" + cleanup + return 1 + } - cleanup - return 0 - } + cleanup + return 0 +} apply_cfgfile() { + CFGFILE="$1" + [ ${VERBOSE} != "no" ] && echo "Applying config file: $CFGFILE" + + check_requirements "${CFGFILE}" || { + echo "Skipping ${CFGFILE}" + return 1 + } + + cat ${CFGFILE} | grep -v "^#" | sed -e '/^$/ d' | \ + while read LINE; do + eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"` + TNAME=${ROOT_DIR}/${TNAME} + [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-." + + [ "${TTYPE}" = "l" ] && { + TSOURCE="$TLTARGET" + [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-." + link_file "${TSOURCE}" "${TNAME}" + continue + } + case "${TTYPE}" in + "f") [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-." + create_file "${TNAME}" + ;; + "d") [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-." + mk_dir "${TNAME}" + ;; + *) [ "${VERBOSE}" != "no" ] && echo "Invalid type -${TTYPE}-." + continue + ;; + esac + done + return 0 +} - CFGFILE="$1" - - check_requirements "${CFGFILE}" || { - echo "Skipping ${CFGFILE}" - return 1 - } - - cat ${CFGFILE} | grep -v "^#" | \ - while read LINE; do - - eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\ \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5 TLTARGET=\6/p"` - - [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-." - - - [ "${TTYPE}" = "l" ] && { - TSOURCE="$TLTARGET" - [ -L "${TNAME}" ] || { - [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-." - link_file "${TSOURCE}" "${TNAME}" & - } - continue - } - - [ -L "${TNAME}" ] && { - [ "${VERBOSE}" != "no" ] && echo "Found link." - NEWNAME=`ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/'` - echo ${NEWNAME} | grep -v "^/" >/dev/null && { - TNAME="`echo ${TNAME} | sed -e 's@\(.*\)/.*@\1@'`/${NEWNAME}" - [ "${VERBOSE}" != "no" ] && echo "Converted relative linktarget to absolute path -${TNAME}-." - } || { - TNAME="${NEWNAME}" - [ "${VERBOSE}" != "no" ] && echo "Using absolute link target -${TNAME}-." - } - } - - case "${TTYPE}" in - "f") [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-." - create_file "${TNAME}" & - ;; - "d") [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-." - mk_dir "${TNAME}" - # Add check to see if there's an entry in fstab to mount. - ;; - *) [ "${VERBOSE}" != "no" ] && echo "Invalid type -${TTYPE}-." - continue - ;; - esac - - - done - - return 0 - - } - -clearcache=0 -exec 9</proc/cmdline -while read line <&9 -do - case "$line" in - *clearcache*) clearcache=1 - ;; - *) continue - ;; - esac -done -exec 9>&- - -if test -e /etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0" +if test -e ${ROOT_DIR}/etc/volatile.cache -a $VOLATILE_ENABLE_CACHE = yes -a x$1 != xupdate then - sh /etc/volatile.cache + sh ${ROOT_DIR}/etc/volatile.cache else - rm -f /etc/volatile.cache /etc/volatile.cache.build + rm -f ${ROOT_DRI}/etc/volatile.cache ${ROOT_DIR}/etc/volatile.cache.build for file in `ls -1 "${CFGDIR}" | sort`; do apply_cfgfile "${CFGDIR}/${file}" done - [ -e /etc/volatile.cache.build ] && sync && mv /etc/volatile.cache.build /etc/volatile.cache + [ -e ${ROOT_DIR}/etc/volatile.cache.build ] && sync && mv ${ROOT_DIR}/etc/volatile.cache.build ${ROOT_DIR}/etc/volatile.cache fi -if test -f /etc/ld.so.cache -a ! -f /var/run/ld.so.cache +if [ "${ROOT_DIR}" = "/" ] && [ -f /etc/ld.so.cache ] && [ ! -f /var/run/ld.so.cache ] then ln -s /etc/ld.so.cache /var/run/ld.so.cache fimeta/recipes-core/initscripts/initscripts-1.0/volatiles +1
-0@@ -31,6 +31,7 @@ l root root 1777 /var/lock /var/volatile/lock l root root 0755 /var/log /var/volatile/log l root root 0755 /var/run /var/volatile/run l root root 1777 /var/tmp /var/volatile/tmp +l root root 1777 /tmp /var/tmp d root root 0755 /var/lock/subsys none f root root 0664 /var/log/wtmp none f root root 0664 /var/run/utmp nonemeta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal new file +8
-0@@ -0,0 +1,8 @@ +# This configuration file lists filesystem objects specific to minimal image +# with read-only rootfs. +# This configuration file will only be applied if the image is minimal and the +# rootfs is read-only. +# For the detailed format information, refer to /etc/default/volatiles/00_core. +d root root 0755 /var/volatile/lib/ none +d root root 0755 /var/volatile/lib/urandom/ none +l root root 0755 /var/lib/urandom /var/volatile/lib/urandommeta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-sato new file +14
-0@@ -0,0 +1,14 @@ +# This configuration file lists filesystem objects specific to sato image +# with read-only rootfs. +# This configuration file will only be applied if the image is sato and the +# rootfs is read-only. +# For the detailed format information, refer to /etc/default/volatiles/00_core. +d root root 0755 /var/volatile/lib/ none +d root root 0755 /var/volatile/lib/urandom/ none +d root root 0755 /var/volatile/lib/dropbear/ none +d root root 0755 /var/volatile/lib/nfs/ none +d root root 0755 /var/volatile/lib/dbus/ none +l root root 0755 /var/lib/urandom /var/volatile/lib/urandom +l root root 0755 /var/lib/dropbear /var/volatile/lib/dropbear +l root root 0755 /var/lib/nfs /var/volatile/lib/nfs +l root root 0755 /var/lib/dbus /var/volatile/lib/dbusmeta/recipes-core/initscripts/initscripts_1.0.bb +9
-3@@ -3,7 +3,7 @@ DESCRIPTION = "Initscripts provide the basic system startup initialization scrip SECTION = "base" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" -PR = "r138" +PR = "r139" INHIBIT_DEFAULT_DEPS = "1"@@ -30,8 +30,10 @@ SRC_URI = "file://functions \ file://device_table.txt \ file://populate-volatile.sh \ file://volatiles \ + file://volatiles-readonly-minimal \ + file://volatiles-readonly-sato \ file://save-rtc.sh \ - file://GPLv2.patch" + file://GPLv2.patch" SRC_URI_append_arm = " file://alignment.sh"@@ -65,6 +67,7 @@ do_install () { install -d ${D}${sysconfdir}/rc6.d install -d ${D}${sysconfdir}/default install -d ${D}${sysconfdir}/default/volatiles + install -d ${D}${sysconfdir}/default/volatiles_stage install -m 0644 ${WORKDIR}/functions ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/bootmisc.sh ${D}${sysconfdir}/init.d@@ -86,6 +89,10 @@ do_install () { install -m 0755 ${WORKDIR}/populate-volatile.sh ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/save-rtc.sh ${D}${sysconfdir}/init.d install -m 0644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/00_core + # Install read-only rootfs specific config files + install -m 0644 ${WORKDIR}/volatiles-readonly-sato ${D}${sysconfdir}/default/volatiles_stage/volatiles-readonly-sato + install -m 0644 ${WORKDIR}/volatiles-readonly-minimal ${D}${sysconfdir}/default/volatiles_stage/volatiles-readonly-minimal + if [ "${TARGET_ARCH}" = "arm" ]; then install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d fi --1.7.9.5
Quoted 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
--
Otavio Salvador O.S. Systems
E-mail: [email protected] http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br