On Mon, Dec 24, 2012 at 03:54:53PM +0800, [email protected] wrote: > From: Chen Qi <[email protected]> > > Add read-only rootfs support to sysvinit startup system. > > The main ideas here are: > 1) Let populate-volatile.sh run at rootfs time to set up basic > directories and files needed by read-only rootfs. > 2) Use symbolic links to create the illusion that some directories/files > are writable. > > Two extra config files for read-only rootfs support are created, one for > minimal image -- volatiles-readonly-minimal, and the other for sato > image -- volatiles-readonly-sato.
What if you build base-files/initscripts for image with read-only-rootfs and then you build another image without read-only-rootfs? The way you're using it, it's more like DISTRO_FEATURE then IMAGE_FEATURE. For this to work as IMAGE_FEATURE you would need to adjust it in ROOTFS_POSTPROCESS_COMMAND, which is usually bad when base-files/initscripts are later updated by package-manager (loose read-only-rootfs changes) but that probably isn't issue here as it's read-only. Cheers, > > [YOCTO #3404] > [YOCTO #3406] > > Signed-off-by: Chen Qi <[email protected]> > --- > meta/recipes-core/base-files/base-files_3.0.14.bb | 8 +- > .../initscripts/initscripts-1.0/bootmisc.sh | 9 +- > .../initscripts-1.0/populate-volatile.sh | 285 > ++++++++++---------- > .../initscripts/initscripts-1.0/volatiles | 1 + > .../initscripts-1.0/volatiles-readonly-minimal | 23 ++ > .../initscripts-1.0/volatiles-readonly-sato | 30 +++ > meta/recipes-core/initscripts/initscripts_1.0.bb | 15 +- > 7 files changed, 217 insertions(+), 154 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 > > diff --git a/meta/recipes-core/base-files/base-files_3.0.14.bb > b/meta/recipes-core/base-files/base-files_3.0.14.bb > index ba355ee..c48cb8c 100644 > --- a/meta/recipes-core/base-files/base-files_3.0.14.bb > +++ b/meta/recipes-core/base-files/base-files_3.0.14.bb > @@ -1,7 +1,7 @@ > SUMMARY = "Miscellaneous files for the base system." > DESCRIPTION = "The base-files package creates the basic system directory > structure and provides a small set of key configuration files for the system." > SECTION = "base" > -PR = "r72" > +PR = "r73" > LICENSE = "GPLv2" > LIC_FILES_CHKSUM = > "file://licenses/GPL-2;md5=94d55d512a9ba36caa9b7df079bae19f" > # Removed all license related tasks in this recipe as license.bbclass > @@ -67,6 +67,12 @@ hostname = "openembedded" > > BASEFILESISSUEINSTALL ?= "do_install_basefilesissue" > > +do_install_prepend() { > + if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", > "false", d)}; then > + sed -i '/rootfs/ s/defaults/ro/' ${WORKDIR}/fstab > + fi > +} > + > do_install () { > for d in ${dirs755}; do > install -m 0755 -d ${D}$d > diff --git a/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh > b/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh > index 4f76cb4..3b5a47f 100755 > --- a/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh > +++ b/meta/recipes-core/initscripts/initscripts-1.0/bootmisc.sh > @@ -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. > diff --git > a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh > b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh > index d2175d7..9c1ce23 100755 > --- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh > +++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh > @@ -8,192 +8,191 @@ > # 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 > +# Test whether rootfs is read-only or not > +if > ${ROOT_DIR}/etc/test-read-write; then > + ROOTFS_READ_ONLY=no > + rm ${ROOT_DIR}/etc/test-read-write > +else > + ROOTFS_READ_ONLY=yes > +fi 2>/dev/null > + > +# When running populat-volatile.sh at rootfs time, disable cache. > +[ "$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" > > -[ "${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 > + [ `basename "${CFGFILE}"` = "${COREDEF_READONLY}" ] && return 0 > + 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 > fi > diff --git a/meta/recipes-core/initscripts/initscripts-1.0/volatiles > b/meta/recipes-core/initscripts/initscripts-1.0/volatiles > index e0741aa..f7e2ef7 100644 > --- a/meta/recipes-core/initscripts/initscripts-1.0/volatiles > +++ b/meta/recipes-core/initscripts/initscripts-1.0/volatiles > @@ -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 > diff --git > a/meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal > b/meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal > new file mode 100644 > index 0000000..6169ecc > --- /dev/null > +++ b/meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-minimal > @@ -0,0 +1,23 @@ > +# This configuration file lists filesystem objects specific to readonly > rootfs > +# that should get verified during startup and be created if missing. > +# > +# Every line must either be a comment starting with # > +# or a definition of format: > +# <type> <owner> <group> <mode> <path> <linksource> > +# where the items are separated by whitespace ! > +# > +# <type> : d|f|l : (d)irectory|(f)ile|(l)ink > +# > +# A linking example: > +# l root root 0777 /var/test /tmp/testfile > +# f root root 0644 /var/test none > +# > +# Understanding links: > +# When populate-volatile is to verify/create a directory or file, it will > first > +# check its existence. If a link is found to exist in the place of the > target, > +# the path of the target is replaced with the target the link points to. > +# Thus, if a link is in the place to be verified, the object will be created > +# in the place the link points to instead. > +# This explains the order of "link before object" as in the example above, > where > +# a link will be created at /var/test pointing to /tmp/testfile and due to > this > +# link the file defined as /var/test will actually be created as > /tmp/testfile. > diff --git > a/meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-sato > b/meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-sato > new file mode 100644 > index 0000000..e128869 > --- /dev/null > +++ b/meta/recipes-core/initscripts/initscripts-1.0/volatiles-readonly-sato > @@ -0,0 +1,30 @@ > +# This configuration file lists filesystem objects specific to readonly > rootfs > +# that should get verified during startup and be created if missing. > +# > +# Every line must either be a comment starting with # > +# or a definition of format: > +# <type> <owner> <group> <mode> <path> <linksource> > +# where the items are separated by whitespace ! > +# > +# <type> : d|f|l : (d)irectory|(f)ile|(l)ink > +# > +# A linking example: > +# l root root 0777 /var/test /tmp/testfile > +# f root root 0644 /var/test none > +# > +# Understanding links: > +# When populate-volatile is to verify/create a directory or file, it will > first > +# check it's existence. If a link is found to exist in the place of the > target, > +# the path of the target is replaced with the target the link points to. > +# Thus, if a link is in the place to be verified, the object will be created > +# in the place the link points to instead. > +# This explains the order of "link before object" as in the example above, > where > +# a link will be created at /var/test pointing to /tmp/testfile and due to > this > +# link the file defined as /var/test will actually be created as > /tmp/testfile. > +d root root 0755 /var/volatile/lib/ none > +d root root 0755 /var/volatile/lib/dropbear/ none > +d root root 0755 /var/volatile/lib/nfs/ none > +d root root 1777 /var/volatile/lib/dbus/ none > +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 > diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb > b/meta/recipes-core/initscripts/initscripts_1.0.bb > index 39be9a8..d0869ea 100644 > --- a/meta/recipes-core/initscripts/initscripts_1.0.bb > +++ b/meta/recipes-core/initscripts/initscripts_1.0.bb > @@ -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" > > @@ -86,6 +88,15 @@ 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 in case of an > read-only-rootfs image > + if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", > "false" ,d)}; then > + if ${@base_contains("IMAGE_FEATURES", "x11-sato", "true", > "false" ,d)}; then > + install -m 0644 ${WORKDIR}/volatiles-readonly-sato > ${D}${sysconfdir}/default/volatiles/00_core_readonly > + else > + install -m 0644 > ${WORKDIR}/volatiles-readonly-minimal > ${D}${sysconfdir}/default/volatiles/00_core_readonly > + fi > + fi > + > if [ "${TARGET_ARCH}" = "arm" ]; then > install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d > fi > -- > 1.7.9.5 > > > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core -- Martin 'JaMa' Jansa jabber: [email protected]
signature.asc
Description: Digital signature
_______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
