[hacktree] DESIGN: More explanation of problem



commit 5a59c29371720d538cf27014b1c2f530532278e7
Author: Colin Walters <walters verbum org>
Date:   Sun Oct 9 18:52:26 2011 -0400

    DESIGN: More explanation of problem
    
    Initial thoughts on booting details.

 DESIGN |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)
---
diff --git a/DESIGN b/DESIGN
index c17046a..17cc015 100644
--- a/DESIGN
+++ b/DESIGN
@@ -7,6 +7,56 @@ manages root filesystems.  They both share an executable name
 hacktree-build
 hacktree-root-manager
 
+== Problem statement ==
+
+Hacking on the core operating system is painful.  We want a system
+that matches these requirements:
+
+0) Does not disturb your existing OS
+1) Is not terribly slow to use
+2) Shares your $HOME - you have your data
+3) Allows easy rollback
+4) Ideally allows access to existing apps
+
+== Comparison with existing tools ==
+
+Virtualization:
+ Fails on points 1) and 2).
+
+Rebuilding OS packages:
+ Fails on points 0) and 3).  Is also just very annoying.
+
+jhbuild + OS packages:
+  The state of the art in GNOME - but can only build non-root things -
+  this means you can't build NetworkManager, and thus are permanently
+  stuck on whatever the distro provides.
+
+== The core idea ==
+
+chroots are the original lightweight "virtualization".  Let's use
+them.  So basically, you install a mainstream distribution (say
+Debian).  It has a root filesystem with a regular layout, /etc, /usr,
+/lib etc.
+
+Now, what we can do is have a system that installs chroots, like:
+
+/gnomeos/root-3.0-opt
+/gnomeos/root-3.2-opt
+
+These live in the same root filesystem as your regular distribution
+(Note though, the root partition should be reasonably sized, or
+ hopefully you've used just one big partition).
+
+We allow booting into these roots via a modified dracut - if you have
+this system installed, at boot time it shows a prompt like:
+
+[0] Default root
+[1] /gnomeos/root-3.0-opt
+[2] /gnomeos/root-3.2-opt
+
+If you pick [1] or [2], then instead of calling switch_root for /,
+it uses the selected root.
+
 == The recipe set ==
 
 A recipe is similar to Bitbake's format, except just have metadata -
@@ -116,6 +166,8 @@ we then diff?
 If the script fails, we can roll back the update, or drop to a shell
 if interactive.
 
+== Booting ==
+
 == Local modifications ==
 
 A key point of this whole endeavour is that we want developers to be



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]