xref: /haiku/docs/user/storage/storageintro.dox (revision 2a2e7ad562841be14b2d1f8ad870780f32be2b1f)
1/*!
2  \page storage_intro Introduction to the storage kit
3
4\section Filesystem hierarchy
5
6The filesystems are organized in a hierarchy starting at the root directory (which has the path
7'/'). Unlike on typical UNIX systems, the root filsystem is not a mass storage filesystem that
8the OS was booted from. Instead, it is a virtual filesystem that can only contain directories,
9symbolic links, and mountpoints.
10
11All the other filesystems are mounted as subdirectories of the root filesystem or further down
12in the file hierarchy.
13
14The booted filesystem (what would be the rootfs in a typical UNIX) is mounted in '/boot'. For
15convenience, several links are created in the rootfs to well-known directories ('/bin', '/var',
16etc). These point into the corresponding directories in /boot/system, which are managed by
17packagefs.
18
19The packagefs is a read-only union filesystem that makes available the content of various software
20packages (installed as .hpkg files) to constitute the entire /boot/system directory. The files can
21be accessed either as a complete filesystem hierarchy directly in /boot/system, or by referencing
22specific packages exposed in /boot/system/package-links (each directory is a view of the packagefs,
23containing only the files for a given package and all its dependencies). In theory, this allows
24packages to be exposed in the package-links directory even while they are not actually "activated"
25in the main system hierarchy. It also allows to access a version of a file provided by a specific
26package, in the case that two packages provide identically named files.
27
28While packagefs is mostly read-only, some directories (called "shine-through") are actually
29exposing the content of the underlying filesystem. This includes for example the "config" directory
30(for configuration files) and the "non-packaged" directory, where a mirror of the standard
31filesystem hierarchy is available for non packaged software. This can be used to install software
32locally that is not available yet in HPKG form (for example, as a destination for "make install").
33
34For a complete list of directories and how to access them in a way that is safe to future
35filesystem reorganizations, see \link find_directory, \link find_path, and \link BPathFinder.
36
37*/
38
39/*!
40\addtgroup storage
41
42See \link storage_intro for general concepts and filesystem hierarchy description.
43
44*/
45