Have you ever used a single Linux distribution for a prolonged period of time? If you answered 'yes', then it's more than likely at some point you've tried to install a package which is not natively supported by your distro's package manager.
This problem is obviously more common on Debian/Redhat/SUSE based systems and less likely to happen on Arch etc.; nevertheless - whenever it happens, it's very infuriating.
Recently, a solution to that problem has emerged on the Linux scene - the Bedrock Linux - a dsitro, which isn't a distro, but at the same time it's all distros combined.
Are you confused yet? Prepare for some more Linux magic incoming.
Bedrock Linux is a meta Linux distribution which allows users to utilize features from other, typically mutually exclusive distributions. Essentially, users can mix-and-match components and packages as desired from multiple Linux distributions and have them work seamlessly side-by-side.
Bedrock Linux's goal of letting users enjoy features from other Linux distributions. To achieve this, Bedrock provides a script which hijacks a given traditional Linux distribution install and converts it into a Bedrock Linux install.
Some Bedrock users like to refer to their installs as "Hijacked X" - for example, I could say (as I'm using Bedrock with Arch Linux as its "base") I'm using a "Hijacked Arch".
Installing (or hijacking distros with) Bedrock
Thus, the first step is to install a traditional Linux distribution. Some considerations to help you decide which traditional Linux distribution to install include:
- Bedrock Linux currently supports
arm7vl. Other architectures may work but will require you compile the installer and updates yourself. They will also lack
- All of the initial install's distro-specific files may later be easily removed. It may be best to think of the hijack install process as installing Bedrock under the initial install, not over it. Bedrock becomes the base of the system, with the initial install's files a removable layer on top. Hence Bedrock's name.
You can see the distro support page on the official Bedrock's page for distros which Bedrock is known to be able to hijack well.
Having that done, run the script as root with the
sh bedrock-linux-release-arch.sh --hijack
Confirm at the prompt you understand what the script is doing, then allow it to convert the existing install into Bedrock Linux. Finally, once it has completed successfully, reboot.
Do NOT attempt to install Bedrock on ANY Linux systems you are currently using for production or test (unless you're ready to lose it). Bedrock installation CANNOT be reverted without a third-party backup and it is NOT suitable for high-compute use cases (yet). I suggest you should firstly test it out on a new, clean VM before attemtping to convert an "old" system.
If you see a new init selection menu during the boot process, congratulations! You're now running Bedrock Linux.
Before we'll move on to what can you do in Bedrock, we need to discuss some very important concepts first.
Glossary of Bedrock
Many Linux distributions are composed of packages, which are collections of related files. In such distros most distro-specific files and processes are associated with some package. For example,
/usr/bin/vim may be provided by the
vim package. Packages are typically written with the expectation of interacting with other packages from the same Linux distribution release. For example, an executable from one package may utilize a library provided by another package. This interaction expectation typically breaks down across packages from different Linux distributions, or even packages across different releases of the same distribution. For example, two packages from different distributions may each expect a different build of a library at the same file path.
A Bedrock Linux system is composed
strata. Like packages, these are collections of related files. Unlike packages, however,
strata have a relatively high degree of tolerance for interacting with other files from other Linux distributions. A Bedrock system may be composed of
strata that each expect a different build of a library at the same file path but still work, and work together.
Strata are often one-to-one with traditional Linux distribution installs. One may have an Arch
stratum, a Debian
stratum, a Gentoo
stratum, etc. However, they do not have to be related to Linux distributions. For example, one may have a stratum that is composed of a single man page.
Every process and every file on a Bedrock Linux system is associated with some
Global files (described below) are associated with the
Time to test some Bedrock commands
A Bedrock Linux system is composed of
strata, which are collections of interrelated files. These are often one-to-one with traditional Linux distribution installs: one may have an Arch
stratum, a Debian
stratum, a Gentoo
stratum, etc. Bedrock integrates these
strata together creating a single, largely cohesive system.
To list the currently installed (and enabled)
A fresh install will have two
strata: Bedrock itself and the initial install. This, alone, is of little more immediate value than just the initial install. To benefit from Bedrock more
strata are needed. To list distros Bedrock knows how to acquire as
brl fetch --list
Then to acquire new
strata, run (as root):
brl fetch <distros>
That may fail if it auto-detects a bad mirror. If so, manually find a good mirror for the distro and provide it to
brl fetch with the
You may remove strata with
brl remove <strata>
brl fetch has completed you may run commands from the new
strata. For example, the following series of commands make sense on a Bedrock system:
sudo brl fetch arch debian sudo pacman -S mupdf && sudo apt install texlive pdflatex file.tex && mupdf file.pdf
Bedrock's integration is not limited to the command line commands. Other features which work across
- Graphical application menus or launchers will automatically pick up applications across
strata.For example, Ubuntu's Unity will offer launching Gentoo's
- Shell tab completion. For example, Gentoo's
zshwill tab complete Arch's
- The Linux kernel will detect firmware across
- Xorg fonts work across
strata. For example, Arch's
firefoxwill detect Gentoo's terminus font.
- Various graphical theming information work across
- Man and info pages work across
strata. For example, Arch's
manwill display Void's
As interesting as Bedrock seems to be right now, it will definitely have to grow before it will be a reliable option for running Debian packages on RedHat, RedHat's on Arch, Arch's on Ubuntu etc. etc.
I wouldn't be sure if Bedrock ever matches the reliability of virtual machines or containers, but definitely (even in its current state), it is much more convenient. In my opinion, Bedrock is could be called "a WINE for Linux Distros" while trying to explain what it is to a newbie.
What do you think? Are you going to test Bedrock out on a virtual machine or are you going to convert your "working" Linux to Bedrock? Let me know in the comments!