__          __             __
\ \_________\ \____________\ \___
 \  _ \  _\ _  \  _\ __ \ __\   /
  \___/\__/\__/ \_\ \___/\__/\_\_\
                      Bedrock Linux

Bedrock Linux 0.7 Poki

© Bedrock Linux 2012-2020
Linux® is a registered trademark
of Linus Torvalds

Bedrock Linux 0.7 Poki Compatibility and workarounds

While much of Bedrock Linux "just works", some features require workarounds or do not work at all. See the table below.

Feature How well it works Notes
cross-stratum executables just works -
cross-stratum application minor workaround may need to clear cache
cross-stratum bash completion mostly works install bash-completion in all strata; some completions fail.
cross-stratum fish completion just works install fish in all strata
cross-stratum zsh completion mostly works install zsh in all strata; some completions fail
cross-stratum login shells just works specifying stratum requires special configuration
cross-stratum dbus just works -
cross-stratum firmware mostly works kernel will detect firmware across strata, initrd-building software may not
cross-stratum Xorg fonts just works -
cross-stratum vt fonts does not work -
cross-stratum Wayland fonts needs testing -
cross-stratum themes mostly works themes that support XDG_DATA_DIRS work
cross-stratum info pages just works -
cross-stratum man pages just works -
cross-stratum desktop environments does not work get your init, display manager, and desktop environment from the same stratum.
any stratum's init just works select the desired init in the init-selection menu at boot
any stratum's kernel just works install kernel from stratum then update bootloader
cross-stratum init configuration major workaround create configs manually
nvidia proprietary drivers medium workaround manually install drivers
build tools (e.g. make, configure scripts, gcc, etc) minor workaround prefix with `strat -r ` and install missing dependencies
ptrace (e.g. gdb, strace) minor workaround install in same stratum as traced program, strat -r
SELinux does not work Bedrock disables it on hijack
AppArmor, TOMOYO, SMACK needs testing Default profiles probably will not work
ACLs mostly works does not work on /etc
SysV init (e.g. Slackware, CRUX) does not work needs investigation
cross-stratum libraries does not work theoretically possible but unsupported due to complexity/messiness concerns


Application launchers

Many application launchers cache known applications and/or their icons. Some may fail to recognize new applications in /bedrock/cross/applications or icons in /bedrock/cross/icons.

Some such applications can be prompted to build the cache by removing ~/.cache/menus. Others may need to be restarted (such as by logging out and back in, or rebooting the computer).

Login shells

Linux systems typically store the full path to a login shell in /etc/passwd. Default login shell paths are local and will not be visible to another stratum's init system. Bedrock automatically changes any local login shell to a cross path in /bedrock/cross/bin/ to work around this concern.

If you would like to use a specific stratum's shell rather than the highest priority one, create a pin entry in cross-bin with the desired shell. After brl applying the new configuration, add the new pin path to /etc/shells and chsh to it.

Init configuration

Every stratum sees its own init configuration and only its own init configuration. By default, an init from one stratum will not know how to manage a service from another stratum's init.

It is possible to work around this by hand crafting init configuration. For example, one may make a runit run directory whose run file calls strat. For another example, one may make a systemd unit file whose Exec= line calls strat.

If you find hand creating init configuration is intimidating or bothersome, consider simply picking one stratum to provide your init and get all init-related services from that stratum.

Nvidia proprietary drivers

Most Linux graphics drivers have two components:

Most F/OSS Linux graphics drivers strive to make the two components forward and backward compatible such that their versions do not have to sync up perfectly. This allows a kernel from one stratum to work with an Xorg server from another stratum. However, the proprietary Nvidia drivers require these two components be in sync. Since the kernel module is shared across strata, this means every stratum that does anything with the graphics card requires the exact same version. Bedrock does not know how to enforce this itself. To work around this, one must manually install distro-agnostic portable proprietary Nvidia in all strata.

Download the proprietary Nvidia driver. Then run

where kernel-stratum is the stratum providing your kernel. This may require a linux-headers package be installed in the kernel-stratum. Note the -r: this is important to keep the Nvidia driver installer from "cleaning" graphics related files in other strata.

Next, run

for all remaining strata that require graphics drivers.

The bedrock stratum and other strata that do not utilize the graphics acceleration do not require the Nvidia drivers.