BusyBox: Difference between revisions

From Alpine Linux
m (changed heading)
(moved Shutdown commands from OpenRC page)
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
BusyBox: The Swiss Army Knife of Embedded Linux.
Alpine Linux is built around musl libc and [https://www.busybox.net/ busybox]. To minimize footprint, Alpine Linux comes with BusyBox by default. BusyBox provides replacements for most of the utilities usually found in GNU coreutils, util-linux, etc. Built-in utility programs called as applets share code for many common operations. To list the applets that have been compiled into BusyBox binary, issue the command with no argument as follows: {{ic|$ busybox}}


{{Draft|This page is still being created}}
To view options supported by a specific BusyBox applet, say {{ic|grep}}, issue the command {{ic|$ busybox grep -h}}


BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.
== Ash shell ==


== Ash shell ==
Alpine Linux uses Busybox [[Shell_management#Ash_shell|Ash shell]] for its default shell.
 
== vi ==
 
Busybox uses [https://git.busybox.net/busybox/plain/editors/vi.c tiny vi], a small 'vi' clone. Refer [http://k.japko.eu/busybox-vi-tutorial.html Busybox vi tutorial] for an excellent introduction.
 
== udhcpc ==
 
[[udhcpc]] is the default DHCP client that comes inbuilt with  Busybox.
 
== Cron ==
 
[[Cron#Busybox_crond|Busybox crond]] is the default cron implementation in Alpine Linux.
 
== acpid ==  


Alpine uses Busybox Ash for its default shell.  
Alpine Linux comes inbuilt with a basic version of [[Power_management#Busybox acpid|acpid]] as part of BusyBox.  


=== aliases ===
== Replacing BusyBox utilities==
{{Main|How to get regular stuff working}}
BusyBox is set up as an endpoint for numerous symlinks that substitute various utilities.The utilities in BusyBox generally have fewer options than their full-featured GNU counterparts. If you find certain utilities in busybox lacking in features or options, it is easy to [[How to get regular stuff working|replace]] respective endpoints by their equivalent full-featured utilities.


One can’t set aliases in the ~/.profile, but environment variables can be set in it. In order to use aliases with Busybox Ash, you must set the ENV environment variable to the file where you define your aliases.
== Shutdown commands ==


First create the file {{Path|/etc/profile.d/profile.sh}} as follows:
The busybox command equivalent for traditional GNU/Linux systems shutdown commands are as follows:{{Cmd|<nowiki># reboot  # ⇔ shutdown now -r
{{Cat|/etc/profile.d/profile.sh|if [ -f "$HOME/.config/ash/profile" ]; then
# halt    # ⇔ shutdown now -H
. "$HOME/.config/ash/profile"
# poweroff # ⇔ shutdown now -P</nowiki>}}
fi
}}
Next create the file {{path|~/.config/ash/profile}} as follows:
{{Cat|~/.config/ash/profile|export ENV{{=}}"$HOME/.config/ash/ashrc"
}}
Now aliases can be added in the file {{Path|~/.config/ash/ashrc}}:


{{Cat|~/.config/ash/ashrc|su{{=}}"doas -s"
== See also ==
}}


== See Also ==
* [https://www.busybox.net/ Official website]
* [https://www.busybox.net/ Official website]
* [https://man.archlinux.org/man/busybox.1.en Online Manual]
* [https://busybox.net/downloads/BusyBox.html Official BusyBox Manual]
* [http://k.japko.eu/busybox-vi-tutorial.html Busybox vi tutorial]
[[Category:System Administration]]

Latest revision as of 04:17, 12 August 2025

Alpine Linux is built around musl libc and busybox. To minimize footprint, Alpine Linux comes with BusyBox by default. BusyBox provides replacements for most of the utilities usually found in GNU coreutils, util-linux, etc. Built-in utility programs called as applets share code for many common operations. To list the applets that have been compiled into BusyBox binary, issue the command with no argument as follows: $ busybox

To view options supported by a specific BusyBox applet, say grep, issue the command $ busybox grep -h

Ash shell

Alpine Linux uses Busybox Ash shell for its default shell.

vi

Busybox uses tiny vi, a small 'vi' clone. Refer Busybox vi tutorial for an excellent introduction.

udhcpc

udhcpc is the default DHCP client that comes inbuilt with Busybox.

Cron

Busybox crond is the default cron implementation in Alpine Linux.

acpid

Alpine Linux comes inbuilt with a basic version of acpid as part of BusyBox.

Replacing BusyBox utilities

BusyBox is set up as an endpoint for numerous symlinks that substitute various utilities.The utilities in BusyBox generally have fewer options than their full-featured GNU counterparts. If you find certain utilities in busybox lacking in features or options, it is easy to replace respective endpoints by their equivalent full-featured utilities.

Shutdown commands

The busybox command equivalent for traditional GNU/Linux systems shutdown commands are as follows:

# reboot # ⇔ shutdown now -r # halt # ⇔ shutdown now -H # poweroff # ⇔ shutdown now -P

See also