| 1 | = Boot Volume Directory Structure = |
| 2 | |
| 3 | This is the directory layout of the boot volume: |
| 4 | |
| 5 | {{{ |
| 6 | common |
| 7 | add-ons |
| 8 | apps |
| 9 | bin |
| 10 | boot |
| 11 | cache* |
| 12 | data |
| 13 | develop |
| 14 | documentation |
| 15 | etc |
| 16 | include |
| 17 | lib |
| 18 | non-packaged* |
| 19 | packages* |
| 20 | preferences |
| 21 | settings* |
| 22 | share |
| 23 | var* |
| 24 | |
| 25 | home/config |
| 26 | <like common> |
| 27 | |
| 28 | system |
| 29 | add-ons |
| 30 | apps |
| 31 | bin |
| 32 | boot |
| 33 | data |
| 34 | demos |
| 35 | develop |
| 36 | documentation |
| 37 | lib |
| 38 | packages* |
| 39 | preferences |
| 40 | servers |
| 41 | |
| 42 | haiku_loader** |
| 43 | kernel_<arch> |
| 44 | runtime_loader |
| 45 | |
| 46 | trash |
| 47 | |
| 48 | apps -> common/apps |
| 49 | preferences -> common/preferences |
| 50 | }}} |
| 51 | |
| 52 | The structure mostly equals the pre-package management directory structure with the following changes: |
| 53 | * The `develop` directory has been removed and it's contents has been moved to the `system/develop` and `common/develop` directories as appropriate. |
| 54 | * `optional` has been removed. Optional features can just be installed via the package manager. |
| 55 | * `apps` and `preferences` have been moved to `common` for consistency, though symlinks remain for convenience. |
| 56 | * `common`, `home/config` and `system` each sport a `packages` directory, which contains the activated packages. |
| 57 | * `common`, `home/config` and `system` themselves are mount points for three instances of the packagefs, i.e. each contains the virtually extracted contents of the activated packages in the respective `packages` subdirectories. The directories marked with `*` are "shine-through" directories. They are not provided by the packagefs, but are the underlying directories of the boot volume. Unlike the other directories they are writable. |
| 58 | * `common` and `home/config` each contain a directory `non-packaged` which has the same structure as their parent directory minus the shine-through directories. In the `non-packaged` directories software can be installed the traditional -- non-packaged -- way. |
| 59 | * `haiku_loader` requires special treatment. While it is contained in the system package, it also needs to be extracted to the boot volume (also to `system`), since otherwise the stage one boot loader wouldn't be able to load it (that would theoretically be possible, but there's just not enough space in the boot block for the code dealing with the package format). |