Re: [Server-devel] Upgrade many machines

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [Server-devel] Upgrade many machines

James Cameron-2
Summary: use a few USB drives or NANDblaster, not the server.

On Tue, Dec 31, 2013 at 01:18:16AM -0500, Adam Gordon wrote:
> Is there a good way to upgrade allot of XO's (1.5 + 1.75) from a
> custom unsigned 12.1 to an unsigned custom 13.2 using the server?

No, not really.  Using the server is very slow, because of the
bandwidth limitations.

The transfer speed from the media to the internal storage is the
critical factor.  The fastest is USB drive (~5min).  The next fastest
is NANDblaster (~25min).  The slowest is a server and a wireless
access point (~45min).

Consider the simplest child driven upgrade trigger: the four game key
power up method.  It searches for signed builds on USB drive, SD card,
a school server over wireless, and then NANDblaster.

You asked about using the server, so that suggests the second last
step.  But this step is broken in current firmware (XO-1.5, XO-1.75),
due to #12740, and so you would have to upgrade the firmware first,
which would bring you to using a USB drive anyway.

Next, your builds are unsigned.  Unsigned builds don't benefit from
the four game key method used by the signed builds, when using USB
drives.  They do work with NANDblaster.

If the number of laptops is large enough, injecting deployment keys
into them, and signing the build, will restore the use of the four
game key method when using USB.

It is not necessary to secure the laptops; the four game key method
enables the security mode temporarily on unsecured laptops.

This again brings you to having to use USB drives to inject deployment
keys, so you may as well use the USB drive for the build as well.

The next best options are either a collection of USB drives or
the NANDblaster feature, depending on what you have most of; USB
drives or XOs.

Unsecured laptops will boot from a USB drive.  You can use that
feature to craft a boot script for an unsigned build [3].  The boot
script can pick a build file that matches the hardware.  The Tiny Core
Linux boot script has an example where it uses bundle-suffix$ [4].

NANDblaster is the simplest overall solution, but it is way slower
than USB drives, and you have to do the XO-1.5's separate from the
XO-1.75's.  Separate by time or large enough distance.  See [1] and
[2].

Eventually, there's the hybrid method being used by HaitiOS, which
is a four game key method trigger to load the signed build, followed
by a Tiny Core Linux boot script to customise it.  Since you are using
an unsigned build, this method is not applicable.

CC: devel@

References:

1.  http://wiki.laptop.org/go/Nandblaster_for_XO-1.5

2.  http://wiki.laptop.org/go/Nandblaster_for_XO-1.75

3.  http://wiki.laptop.org/go/Firmware/Storage#How_to_automatically_install_an_unsigned_build

4.  http://dev.laptop.org/~quozl/mktinycorexo/mktinycorexo

--
James Cameron
http://quozl.linux.org.au/
_______________________________________________
Devel mailing list
[hidden email]
http://lists.laptop.org/listinfo/devel
Reply | Threaded
Open this post in threaded view
|

Re: [Server-devel] Upgrade many machines

James Cameron-2
On Thu, Jan 09, 2014 at 02:40:31PM -0500, Adam Gordon wrote:
> The problem is usb key supply. Is there any way to update firmware
> without them?

Sure.  But it is not a good way.  It is complex and time consuming,
with higher possibility of error, and doesn't scale up.

You don't say what the problem is with USB drive supply.  If you can
supply SD cards instead of USB drive, then the operating system can be
updated from them.  Let me know if this is possible.

For upgrading to an unsigned custom build with only a server, the
general sequence, which you should test and refine further, is:

- configure an open access point, DHCP server, and BIND server, (this
  you may already have),

- configure the server to hold latest firmware and operating system,
  for each model of laptop to be supported, for example at
  http://server/path/ (this you may already have),

- quieten the wireless network, removing as many clients from it as
  possible,

- position the laptop close to the access point,

- lock the battery into the laptop,

- connect external power to the laptop,

- boot the laptop to the ok prompt, which is the firmware of the laptop,

- associate with the access point, for example by typing:

  ok essid mynetworkname

- download the latest firmware and reflash (Q3C16 for XO-1.5, Q4D34
  for XO-1.75), for example by typing:

  ok flash http:\\server\path\q3c16.rom

- wait for the firmware to be updated,

- boot the laptop to the ok prompt again, and verify the firmware
  version is current,

- download the latest operating system, for example:

  ok fs-update http:\\server\path\32013o2.zd

- reboot the laptop, for example by typing:

  ok bye

- repeat from the second step on the next laptop,

- avoid having more than one laptop doing fs-update at the same time
  as another laptop, or experiment until you find a point of failure.

Note that the firmware uses the reverse slash character \ instead of /
as normally used in operating systems.

CC: as before.

--
James Cameron
http://quozl.linux.org.au/
_______________________________________________
Devel mailing list
[hidden email]
http://lists.laptop.org/listinfo/devel
Reply | Threaded
Open this post in threaded view
|

Re: [Server-devel] Upgrade many machines

Martin Langhoff
In reply to this post by James Cameron-2
On Tue, Dec 31, 2013 at 2:06 AM, James Cameron <[hidden email]> wrote:
> Summary: use a few USB drives or NANDblaster, not the server.

Note that if preserving user data and apps is desired, USB drives /
NANDBlaster isn't that good.

Any reason you are not mentioning the olpc-update path?



m
--
 [hidden email]
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff
_______________________________________________
Devel mailing list
[hidden email]
http://lists.laptop.org/listinfo/devel
Reply | Threaded
Open this post in threaded view
|

Re: [Server-devel] Upgrade many machines

James Cameron-2
On Thu, Jan 09, 2014 at 07:19:11PM -0500, Martin Langhoff wrote:
> On Tue, Dec 31, 2013 at 2:06 AM, James Cameron <[hidden email]> wrote:
> > Summary: use a few USB drives or NANDblaster, not the server.
>
> Note that if preserving user data and apps is desired, USB drives /
> NANDBlaster isn't that good.

Yes.

> Any reason you are not mentioning the olpc-update path?

No reason, thanks for reminding me.  I guess xs-rsync on the local
server?

--
James Cameron
http://quozl.linux.org.au/
_______________________________________________
Devel mailing list
[hidden email]
http://lists.laptop.org/listinfo/devel
Reply | Threaded
Open this post in threaded view
|

Re: [Server-devel] Upgrade many machines

Martin Langhoff
On Thu, Jan 9, 2014 at 7:33 PM, James Cameron <[hidden email]> wrote:
> No reason, thanks for reminding me.  I guess xs-rsync on the local
> server?

yep

 - oatslite to send the upgrade msg
 - XOs need to be registered
 - xs-rsync to host the new img

There are several possible gotchas I have not thought through, and I
no longer remember in clear enough detail. Signed vs unsigned, OATs
keys (master or delegated), whether olpc-update has any showstopper
bugs in this specific configuration, etc.

So it might not be feasible with the given configuration. However, it
might be worthwhile to upgrade to a state where the next upgrade can
be handled with this mechanism...



m
--
 [hidden email]
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff
_______________________________________________
Devel mailing list
[hidden email]
http://lists.laptop.org/listinfo/devel