__ __ __ \ \_________\ \____________\ \___ \ _ \ _\ _ \ _\ __ \ __\ / \___/\__/\__/ \_\ \___/\__/\_\_\
Bedrock Linux 1.0alpha4 Flopsie
This page serves to describe plans for the upcoming release of Bedrock Linux, 1.0alpha4 "Flopsie". Flopsie is tentatively set for release by End-of-Summer 2013.
The primary changes planned are the addition of two FUSE virtual filesystems, brpath and brinfo.
The current release of Bedrock Linux, 1.0alpha3 "Bosco", requires users run the
brp utility every time an executable is added or remove from the system.
Additionally, Bosco does not have a clean way to ensure a given executable is
always provided by the same client, irrelevant of what the client may have
natively. These two issues will be addressed with a FUSE virtual filesystem
called "brpath". It will be mounted at /bedrock/brpath/ and have something
along the following root-level directory structure:
/bedrock/brpath/prebin//bedrock/brpath/presbin//bedrock/brpath/postbin//bedrock/brpath/postsbin//bedrock/brpath/reparse_configsThe prebin and presbin directories will contain brc-wrappers for
executables which should always be provided by a given client. For example, if
you would like startx to always be provided by a client called "squeeze", a
brc-wrapper for startx will be located in prebin.
The contents of prebin and presbin will be populated based on a
configuration file located at /bedrock/etc/brbins.conf. Each line in the
configuration file will include an executable name followed by white space and
then a client name. For example, to have the core Bedrock always provide
halt, reboot, poweroff and shutdown:
# command # client halt bedrock reboot bedrock poweroff bedrock shutdown bedrock
Note that if you include an executable in brbins.conf that is not available
from the given client, it will not show up in prebin/presbin; the
availability of every command in the brpath is checked on-the-fly (hence no
need for brp). If the command is made available in another client, the
search through the $PATH will continue past the prebin/presbin and may be
provided by another client later in the $PATH.
The contents of postbin and postsbin will provide brc-wrappers for every
executable normally in the $PATH (i.e.: /bin, /usr/bin, /usr/local/bin,
and their sbin-counterparts). Like prebin and presbin, the contents here
will be generated on-the-fly as needed so that brp is not needed.
While the existence of executables is checked on-the-fly, the contents of the
relevant configuration files (brclients.conf, brbins.conf, and rc.conf)
will be cached in order to improve performance. To inform the brpath virtual
filesystem to reparse the configuration files, write 1 to reparse_configs
as root, like so:
echo 1 > /bedrock/brpath/reparse_configs
Another FUSE virtual filesystem, brinfo, is also planned to be included in
Flopsie. It is intended to function in a similar manner to the typical Linux
/sys directory: it will both provide information about the Bedrock subsystems
as well as provide a means to make changes to it. It will be mounted at
/bedrock/brinfo and have something along the following root-level directory
structure:
/bedrock/brinfo/clients//bedrock/brinfo/bins//bedrock/brinfo/sbins/The /bedrock/brinfo/clients/ directory will contain one directory for each
client on the system (roughly akin to /proc/ containing one directory for
each PID). Additionally, there will be a symlink called "current" which will
point to the client the reading process is currently in.
One can thus run ls /bedrock/brinfo/clients | grep -v "^current$" to get a
list of clients on the system. Moreover, one can run readlink
/bedrock/brinfo/clients/current to determine in which client the calling
executable is currently being provided by.
Each directory will contain the following:
name
setup
running_processes
The /bedrock/brinfo/bins/ and /bedrock/brinfo/sbins/ directories will each
contain one file for every executable in their parts of the filesystem.
Reading the file will provide the name of the client which provides it.