Patchwork initrdscripts: fix udevd path

login
register
mail settings
Submitter Alexandru DAMIAN
Date Nov. 1, 2012, 2:32 p.m.
Message ID <1351780335-12617-1-git-send-email-alexandru.damian@intel.com>
Download mbox | patch
Permalink /patch/38759/
State New
Headers show

Comments

Alexandru DAMIAN - Nov. 1, 2012, 2:32 p.m.
From: Ross Burton <ross.burton@intel.com>

udevd moved location and isn't in $PATH anymore, so use an absolute path to
start it.

The control socket path moved too, so mkdir the directory it's in.

Signed-off-by: Ross Burton <ross.burton@intel.com>
---
 meta/recipes-core/initrdscripts/files/init-live.sh |   50 +++++++++++++++++---
 .../initrdscripts/initramfs-framework/udev         |    6 +--
 .../initrdscripts/initramfs-framework_1.0.bb       |    2 +
 .../initrdscripts/initramfs-live-boot_1.0.bb       |    2 +-
 4 files changed, 50 insertions(+), 10 deletions(-)
Richard Purdie - Nov. 1, 2012, 7:31 p.m.
On Thu, 2012-11-01 at 16:32 +0200, Alex DAMIAN wrote:
> From: Ross Burton <ross.burton@intel.com>
> 
> udevd moved location and isn't in $PATH anymore, so use an absolute path to
> start it.
> 
> The control socket path moved too, so mkdir the directory it's in.

This patch looks to do a little more than that...

Cheers,

Richard

> Signed-off-by: Ross Burton <ross.burton@intel.com>
> ---
>  meta/recipes-core/initrdscripts/files/init-live.sh |   50 +++++++++++++++++---
>  .../initrdscripts/initramfs-framework/udev         |    6 +--
>  .../initrdscripts/initramfs-framework_1.0.bb       |    2 +
>  .../initrdscripts/initramfs-live-boot_1.0.bb       |    2 +-
>  4 files changed, 50 insertions(+), 10 deletions(-)
> 
> diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
> index 5682fd1..fdea892 100644
> --- a/meta/recipes-core/initrdscripts/files/init-live.sh
> +++ b/meta/recipes-core/initrdscripts/files/init-live.sh
> @@ -19,7 +19,8 @@ early_setup() {
>      modprobe isofs 2> /dev/null
>  
>      mkdir -p /run
> -    udevd --daemon
> +    mkdir -p /var/run
> +    /lib/udev/udevd --daemon
>      udevadm trigger --action=add
>  }
>  
> @@ -68,13 +69,49 @@ fatal() {
>  
>  early_setup
>  
> +# wait for the udevd to settle
> +echo "Waiting for udev to settle..."
> +sleep 3
> +
>  [ -z "$CONSOLE" ] && CONSOLE="/dev/console"
>  
>  read_args
>  
> -echo "Waiting for removable media..."
> -while true
> +# boot partiton menu, if one or more bootable partitions exist
> +BOOTMENU=`ls /media/sd*/sbin/init 2>/dev/null | wc -l`
> +if [ $BOOTMENU -gt 0 ]; then
> +	choice=0
> +	while [ $choice -le 0 ]; do
> +		echo "1). boot live ramfs image"
> +		count=2
> +		for i in `ls /media/sd*/sbin/init 2>/dev/null | cut -d "/" -f 3`; do
> +			echo $count"). boot /dev/"$i
> +			choicecmd[$count]=$i
> +			count=$(( count + 1))
> +		done
> +		echo
> +		echo -n "Your choice: "
> +		read choice
> +	done
> +	
> +	if [ $choice -gt 1 ]; then 
> +		#ROOT_MOUNT=/media/${choicecmd[${choice}]}
> +		ROOT_MOUNT=none	#testing
> +		echo "Booting local root ... $ROOT_MOUNT"
> +		if [ -d $ROOT_MOUNT ]; then
> +			boot_live_root
> +		else
> +			fatal "Rootfs partition not mounted"
> +		fi
> +	fi
> +fi	
> +
> +echo -n "Waiting for removable media... "
> +CNT=0
> +while [ $CNT -le 3 ];
>  do
> +  echo -n "$CNT "
> +  CNT=$(( $CNT + 1 ))
>    for i in `ls /media 2>/dev/null`; do
>        if [ -f /media/$i/$ROOT_IMAGE ] ; then
>  		found="yes"
> @@ -82,7 +119,7 @@ do
>  	  elif [ -f /media/$i/isolinux/$ROOT_IMAGE ]; then
>  		found="yes"
>  		ISOLINUX="isolinux"
> -		break	
> +		break
>        fi
>    done
>    if [ "$found" = "yes" ]; then
> @@ -90,13 +127,14 @@ do
>    fi
>    sleep 1
>  done
> +if [ "$found" != "yes" ]; then
> +	fatal "...could not mount removable media, drop to shell"
> +fi
>  
>  case $label in
>      boot)
>  	mkdir $ROOT_MOUNT
>  	mknod /dev/loop0 b 7 0 2>/dev/null
> -
> -	
>  	if [ "$UNIONFS" = "yes" ]; then
>  	    mkdir /rootfs-tmp
>  
> diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev
> index 9ea8aa3..15a1d5b 100644
> --- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
> +++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
> @@ -3,8 +3,8 @@
>  # Licensed on MIT
>  
>  udev_enabled() {
> -	if [ ! -e /sbin/udevd ]; then
> -		debug "/sbin/udev doesn't exist"
> +	if [ ! -e /lib/udev/udevd ]; then
> +		debug "/lib/udev/udev doesn't exist"
>  		return 1
>  	fi
>  
> @@ -14,7 +14,7 @@ udev_enabled() {
>  udev_run() {
>  	mkdir -p /run
>  
> -	udevd --daemon > /dev/null
> +	/lib/udev/udevd --daemon > /dev/null
>  	udevadm trigger --action=add
>  	udevadm settle
>  
> diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
> index 58e41d4..45d6592 100644
> --- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
> +++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
> @@ -3,6 +3,8 @@ LICENSE = "MIT"
>  LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>  RDEPENDS = "busybox"
>  
> +PR = "r1"
> +
>  inherit allarch
>  
>  SRC_URI = "file://init \
> diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
> index 137a401..55a8600 100644
> --- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
> +++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
> @@ -5,7 +5,7 @@ RDEPENDS = "udev"
>  DEPENDS = "virtual/kernel"
>  SRC_URI = "file://init-live.sh"
>  
> -PR = "r10"
> +PR = "r11"
>  
>  do_compile() {
>  	#if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config; then
Alexandru DAMIAN - Nov. 2, 2012, 1:07 p.m.
I submitted a new patch in a separate mail, with proper description.

Alex


On Thu, Nov 1, 2012 at 9:31 PM, Richard Purdie <
richard.purdie@linuxfoundation.org> wrote:

> On Thu, 2012-11-01 at 16:32 +0200, Alex DAMIAN wrote:
> > From: Ross Burton <ross.burton@intel.com>
> >
> > udevd moved location and isn't in $PATH anymore, so use an absolute path
> to
> > start it.
> >
> > The control socket path moved too, so mkdir the directory it's in.
>
> This patch looks to do a little more than that...
>
> Cheers,
>
> Richard
>
> > Signed-off-by: Ross Burton <ross.burton@intel.com>
> > ---
> >  meta/recipes-core/initrdscripts/files/init-live.sh |   50
> +++++++++++++++++---
> >  .../initrdscripts/initramfs-framework/udev         |    6 +--
> >  .../initrdscripts/initramfs-framework_1.0.bb       |    2 +
> >  .../initrdscripts/initramfs-live-boot_1.0.bb       |    2 +-
> >  4 files changed, 50 insertions(+), 10 deletions(-)
> >
> > diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh
> b/meta/recipes-core/initrdscripts/files/init-live.sh
> > index 5682fd1..fdea892 100644
> > --- a/meta/recipes-core/initrdscripts/files/init-live.sh
> > +++ b/meta/recipes-core/initrdscripts/files/init-live.sh
> > @@ -19,7 +19,8 @@ early_setup() {
> >      modprobe isofs 2> /dev/null
> >
> >      mkdir -p /run
> > -    udevd --daemon
> > +    mkdir -p /var/run
> > +    /lib/udev/udevd --daemon
> >      udevadm trigger --action=add
> >  }
> >
> > @@ -68,13 +69,49 @@ fatal() {
> >
> >  early_setup
> >
> > +# wait for the udevd to settle
> > +echo "Waiting for udev to settle..."
> > +sleep 3
> > +
> >  [ -z "$CONSOLE" ] && CONSOLE="/dev/console"
> >
> >  read_args
> >
> > -echo "Waiting for removable media..."
> > -while true
> > +# boot partiton menu, if one or more bootable partitions exist
> > +BOOTMENU=`ls /media/sd*/sbin/init 2>/dev/null | wc -l`
> > +if [ $BOOTMENU -gt 0 ]; then
> > +     choice=0
> > +     while [ $choice -le 0 ]; do
> > +             echo "1). boot live ramfs image"
> > +             count=2
> > +             for i in `ls /media/sd*/sbin/init 2>/dev/null | cut -d "/"
> -f 3`; do
> > +                     echo $count"). boot /dev/"$i
> > +                     choicecmd[$count]=$i
> > +                     count=$(( count + 1))
> > +             done
> > +             echo
> > +             echo -n "Your choice: "
> > +             read choice
> > +     done
> > +
> > +     if [ $choice -gt 1 ]; then
> > +             #ROOT_MOUNT=/media/${choicecmd[${choice}]}
> > +             ROOT_MOUNT=none #testing
> > +             echo "Booting local root ... $ROOT_MOUNT"
> > +             if [ -d $ROOT_MOUNT ]; then
> > +                     boot_live_root
> > +             else
> > +                     fatal "Rootfs partition not mounted"
> > +             fi
> > +     fi
> > +fi
> > +
> > +echo -n "Waiting for removable media... "
> > +CNT=0
> > +while [ $CNT -le 3 ];
> >  do
> > +  echo -n "$CNT "
> > +  CNT=$(( $CNT + 1 ))
> >    for i in `ls /media 2>/dev/null`; do
> >        if [ -f /media/$i/$ROOT_IMAGE ] ; then
> >               found="yes"
> > @@ -82,7 +119,7 @@ do
> >         elif [ -f /media/$i/isolinux/$ROOT_IMAGE ]; then
> >               found="yes"
> >               ISOLINUX="isolinux"
> > -             break
> > +             break
> >        fi
> >    done
> >    if [ "$found" = "yes" ]; then
> > @@ -90,13 +127,14 @@ do
> >    fi
> >    sleep 1
> >  done
> > +if [ "$found" != "yes" ]; then
> > +     fatal "...could not mount removable media, drop to shell"
> > +fi
> >
> >  case $label in
> >      boot)
> >       mkdir $ROOT_MOUNT
> >       mknod /dev/loop0 b 7 0 2>/dev/null
> > -
> > -
> >       if [ "$UNIONFS" = "yes" ]; then
> >           mkdir /rootfs-tmp
> >
> > diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev
> b/meta/recipes-core/initrdscripts/initramfs-framework/udev
> > index 9ea8aa3..15a1d5b 100644
> > --- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
> > +++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
> > @@ -3,8 +3,8 @@
> >  # Licensed on MIT
> >
> >  udev_enabled() {
> > -     if [ ! -e /sbin/udevd ]; then
> > -             debug "/sbin/udev doesn't exist"
> > +     if [ ! -e /lib/udev/udevd ]; then
> > +             debug "/lib/udev/udev doesn't exist"
> >               return 1
> >       fi
> >
> > @@ -14,7 +14,7 @@ udev_enabled() {
> >  udev_run() {
> >       mkdir -p /run
> >
> > -     udevd --daemon > /dev/null
> > +     /lib/udev/udevd --daemon > /dev/null
> >       udevadm trigger --action=add
> >       udevadm settle
> >
> > diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bbb/meta/recipes-core/initrdscripts/
> initramfs-framework_1.0.bb
> > index 58e41d4..45d6592 100644
> > --- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
> > +++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
> > @@ -3,6 +3,8 @@ LICENSE = "MIT"
> >  LIC_FILES_CHKSUM =
> "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
> >  RDEPENDS = "busybox"
> >
> > +PR = "r1"
> > +
> >  inherit allarch
> >
> >  SRC_URI = "file://init \
> > diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bbb/meta/recipes-core/initrdscripts/
> initramfs-live-boot_1.0.bb
> > index 137a401..55a8600 100644
> > --- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
> > +++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
> > @@ -5,7 +5,7 @@ RDEPENDS = "udev"
> >  DEPENDS = "virtual/kernel"
> >  SRC_URI = "file://init-live.sh"
> >
> > -PR = "r10"
> > +PR = "r11"
> >
> >  do_compile() {
> >       #if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config; then
>
>
>
Alexandru DAMIAN - Nov. 2, 2012, 1:31 p.m.
Just a heads-up, actually I've submitted the wrong file in the first place
:(


Alex


On Fri, Nov 2, 2012 at 3:07 PM, Damian, Alexandru <
alexandru.damian@intel.com> wrote:

> I submitted a new patch in a separate mail, with proper description.
>
> Alex
>
>
>
> On Thu, Nov 1, 2012 at 9:31 PM, Richard Purdie <
> richard.purdie@linuxfoundation.org> wrote:
>
>> On Thu, 2012-11-01 at 16:32 +0200, Alex DAMIAN wrote:
>> > From: Ross Burton <ross.burton@intel.com>
>> >
>> > udevd moved location and isn't in $PATH anymore, so use an absolute
>> path to
>> > start it.
>> >
>> > The control socket path moved too, so mkdir the directory it's in.
>>
>> This patch looks to do a little more than that...
>>
>> Cheers,
>>
>> Richard
>>
>> > Signed-off-by: Ross Burton <ross.burton@intel.com>
>> > ---
>> >  meta/recipes-core/initrdscripts/files/init-live.sh |   50
>> +++++++++++++++++---
>> >  .../initrdscripts/initramfs-framework/udev         |    6 +--
>> >  .../initrdscripts/initramfs-framework_1.0.bb       |    2 +
>> >  .../initrdscripts/initramfs-live-boot_1.0.bb       |    2 +-
>> >  4 files changed, 50 insertions(+), 10 deletions(-)
>> >
>> > diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh
>> b/meta/recipes-core/initrdscripts/files/init-live.sh
>> > index 5682fd1..fdea892 100644
>> > --- a/meta/recipes-core/initrdscripts/files/init-live.sh
>> > +++ b/meta/recipes-core/initrdscripts/files/init-live.sh
>> > @@ -19,7 +19,8 @@ early_setup() {
>> >      modprobe isofs 2> /dev/null
>> >
>> >      mkdir -p /run
>> > -    udevd --daemon
>> > +    mkdir -p /var/run
>> > +    /lib/udev/udevd --daemon
>> >      udevadm trigger --action=add
>> >  }
>> >
>> > @@ -68,13 +69,49 @@ fatal() {
>> >
>> >  early_setup
>> >
>> > +# wait for the udevd to settle
>> > +echo "Waiting for udev to settle..."
>> > +sleep 3
>> > +
>> >  [ -z "$CONSOLE" ] && CONSOLE="/dev/console"
>> >
>> >  read_args
>> >
>> > -echo "Waiting for removable media..."
>> > -while true
>> > +# boot partiton menu, if one or more bootable partitions exist
>> > +BOOTMENU=`ls /media/sd*/sbin/init 2>/dev/null | wc -l`
>> > +if [ $BOOTMENU -gt 0 ]; then
>> > +     choice=0
>> > +     while [ $choice -le 0 ]; do
>> > +             echo "1). boot live ramfs image"
>> > +             count=2
>> > +             for i in `ls /media/sd*/sbin/init 2>/dev/null | cut -d
>> "/" -f 3`; do
>> > +                     echo $count"). boot /dev/"$i
>> > +                     choicecmd[$count]=$i
>> > +                     count=$(( count + 1))
>> > +             done
>> > +             echo
>> > +             echo -n "Your choice: "
>> > +             read choice
>> > +     done
>> > +
>> > +     if [ $choice -gt 1 ]; then
>> > +             #ROOT_MOUNT=/media/${choicecmd[${choice}]}
>> > +             ROOT_MOUNT=none #testing
>> > +             echo "Booting local root ... $ROOT_MOUNT"
>> > +             if [ -d $ROOT_MOUNT ]; then
>> > +                     boot_live_root
>> > +             else
>> > +                     fatal "Rootfs partition not mounted"
>> > +             fi
>> > +     fi
>> > +fi
>> > +
>> > +echo -n "Waiting for removable media... "
>> > +CNT=0
>> > +while [ $CNT -le 3 ];
>> >  do
>> > +  echo -n "$CNT "
>> > +  CNT=$(( $CNT + 1 ))
>> >    for i in `ls /media 2>/dev/null`; do
>> >        if [ -f /media/$i/$ROOT_IMAGE ] ; then
>> >               found="yes"
>> > @@ -82,7 +119,7 @@ do
>> >         elif [ -f /media/$i/isolinux/$ROOT_IMAGE ]; then
>> >               found="yes"
>> >               ISOLINUX="isolinux"
>> > -             break
>> > +             break
>> >        fi
>> >    done
>> >    if [ "$found" = "yes" ]; then
>> > @@ -90,13 +127,14 @@ do
>> >    fi
>> >    sleep 1
>> >  done
>> > +if [ "$found" != "yes" ]; then
>> > +     fatal "...could not mount removable media, drop to shell"
>> > +fi
>> >
>> >  case $label in
>> >      boot)
>> >       mkdir $ROOT_MOUNT
>> >       mknod /dev/loop0 b 7 0 2>/dev/null
>> > -
>> > -
>> >       if [ "$UNIONFS" = "yes" ]; then
>> >           mkdir /rootfs-tmp
>> >
>> > diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev
>> b/meta/recipes-core/initrdscripts/initramfs-framework/udev
>> > index 9ea8aa3..15a1d5b 100644
>> > --- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
>> > +++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
>> > @@ -3,8 +3,8 @@
>> >  # Licensed on MIT
>> >
>> >  udev_enabled() {
>> > -     if [ ! -e /sbin/udevd ]; then
>> > -             debug "/sbin/udev doesn't exist"
>> > +     if [ ! -e /lib/udev/udevd ]; then
>> > +             debug "/lib/udev/udev doesn't exist"
>> >               return 1
>> >       fi
>> >
>> > @@ -14,7 +14,7 @@ udev_enabled() {
>> >  udev_run() {
>> >       mkdir -p /run
>> >
>> > -     udevd --daemon > /dev/null
>> > +     /lib/udev/udevd --daemon > /dev/null
>> >       udevadm trigger --action=add
>> >       udevadm settle
>> >
>> > diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bbb/meta/recipes-core/initrdscripts/
>> initramfs-framework_1.0.bb
>> > index 58e41d4..45d6592 100644
>> > --- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
>> > +++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
>> > @@ -3,6 +3,8 @@ LICENSE = "MIT"
>> >  LIC_FILES_CHKSUM =
>> "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>> >  RDEPENDS = "busybox"
>> >
>> > +PR = "r1"
>> > +
>> >  inherit allarch
>> >
>> >  SRC_URI = "file://init \
>> > diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bbb/meta/recipes-core/initrdscripts/
>> initramfs-live-boot_1.0.bb
>> > index 137a401..55a8600 100644
>> > --- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
>> > +++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
>> > @@ -5,7 +5,7 @@ RDEPENDS = "udev"
>> >  DEPENDS = "virtual/kernel"
>> >  SRC_URI = "file://init-live.sh"
>> >
>> > -PR = "r10"
>> > +PR = "r11"
>> >
>> >  do_compile() {
>> >       #if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config;
>> then
>>
>>
>>
>
Alexandru DAMIAN - Nov. 5, 2012, 10:15 a.m.
Hello guys,

Sorry about the previously confusing message.

To clear things up, I've submitted two patches about the udev 182 not
starting properly in the live image. First submission was in fact
incorrect, having sent an intermediary patch file.

The second submission is the correct patch, that fixes the udev problems,
and adds a couple of features to the initrd file - allows you to use as
root a partition instead of the rootfs.img for recovering an old install,
and fails safe when no rootfs is found, dropping the user to a shell if
something goes wrong.

Please review the second patch and disregard the first one.

Alex


On Fri, Nov 2, 2012 at 3:31 PM, Damian, Alexandru <
alexandru.damian@intel.com> wrote:

> Just a heads-up, actually I've submitted the wrong file in the first place
> :(
>
>
> Alex
>
>
> On Fri, Nov 2, 2012 at 3:07 PM, Damian, Alexandru <
> alexandru.damian@intel.com> wrote:
>
>> I submitted a new patch in a separate mail, with proper description.
>>
>> Alex
>>
>>
>>
>> On Thu, Nov 1, 2012 at 9:31 PM, Richard Purdie <
>> richard.purdie@linuxfoundation.org> wrote:
>>
>>> On Thu, 2012-11-01 at 16:32 +0200, Alex DAMIAN wrote:
>>> > From: Ross Burton <ross.burton@intel.com>
>>> >
>>> > udevd moved location and isn't in $PATH anymore, so use an absolute
>>> path to
>>> > start it.
>>> >
>>> > The control socket path moved too, so mkdir the directory it's in.
>>>
>>> This patch looks to do a little more than that...
>>>
>>> Cheers,
>>>
>>> Richard
>>>
>>> > Signed-off-by: Ross Burton <ross.burton@intel.com>
>>> > ---
>>> >  meta/recipes-core/initrdscripts/files/init-live.sh |   50
>>> +++++++++++++++++---
>>> >  .../initrdscripts/initramfs-framework/udev         |    6 +--
>>> >  .../initrdscripts/initramfs-framework_1.0.bb       |    2 +
>>> >  .../initrdscripts/initramfs-live-boot_1.0.bb       |    2 +-
>>> >  4 files changed, 50 insertions(+), 10 deletions(-)
>>> >
>>> > diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh
>>> b/meta/recipes-core/initrdscripts/files/init-live.sh
>>> > index 5682fd1..fdea892 100644
>>> > --- a/meta/recipes-core/initrdscripts/files/init-live.sh
>>> > +++ b/meta/recipes-core/initrdscripts/files/init-live.sh
>>> > @@ -19,7 +19,8 @@ early_setup() {
>>> >      modprobe isofs 2> /dev/null
>>> >
>>> >      mkdir -p /run
>>> > -    udevd --daemon
>>> > +    mkdir -p /var/run
>>> > +    /lib/udev/udevd --daemon
>>> >      udevadm trigger --action=add
>>> >  }
>>> >
>>> > @@ -68,13 +69,49 @@ fatal() {
>>> >
>>> >  early_setup
>>> >
>>> > +# wait for the udevd to settle
>>> > +echo "Waiting for udev to settle..."
>>> > +sleep 3
>>> > +
>>> >  [ -z "$CONSOLE" ] && CONSOLE="/dev/console"
>>> >
>>> >  read_args
>>> >
>>> > -echo "Waiting for removable media..."
>>> > -while true
>>> > +# boot partiton menu, if one or more bootable partitions exist
>>> > +BOOTMENU=`ls /media/sd*/sbin/init 2>/dev/null | wc -l`
>>> > +if [ $BOOTMENU -gt 0 ]; then
>>> > +     choice=0
>>> > +     while [ $choice -le 0 ]; do
>>> > +             echo "1). boot live ramfs image"
>>> > +             count=2
>>> > +             for i in `ls /media/sd*/sbin/init 2>/dev/null | cut -d
>>> "/" -f 3`; do
>>> > +                     echo $count"). boot /dev/"$i
>>> > +                     choicecmd[$count]=$i
>>> > +                     count=$(( count + 1))
>>> > +             done
>>> > +             echo
>>> > +             echo -n "Your choice: "
>>> > +             read choice
>>> > +     done
>>> > +
>>> > +     if [ $choice -gt 1 ]; then
>>> > +             #ROOT_MOUNT=/media/${choicecmd[${choice}]}
>>> > +             ROOT_MOUNT=none #testing
>>> > +             echo "Booting local root ... $ROOT_MOUNT"
>>> > +             if [ -d $ROOT_MOUNT ]; then
>>> > +                     boot_live_root
>>> > +             else
>>> > +                     fatal "Rootfs partition not mounted"
>>> > +             fi
>>> > +     fi
>>> > +fi
>>> > +
>>> > +echo -n "Waiting for removable media... "
>>> > +CNT=0
>>> > +while [ $CNT -le 3 ];
>>> >  do
>>> > +  echo -n "$CNT "
>>> > +  CNT=$(( $CNT + 1 ))
>>> >    for i in `ls /media 2>/dev/null`; do
>>> >        if [ -f /media/$i/$ROOT_IMAGE ] ; then
>>> >               found="yes"
>>> > @@ -82,7 +119,7 @@ do
>>> >         elif [ -f /media/$i/isolinux/$ROOT_IMAGE ]; then
>>> >               found="yes"
>>> >               ISOLINUX="isolinux"
>>> > -             break
>>> > +             break
>>> >        fi
>>> >    done
>>> >    if [ "$found" = "yes" ]; then
>>> > @@ -90,13 +127,14 @@ do
>>> >    fi
>>> >    sleep 1
>>> >  done
>>> > +if [ "$found" != "yes" ]; then
>>> > +     fatal "...could not mount removable media, drop to shell"
>>> > +fi
>>> >
>>> >  case $label in
>>> >      boot)
>>> >       mkdir $ROOT_MOUNT
>>> >       mknod /dev/loop0 b 7 0 2>/dev/null
>>> > -
>>> > -
>>> >       if [ "$UNIONFS" = "yes" ]; then
>>> >           mkdir /rootfs-tmp
>>> >
>>> > diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev
>>> b/meta/recipes-core/initrdscripts/initramfs-framework/udev
>>> > index 9ea8aa3..15a1d5b 100644
>>> > --- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
>>> > +++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
>>> > @@ -3,8 +3,8 @@
>>> >  # Licensed on MIT
>>> >
>>> >  udev_enabled() {
>>> > -     if [ ! -e /sbin/udevd ]; then
>>> > -             debug "/sbin/udev doesn't exist"
>>> > +     if [ ! -e /lib/udev/udevd ]; then
>>> > +             debug "/lib/udev/udev doesn't exist"
>>> >               return 1
>>> >       fi
>>> >
>>> > @@ -14,7 +14,7 @@ udev_enabled() {
>>> >  udev_run() {
>>> >       mkdir -p /run
>>> >
>>> > -     udevd --daemon > /dev/null
>>> > +     /lib/udev/udevd --daemon > /dev/null
>>> >       udevadm trigger --action=add
>>> >       udevadm settle
>>> >
>>> > diff --git a/meta/recipes-core/initrdscripts/
>>> initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/
>>> initramfs-framework_1.0.bb
>>> > index 58e41d4..45d6592 100644
>>> > --- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
>>> > +++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
>>> > @@ -3,6 +3,8 @@ LICENSE = "MIT"
>>> >  LIC_FILES_CHKSUM =
>>> "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>>> >  RDEPENDS = "busybox"
>>> >
>>> > +PR = "r1"
>>> > +
>>> >  inherit allarch
>>> >
>>> >  SRC_URI = "file://init \
>>> > diff --git a/meta/recipes-core/initrdscripts/
>>> initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/
>>> initramfs-live-boot_1.0.bb
>>> > index 137a401..55a8600 100644
>>> > --- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
>>> > +++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
>>> > @@ -5,7 +5,7 @@ RDEPENDS = "udev"
>>> >  DEPENDS = "virtual/kernel"
>>> >  SRC_URI = "file://init-live.sh"
>>> >
>>> > -PR = "r10"
>>> > +PR = "r11"
>>> >
>>> >  do_compile() {
>>> >       #if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config;
>>> then
>>>
>>>
>>>
>>
>
Otavio Salvador - Nov. 7, 2012, 12:01 a.m.
On Mon, Nov 5, 2012 at 8:15 AM, Damian, Alexandru <
alexandru.damian@intel.com> wrote:

> Hello guys,
>
> Sorry about the previously confusing message.
>
> To clear things up, I've submitted two patches about the udev 182 not
> starting properly in the live image. First submission was in fact
> incorrect, having sent an intermediary patch file.
>
> The second submission is the correct patch, that fixes the udev problems,
> and adds a couple of features to the initrd file - allows you to use as
> root a partition instead of the rootfs.img for recovering an old install,
> and fails safe when no rootfs is found, dropping the user to a shell if
> something goes wrong.
>
> Please review the second patch and disregard the first one.


Please split the patch in two: one fixing udevd and another with new
features; please tag it properly  as v3 so it is easy to spoit it.
Ross Burton - Nov. 12, 2012, 4:13 p.m.
On 7 November 2012 00:01, Otavio Salvador <otavio@ossystems.com.br> wrote:
> Please split the patch in two: one fixing udevd and another with new
> features; please tag it properly  as v3 so it is easy to spoit it.

Alex - ping?

Ross
Ross Burton - Nov. 12, 2012, 4:21 p.m.
On 12 November 2012 16:13, Burton, Ross <ross.burton@intel.com> wrote:
> On 7 November 2012 00:01, Otavio Salvador <otavio@ossystems.com.br> wrote:
>> Please split the patch in two: one fixing udevd and another with new
>> features; please tag it properly  as v3 so it is easy to spoit it.

I JFDI'd because we've got broken images, and submitted a patch (V3)
that just consists of the critical fixes.  Alex, please rebase the
features and submit those separately.

Ross
Alexandru DAMIAN - Nov. 12, 2012, 4:46 p.m.
I'm working on it now. Expect the patches shortly.

Alex


On Mon, Nov 12, 2012 at 6:13 PM, Burton, Ross <ross.burton@intel.com> wrote:

> On 7 November 2012 00:01, Otavio Salvador <otavio@ossystems.com.br> wrote:
> > Please split the patch in two: one fixing udevd and another with new
> > features; please tag it properly  as v3 so it is easy to spoit it.
>
> Alex - ping?
>
> Ross
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
Otavio Salvador - Nov. 13, 2012, 4:32 p.m.
On Thu, Nov 1, 2012 at 12:32 PM, Alex DAMIAN <alexandru.damian@intel.com>wrote:

> +# wait for the udevd to settle
> +echo "Waiting for udev to settle..."
> +sleep 3
>

This doesn't work for all machines as the time need depends on the machine
performance and the number of devices connected.

You can use the trigger --settle in udevadm.

Patch

diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
index 5682fd1..fdea892 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -19,7 +19,8 @@  early_setup() {
     modprobe isofs 2> /dev/null
 
     mkdir -p /run
-    udevd --daemon
+    mkdir -p /var/run
+    /lib/udev/udevd --daemon
     udevadm trigger --action=add
 }
 
@@ -68,13 +69,49 @@  fatal() {
 
 early_setup
 
+# wait for the udevd to settle
+echo "Waiting for udev to settle..."
+sleep 3
+
 [ -z "$CONSOLE" ] && CONSOLE="/dev/console"
 
 read_args
 
-echo "Waiting for removable media..."
-while true
+# boot partiton menu, if one or more bootable partitions exist
+BOOTMENU=`ls /media/sd*/sbin/init 2>/dev/null | wc -l`
+if [ $BOOTMENU -gt 0 ]; then
+	choice=0
+	while [ $choice -le 0 ]; do
+		echo "1). boot live ramfs image"
+		count=2
+		for i in `ls /media/sd*/sbin/init 2>/dev/null | cut -d "/" -f 3`; do
+			echo $count"). boot /dev/"$i
+			choicecmd[$count]=$i
+			count=$(( count + 1))
+		done
+		echo
+		echo -n "Your choice: "
+		read choice
+	done
+	
+	if [ $choice -gt 1 ]; then 
+		#ROOT_MOUNT=/media/${choicecmd[${choice}]}
+		ROOT_MOUNT=none	#testing
+		echo "Booting local root ... $ROOT_MOUNT"
+		if [ -d $ROOT_MOUNT ]; then
+			boot_live_root
+		else
+			fatal "Rootfs partition not mounted"
+		fi
+	fi
+fi	
+
+echo -n "Waiting for removable media... "
+CNT=0
+while [ $CNT -le 3 ];
 do
+  echo -n "$CNT "
+  CNT=$(( $CNT + 1 ))
   for i in `ls /media 2>/dev/null`; do
       if [ -f /media/$i/$ROOT_IMAGE ] ; then
 		found="yes"
@@ -82,7 +119,7 @@  do
 	  elif [ -f /media/$i/isolinux/$ROOT_IMAGE ]; then
 		found="yes"
 		ISOLINUX="isolinux"
-		break	
+		break
       fi
   done
   if [ "$found" = "yes" ]; then
@@ -90,13 +127,14 @@  do
   fi
   sleep 1
 done
+if [ "$found" != "yes" ]; then
+	fatal "...could not mount removable media, drop to shell"
+fi
 
 case $label in
     boot)
 	mkdir $ROOT_MOUNT
 	mknod /dev/loop0 b 7 0 2>/dev/null
-
-	
 	if [ "$UNIONFS" = "yes" ]; then
 	    mkdir /rootfs-tmp
 
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev
index 9ea8aa3..15a1d5b 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
@@ -3,8 +3,8 @@ 
 # Licensed on MIT
 
 udev_enabled() {
-	if [ ! -e /sbin/udevd ]; then
-		debug "/sbin/udev doesn't exist"
+	if [ ! -e /lib/udev/udevd ]; then
+		debug "/lib/udev/udev doesn't exist"
 		return 1
 	fi
 
@@ -14,7 +14,7 @@  udev_enabled() {
 udev_run() {
 	mkdir -p /run
 
-	udevd --daemon > /dev/null
+	/lib/udev/udevd --daemon > /dev/null
 	udevadm trigger --action=add
 	udevadm settle
 
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index 58e41d4..45d6592 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -3,6 +3,8 @@  LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 RDEPENDS = "busybox"
 
+PR = "r1"
+
 inherit allarch
 
 SRC_URI = "file://init \
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
index 137a401..55a8600 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
@@ -5,7 +5,7 @@  RDEPENDS = "udev"
 DEPENDS = "virtual/kernel"
 SRC_URI = "file://init-live.sh"
 
-PR = "r10"
+PR = "r11"
 
 do_compile() {
 	#if grep -q "CONFIG_UNION_FS=y" ${STAGING_KERNEL_DIR}/.config; then