summaryrefslogtreecommitdiff
path: root/community/gsoc/project_ideas/unionfs_boot.mdwn
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@gnu.org>2009-03-05 19:20:56 +0100
committerThomas Schwinge <tschwinge@gnu.org>2009-03-05 19:20:56 +0100
commit788cf51a9546dd1daddf9f550af84c6bbecc94dc (patch)
tree50450796ffa46cc971c90ee08b4d31a534ece9ea /community/gsoc/project_ideas/unionfs_boot.mdwn
parentd07689f82a29994100b094ca9b47c67e589a8d69 (diff)
community/gsoc/project_ideas: Split into subpages.
Diffstat (limited to 'community/gsoc/project_ideas/unionfs_boot.mdwn')
-rw-r--r--community/gsoc/project_ideas/unionfs_boot.mdwn48
1 files changed, 48 insertions, 0 deletions
diff --git a/community/gsoc/project_ideas/unionfs_boot.mdwn b/community/gsoc/project_ideas/unionfs_boot.mdwn
new file mode 100644
index 00000000..77fc357f
--- /dev/null
+++ b/community/gsoc/project_ideas/unionfs_boot.mdwn
@@ -0,0 +1,48 @@
+[[meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+
+[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+
+[[meta title="Allow Using unionfs Early at Boot"]]
+
+In [[UNIX]] systems, traditionally most software is installed in a common directory
+hierachy, where files from various packages live beside each other, grouped by
+function: user-invokable executables in `/bin`, system-wide configuration files
+in `/etc`, architecture specific static files in `/lib`, variable data in
+`/var`, and so on. To allow clean installation, deinstallation, and upgrade of
+software packages, GNU/Linux distributions usually come with a package manager,
+which keeps track of all files upon installation/removal in some kind of
+central database.
+
+An alternative approach is the one implemented by GNU Stow: each package is
+actually installed in a private directory tree. The actual standard directory
+structure is then created by collecting the individual files from all the
+packages, and presenting them in the common `/bin`, `/lib`, etc. locations.
+
+While the normal Stow package (for traditional UNIX systems) uses symlinks to
+the actual files, updated on installation/deinstallation events, the Hurd
+[[hurd/translator]] mechanism allows a much more elegant solution:
+[[hurd/translator/stowfs]] (which is actually a special mode of
+[[hurd/translator/unionfs]]) creates virtual directories on the fly, composed
+of all the files from the individual package directories.
+
+The problem with this approach is that unionfs presently can be launched only
+once the system is booted up, meaning the virtual directories are not available
+at boot time. But the boot process itself already needs access to files from
+various packages. So to make this design actually usable, it is necessary to
+come up with a way to launch unionfs very early at boot time, along with the
+root filesystem.
+
+Completing this task will require gaining a very good understanding of the Hurd
+boot process and other parts of the design. It requires some design skills
+also to come up with a working mechanism.
+
+Possible mentors: ?
+
+Exercise: Try to write a dummy server that is started instead of ext2fs on
+system boot, and starts the actual ext2fs in turn.