__ __ __ \ \_________\ \____________\ \___ \ _ \ _\ _ \ _\ __ \ __\ / \___/\__/\__/ \_\ \___/\__/\_\_\ Bedrock Linux
Miscellaneous
Historically, major Bedrock releases coincide with substantial architectural and code changes. This pattern reduced confidence in the ROI on writing tests. However, recent Bedrock releases has each reduced the scope of architectural changes. Confidence in Bedrock's architecture has reached the point where Naga's code should receive a fair bit of unit and integration test coverage, as well as the usual static analysis tool coverage.
Nyla supported two installation options:
Poki's hijack option was sufficiently polished that the expectation was interest in the competing manual install option would be dropped. However:
Thus, the manual option will be reintroduced in Naga.
In Poki, most Bedrock-specific files were available in /bedrock
. As a result, many users never interact with the bedrock
stratum. This exacerbated confusion over what Bedrock Linux is, as it appears to simply be a /bedrock
directory placed "on top" of another distro install. To resolve this, Naga will move Bedrock specific files into the bedrock
stratum. This should cause users to interact with the bedrock
stratum in the same manner they do other strata, making it appear to be at least a coequal part of the system. For example (using Poki's filesystem layout):
Two concepts need to be accessible to all strata:
/bedrock/strata
equivalent, so that files from other strata may be read or written to by other strat./bedrock/cross
equivalent, so that resources from other strata may be consumed transparently.Given the above goals, there are two options currently being considered:
/strata
, comparable to Poki's /bedrock/strata
, and /cross
, comparable to Poki's /bedrock/cross
on their root directory.
strat
, pmm
, apt
, pacman
, vlc
, and firefox
in /cross/bin/
/etc
files in /strata/<stratum>/etc
./bedrock
directory on their root, comparable to Poki's /bedrock/cross
. In addition to the usual /bedrock/cross
content will be a /bedrock/strata
directory comparable to Poki's /bedrock/strata
.
strat
, pmm
, apt
, pacman
, vlc
, and firefox
in /bedrock/bin/
/etc
files in /bedrock/strata/<stratum>/etc
./bedrock/strata
directory neighboring read-only directories (e.g. /bedrock/applications
) might cause confusion./bedrock/strata/...
paths, this results in longer file paths than the competing option due to the /bedrock
prefix.As of the time of writing, Bedrock independently reproduces similar documentation content both on its website and in the release's --help
output. Moreover, it lacks Bedrock specific man pages.
Nyla's development will shift documentation into a single source from which the website, --help
output, and man pages will be generated. Once implemented, this will reduce the documentation maintenance burden.
Over Poki's life, crossfs and etcfs have not evolved quite as originally expected, and technical debt is slowing slowing further development. They will be rewritten with the following architecture in order to expedite future development:
struct fuse_operations
functions that forward calls to module functions per the incoming file path categorization per the Bedrock configuration.chroot()
call wrappers.struct fuse_operations
functions. For example:
.desktop
files/etc/localtime
access performance.This modular architecture should expedite support for new Bedrock cross-stratum feature subsystems, such as eventual cross-stratum service and desktop environment support.
In Poki, each stratum has its own etcfs
instance. This both pollutes the process list and consumes more memory than necessary. etcfs
will be rewritten so that only one instance is needed, similar to crossfs
.
brl fetch
requires per-distro support files to be busybox shell scripts using an esoteric brl fetch
specific format. Naga will generalize the API, treating them as general executables. This will make them easier to understand and implement for people new to the code base.brl fetch
does not support verifying bootstrap packages. Naga development will investigate the possibility of maintaining and utilizing distro-specific package verification keys.The stratum status management code will be rewritten with the following goals:
brl repair
, as people seem to misunderstand what it does. Instead, move the functionality into brl enable
, making brl enable
idempotent.brl status
report show/hide statusbrl unhide
to brl show
.The Bedrock init selection menu will be rewritten with the following goals:
brl tutorial pmm
.