some more info

This commit is contained in:
Bruce Leidl 2018-03-19 18:09:11 -04:00
parent 7e890ddf21
commit b34e434917

View File

@ -1,7 +1,30 @@
Citadel Realms
==============
In Citadel applications are installed into and run from spaces called Realms. Realms
are implemented internally as systemd-nspawn containers but you don't need to know
this because the `realms` command-line tool manages creating and launching containers
for you.
### Application Images
The root filesystem for realms are called Application Images, but we usually just call them
appimgs. We have created a framework for constructing these images from Debian based distributions
which we use to build the default appimg that we provide, but we
also encourage users to experiment with building their own images.
#### Tree Application Images
Tree images are the only type of application image which is currently implemented for realms.
The rootfs is a tree of files on the filesystem, and also it is a btrfs subvolume.
#### Block Application Images
## `default` realm ### `default` realm
One realm is always selected to be the `default` realm. The default realm One realm is always selected to be the `default` realm. The default realm
starts automatically when the system boots. The `realms` utility can be used starts automatically when the system boots. The `realms` utility can be used
@ -17,7 +40,7 @@ the symlink `/realm/default.realm` to point to a different realm instance direct
citadel:~# realms default citadel:~# realms default
Default Realm: project Default Realm: project
## `current` realm ### `current` realm
If any realms are running, then one realm is always the `current` realm. The current If any realms are running, then one realm is always the `current` realm. The current
realm is a realm that is being monitored by the `citadel-desktopd` daemon. This realm is a realm that is being monitored by the `citadel-desktopd` daemon. This
@ -32,7 +55,7 @@ started by gnome-shell will run in the `current` realm.
citadel:~# realms citadel:~# realms
Current Realm: main Current Realm: main
## Realms base directory layout ### Realms base directory layout
The realms base directory is stored on the storage partition at `/storage/realms` and is bind mounted to `/realms` on the root filesystem for convenience. The realms base directory is stored on the storage partition at `/storage/realms` and is bind mounted to `/realms` on the root filesystem for convenience.
@ -45,23 +68,23 @@ The realms base directory is stored on the storage partition at `/storage/realms
/realm-project /realm-project
/realm-testing /realm-testing
### `/realms/config` file #### `/realms/config` file
This file is a template of the configuration file for individual realms. When a new realm is created this file in copied into the new realm instance directory. By modifying this file, the default configuration for new realm instances can be changed. This file is a template of the configuration file for individual realms. When a new realm is created this file in copied into the new realm instance directory. By modifying this file, the default configuration for new realm instances can be changed.
### `/realms/Shared` directory #### `/realms/Shared` directory
This directory is bind mounted to `/home/user/Shared` of each running realm that has the option `use-shared-dir` enabled. It's a convenient way to move files between different realms and between citadel and realms. This directory is bind mounted to `/home/user/Shared` of each running realm that has the option `use-shared-dir` enabled. It's a convenient way to move files between different realms and between citadel and realms.
### `/realms/skel` directory #### `/realms/skel` directory
Files which are added to this directory will be copied into the home directory of any newly created realm. The directory is copied as a tree of files and may contain subdirectories. Files which are added to this directory will be copied into the home directory of any newly created realm. The directory is copied as a tree of files and may contain subdirectories.
### `/realms/default.realm` #### `/realms/default.realm`
A symlink which points to a realm instance directory of the default realm. The default realm is the realm which starts when the system is booted. A symlink which points to a realm instance directory of the default realm. The default realm is the realm which starts when the system is booted.
### `/realms/realm-$name` #### `/realms/realm-$name`
This is a realm instance directory, for a realm with $name as the realm name. This is a realm instance directory, for a realm with $name as the realm name.
@ -75,7 +98,7 @@ This is a realm instance directory, for a realm with $name as the realm name.
* `/rootfs` : btrfs subvolume clone (snapshot) of an application image. * `/rootfs` : btrfs subvolume clone (snapshot) of an application image.
### Realm instance directory layout #### Realm instance directory layout
/realm-main /realm-main
config config