__          __             __
\ \_________\ \____________\ \___
 \  _ \  _\ _  \  _\ __ \ __\   /
  \___/\__/\__/ \_\ \___/\__/\_\_\

Bedrock Linux 1.0beta1 Hawky

Bedrock Linux 1.0beta1 Hawky Plans

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.

New fuse-based brp

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:

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 brp are:

Global post-client set up mount points

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).

Client enable/disable hooks

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 /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:

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.