| Submitter | Radu Moisan |
|---|---|
| Date | Nov. 13, 2012, 9:12 p.m. |
| Message ID | <1352841144-31228-1-git-send-email-radu.moisan@intel.com> |
| Download | mbox | patch |
| Permalink | /patch/38955/ |
| State | New |
| Headers | show |
Comments
On 11/13/2012 01:12 PM, Radu Moisan wrote: > 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. > > Signed-off-by: Radu Moisan <radu.moisan@intel.com> > Signed-off-by: Alexandru Damian <alexandru.damian@intel.com> > --- > meta/recipes-core/initrdscripts/files/init-live.sh | 44 +++++++++++++++++++- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh > index 5682fd1..81686b9 100644 > --- a/meta/recipes-core/initrdscripts/files/init-live.sh > +++ b/meta/recipes-core/initrdscripts/files/init-live.sh > @@ -68,13 +68,49 @@ fatal() { > > early_setup > > +# wait for the udevd to settle > +echo "Waiting for udev to settle..." > +udevadm settle --timeout=3 > + Why are you still adding in the timeout? This still could have adverse affects on some machines, just let settle do it's job. Sau! > [ -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" > @@ -91,6 +127,10 @@ do > sleep 1 > done > > +if [ "$found" != "yes" ]; then > + fatal "...could not mount removable media, drop to shell" > +fi > + > case $label in > boot) > mkdir $ROOT_MOUNT >
On Tue, Nov 13, 2012 at 7:12 PM, Radu Moisan <radu.moisan@intel.com> wrote: > 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. > > Signed-off-by: Radu Moisan <radu.moisan@intel.com> > Signed-off-by: Alexandru Damian <alexandru.damian@intel.com> > --- > meta/recipes-core/initrdscripts/files/init-live.sh | 44 > +++++++++++++++++++- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh > b/meta/recipes-core/initrdscripts/files/init-live.sh > index 5682fd1..81686b9 100644 > --- a/meta/recipes-core/initrdscripts/files/init-live.sh > +++ b/meta/recipes-core/initrdscripts/files/init-live.sh > @@ -68,13 +68,49 @@ fatal() { > > early_setup > > +# wait for the udevd to settle > +echo "Waiting for udev to settle..." > +udevadm settle --timeout=3 > I think if we take a timeout it needs to be about 10s or 20s. I have some slow machines that take way more time then 3s. > [ -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" > @@ -91,6 +127,10 @@ do > sleep 1 > done > > +if [ "$found" != "yes" ]; then > + fatal "...could not mount removable media, drop to shell" > +fi > + > case $label in > boot) > mkdir $ROOT_MOUNT > -- > 1.7.9.5 > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core >
On 11/14/2012 01:07 AM, Saul Wold wrote: > On 11/13/2012 01:12 PM, Radu Moisan wrote: >> 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. >> >> Signed-off-by: Radu Moisan <radu.moisan@intel.com> >> Signed-off-by: Alexandru Damian <alexandru.damian@intel.com> >> --- >> meta/recipes-core/initrdscripts/files/init-live.sh | 44 >> +++++++++++++++++++- >> 1 file changed, 42 insertions(+), 2 deletions(-) >> >> diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh >> b/meta/recipes-core/initrdscripts/files/init-live.sh >> index 5682fd1..81686b9 100644 >> --- a/meta/recipes-core/initrdscripts/files/init-live.sh >> +++ b/meta/recipes-core/initrdscripts/files/init-live.sh >> @@ -68,13 +68,49 @@ fatal() { >> >> early_setup >> >> +# wait for the udevd to settle >> +echo "Waiting for udev to settle..." >> +udevadm settle --timeout=3 >> + > Why are you still adding in the timeout? This still could have > adverse affects on some machines, just let settle do it's job. > > Sau! > Well, I didn't see any side effects. If there are side effects I'll remove the timeout but please point out to me some of those. Anyway, I thought about this more like a safety net because I've noticed "settle" has some history with hanging the system boot more that it should in some circumstances. Radu
On 11/14/2012 03:30 AM, Otavio Salvador wrote: > > > On Tue, Nov 13, 2012 at 7:12 PM, Radu Moisan <radu.moisan@intel.com > <mailto:radu.moisan@intel.com>> wrote: > > 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. > > Signed-off-by: Radu Moisan <radu.moisan@intel.com > <mailto:radu.moisan@intel.com>> > Signed-off-by: Alexandru Damian <alexandru.damian@intel.com > <mailto:alexandru.damian@intel.com>> > --- > meta/recipes-core/initrdscripts/files/init-live.sh | 44 > +++++++++++++++++++- > 1 file changed, 42 insertions(+), 2 deletions(-) > > diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh > b/meta/recipes-core/initrdscripts/files/init-live.sh > index 5682fd1..81686b9 100644 > --- a/meta/recipes-core/initrdscripts/files/init-live.sh > +++ b/meta/recipes-core/initrdscripts/files/init-live.sh > @@ -68,13 +68,49 @@ fatal() { > > early_setup > > +# wait for the udevd to settle > +echo "Waiting for udev to settle..." > +udevadm settle --timeout=3 > > > I think if we take a timeout it needs to be about 10s or 20s. I have > some slow machines that take way more time then 3s. This is more reasonable then just removing the timeout. Radu
On 14 November 2012 19:39, Radu Moisan <radu.moisan@intel.com> wrote: > Well, I didn't see any side effects. If there are side effects I'll remove > the timeout but please point out to me some of those. Anyway, I thought > about this more like a safety net because I've noticed "settle" has some > history with hanging the system boot more that it should in some > circumstances. Your average Intel, qemu, or fast ARM test hardware can easily settle in under three seconds. The problem is when you have either slow hardware, or hardware with lots of storage devices to enumerate. Ross
On Thu, Nov 15, 2012 at 8:19 AM, Burton, Ross <ross.burton@intel.com> wrote: > On 14 November 2012 19:39, Radu Moisan <radu.moisan@intel.com> wrote: > > Well, I didn't see any side effects. If there are side effects I'll > remove > > the timeout but please point out to me some of those. Anyway, I thought > > about this more like a safety net because I've noticed "settle" has some > > history with hanging the system boot more that it should in some > > circumstances. > > Your average Intel, qemu, or fast ARM test hardware can easily settle > in under three seconds. The problem is when you have either slow > hardware, or hardware with lots of storage devices to enumerate. > Radu, please drop it or set it for 20s or so. I am against the timeout as a whole as in case this causes a boot fail it will be quite difficult to average user to come up to realize the cause of the problem so my opinion would be to drop it completely.
On 11/15/2012 04:42 PM, Otavio Salvador wrote: > > Radu, please drop it or set it for 20s or so. I am against the timeout > as a whole as in case this causes a boot fail it will be quite > difficult to average user to come up to realize the cause of the > problem so my opinion would be to drop it completely. Ok guys, it fine with me to drop it then. Radu
Patch
diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh index 5682fd1..81686b9 100644 --- a/meta/recipes-core/initrdscripts/files/init-live.sh +++ b/meta/recipes-core/initrdscripts/files/init-live.sh @@ -68,13 +68,49 @@ fatal() { early_setup +# wait for the udevd to settle +echo "Waiting for udev to settle..." +udevadm settle --timeout=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" @@ -91,6 +127,10 @@ do sleep 1 done +if [ "$found" != "yes" ]; then + fatal "...could not mount removable media, drop to shell" +fi + case $label in boot) mkdir $ROOT_MOUNT