Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/2] udev-extraconf: Don't mount root filesystem under /media
@ 2012-09-18 21:38 Andy Ross
  2012-09-18 21:38 ` [PATCH 1/2] busybox: add /usr/bin/stat applet Andy Ross
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Ross @ 2012-09-18 21:38 UTC (permalink / raw)
  To: openembedded-core

When you boot an image with a kernel-mounted root filesystem
(e.g. "root=/dev/sda1" or the like), the root filesystem also appears
as a read-write filesystem under /media.  The fix has two parts:

2. Modify the mount.sh hook to test the root filesystem device number
instead of the name (which won't match "/dev/root").

1. ...but that breaks on images which use busybox and lack coreutils,
because there is no stat binary.  Add this to the busybox defconfig,
and patch it to live in /usr/bin instead of /bin to match the
coreutils path.

Andy




^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] busybox: add /usr/bin/stat applet
  2012-09-18 21:38 [PATCH 0/2] udev-extraconf: Don't mount root filesystem under /media Andy Ross
@ 2012-09-18 21:38 ` Andy Ross
  2012-09-18 21:38   ` [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media Andy Ross
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Ross @ 2012-09-18 21:38 UTC (permalink / raw)
  To: openembedded-core

The busybox defconfig lacks a stat tool, the functionality of which
cannot be reproduced in a way accessible to a shell script running in
a minimal configuration.  Enable, and modify the installation path to
/usr/bin/stat to match the coreutils tool for proper alternatives
handling.

Signed-off-by: Andy Ross <andy.ross@windriver.com>
---
 meta/recipes-core/busybox/busybox-1.20.2/defconfig  |  4 ++--
 .../busybox/busybox-1.20.2/stat-usr-bin.patch       | 21 +++++++++++++++++++++
 meta/recipes-core/busybox/busybox_1.20.2.bb         |  5 +++--
 3 files changed, 26 insertions(+), 4 deletions(-)
 create mode 100644 meta/recipes-core/busybox/busybox-1.20.2/stat-usr-bin.patch

diff --git a/meta/recipes-core/busybox/busybox-1.20.2/defconfig b/meta/recipes-core/busybox/busybox-1.20.2/defconfig
index dff07f1..b39234f 100644
--- a/meta/recipes-core/busybox/busybox-1.20.2/defconfig
+++ b/meta/recipes-core/busybox/busybox-1.20.2/defconfig
@@ -270,8 +270,8 @@ CONFIG_SORT=y
 CONFIG_FEATURE_SORT_BIG=y
 # CONFIG_SPLIT is not set
 # CONFIG_FEATURE_SPLIT_FANCY is not set
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
 CONFIG_STTY=y
 # CONFIG_SUM is not set
 CONFIG_SYNC=y
diff --git a/meta/recipes-core/busybox/busybox-1.20.2/stat-usr-bin.patch b/meta/recipes-core/busybox/busybox-1.20.2/stat-usr-bin.patch
new file mode 100644
index 0000000..4049324
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox-1.20.2/stat-usr-bin.patch
@@ -0,0 +1,21 @@
+busybox: move /bin/stat to /usr/bin/stat to match coreutils
+
+The coreutils stat binary lives in /usr/bin, fix busybox to use the same path so
+they can be properly tracked by alternatives.
+
+Upstream-Status: Inappropriate [embedded]
+Signed-off-by: Andy Ross <andy.ross@windriver.com>
+
+diff --git a/include/applets.src.h b/include/applets.src.h
+index 0d33bfc..30ae3ad 100644
+--- a/include/applets.src.h
++++ b/include/applets.src.h
+@@ -340,7 +340,7 @@ IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, soft
+ IF_SORT(APPLET_NOEXEC(sort, sort, BB_DIR_USR_BIN, BB_SUID_DROP, sort))
+ IF_SPLIT(APPLET(split, BB_DIR_USR_BIN, BB_SUID_DROP))
+ IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, BB_DIR_SBIN, BB_SUID_DROP, start_stop_daemon))
+-IF_STAT(APPLET(stat, BB_DIR_BIN, BB_SUID_DROP))
++IF_STAT(APPLET(stat, BB_DIR_USR_BIN, BB_SUID_DROP))
+ IF_STRINGS(APPLET(strings, BB_DIR_USR_BIN, BB_SUID_DROP))
+ IF_STTY(APPLET(stty, BB_DIR_BIN, BB_SUID_DROP))
+ /* Needs to be run by root or be suid root - needs to change uid and gid: */
diff --git a/meta/recipes-core/busybox/busybox_1.20.2.bb b/meta/recipes-core/busybox/busybox_1.20.2.bb
index ced04d2..2251383 100644
--- a/meta/recipes-core/busybox/busybox_1.20.2.bb
+++ b/meta/recipes-core/busybox/busybox_1.20.2.bb
@@ -1,5 +1,5 @@
 require busybox.inc
-PR = "r0"
+PR = "r1"
 
 SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
            file://B921600.patch \
@@ -26,7 +26,8 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
            file://defconfig \
            file://busybox-mkfs-minix-tests_bigendian.patch \
            file://fix-for-spurious-testsuite-failure.patch \
-           file://busybox-1.20.2-kernel_ver.patch"
+           file://busybox-1.20.2-kernel_ver.patch \
+           file://stat-usr-bin.patch"
 
 SRC_URI[tarball.md5sum] = "e025414bc6cd79579cc7a32a45d3ae1c"
 SRC_URI[tarball.sha256sum] = "eb13ff01dae5618ead2ef6f92ba879e9e0390f9583bd545d8789d27cf39b6882"
-- 
1.7.11.4




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media
  2012-09-18 21:38 ` [PATCH 1/2] busybox: add /usr/bin/stat applet Andy Ross
@ 2012-09-18 21:38   ` Andy Ross
  2012-09-18 22:25     ` Saul Wold
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Ross @ 2012-09-18 21:38 UTC (permalink / raw)
  To: openembedded-core

The mount.sh handler attempts to prevent already-mounted filesystems
from being mounted as dynamic/removable "/media".  But it misses the
case where the kernel has mounted the root filesystem (e.g. with
"root=/dev/sda1").  In that situation, /proc/mounts has a device name
of "/dev/root" instead of the proper $DEVNAME string exposed by udev.
So we must also test the root filesystem device number vs. the
$MAJOR/$MINOR udev tells us.

Signed-off-by: Andy Ross <andy.ross@windriver.com>
---
 meta/recipes-core/udev/udev-extraconf/mount.sh | 8 ++++++--
 meta/recipes-core/udev/udev-extraconf_1.0.bb   | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-core/udev/udev-extraconf/mount.sh b/meta/recipes-core/udev/udev-extraconf/mount.sh
index 2eb9aff..99c76b2 100644
--- a/meta/recipes-core/udev/udev-extraconf/mount.sh
+++ b/meta/recipes-core/udev/udev-extraconf/mount.sh
@@ -49,8 +49,12 @@ if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
     		$MOUNT $DEVNAME 2> /dev/null
 	fi
 	
-	# If the device isn't mounted at this point, it isn't configured in fstab
-	grep -q "^$DEVNAME " /proc/mounts || automount
+	# If the device isn't mounted at this point, it isn't
+	# configured in fstab (note the root filesystem can show up as
+	# /dev/root in /proc/mounts, so check the device number too)
+	if expr $MAJOR "*" 256 + $MINOR != `stat -c %d /`; then
+		grep -q "^$DEVNAME " /proc/mounts || automount
+	fi
 fi
 
 
diff --git a/meta/recipes-core/udev/udev-extraconf_1.0.bb b/meta/recipes-core/udev/udev-extraconf_1.0.bb
index 9995899..2c4a4f1 100644
--- a/meta/recipes-core/udev/udev-extraconf_1.0.bb
+++ b/meta/recipes-core/udev/udev-extraconf_1.0.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3
 
 inherit allarch
 
-PR = "r6"
+PR = "r7"
 
 SRC_URI = " \
        file://automount.rules \
-- 
1.7.11.4




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media
  2012-09-18 21:38   ` [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media Andy Ross
@ 2012-09-18 22:25     ` Saul Wold
  2012-09-18 22:33       ` Andy Ross
  0 siblings, 1 reply; 6+ messages in thread
From: Saul Wold @ 2012-09-18 22:25 UTC (permalink / raw)
  To: Andy Ross; +Cc: openembedded-core

On 09/18/2012 02:38 PM, Andy Ross wrote:
> The mount.sh handler attempts to prevent already-mounted filesystems
> from being mounted as dynamic/removable "/media".  But it misses the
> case where the kernel has mounted the root filesystem (e.g. with
> "root=/dev/sda1").  In that situation, /proc/mounts has a device name
> of "/dev/root" instead of the proper $DEVNAME string exposed by udev.
> So we must also test the root filesystem device number vs. the
> $MAJOR/$MINOR udev tells us.
>
How much bigger does this make the busybox image?

Sau!

> Signed-off-by: Andy Ross <andy.ross@windriver.com>
> ---
>   meta/recipes-core/udev/udev-extraconf/mount.sh | 8 ++++++--
>   meta/recipes-core/udev/udev-extraconf_1.0.bb   | 2 +-
>   2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/meta/recipes-core/udev/udev-extraconf/mount.sh b/meta/recipes-core/udev/udev-extraconf/mount.sh
> index 2eb9aff..99c76b2 100644
> --- a/meta/recipes-core/udev/udev-extraconf/mount.sh
> +++ b/meta/recipes-core/udev/udev-extraconf/mount.sh
> @@ -49,8 +49,12 @@ if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
>       		$MOUNT $DEVNAME 2> /dev/null
>   	fi
>   	
> -	# If the device isn't mounted at this point, it isn't configured in fstab
> -	grep -q "^$DEVNAME " /proc/mounts || automount
> +	# If the device isn't mounted at this point, it isn't
> +	# configured in fstab (note the root filesystem can show up as
> +	# /dev/root in /proc/mounts, so check the device number too)
> +	if expr $MAJOR "*" 256 + $MINOR != `stat -c %d /`; then
> +		grep -q "^$DEVNAME " /proc/mounts || automount
> +	fi
>   fi
>
>
> diff --git a/meta/recipes-core/udev/udev-extraconf_1.0.bb b/meta/recipes-core/udev/udev-extraconf_1.0.bb
> index 9995899..2c4a4f1 100644
> --- a/meta/recipes-core/udev/udev-extraconf_1.0.bb
> +++ b/meta/recipes-core/udev/udev-extraconf_1.0.bb
> @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3
>
>   inherit allarch
>
> -PR = "r6"
> +PR = "r7"
>
>   SRC_URI = " \
>          file://automount.rules \
>



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media
  2012-09-18 22:25     ` Saul Wold
@ 2012-09-18 22:33       ` Andy Ross
  2012-10-11 20:28         ` Randy MacLeod
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Ross @ 2012-09-18 22:33 UTC (permalink / raw)
  To: Saul Wold; +Cc: openembedded-core

On 09/18/2012 03:25 PM, Saul Wold wrote:
> How much bigger does this make the busybox image?

These binaries are manually stripped and not prelinked, but probably
close enough:

-rwxr-xr-x. 1 andy andy 557312 Sep 18 15:30 busybox-r0
-rwxr-xr-x. 1 andy andy 561696 Sep 18 15:30 busybox-r1

So 4k or 0.8%, basically.

Andy




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media
  2012-09-18 22:33       ` Andy Ross
@ 2012-10-11 20:28         ` Randy MacLeod
  0 siblings, 0 replies; 6+ messages in thread
From: Randy MacLeod @ 2012-10-11 20:28 UTC (permalink / raw)
  To: openembedded-core

On 12-09-18 06:33 PM, Andy Ross wrote:
> On 09/18/2012 03:25 PM, Saul Wold wrote:
>> How much bigger does this make the busybox image?
>
> These binaries are manually stripped and not prelinked, but probably
> close enough:
>
> -rwxr-xr-x. 1 andy andy 557312 Sep 18 15:30 busybox-r0
> -rwxr-xr-x. 1 andy andy 561696 Sep 18 15:30 busybox-r1
>
> So 4k or 0.8%, basically.
>
> Andy
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>

Any news on this being added? I know there's a 1.3 release to get out
so I'm just wondering if we should expect silence then
a flurry of merges after 1.3 is declared in the couple of weeks.

Thanks,
-- 
# Randy MacLeod. SMTS, Linux, Wind River
Direct: 613.963.1350



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-10-11 23:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-18 21:38 [PATCH 0/2] udev-extraconf: Don't mount root filesystem under /media Andy Ross
2012-09-18 21:38 ` [PATCH 1/2] busybox: add /usr/bin/stat applet Andy Ross
2012-09-18 21:38   ` [PATCH 2/2] udev-extraconf: Don't mount root filesystem under /media Andy Ross
2012-09-18 22:25     ` Saul Wold
2012-09-18 22:33       ` Andy Ross
2012-10-11 20:28         ` Randy MacLeod

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox