Project

General

Profile

Actions

Idea: BusyBox

  • Impact: core components
  • Status: complete
  • Target version: 0.2

Background

BusyBox is a set of simple components assembled in a multi call binary. It is often used in embedded devices and routers for its simplicity. It is a replacement for the coreutils package and some parts in util-linux.

BusyBox also provides basic support for others tools such as a syslog daemon, a kernel log daemon, basic rpm/dpkg support, several shells and so on. It also provides a simple init system; in short, you can run a minimal system just using BusyBox plus the Linux kernel.

Synopsis

BusyBox is much smaller than combination of coreutils/util-linux at the cost of several missing features that are popular in those usual packages. BusyBox is opinionated regarding the status of systemd and pretty against it therefore by using BusyBox one also usually adhere to these strong opinions.

Problems

While BusyBox by itself is powerful enough and feature complete for a daily basis usage it has some drawbacks. Not really BusyBox's fault but a lot of packages depend on util-linux's own libuuid/libblkid and since packages in Vanilla are not split we may encounter a conflict.

Proposal: make util-linux configurable (current status)

At the moment, util-linux is configurable to only install a few set of components. Therefore, it's possible to configure util-linux to only install libraries and not tools. While this is a pure workaround it works.

# in core/util-linux
COMPONENTS="libuuid libblkid" vpk build

This will create a package util-linux that only ships libblkid and libuuid share libraries. No programs installed.

Proposal: make util-linux build static libraries

One option could be to make util-linux installing libblkid/libuuid as static libraries and packages depending on it will only require util-linux at build time rather than runtime. On the other hand this is against the rule of not shipping static libraries.

Proposal: make libblkid / libuuid separate packages

Vanilla is strongly against split packages but since util-linux should not ship libuuid libblkid by itself, those packages could be created as standalone.

What if I do want coreutils/util-linux/shadow/less/whatever?

No problem. Busybox package will only be built and installed as busybox command. Then, symlinks are created if they are not present on the disk.

Therefore this may happen:

  1. busybox is installed
    1. all commands are symlinked to busybox
  2. coreutils and util-linux are installed
    1. all symlinks are invalidated and coreutils/util-linux have precedence
  3. coreutils or util-linux is uninstalled
    1. a post script reinstall missing symlinks from busybox

Updated by David Demelier 3 months ago · 13 revisions