Fallback environment in barebox

Baruch Siach baruch at tkos.co.il
Sun Mar 6 13:26:06 EST 2011


Hi Itai,

On Sun, Mar 06, 2011 at 04:59:02PM +0200, Itai Raab wrote:
> I tried doing what you explained, but it seems like Barebox startup code 
> didn't load the environment from env1 when env0 was corrupted.
>
> In barebox shell I could find /dev/env1 with all the data, but when the 
> Barebox started I got:
> 	no valid environment found on /dev/env0. Using default environment
> 
> Looking at the startup code (common/startup.c - is this the place?) I don't 
> see any mechanism to load env1 when env0 fails.

You seem to be right. Juergen, can you explain what you meant?

> Is it the right place to add the support or am I missing something?

An alternative solution might be to use the defaultenv mechanism, and put 
there a fall-back init script which contains the following (untested):

loadenv /dev/env1

Since the defaultenv init runs only when environment load from /dev/env0 fails 
(i.e. the env0 partition is corrupted), this is actually equivalent.

baruch

> -----Original Message-----
> From: Baruch Siach [mailto:baruch at tkos.co.il] 
> Sent: Monday, February 28, 2011 7:51 AM
> To: Boaz Ben-David
> Cc: jbe at pengutronix.de; barebox at lists.infradead.org; Itai Raab
> Subject: Re: Fallback environment in barebox
> 
> Hi Boaz,
> 
> On Sun, Feb 27, 2011 at 12:09:59PM +0200, Boaz Ben-David wrote:
> > Sounds great.
> > 
> > Is there any documentation on how to "register" environments?
> 
> What Juergen meant to say is "register partitions named env0, env1, ...". The 
> barebox startup code then automatically picks the first valid environment 
> partition.
> 
> To register partitions (with bad blocks awareness) use devfs_add_partition() 
> and then dev_add_bb_dev(). grep for "env0" under arch/ for many examples.
> 
> baruch
> 
> > On Sun, 2011-02-27 at 10:50 +0100, Juergen Beisert wrote:
> > > Boaz Ben-David wrote:
> > > > We want to implement a mechanism in barebox to use two environment
> > > > partitions.
> > > > i.e. when barebox boots it will go to the first by default and try to
> > > > use it. If for some reason it fails
> > > > it will boot with the second one.
> > > >
> > > > What is the best way to implement this in barebox and did anyone do it
> > > > already?
> > > 
> > > AFAIR a mechanism like this is already present in barebox. It tries the first 
> > > environment, checks its CRC and if it fails it tries the next, if one exists.
> > > Just register env0, env1, .....

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -



More information about the barebox mailing list