Difference between revisions of "Save and Restore"

From WebOS Internals
Jump to navigation Jump to search
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
== Summary ==
 
A general architecture for saving and restoring stuff from application data areas to the USB drive.
 
A general architecture for saving and restoring stuff from application data areas to the USB drive.
  
Security model:
+
== Architecture ==
  
* A binary C-based saverestoremgr service provides the ability to run a set of pre-installed scripts
+
* A binary C-based org.webosinternals.saverestore service provides the ability to run a set of pre-installed scripts
* The service calls the scripts with a small set of known arguments (e.g. 'save', 'restore', etc)
+
* The service calls the scripts with a small set of known arguments (e.g. 'info', 'save', 'restore', etc)
 +
* The scripts are named according to the appId of the application that owns the data
 
* The scripts are stored in a location that is only accessible by installing them as root (e.g. a signed app with a post-install script)
 
* The scripts are stored in a location that is only accessible by installing them as root (e.g. a signed app with a post-install script)
 
* The service does not allow the execution of scripts outside of that location
 
* The service does not allow the execution of scripts outside of that location
 
* Therefore, any script that is run by the service has been installed by a means that already had root access
 
* Therefore, any script that is run by the service has been installed by a means that already had root access
* The scripts are named according to the appId of the application that owns the data
 
  
Features of the service:
+
== Features of the service ==
  
* A method to list the current set of available scripts
+
* A method to list the current set of available scripts with info about id, name, ...
 
* A method to call an individual script, or the set of all scripts, with a command method
 
* A method to call an individual script, or the set of all scripts, with a command method
 
** save
 
** save
 
** restore
 
** restore
  
Implementation Decisions
+
== Implementation Decisions ==
 +
 
 +
* Where to store the data
 +
** Choose /media/internal/saverestore
 +
 
 +
== Situations To Persist Across ==
 +
 
 +
* Partial Erase
 +
* Profile Reset (/var and /media/cryptofs are wiped, but /media/internal is retained)
 +
 
 +
== Locations of Application Data ==
  
* Where to store the scripts
+
* /var/palm/data
** Needs to be somewhere outside of $IPKG_OFFLINE_ROOT
+
* /media/internal/.app-storage
** Should be centralised to start, but could be distributed later once things stabilise
+
* /var/luna/data
 +
* additional files in the application directory

Latest revision as of 02:04, 30 March 2010

Summary

A general architecture for saving and restoring stuff from application data areas to the USB drive.

Architecture

  • A binary C-based org.webosinternals.saverestore service provides the ability to run a set of pre-installed scripts
  • The service calls the scripts with a small set of known arguments (e.g. 'info', 'save', 'restore', etc)
  • The scripts are named according to the appId of the application that owns the data
  • The scripts are stored in a location that is only accessible by installing them as root (e.g. a signed app with a post-install script)
  • The service does not allow the execution of scripts outside of that location
  • Therefore, any script that is run by the service has been installed by a means that already had root access

Features of the service

  • A method to list the current set of available scripts with info about id, name, ...
  • A method to call an individual script, or the set of all scripts, with a command method
    • save
    • restore

Implementation Decisions

  • Where to store the data
    • Choose /media/internal/saverestore

Situations To Persist Across

  • Partial Erase
  • Profile Reset (/var and /media/cryptofs are wiped, but /media/internal is retained)

Locations of Application Data

  • /var/palm/data
  • /media/internal/.app-storage
  • /var/luna/data
  • additional files in the application directory