busybox tar does not support the --one-file-system option that we use to keep tar from archiving unnecessary files that live under /dev but are not mounted under the devtmpfs. Instead, when GNU tar is not present, use find to pass tar a list of the files that need to be cached.
Additionally, busybox tar does not complain when timestamps are in the future, and the OE busybox defconfig does not have the TAR_NOPRESERVE_TIME option enabled, so don't use the '-m' option with busybox tar. Signed-off-by: Ben Shelton <[email protected]> --- meta/recipes-core/udev/udev/init | 14 +++++++++----- meta/recipes-core/udev/udev/udev-cache | 12 ++++++++++-- meta/recipes-core/udev/udev/udev-cache.default | 4 ++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/meta/recipes-core/udev/udev/init b/meta/recipes-core/udev/udev/init index 3a52e98..6caf7d5 100644 --- a/meta/recipes-core/udev/udev/init +++ b/meta/recipes-core/udev/udev/init @@ -70,11 +70,15 @@ case "$1" in readfiles "$DEVCACHE_SYSCONF" OLDDATA="$READDATA" if [ "$OLDDATA" = "$NEWDATA" -a -f "$DEVCACHE" ]; then - tar xzf $DEVCACHE -C / $DEVCACHE_EXTRACT_OPTS - not_first_boot=1 - [ "$VERBOSE" != "no" ] && echo "udev: using cache file $DEVCACHE" - [ -e "$DEVCACHE_CURRENT_SYSCONF" ] && rm -f "$DEVCACHE_CURRENT_SYSCONF" - else + if [ ! `readlink -f /bin/tar` = "/bin/tar.tar" ]; then + tar xzf $DEVCACHE -C / $BUSYBOX_DEVCACHE_EXTRACT_OPTS + else + tar xzf $DEVCACHE -C / $DEVCACHE_EXTRACT_OPTS + fi + not_first_boot=1 + [ "$VERBOSE" != "no" ] && echo "udev: using cache file $DEVCACHE" + [ -e "$DEVCACHE_CURRENT_SYSCONF" ] && rm -f "$DEVCACHE_CURRENT_SYSCONF" + else # Output detailed reason why the cached /dev is not used if [ "$VERBOSE" != "no" ]; then echo "udev: udev cache not used" diff --git a/meta/recipes-core/udev/udev/udev-cache b/meta/recipes-core/udev/udev/udev-cache index 7eea5fb..43bc67a 100644 --- a/meta/recipes-core/udev/udev/udev-cache +++ b/meta/recipes-core/udev/udev/udev-cache @@ -28,10 +28,18 @@ fi [ -e "$DEVCACHE_CURRENT_SYSCONF" ] || { echo "not found"; exit 0; } [ "${VERBOSE}" == "no" ] || echo "found; building cache." -( +if [ ! `readlink -f /bin/tar` = "/bin/tar.tar" ]; then + ( + find /dev \( -type b -o -type c -o -type l \) -xdev | cut -c 2- | xargs tar czf "${DEVCACHE}.tmp" -C / $BUSYBOX_DEVCACHE_CREATE_OPTS && \ + mv -f "${DEVCACHE}.tmp" "$DEVCACHE" && \ + mv "$DEVCACHE_CURRENT_SYSCONF" "$DEVCACHE_SYSCONF" + ) & +else + ( tar czf "${DEVCACHE}.tmp" dev -C / $DEVCACHE_CREATE_OPTS && \ mv -f "${DEVCACHE}.tmp" "$DEVCACHE" && \ mv "$DEVCACHE_CURRENT_SYSCONF" "$DEVCACHE_SYSCONF" -) & + ) & +fi exit 0 diff --git a/meta/recipes-core/udev/udev/udev-cache.default b/meta/recipes-core/udev/udev/udev-cache.default index c71826e..d2c1e5c 100644 --- a/meta/recipes-core/udev/udev/udev-cache.default +++ b/meta/recipes-core/udev/udev/udev-cache.default @@ -12,4 +12,8 @@ DEVCACHE_CURRENT_SYSCONF="/dev/shm/udev.cache" DEVCACHE_EXTRACT_OPTS="--exclude=log -m --exclude=udev.cache --one-file-system" DEVCACHE_CREATE_OPTS="--exclude=log --exclude=udev.cache --one-file-system" +# Busybox tar does not support --one-file-system option +BUSYBOX_DEVCACHE_EXTRACT_OPTS="--exclude=log --exclude=udev.cache" +BUSYBOX_DEVCACHE_CREATE_OPTS="--exclude=log --exclude=udev.cache" + PROBE_PLATFORM_BUS="yes" -- 2.0.4 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
