__ __ __ \ \_________\ \____________\ \___ \ _ \ _\ _ \ _\ __ \ __\ / \___/\__/\__/ \_\ \___/\__/\_\_\ Bedrock Linux
Bedrock Linux 1.0beta1 Hawky
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 globally
for everything to
"just work".local
contexts. For example,
executables should be wrapped in brc
so they run with the proper local
context.These files include:
/usr/bin
)/usr/share/applications/
)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
brp are:
/bedrock/brpath
will 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 client
that
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 global
.
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 clients
(which use the default framework).
1.0beta1 Hawky will include hooks to run something at the following times:
client
is enabledclient
is enabledclient
is disabledclient
is disabledThese 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 /var/run
to
/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 /var/run
and/or /run
global
, only one of the two directories should be made global
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 clients
:
/var/run
will be a symlink to /run
/var/lib/dbus/machine-id
will be a symlink to /etc/machine-id
By doing this, Bedrock Linux will be able to make /run
and /etc/machine-id
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
client
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/passwd
and /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.