• David Johnson's avatar
    Add a new client side script, osconfig, that can update an MFS or a · dc10d326
    David Johnson authored
    frisbee-loaded slice based on a tarball downloaded from boss.  For now,
    the tarball is dynamically created by boss based on params sent to the
    osconfig_dump.php script; it is populated with files and a MANIFEST based
    on the files and constraints in the osconfig_* tables, which are pretty
    self-explanatory.  Transport is not secure, nor intended to be -- nodes on
    the control net or widearea nodes auth'd with a privkey can grab stuff
    destined to them based on their IP addr.  For the MFS case, the tarball is
    unpacked and the MANIFEST entries are executed/copied/extracted, and
    (nearly all of) the client side is re-run.  For the slicefix case, we just
    execute/copy/extract the MANIFEST entries in the mounted slice... there
    are some useful env vars set for scripts to use.
    If this mechanism ever becomes generally useful, or we're pushing big update
    tarballs, we'll have to add a caching mechanism (doh).  Right now, it's just
    for dongle-booted nodes or widearea nodes on which we cannot update the
    physical boot media without much pain; as well as for making major whacks
    to frisbee-loaded slices, which we need for the widearea case.
    Also, call this from rc.cdboot (to update a "read-only" (real media is
    mounted ro, but other parts of the fs are rw via unionfs or mfs) MFS),
    and from slicefix.
    NOTE: the client side osconfig script does not get installed from the
    makefile; this is intentional.  This script should not be placed in our
    local tftp'd MFSes, at least until there's some need for it!