mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-24 06:04:16 +03:00
DESIGN: More explanation of problem
Initial thoughts on booting details.
This commit is contained in:
parent
878b53c626
commit
5a59c29371
52
DESIGN
52
DESIGN
@ -7,6 +7,56 @@ manages root filesystems. They both share an executable name
|
|||||||
hacktree-build
|
hacktree-build
|
||||||
hacktree-root-manager
|
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 ==
|
== The recipe set ==
|
||||||
|
|
||||||
A recipe is similar to Bitbake's format, except just have metadata -
|
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 the script fails, we can roll back the update, or drop to a shell
|
||||||
if interactive.
|
if interactive.
|
||||||
|
|
||||||
|
== Booting ==
|
||||||
|
|
||||||
== Local modifications ==
|
== Local modifications ==
|
||||||
|
|
||||||
A key point of this whole endeavour is that we want developers to be
|
A key point of this whole endeavour is that we want developers to be
|
||||||
|
Loading…
x
Reference in New Issue
Block a user