[Server-devel] [PATCH] xs-rsync: The README says it all

martin.langhoff at gmail.com martin.langhoff at gmail.com
Sat Aug 2 04:25:48 EDT 2008


From: root <root at schoolserver.wlg.xs.laptop.org>

---
 README |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 105 insertions(+), 0 deletions(-)
 create mode 100644 README

diff --git a/README b/README
new file mode 100644
index 0000000..95c9a53
--- /dev/null
+++ b/README
@@ -0,0 +1,105 @@
+XS-rsync
+========
+
+Provides support for publishing media on the XS via rsync.
+
+To publish something
+
+ 1 - Add a new directory under /library/xs-rsync/pub/
+     make sure it is readable by the xs-rsync user.
+
+     The best strategy is to add general top-level
+     "modules" there, such as "xo-activities" to avoid
+     having to update rsyncd.conf.in often.
+
+ 2 - Edit /etc/xs-rsyncd.conf.in and add a new module
+     pointing to your new directory.
+
+ 3 - Run `xs-refresh-xobuildlist --rebuildconfig` 
+     as root to merge the dynamically created build list in.
+
+The first use of xs-rsync is to offer OS images to run
+XO software updates. There are utilities provided for this
+task.
+
+
+
+Publishing a new XO OS build
+----------------------------
+
+ 1 - Pick a name for the build. The build file can have one
+     of many names, depending on its source and build stream.
+
+     The name that the client machines will see it as - and
+     that the activation server will use - is often different.
+     If the build file comes in xyz_jffs2-tree.bz2 , put the
+     name in a file called xyz_jffs2.name .
+
+
+ 2 - Place 4 files in /library/xs-rsync/xobuilds-packed/
+     - the files are as follows
+         xyz_jffs2-tree.bz2     # tar.bz2 build img
+         xyz_jffs2-tree.bz2.md5 # md5 of the tarbz2
+         xyz_jffs2.contents     # json-encoded manifest
+         xyz_jffs2.name         # file containing the name
+
+ 3 - run xs-refresh-xobuildlist as root
+
+Also
+
+ - To delete stale builds: Remove the build's files 
+   and run `xs-refresh-xobuilds` as root .
+   Removing (or renaming) the .name file is enough.
+
+ - To force a re-unpack of the published builds run
+   `xs-refresh-xobuildlist --force` as root. This
+   will rebuild the fakeroot state files, which can
+   get out of sync if the underlying inodes change -
+   for example, if /library is moved to a different
+   disk.
+
+XO build - scripts involved
+---------------------------
+
+ - xs-refresh-xobuildlist the published builds with
+   /library/xs-rsync/xobuilds-packed/ - including updating
+   /etc/xs-rsyncd.gen.conf
+
+ - xs-publish-xobuild checks things, sets up env and calls
+   xs-unpack-xobuild to do the dirty work. Runs as xs-rsync.
+
+ - xs-unpack-xobuild unpacks the build under fakeroot
+   and applies minor fixups. Runs as xs-rsync.
+
+
+Discussion
+----------
+
+The olpc-update scheme has two tricky aspects
+
+ - Builds are expected to be "modules" so we have
+   to update our config file to list them.
+   See https://dev.laptop.org/ticket/7743
+
+   We solve this by re-generating xs-rsyncd.conf
+   the rsync process re-reads it for every new
+   client.
+
+ - The unpacked builds themselves have system files
+   and devices which we do NOT want to reproduce
+   on our FS literlly. We just want to serve them.
+
+   We use fakeroot with atomically-updated "state"
+   files. The fakeroot package includes a 'faked'
+   daemon that would remove the need for atomic
+   updates but we cannot count on it being ok with
+   unexpected poweroffs. Atomic updates of read-only
+   state files do give us the required resiliency.
+
+   xinetd starts a new fakeroot for every new
+   incoming connection - so new connections will
+   see the new state data transparently.
+
+To use rsync in the safest configuration, we run it
+with 'use chroot = yes' wrapped with fakechroot.
+
-- 
1.5.6.dirty



More information about the Server-devel mailing list