Bedrock Linux & Poettering’s New Suggestion!

Bedrock Linux is a Linux distribution created with the aim of making most of the (often seemingly mutually-exclusive) benefits of various other Linux distributions available simultaneously and transparently.

If one would like a rock-solid stable base (for example, from Debian or a RHEL clone) yet still have easy access to cutting-edge packages (from, say, Arch Linux), automate compiling packages with Gentoo’s portage, and ensure that software aimed only for the ever popular Ubuntu will run smoothly – all at the same time, in the same distribution – Bedrock Linux will provide a means to achieve this. ~

Lennart Poettering has caused a big stir in the Linux world with his systemd approach to configuration. Now he has suggested a new way of building distros and getting your code into the users hands and its all based on btrfs file system.

using the filesystem versioning feature of btrfs to distribute everything from individual packages to entire operating systems(good for server&embed systems), i.e two files with the same name can exist in the same directory, just under different versions of the filesystem . It would then be possible to mix-and-match, even at run-time. If I understand it right, you could even install two operating systems and natively run executables that rely on either of them without rebooting.

It sounds a lot like Bedrock Linux …!!

But fundamental differences that you can notice are:

  • Bedrock Linux lets you use software straight from an upstream distro. If there’s some distro that provides something, you can use it now, while this proposal requires people make special packages for it. If people have to make special packages, I’m not sure I see the benefit of this over something like Nix… Bedrock Linux was largely created specifically because things like Nix don’t have enough packages.
  • Bedrock Linux intends to be very flexible in terms of what it imposes on the end-user. This seems to have a hard requirement on a btrfs feature. If btrfs isn’t performant in a specific area you like, isn’t stable enough yet, etc, this isn’t a viable solution for you. Moreover it is a bit worrying to tie things that tightly to a specific technology as it may make things hardware to replace down the road. What if someone comes up with some fancy new filesystem that is better in other ways but doesn’t have this feature?
  • Bedrock Linux groups things together by shared libraries so that if there’s a security issue, you only need to update a handful of files managed by presumably trusted upstream distros. With this, security updates fall back to the individual package maintainer; it feels like a rather large step backwards in terms of security from how Linux traditionally works.
  • Bedrock Linux “fixes” the problem of letting users use software that wasn’t aimed at their specific distro onlyfor users of Bedrock Linux. What Bedrock Linux is doing doesn’t really help people on other distros. This proposal could “fix” it in general if developers target it.
  • Bedrock Linux’s ability to run software from other distros means the software it runs wasn’t actually intended to run in this configuration and and an update could, in theory, break it. There is a lot of effort and hopefully smart design to avoid this, but it is still at least in theory possible. The software aimed at this proposal will know its situation and be less likely to run into this problem.

While on the surface this seems a lot like Bedrock Linux this proposal seems functionally closer to Nix. This has a similar restriction on requiring special packages for it and similar “fixes” the problem from the point of view of the packager.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s