This page serves to describe plans for the then-upcoming release of Bedrock Linux, 1.0beta1 "Hawky". Hawky has since been released on July 17th, 2014.
Bedrock Linux's brp command populates the
/bedrock/brpath directory. The
contents in this directory are used to make a certain class of files "just
work" in a transparent manner. Specifically, these are files which:
global, or package managers would fight over them.
local, as they need to be available
globallyfor everything to "just work".
localcontexts. For example, executables should be wrapped in
brcso they run with the proper
These files include:
In 1.0alpha4 Flopsie, of the above listed files, only executables are supported
by brp. Moreover, that version of brp must be re-run to update
/bedrock/brpath every time something changes. The planned improvements to
/bedrock/brpathwill be updated on-the-fly / in-the-background so that when they are accessed they are always up-to-date.
In 1.0alpha4 Flopsie, if something is mounted after a
client is set up, that
mount point is automatically
local. Only processes from the same
provided the mount command can access it. In 1.0beta1 Hawky, we are adding a
new client.conf configuration item - "share" - which will function exactly the
same way "bind" does in 1.0alpha4 Flopsie, except mount points contained within
the configured item's directory are also
For example, the 1.0beta1 Hawky will likely contain this configuration item in the default framework:
share = /mnt
With this, if a user mounts something within
/mnt, such as a usb stick or
compact disk, the contents of that mount point will be visible to all
(which use the default framework).
1.0beta1 Hawky will include hooks to run something at the following times:
These hooks may be used by the end-user however he or she wishes. However, Bedrock Linux has specific uses for them in mind.
Symlinks are used by Linux distributions to move where files and directories
are placed while retaining support for software which still uses the old
location. For example, many Linux distributions have moved
/run by making
/var/run a symlink to
/run. If any old software accesses
the old location they are redirected to the new location. Any new software
which simply uses the new location will just work.
This causes a problem for Bedrock Linux. Bind-mounting both the source and
destination of a symlink can cause issues. To make the content in
global, only one of the two directories should be made
depending on which the given
client uses. While the user could configure this,
it would be preferable for these things to "just work". These hooks will be
used in 1.0beta1 Hawky to force a symlink standard across
/var/runwill be a symlink to
/var/lib/dbus/machine-idwill be a symlink to
By doing this, Bedrock Linux will be able to make
global, ensuring things such as dbus and udev work across
clients. This change
will be enforced utilizing the just-before-a-client-is-enabled hook.
Another potential use for this is to synchronize certain
global files with the
local version upon enabling or disabling a
client. Interest has been
shown in dual-booting Bedrock Linux with another distro and using that distro
as a Bedrock Linux
client. For this to work, certain files - such as
/etc/group - must be synchronized upon
client enable and
disable. The code to merge such files is not yet in place and so this dual
booting with a
client functionality will not be available in Hawky, but the
hooks created in Hawky will be useful later in providing this functionality.