aboutsummaryrefslogtreecommitdiff
path: root/busybox
diff options
context:
space:
mode:
Diffstat (limited to 'busybox')
-rw-r--r--busybox/.checksum26
-rw-r--r--busybox/.files429
-rw-r--r--busybox/0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch64
-rw-r--r--busybox/0016-ping-make-ping-work-without-root-privileges.patch209
-rw-r--r--busybox/abuild102
-rwxr-xr-xbusybox/acpid.run3
-rw-r--r--busybox/adduser-no-setgid.patch12
-rw-r--r--busybox/busybox-suidwrapper.c57
-rwxr-xr-xbusybox/crond.run2
-rw-r--r--busybox/fsck-resolve-uuid.patch56
-rwxr-xr-xbusybox/httpd.run2
-rwxr-xr-xbusybox/inetd.run2
-rw-r--r--busybox/kernel-6.8-tca.patch43
-rwxr-xr-xbusybox/klogd.run2
-rw-r--r--busybox/mdev.conf111
-rwxr-xr-xbusybox/mdev.run3
-rw-r--r--busybox/modprobe-kernel-version.patch71
-rwxr-xr-xbusybox/ntpd.run2
-rw-r--r--busybox/pause.139
-rw-r--r--busybox/pause.c20
-rw-r--r--busybox/print-unicode.patch22
-rwxr-xr-xbusybox/syslogd.run2
-rwxr-xr-xbusybox/tty1.run2
-rwxr-xr-xbusybox/tty2.run2
-rwxr-xr-xbusybox/tty3.run2
-rwxr-xr-xbusybox/tty4.run2
-rwxr-xr-xbusybox/tty5.run2
-rwxr-xr-xbusybox/ttyS0.run2
28 files changed, 1291 insertions, 0 deletions
diff --git a/busybox/.checksum b/busybox/.checksum
new file mode 100644
index 00000000..2344f1b0
--- /dev/null
+++ b/busybox/.checksum
@@ -0,0 +1,26 @@
+6499c4a3d5379e4e34e30a84f7ef9ae513b696694a07d1f4fbd9de9a998d0da1 0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch
+8c364768319aa2f68f480fe1fb4679af38cd692c5e7c66c8e0c2e0e0c7464e4c 0016-ping-make-ping-work-without-root-privileges.patch
+d7fef12ae5c778a12294be5da8ff8ffcc4a3ff3e0a5dca5885964626a47c2a0f acpid.run
+f62969ee1426bea40ffd603cb01aa4f6e264930ce29a0266b776f5d08253772a adduser-no-setgid.patch
+179c4567a112635be6cb442fd8e3ff95dd0e718facd0666f2426d94322110a8f busybox-1.37.0.tar.bz2
+c8e25401863bfdecb4f3a5d4b68ef0507bac74dd69782ce3abdd7e49fecc4a80 busybox-suidwrapper.c
+48b8a6cc6f4aa539de48f5c4d405a4400239215fe3dc7f30df370951e51743ca crond.run
+2fc84cd00bba1a27bb692fb61f7b06307bd2a618161c1f019efd5a8432b0f3c5 fsck-resolve-uuid.patch
+91df6065aec94c67f59f0d10e7beb1cd05286d8739bf57f478382a98d2ef90a5 httpd.run
+1e7ca4ffd2de2182a591c0c9eb8f1f2d792342db96a44762a4ef022253aaaa5c inetd.run
+46d81cd7a5096e997051729d6d5de2735bbb71864c86778fb79202ef6feef881 kernel-6.8-tca.patch
+e8fa37d2abb51c4d75d473b0b495b245afee37e48e80b8a4fd5b3539bc06ad68 klogd.run
+a8be467d592f549df6405baa7e6228fd4363c759200161222a4b23e72ebd65f2 mdev.conf
+12e52732c806aaebd01f6ca9a88594d3be568eb157e44208dde64237b5cfd8af mdev.run
+0e7127f64ee6760d433ceff02e3c6300c5cbf35ac0172037c68725538babd32c modprobe-kernel-version.patch
+8901b39de476372c4701ba88df0872818252b638e74922a22a483db41b487016 ntpd.run
+71446b4690cd21f8e5fddd85f6fbf70c4bfbe1998988764e572021ee674d6790 pause.1
+8a3b2dc28757685ce69dd472483127d47703f4f7995395f1980745f3b1bf88b0 pause.c
+fd866b53f9d1ca305c15b93bc2699caaf1c930f093326bb737cc33fa2455787e print-unicode.patch
+0c3c5db99153d1017813c8b119bc317969a945360cfb83b41d13de4e2d0d47b3 syslogd.run
+f220e64f2c99e5fae0bf764a750dcab6b91568f8afbee791949b43bc189cc8c0 tty1.run
+885c30ed1f30e988f33336318e60b8b340a0772243860103a14274a388c63590 tty2.run
+6d4d3465dcd4f82114eefdb4cc20703bc1cb53b36a494e558e4f749fd2d7e0a7 tty3.run
+308c64afb0fac11a04ca7acdbd03d376ef3fc034ce60e0aff5cf639cd0a2844a tty4.run
+7c60f858969c374e06d03c1d649696d4242f43676ef8e7dd6cdf606a4e583592 tty5.run
+e1fb7d9b56a24067762dd7a931e95a2c6b271134d90b9dc10a57502e2b05dae2 ttyS0.run
diff --git a/busybox/.files b/busybox/.files
new file mode 100644
index 00000000..e8ef6101
--- /dev/null
+++ b/busybox/.files
@@ -0,0 +1,429 @@
+drwxr-xr-x root/root bin/
+lrwxrwxrwx root/root bin/arch -> busybox
+lrwxrwxrwx root/root bin/ash -> busybox
+lrwxrwxrwx root/root bin/base32 -> busybox
+lrwxrwxrwx root/root bin/base64 -> busybox
+-rwxr-xr-x root/root bin/busybox
+-rwsr-xr-x root/root bin/busybox-suidwrapper
+lrwxrwxrwx root/root bin/cat -> busybox
+lrwxrwxrwx root/root bin/chgrp -> busybox
+lrwxrwxrwx root/root bin/chmod -> busybox
+lrwxrwxrwx root/root bin/chown -> busybox
+lrwxrwxrwx root/root bin/conspy -> busybox
+lrwxrwxrwx root/root bin/cp -> busybox
+lrwxrwxrwx root/root bin/cpio -> busybox
+lrwxrwxrwx root/root bin/cttyhack -> busybox
+lrwxrwxrwx root/root bin/date -> busybox
+lrwxrwxrwx root/root bin/dd -> busybox
+lrwxrwxrwx root/root bin/df -> busybox
+lrwxrwxrwx root/root bin/diff -> busybox
+lrwxrwxrwx root/root bin/dmesg -> busybox
+lrwxrwxrwx root/root bin/dnsdomainname -> busybox
+lrwxrwxrwx root/root bin/dumpkmap -> busybox
+lrwxrwxrwx root/root bin/echo -> busybox
+lrwxrwxrwx root/root bin/ed -> busybox
+lrwxrwxrwx root/root bin/egrep -> busybox
+lrwxrwxrwx root/root bin/false -> busybox
+lrwxrwxrwx root/root bin/fatattr -> busybox
+lrwxrwxrwx root/root bin/fdflush -> busybox
+lrwxrwxrwx root/root bin/fgrep -> busybox
+lrwxrwxrwx root/root bin/fsync -> busybox
+lrwxrwxrwx root/root bin/getopt -> busybox
+lrwxrwxrwx root/root bin/grep -> busybox
+lrwxrwxrwx root/root bin/gunzip -> busybox
+lrwxrwxrwx root/root bin/gzip -> busybox
+lrwxrwxrwx root/root bin/hostname -> busybox
+lrwxrwxrwx root/root bin/ionice -> busybox
+lrwxrwxrwx root/root bin/iostat -> busybox
+lrwxrwxrwx root/root bin/ipcalc -> busybox
+lrwxrwxrwx root/root bin/kbd_mode -> busybox
+lrwxrwxrwx root/root bin/kill -> busybox
+lrwxrwxrwx root/root bin/link -> busybox
+lrwxrwxrwx root/root bin/linux32 -> busybox
+lrwxrwxrwx root/root bin/linux64 -> busybox
+lrwxrwxrwx root/root bin/ln -> busybox
+lrwxrwxrwx root/root bin/login -> busybox-suidwrapper
+lrwxrwxrwx root/root bin/ls -> busybox
+lrwxrwxrwx root/root bin/lzop -> busybox
+lrwxrwxrwx root/root bin/makemime -> busybox
+lrwxrwxrwx root/root bin/mkdir -> busybox
+lrwxrwxrwx root/root bin/mknod -> busybox
+lrwxrwxrwx root/root bin/mktemp -> busybox
+lrwxrwxrwx root/root bin/more -> busybox
+lrwxrwxrwx root/root bin/mount -> busybox
+lrwxrwxrwx root/root bin/mountpoint -> busybox
+lrwxrwxrwx root/root bin/mpstat -> busybox
+lrwxrwxrwx root/root bin/mt -> busybox
+lrwxrwxrwx root/root bin/mv -> busybox
+lrwxrwxrwx root/root bin/netstat -> busybox
+lrwxrwxrwx root/root bin/nice -> busybox
+lrwxrwxrwx root/root bin/pidof -> busybox
+lrwxrwxrwx root/root bin/ping -> busybox-suidwrapper
+lrwxrwxrwx root/root bin/ping6 -> busybox-suidwrapper
+lrwxrwxrwx root/root bin/pipe_progress -> busybox
+lrwxrwxrwx root/root bin/printenv -> busybox
+lrwxrwxrwx root/root bin/ps -> busybox
+lrwxrwxrwx root/root bin/pwd -> busybox
+lrwxrwxrwx root/root bin/reformime -> busybox
+lrwxrwxrwx root/root bin/resume -> busybox
+lrwxrwxrwx root/root bin/rev -> busybox
+lrwxrwxrwx root/root bin/rm -> busybox
+lrwxrwxrwx root/root bin/rmdir -> busybox
+lrwxrwxrwx root/root bin/scriptreplay -> busybox
+lrwxrwxrwx root/root bin/sed -> busybox
+lrwxrwxrwx root/root bin/setarch -> busybox
+lrwxrwxrwx root/root bin/setpriv -> busybox
+lrwxrwxrwx root/root bin/setserial -> busybox
+lrwxrwxrwx root/root bin/sh -> busybox
+lrwxrwxrwx root/root bin/sleep -> busybox
+lrwxrwxrwx root/root bin/stat -> busybox
+lrwxrwxrwx root/root bin/stty -> busybox
+lrwxrwxrwx root/root bin/su -> busybox-suidwrapper
+lrwxrwxrwx root/root bin/sync -> busybox
+lrwxrwxrwx root/root bin/tar -> busybox
+lrwxrwxrwx root/root bin/touch -> busybox
+lrwxrwxrwx root/root bin/true -> busybox
+lrwxrwxrwx root/root bin/umount -> busybox
+lrwxrwxrwx root/root bin/uname -> busybox
+lrwxrwxrwx root/root bin/usleep -> busybox
+lrwxrwxrwx root/root bin/vi -> busybox
+lrwxrwxrwx root/root bin/watch -> busybox
+lrwxrwxrwx root/root bin/zcat -> busybox
+drwxr-xr-x root/root etc/
+-rw-r--r-- root/root etc/mdev.conf.new
+drwxr-xr-x root/root etc/sv/
+drwxr-xr-x root/root etc/sv/acpid/
+-rwxr-xr-x root/root etc/sv/acpid/run.new
+lrwxrwxrwx root/root etc/sv/acpid/supervise -> ../../../run/runit/supervise.acpid
+drwxr-xr-x root/root etc/sv/crond/
+-rwxr-xr-x root/root etc/sv/crond/run.new
+lrwxrwxrwx root/root etc/sv/crond/supervise -> ../../../run/runit/supervise.crond
+drwxr-xr-x root/root etc/sv/httpd/
+-rwxr-xr-x root/root etc/sv/httpd/run.new
+lrwxrwxrwx root/root etc/sv/httpd/supervise -> ../../../run/runit/supervise.httpd
+drwxr-xr-x root/root etc/sv/inetd/
+-rwxr-xr-x root/root etc/sv/inetd/run.new
+lrwxrwxrwx root/root etc/sv/inetd/supervise -> ../../../run/runit/supervise.inetd
+drwxr-xr-x root/root etc/sv/klogd/
+-rwxr-xr-x root/root etc/sv/klogd/run.new
+lrwxrwxrwx root/root etc/sv/klogd/supervise -> ../../../run/runit/supervise.klogd
+drwxr-xr-x root/root etc/sv/mdev/
+-rwxr-xr-x root/root etc/sv/mdev/run.new
+lrwxrwxrwx root/root etc/sv/mdev/supervise -> ../../../run/runit/supervise.mdev
+drwxr-xr-x root/root etc/sv/ntpd/
+-rwxr-xr-x root/root etc/sv/ntpd/run.new
+lrwxrwxrwx root/root etc/sv/ntpd/supervise -> ../../../run/runit/supervise.ntpd
+drwxr-xr-x root/root etc/sv/syslogd/
+-rwxr-xr-x root/root etc/sv/syslogd/run.new
+lrwxrwxrwx root/root etc/sv/syslogd/supervise -> ../../../run/runit/supervise.syslogd
+drwxr-xr-x root/root etc/sv/tty1/
+-rwxr-xr-x root/root etc/sv/tty1/run.new
+lrwxrwxrwx root/root etc/sv/tty1/supervise -> ../../../run/runit/supervise.tty1
+drwxr-xr-x root/root etc/sv/tty2/
+-rwxr-xr-x root/root etc/sv/tty2/run.new
+lrwxrwxrwx root/root etc/sv/tty2/supervise -> ../../../run/runit/supervise.tty2
+drwxr-xr-x root/root etc/sv/tty3/
+-rwxr-xr-x root/root etc/sv/tty3/run.new
+lrwxrwxrwx root/root etc/sv/tty3/supervise -> ../../../run/runit/supervise.tty3
+drwxr-xr-x root/root etc/sv/tty4/
+-rwxr-xr-x root/root etc/sv/tty4/run.new
+lrwxrwxrwx root/root etc/sv/tty4/supervise -> ../../../run/runit/supervise.tty4
+drwxr-xr-x root/root etc/sv/tty5/
+-rwxr-xr-x root/root etc/sv/tty5/run.new
+lrwxrwxrwx root/root etc/sv/tty5/supervise -> ../../../run/runit/supervise.tty5
+drwxr-xr-x root/root etc/sv/ttyS0/
+-rwxr-xr-x root/root etc/sv/ttyS0/run.new
+lrwxrwxrwx root/root etc/sv/ttyS0/supervise -> ../../../run/runit/supervise.ttyS0
+drwxr-xr-x root/root sbin/
+lrwxrwxrwx root/root sbin/acpid -> ../bin/busybox
+lrwxrwxrwx root/root sbin/adjtimex -> ../bin/busybox
+lrwxrwxrwx root/root sbin/arp -> ../bin/busybox
+lrwxrwxrwx root/root sbin/blockdev -> ../bin/busybox
+lrwxrwxrwx root/root sbin/bootchartd -> ../bin/busybox
+lrwxrwxrwx root/root sbin/depmod -> ../bin/busybox
+lrwxrwxrwx root/root sbin/devmem -> ../bin/busybox
+lrwxrwxrwx root/root sbin/fbsplash -> ../bin/busybox
+lrwxrwxrwx root/root sbin/fdisk -> ../bin/busybox
+lrwxrwxrwx root/root sbin/freeramdisk -> ../bin/busybox
+lrwxrwxrwx root/root sbin/fsck -> ../bin/busybox
+lrwxrwxrwx root/root sbin/fstrim -> ../bin/busybox
+lrwxrwxrwx root/root sbin/getty -> ../bin/busybox
+lrwxrwxrwx root/root sbin/halt -> ../bin/busybox
+lrwxrwxrwx root/root sbin/hdparm -> ../bin/busybox
+lrwxrwxrwx root/root sbin/hwclock -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ifconfig -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ifdown -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ifenslave -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ifup -> ../bin/busybox
+lrwxrwxrwx root/root sbin/init -> ../bin/busybox
+lrwxrwxrwx root/root sbin/insmod -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ip -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ipaddr -> ../bin/busybox
+lrwxrwxrwx root/root sbin/iplink -> ../bin/busybox
+lrwxrwxrwx root/root sbin/ipneigh -> ../bin/busybox
+lrwxrwxrwx root/root sbin/iproute -> ../bin/busybox
+lrwxrwxrwx root/root sbin/iprule -> ../bin/busybox
+lrwxrwxrwx root/root sbin/iptunnel -> ../bin/busybox
+lrwxrwxrwx root/root sbin/klogd -> ../bin/busybox
+lrwxrwxrwx root/root sbin/loadkmap -> ../bin/busybox
+lrwxrwxrwx root/root sbin/logread -> ../bin/busybox
+lrwxrwxrwx root/root sbin/losetup -> ../bin/busybox
+lrwxrwxrwx root/root sbin/lsmod -> ../bin/busybox
+lrwxrwxrwx root/root sbin/makedevs -> ../bin/busybox
+lrwxrwxrwx root/root sbin/mdev -> ../bin/busybox
+lrwxrwxrwx root/root sbin/mkswap -> ../bin/busybox
+lrwxrwxrwx root/root sbin/modinfo -> ../bin/busybox
+lrwxrwxrwx root/root sbin/modprobe -> ../bin/busybox
+lrwxrwxrwx root/root sbin/nameif -> ../bin/busybox
+lrwxrwxrwx root/root sbin/nologin -> ../bin/busybox
+lrwxrwxrwx root/root sbin/pivot_root -> ../bin/busybox
+lrwxrwxrwx root/root sbin/poweroff -> ../bin/busybox
+lrwxrwxrwx root/root sbin/raidautorun -> ../bin/busybox
+lrwxrwxrwx root/root sbin/reboot -> ../bin/busybox
+lrwxrwxrwx root/root sbin/rmmod -> ../bin/busybox
+lrwxrwxrwx root/root sbin/route -> ../bin/busybox
+lrwxrwxrwx root/root sbin/run-init -> ../bin/busybox
+lrwxrwxrwx root/root sbin/runlevel -> ../bin/busybox
+lrwxrwxrwx root/root sbin/setconsole -> ../bin/busybox
+lrwxrwxrwx root/root sbin/slattach -> ../bin/busybox
+lrwxrwxrwx root/root sbin/start-stop-daemon -> ../bin/busybox
+lrwxrwxrwx root/root sbin/sulogin -> ../bin/busybox
+lrwxrwxrwx root/root sbin/swapoff -> ../bin/busybox
+lrwxrwxrwx root/root sbin/swapon -> ../bin/busybox
+lrwxrwxrwx root/root sbin/switch_root -> ../bin/busybox
+lrwxrwxrwx root/root sbin/sysctl -> ../bin/busybox
+lrwxrwxrwx root/root sbin/syslogd -> ../bin/busybox
+lrwxrwxrwx root/root sbin/tc -> ../bin/busybox
+lrwxrwxrwx root/root sbin/tunctl -> ../bin/busybox
+lrwxrwxrwx root/root sbin/udhcpc -> ../bin/busybox
+lrwxrwxrwx root/root sbin/uevent -> ../bin/busybox
+lrwxrwxrwx root/root sbin/vconfig -> ../bin/busybox
+lrwxrwxrwx root/root sbin/watchdog -> ../bin/busybox
+lrwxrwxrwx root/root sbin/zcip -> ../bin/busybox
+drwxr-xr-x root/root usr/
+drwxr-xr-x root/root usr/bin/
+lrwxrwxrwx root/root usr/bin/[ -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/[[ -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ascii -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/awk -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/basename -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/bc -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/beep -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/blkdiscard -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/cal -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/chpst -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/chrt -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/chvt -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/cksum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/cmp -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/comm -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/crc32 -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/crontab -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/cryptpw -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/cut -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/dc -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/deallocvt -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/dirname -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/dos2unix -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/du -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/dumpleases -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/eject -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/env -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/envdir -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/envuidgid -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/expand -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/expr -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/factor -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/fallocate -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/fgconsole -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/find -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/flock -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/fold -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/free -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ftpget -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ftpput -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/fuser -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/getfattr -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/groups -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/hd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/head -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/hexdump -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/hexedit -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/hostid -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/id -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/install -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ipcrm -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ipcs -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/killall -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/last -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/less -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/logger -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/logname -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/lpq -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/lpr -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/lsof -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/lspci -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/lsscsi -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/lsusb -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/md5sum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/mesg -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/microcom -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/mkfifo -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/mkpasswd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nc -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nl -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nmeter -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nohup -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nproc -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nsenter -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/nslookup -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/od -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/openvt -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/passwd -> ../../bin/busybox-suidwrapper
+lrwxrwxrwx root/root usr/bin/paste -> ../../bin/busybox
+-rwxr-xr-x root/root usr/bin/pause
+lrwxrwxrwx root/root usr/bin/pgrep -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/pkill -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/pmap -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/printf -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/pscan -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/pstree -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/pwdx -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/readlink -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/realpath -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/renice -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/resize -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/runsv -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/runsvdir -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/script -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/seq -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/setfattr -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/setkeycodes -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/setsid -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/setuidgid -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sha1sum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sha256sum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sha3sum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sha512sum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/showkey -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/shred -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/shuf -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/smemcap -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/softlimit -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sort -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/split -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ssl_client -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sum -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/sv -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/svc -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/svok -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tac -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tail -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/taskset -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tcpsvd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tee -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/telnet -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/test -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tftp -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/time -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/timeout -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/top -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tr -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/traceroute -> ../../bin/busybox-suidwrapper
+lrwxrwxrwx root/root usr/bin/traceroute6 -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tree -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/truncate -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ts -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tsort -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/tty -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/ttysize -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/udhcpc6 -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/udpsvd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/unexpand -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/uniq -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/unix2dos -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/unlink -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/unshare -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/unzip -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/uptime -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/users -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/uudecode -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/uuencode -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/vlock -> ../../bin/busybox-suidwrapper
+lrwxrwxrwx root/root usr/bin/volname -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/w -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/wall -> ../../bin/busybox-suidwrapper
+lrwxrwxrwx root/root usr/bin/wc -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/wget -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/which -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/who -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/whoami -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/whois -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/xargs -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/xxd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/bin/yes -> ../../bin/busybox
+drwxr-xr-x root/root usr/sbin/
+lrwxrwxrwx root/root usr/sbin/add-shell -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/addgroup -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/adduser -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/arping -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/brctl -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/chpasswd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/chroot -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/crond -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/delgroup -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/deluser -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/dhcprelay -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/dnsd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ether-wake -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/fakeidentd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/fbset -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/fdformat -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/fsfreeze -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ftpd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/httpd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/i2cdetect -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/i2cdump -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/i2cget -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/i2cset -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/i2ctransfer -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ifplugd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/inetd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/killall5 -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/loadfont -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/lpd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/mim -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/nanddump -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/nandwrite -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/nbd-client -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ntpd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/partprobe -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/popmaildir -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/powertop -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/rdate -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/rdev -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/readahead -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/readprofile -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/remove-shell -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/rtcwake -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/seedrng -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/sendmail -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/setfont -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/setlogcons -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/svlogd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/telnetd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/tftpd -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubiattach -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubidetach -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubimkvol -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubirename -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubirmvol -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubirsvol -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/ubiupdatevol -> ../../bin/busybox
+lrwxrwxrwx root/root usr/sbin/udhcpd -> ../../bin/busybox
+drwxr-xr-x root/root usr/share/
+drwxr-xr-x root/root usr/share/busybox/
+-rw-r--r-- root/root usr/share/busybox/config
+drwxr-xr-x root/root usr/share/man/
+drwxr-xr-x root/root usr/share/man/man1/
+-rw-r--r-- root/root usr/share/man/man1/pause.1.gz
diff --git a/busybox/0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch b/busybox/0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch
new file mode 100644
index 00000000..3ff61ace
--- /dev/null
+++ b/busybox/0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch
@@ -0,0 +1,64 @@
+From c281b87c89918c05eddbb1101fb87999437a2505 Mon Sep 17 00:00:00 2001
+From: Yao Zi <ziyao@disroot.org>
+Date: Thu, 14 Nov 2024 11:11:50 +0000
+Subject: [PATCH] awk: fix handling of literal backslashes in replacement
+
+According to POSIX standard, a backslash in the replacement of sub()
+should be treated as a literal backslash if it is not preceded by a '&'
+or another backslash. But busybox awk skips it unconditionally,
+regardless of the following character. For example,
+
+ $ echo "abc" | busybox awk 'sub(/abc/, "\\d")'
+ d
+
+where \d is expected here. This is known to break rsync's documentation
+converter.
+
+Let's check the next character before skipping the backslash, following
+POSIX standard and behavior of GNU awk.
+
+Link: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
+Link: https://github.com/RsyncProject/rsync/blob/62bb9bba022ce6a29f8c92307d5569c338b2f711/help-from-md.awk#L22
+Fixes: 5f84c5633 ("awk: fix backslash handling in sub() builtins")
+Signed-off-by: Yao Zi <ziyao@disroot.org>
+---
+ editors/awk.c | 7 ++++++-
+ testsuite/awk.tests | 5 +++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/editors/awk.c b/editors/awk.c
+index 64e752f4b..40f5ba7f7 100644
+--- a/editors/awk.c
++++ b/editors/awk.c
+@@ -2636,8 +2636,13 @@ static int awk_sub(node *rn, const char *repl, int nm, var *src, var *dest /*,in
+ resbuf = qrealloc(resbuf, residx + replen + n, &resbufsize);
+ memcpy(resbuf + residx, sp + pmatch[j].rm_so - start_ofs, n);
+ residx += n;
+- } else
++ } else {
++/* '\\' and '&' following a backslash keep its original meaning, any other
++ * occurrence of a '\\' should be treated as literal */
++ if (bslash && c != '\\' && c != '&')
++ resbuf[residx++] = '\\';
+ resbuf[residx++] = c;
++ }
+ bslash = 0;
+ }
+ }
+diff --git a/testsuite/awk.tests b/testsuite/awk.tests
+index be25f6696..61b3bc7d6 100755
+--- a/testsuite/awk.tests
++++ b/testsuite/awk.tests
+@@ -617,4 +617,9 @@ testing 'awk gsub erroneous word start match' \
+ 'abc\n' \
+ '' ''
+
++testing 'awk sub literal backslash in replacement' \
++ 'awk '$sq'sub(/abc/, "\\\d")'$sq \
++ '\d\n' \
++ '' 'abc\n'
++
+ exit $FAILCOUNT
+--
+2.47.1
+
diff --git a/busybox/0016-ping-make-ping-work-without-root-privileges.patch b/busybox/0016-ping-make-ping-work-without-root-privileges.patch
new file mode 100644
index 00000000..661f0469
--- /dev/null
+++ b/busybox/0016-ping-make-ping-work-without-root-privileges.patch
@@ -0,0 +1,209 @@
+From 19c6c34fb6318605e58a9b209cf742d559c0d467 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 29 Mar 2016 09:23:08 +0200
+Subject: [PATCH] ping: make ping work without root privileges
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ networking/ping.c | 115 +++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 94 insertions(+), 21 deletions(-)
+
+diff --git a/networking/ping.c b/networking/ping.c
+index 9805695a1..5e4488abd 100644
+--- a/networking/ping.c
++++ b/networking/ping.c
+@@ -208,6 +208,7 @@ enum {
+ pingsock = 0,
+ };
+
++static int using_dgram;
+ static void
+ #if ENABLE_PING6
+ create_icmp_socket(len_and_sockaddr *lsa)
+@@ -224,9 +225,23 @@ create_icmp_socket(void)
+ #endif
+ sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */
+ if (sock < 0) {
+- if (errno == EPERM)
+- bb_simple_error_msg_and_die(bb_msg_perm_denied_are_you_root);
+- bb_simple_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
++ if (errno != EPERM)
++ bb_simple_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
++#if defined(__linux__) || defined(__APPLE__)
++ /* We don't have root privileges. Try SOCK_DGRAM instead.
++ * Linux needs net.ipv4.ping_group_range for this to work.
++ * MacOSX allows ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ
++ */
++#if ENABLE_PING6
++ if (lsa->u.sa.sa_family == AF_INET6)
++ sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6);
++ else
++#endif
++ sock = socket(AF_INET, SOCK_DGRAM, 1); /* 1 == ICMP */
++ if (sock < 0)
++#endif
++ bb_simple_error_msg_and_die(bb_msg_perm_denied_are_you_root);
++ using_dgram = 1;
+ }
+
+ xmove_fd(sock, pingsock);
+@@ -279,10 +294,12 @@ static void ping4(len_and_sockaddr *lsa)
+ bb_simple_perror_msg("recvfrom");
+ continue;
+ }
+- if (c >= 76) { /* ip + icmp */
+- struct iphdr *iphdr = (struct iphdr *) G.packet;
++ if (c >= 76 || using_dgram && (c == 64)) { /* ip + icmp */
++ if(!using_dgram) {
++ struct iphdr *iphdr = (struct iphdr *) G.packet;
+
+- pkt = (struct icmp *) (G.packet + (iphdr->ihl << 2)); /* skip ip hdr */
++ pkt = (struct icmp *) (G.packet + (iphdr->ihl << 2)); /* skip ip hdr */
++ } else pkt = (struct icmp *) G.packet;
+ if (pkt->icmp_id != G.myid)
+ continue; /* not our ping */
+ if (pkt->icmp_type == ICMP_ECHOREPLY)
+@@ -691,19 +708,21 @@ static void unpack_tail(int sz, uint32_t *tp,
+ }
+ static int unpack4(char *buf, int sz, struct sockaddr_in *from)
+ {
+- struct icmp *icmppkt;
+ struct iphdr *iphdr;
++ struct icmp *icmppkt;
+ int hlen;
+
+ /* discard if too short */
+ if (sz < (datalen + ICMP_MINLEN))
+ return 0;
++ if(!using_dgram) {
++ /* check IP header */
++ iphdr = (struct iphdr *) buf;
++ hlen = iphdr->ihl << 2;
++ sz -= hlen;
++ icmppkt = (struct icmp *) (buf + hlen);
++ } else icmppkt = (struct icmp *) buf;
+
+- /* check IP header */
+- iphdr = (struct iphdr *) buf;
+- hlen = iphdr->ihl << 2;
+- sz -= hlen;
+- icmppkt = (struct icmp *) (buf + hlen);
+ if (icmppkt->icmp_id != myid)
+ return 0; /* not our ping */
+
+@@ -715,7 +734,7 @@ static int unpack4(char *buf, int sz, struct sockaddr_in *from)
+ tp = (uint32_t *) icmppkt->icmp_data;
+ unpack_tail(sz, tp,
+ inet_ntoa(*(struct in_addr *) &from->sin_addr.s_addr),
+- recv_seq, iphdr->ttl);
++ recv_seq, using_dgram ? 42 : iphdr->ttl);
+ return 1;
+ }
+ if (icmppkt->icmp_type != ICMP_ECHO) {
+@@ -765,11 +784,31 @@ static void ping4(len_and_sockaddr *lsa)
+ int sockopt;
+
+ pingaddr.sin = lsa->u.sin;
+- if (source_lsa) {
++ if (source_lsa && !using_dgram) {
+ if (setsockopt(pingsock, IPPROTO_IP, IP_MULTICAST_IF,
+ &source_lsa->u.sa, source_lsa->len))
+ bb_simple_error_msg_and_die("can't set multicast source interface");
+ xbind(pingsock, &source_lsa->u.sa, source_lsa->len);
++ } else if(using_dgram) {
++ struct sockaddr_in sa;
++ socklen_t sl;
++
++ sa.sin_family = AF_INET;
++ sa.sin_port = 0;
++ sa.sin_addr.s_addr = source_lsa ?
++ source_lsa->u.sin.sin_addr.s_addr : 0;
++ sl = sizeof(sa);
++
++ if (bind(pingsock, (struct sockaddr *) &sa, sl) == -1) {
++ perror("bind");
++ exit(2);
++ }
++
++ if (getsockname(pingsock, (struct sockaddr *) &sa, &sl) == -1) {
++ perror("getsockname");
++ exit(2);
++ }
++ myid = sa.sin_port;
+ }
+
+ /* enable broadcast pings */
+@@ -786,6 +825,15 @@ static void ping4(len_and_sockaddr *lsa)
+ setsockopt_int(pingsock, IPPROTO_IP, IP_MULTICAST_TTL, opt_ttl);
+ }
+
++ if(using_dgram) {
++ int hold = 65536;
++ if (setsockopt(pingsock, SOL_IP, IP_RECVTTL, (char *)&hold, sizeof(hold)))
++ perror("WARNING: setsockopt(IP_RECVTTL)");
++ if (setsockopt(pingsock, SOL_IP, IP_RETOPTS, (char *)&hold, sizeof(hold)))
++ perror("WARNING: setsockopt(IP_RETOPTS)");
++
++ }
++
+ signal(SIGINT, print_stats_and_exit);
+
+ /* start the ping's going ... */
+@@ -823,10 +871,33 @@ static void ping6(len_and_sockaddr *lsa)
+ char control_buf[CMSG_SPACE(36)];
+
+ pingaddr.sin6 = lsa->u.sin6;
+- if (source_lsa)
++ if (source_lsa && !using_dgram)
+ xbind(pingsock, &source_lsa->u.sa, source_lsa->len);
++ else if(using_dgram) {
++ struct sockaddr_in6 sa = {0};
++ socklen_t sl;
++
++ sa.sin6_family = AF_INET6;
++ sa.sin6_port = 0;
++ if(source_lsa) {
++ memcpy(&sa.sin6_addr, &source_lsa->u.sin6.sin6_addr, sizeof(struct in6_addr));
++ }
++ sl = sizeof(sa);
++
++ if (bind(pingsock, (struct sockaddr *) &sa, sl) == -1) {
++ perror("bind");
++ exit(2);
++ }
++
++ if (getsockname(pingsock, (struct sockaddr *) &sa, &sl) == -1) {
++ perror("getsockname");
++ exit(2);
++ }
++ myid = sa.sin6_port;
++ }
+
+ #ifdef ICMP6_FILTER
++ if(!using_dgram)
+ {
+ struct icmp6_filter filt;
+ if (!(option_mask32 & OPT_VERBOSE)) {
+@@ -972,12 +1043,14 @@ static int common_ping_main(int opt, char **argv)
+ interval = INT_MAX/1000000;
+ G.interval_us = interval * 1000000;
+
+- myid = (uint16_t) getpid();
+- /* we can use native-endian ident, but other Unix ping/traceroute
+- * utils use *big-endian pid*, and e.g. traceroute on our machine may be
+- * *not* from busybox, idents may collide. Follow the convention:
+- */
+- myid = htons(myid);
++ if (!using_dgram) {
++ myid = (uint16_t) getpid();
++ /* we can use native-endian ident, but other Unix ping/traceroute
++ * utils use *big-endian pid*, and e.g. traceroute on our machine may be
++ * *not* from busybox, idents may collide. Follow the convention:
++ */
++ myid = htons(myid);
++ }
+ hostname = argv[optind];
+ #if ENABLE_PING6
+ {
diff --git a/busybox/abuild b/busybox/abuild
new file mode 100644
index 00000000..b1b92271
--- /dev/null
+++ b/busybox/abuild
@@ -0,0 +1,102 @@
+name=busybox
+version=1.37.0
+release=1
+source="https://${name}.net/downloads/${name}-${version}.tar.bz2
+ 0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch
+ 0016-ping-make-ping-work-without-root-privileges.patch
+ kernel-6.8-tca.patch
+ fsck-resolve-uuid.patch
+ adduser-no-setgid.patch
+ print-unicode.patch
+ modprobe-kernel-version.patch
+ busybox-suidwrapper.c
+ mdev.conf
+ acpid.run
+ crond.run
+ ntpd.run
+ syslogd.run
+ klogd.run
+ inetd.run
+ httpd.run
+ mdev.run
+ tty1.run
+ tty2.run
+ tty3.run
+ tty4.run
+ tty5.run
+ ttyS0.run
+ pause.c
+ pause.1"
+sv="acpid.run
+ crond.run
+ ntpd.run
+ syslogd.run
+ klogd.run
+ inetd.run
+ httpd.run
+ mdev.run
+ tty1.run
+ tty2.run
+ tty3.run
+ tty4.run
+ tty5.run
+ ttyS0.run"
+
+_disable() {
+ while [ "$1" ]; do
+ sed "s/^CONFIG_${1}=y/# CONFIG_${1} is not set/" -i .config
+ shift
+ done
+}
+
+_enable() {
+ while [ "$1" ]; do
+ sed "s/^# CONFIG_${1}.*/CONFIG_${1}=y/" -i .config
+ shift
+ done
+}
+
+build() {
+ make defconfig
+
+ _disable XZCAT XZ UNXZ UNLZMA LZCAT LZMA # provided by xz
+ _disable STRINGS # provided by llvm
+ _disable CLEAR RESET # provided by ncurses
+ _disable PATCH # provided by patch (GNU patch works better)
+ _disable BZCAT BUNZIP2 BZIP2 # provided by bzip2
+ _disable CHATTR LSATTR MKE2FS FINDFS MKFS_EXT2 BLKID # provided by e2fsprogs
+ _disable MKDOSFS MKFS_VFAT # provided by dosfstools
+
+ _disable FSCK_MINIX MKFS_MINIX DPKG DPKG_DEB MAN #
+ _disable MODPROBE_SMALL HUSH SHELL_HUSH RPM2CPIO # JUNKS
+ _disable RX CHAT LINUXRC RPM RUN_PARTS #
+
+ _enable STATIC # enable static build
+ _enable FEATURE_MODUTILS_ALIAS FEATURE_MODUTILS_SYMBOLS # enable some kmod features
+
+ # install nologin to /sbin
+ sed 's/BB_DIR_USR_SBIN/BB_DIR_SBIN/' -i util-linux/nologin.c
+
+ # install diff to /bin
+ sed 's/BB_DIR_USR_BIN/BB_DIR_BIN/' -i editors/diff.c
+
+ make
+ make CONFIG_PREFIX=$PKG install
+ mkdir -p $PKG/usr/share/busybox
+ cat .config > $PKG/usr/share/busybox/config
+
+ ${CC:-cc} -o $PKG/bin/busybox-suidwrapper $SRC/busybox-suidwrapper.c
+ chmod u+s $PKG/bin/busybox-suidwrapper
+
+ for i in $($PKG/bin/busybox-suidwrapper -l); do
+ [ -e /bin/$i ] && ln -svf busybox-suidwrapper $PKG/bin/$i
+ [ -e /usr/bin/$i ] && ln -svf ../../bin/busybox-suidwrapper $PKG/usr/bin/$i
+ done
+
+ mkdir -p $PKG/etc
+ install -m644 $SRC/mdev.conf $PKG/etc/mdev.conf
+
+ ${CC:-gcc} ${CFLAGS} $SRC/pause.c -o $PKG/usr/bin/pause
+ install -d $PKG/usr/share/man/man1
+ install -m644 $SRC/pause.1 $PKG/usr/share/man/man1/pause.1
+}
diff --git a/busybox/acpid.run b/busybox/acpid.run
new file mode 100755
index 00000000..000f312e
--- /dev/null
+++ b/busybox/acpid.run
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec acpid -f 2>&1
+
diff --git a/busybox/adduser-no-setgid.patch b/busybox/adduser-no-setgid.patch
new file mode 100644
index 00000000..613c2adb
--- /dev/null
+++ b/busybox/adduser-no-setgid.patch
@@ -0,0 +1,12 @@
+diff --git a/loginutils/adduser.c b/loginutils/adduser.c
+index 850c810..68db3cb 100644
+--- a/loginutils/adduser.c
++++ b/loginutils/adduser.c
+@@ -299,7 +299,6 @@ int adduser_main(int argc UNUSED_PARAM, char **argv)
+ }
+ if ((mkdir_err != 0 && errno != EEXIST)
+ || chown(pw.pw_dir, pw.pw_uid, pw.pw_gid) != 0
+- || chmod(pw.pw_dir, 02755) != 0 /* set setgid bit on homedir */
+ ) {
+ bb_simple_perror_msg(pw.pw_dir);
+ }
diff --git a/busybox/busybox-suidwrapper.c b/busybox/busybox-suidwrapper.c
new file mode 100644
index 00000000..e1f91069
--- /dev/null
+++ b/busybox/busybox-suidwrapper.c
@@ -0,0 +1,57 @@
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <libgen.h>
+
+int main(int argc, char **argv)
+{
+ const char * cmds[] = {
+ "su",
+ "ping",
+ "ping6",
+ "traceroute",
+ "passwd",
+ "login",
+ "vlock",
+ "wall"
+ };
+
+ const char * baseexec = basename(argv[0]);
+
+ if (!strcmp("busybox-suidwrapper", baseexec))
+ {
+ if (argc > 1 && !strcmp("-l", argv[1])){
+ for (int i = 0; i < sizeof(cmds) / sizeof(cmds[0]); ++i)
+ {
+ printf("%s ", cmds[i]);
+ }
+ printf("\n");
+ } else {
+ printf("busybox SUID wrapper\n\nSupported commands:\n");
+ printf("Usage:\n -l\tList available SUID commands\n");
+ if (argc > 1) return 1;
+ }
+ return 0;
+ }
+
+ for (int i = 0; i < sizeof(cmds) / sizeof(cmds[0]); ++i)
+ {
+ if (!strcmp(cmds[i], baseexec))
+ {
+ char **newargv = malloc(sizeof(char *) * (argc + 2));
+ newargv[0] = "/bin/busybox";
+ newargv[1] = (char *)baseexec;
+ for (int i = 1; i < argc; i++)
+ newargv[i + 1] = argv[i];
+ newargv[argc + 1] = NULL;
+
+ int ret = execv("/bin/busybox", newargv);
+ free(newargv);
+ perror(argv[0]);
+ return ret;
+ }
+ }
+ fprintf(stderr, "%s","error: command not in suid whitelist!\n");
+ return 1;
+}
diff --git a/busybox/crond.run b/busybox/crond.run
new file mode 100755
index 00000000..aac79c16
--- /dev/null
+++ b/busybox/crond.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec crond -f -d8 2>&1
diff --git a/busybox/fsck-resolve-uuid.patch b/busybox/fsck-resolve-uuid.patch
new file mode 100644
index 00000000..fd2503e7
--- /dev/null
+++ b/busybox/fsck-resolve-uuid.patch
@@ -0,0 +1,56 @@
+From 2e673aac06d661038001286fd389d1b45c511c66 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 28 Nov 2017 13:23:17 +0100
+Subject: [PATCH] fsck: resolve LABEL=.../UUID=... spec to device
+
+---
+ e2fsprogs/fsck.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/e2fsprogs/fsck.c b/e2fsprogs/fsck.c
+index f5aa3dbe4..e2edc9747 100644
+--- a/e2fsprogs/fsck.c
++++ b/e2fsprogs/fsck.c
+@@ -60,6 +60,7 @@
+ //usage: "\n -t TYPE List of filesystem types to check"
+
+ #include "libbb.h"
++#include "volume_id.h"
+ #include "common_bufsiz.h"
+
+ /* "progress indicator" code is somewhat buggy and ext[23] specific.
+@@ -524,12 +525,13 @@ static int wait_many(int flags)
+ * Execute a particular fsck program, and link it into the list of
+ * child processes we are waiting for.
+ */
+-static void execute(const char *type, const char *device,
++static void execute(const char *type, const char *spec,
+ const char *mntpt /*, int interactive */)
+ {
+ int i;
+ struct fsck_instance *inst;
+ pid_t pid;
++ char *device = (char *)spec;
+
+ G.args[0] = xasprintf("fsck.%s", type);
+
+@@ -544,7 +546,8 @@ static void execute(const char *type, const char *device,
+ }
+ #endif
+
+- G.args[G.num_args - 2] = (char*)device;
++ resolve_mount_spec(&device);
++ G.args[G.num_args - 2] = device;
+ /* G.args[G.num_args - 1] = NULL; - already is */
+
+ if (G.verbose || G.noexecute) {
+@@ -973,9 +976,6 @@ int fsck_main(int argc UNUSED_PARAM, char **argv)
+
+ /* "/dev/blk" or "/path" or "UUID=xxx" or "LABEL=xxx" */
+ if ((arg[0] == '/' && !opts_for_fsck) || strchr(arg, '=')) {
+-// FIXME: must check that arg is a blkdev, or resolve
+-// "/path", "UUID=xxx" or "LABEL=xxx" into block device name
+-// ("UUID=xxx"/"LABEL=xxx" can probably shifted to fsck.auto duties)
+ devices = xrealloc_vector(devices, 2, num_devices);
+ devices[num_devices++] = arg;
+ continue;
diff --git a/busybox/httpd.run b/busybox/httpd.run
new file mode 100755
index 00000000..1a2bb998
--- /dev/null
+++ b/busybox/httpd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec httpd -f 2>&1
diff --git a/busybox/inetd.run b/busybox/inetd.run
new file mode 100755
index 00000000..7c902fc1
--- /dev/null
+++ b/busybox/inetd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec inetd -f 2>&1
diff --git a/busybox/kernel-6.8-tca.patch b/busybox/kernel-6.8-tca.patch
new file mode 100644
index 00000000..b040e7bf
--- /dev/null
+++ b/busybox/kernel-6.8-tca.patch
@@ -0,0 +1,43 @@
+diff --git a/networking/tc.c b/networking/tc.c
+index 3a79fd2..3020bfb 100644
+--- a/networking/tc.c
++++ b/networking/tc.c
+@@ -231,6 +231,7 @@ static int cbq_parse_opt(int argc, char **argv, struct nlmsghdr *n)
+ return 0;
+ }
+ #endif
++#ifdef TCA_CBQ_MAX
+ static int cbq_print_opt(struct rtattr *opt)
+ {
+ struct rtattr *tb[TCA_CBQ_MAX+1];
+@@ -322,6 +323,7 @@ static int cbq_print_opt(struct rtattr *opt)
+ done:
+ return 0;
+ }
++#endif
+
+ static FAST_FUNC int print_qdisc(
+ const struct sockaddr_nl *who UNUSED_PARAM,
+@@ -372,8 +374,10 @@ static FAST_FUNC int print_qdisc(
+ int qqq = index_in_strings(_q_, name);
+ if (qqq == 0) { /* pfifo_fast aka prio */
+ prio_print_opt(tb[TCA_OPTIONS]);
++#ifdef TCA_CBQ_MAX
+ } else if (qqq == 1) { /* class based queuing */
+ cbq_print_opt(tb[TCA_OPTIONS]);
++#endif
+ } else {
+ /* don't know how to print options for this qdisc */
+ printf("(options for %s)", name);
+@@ -442,9 +446,11 @@ static FAST_FUNC int print_class(
+ int qqq = index_in_strings(_q_, name);
+ if (qqq == 0) { /* pfifo_fast aka prio */
+ /* nothing. */ /*prio_print_opt(tb[TCA_OPTIONS]);*/
++#ifdef TCA_CBQ_MAX
+ } else if (qqq == 1) { /* class based queuing */
+ /* cbq_print_copt() is identical to cbq_print_opt(). */
+ cbq_print_opt(tb[TCA_OPTIONS]);
++#endif
+ } else {
+ /* don't know how to print options for this class */
+ printf("(options for %s)", name);
diff --git a/busybox/klogd.run b/busybox/klogd.run
new file mode 100755
index 00000000..3b20a375
--- /dev/null
+++ b/busybox/klogd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec klogd -n 2>&1
diff --git a/busybox/mdev.conf b/busybox/mdev.conf
new file mode 100644
index 00000000..2ea01809
--- /dev/null
+++ b/busybox/mdev.conf
@@ -0,0 +1,111 @@
+# mdev.conf based on https://github.com/slashbeast/mdev-like-a-boss
+# mdev-like-a-boss
+
+# Syntax:
+# [-]devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
+# [-]$ENVVAR=regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
+# [-]@maj,min[-min2] user:group mode [=path]|[>path]|[!] [@|$|*cmd args...]
+#
+# [-]: do not stop on this match, continue reading mdev.conf
+# =: move, >: move and create a symlink
+# !: do not create device node
+# @|$|*: run cmd if $ACTION=remove, @cmd if $ACTION=add, *cmd in all cases
+
+# support module loading on hotplug
+$MODALIAS=.* root:root 660 @modprobe -b "$MODALIAS"
+
+# null may already exist; therefore ownership has to be changed with command
+null root:root 666 @chmod 666 $MDEV
+zero root:root 666
+full root:root 666
+random root:root 444
+urandom root:root 444
+hwrandom root:root 444
+grsec root:root 660
+
+# webcam
+video[0-9] root:video 660
+
+# Kernel-based Virtual Machine.
+kvm root:kvm 660
+
+# vhost-net, to be used with kvm.
+vhost-net root:kvm 660
+
+kmem root:root 640
+mem root:root 640
+port root:root 640
+# console may already exist; therefore ownership has to be changed with command
+console root:tty 600 @chmod 600 $MDEV
+ptmx root:tty 666
+pty.* root:tty 660
+
+# Typical devices
+tty root:tty 666
+tty[0-9]* root:tty 660
+vcsa*[0-9]* root:tty 660
+ttyS[0-9]* root:dialout 660
+
+# block devices
+ram([0-9]*) root:disk 660 >rd/%1
+loop([0-9]+) root:disk 660 >loop/%1
+sr[0-9]* root:cdrom 660 @ln -sf $MDEV cdrom
+fd[0-9]* root:floppy 660
+
+net/tun[0-9]* root:kvm 660
+net/tap[0-9]* root:root 600
+
+# alsa sound devices and audio stuff
+pcm.* root:audio 0660 =snd/
+control.* root:audio 0660 =snd/
+midi.* root:audio 0660 =snd/
+seq root:audio 0660 =snd/
+timer root:audio 0660 =snd/
+
+adsp root:audio 660 >sound/
+audio root:audio 660 >sound/
+dsp root:audio 660 >sound/
+mixer root:audio 660 >sound/
+sequencer.* root:audio 660 >sound/
+snd/.* root:audio 660
+
+# raid controllers
+cciss!(.*) root:disk 660 =cciss/%1
+ida!(.*) root:disk 660 =ida/%1
+rd!(.*) root:disk 660 =rd/%1
+
+fuse root:root 666
+
+card[0-9] root:video 660 =dri/
+
+agpgart root:root 660 >misc/
+psaux root:root 660 >misc/
+rtc root:root 664 >misc/
+
+# input stuff
+SUBSYSTEM=input;.* root:input 660
+
+# v4l stuff
+vbi[0-9] root:video 660 >v4l/
+video[0-9] root:video 660 >v4l/
+
+# dvb stuff
+dvb.* root:video 660
+
+# drm etc
+dri/.* root:video 660
+
+# Don't create old usbdev* devices.
+usbdev[0-9].[0-9]* root:root 660 !
+
+# Stop creating x:x:x:x which looks like /dev/dm-*
+[0-9]+\:[0-9]+\:[0-9]+\:[0-9]+ root:root 660 !
+
+# /dev/cpu support.
+microcode root:root 600 =cpu/
+cpu([0-9]+) root:root 600 =cpu/%1/cpuid
+msr([0-9]+) root:root 600 =cpu/%1/msr
+
+# libudev-zero hotplug.
+SUBSYSTEM=drm;.* root:video 660 *libudev-zero-helper
+SUBSYSTEM=input;.* root:input 660 *libudev-zero-helper
diff --git a/busybox/mdev.run b/busybox/mdev.run
new file mode 100755
index 00000000..af9a3abf
--- /dev/null
+++ b/busybox/mdev.run
@@ -0,0 +1,3 @@
+#!/bin/sh
+printf '\n' 2>/dev/null > /proc/sys/kernel/hotplug
+exec mdev -df 2>&1
diff --git a/busybox/modprobe-kernel-version.patch b/busybox/modprobe-kernel-version.patch
new file mode 100644
index 00000000..2d4274ad
--- /dev/null
+++ b/busybox/modprobe-kernel-version.patch
@@ -0,0 +1,71 @@
+diff --git a/modutils/modprobe.c b/modutils/modprobe.c
+index 0a372a049..ecb29a8fd 100644
+--- a/modutils/modprobe.c
++++ b/modutils/modprobe.c
+@@ -111,7 +111,7 @@
+ //usage: " from the command line\n"
+ //usage:
+ //usage:#define modprobe_trivial_usage
+-//usage: "[-alrqvsD" IF_FEATURE_MODPROBE_BLACKLIST("b") "]"
++//usage: "[-alrqvsD" IF_FEATURE_MODPROBE_BLACKLIST("b") "]" " [-S VERSION]"
+ //usage: " MODULE" IF_FEATURE_CMDLINE_MODULE_OPTIONS(" [SYMBOL=VALUE]...")
+ //usage:#define modprobe_full_usage "\n\n"
+ //usage: " -a Load multiple MODULEs"
+@@ -121,6 +121,7 @@
+ //usage: "\n -v Verbose"
+ //usage: "\n -s Log to syslog"
+ //usage: "\n -D Show dependencies"
++//usage: "\n -S Set kernel version"
+ //usage: IF_FEATURE_MODPROBE_BLACKLIST(
+ //usage: "\n -b Apply blacklist to module names too"
+ //usage: )
+@@ -131,7 +132,7 @@
+ * Note2: -b is always accepted, but if !FEATURE_MODPROBE_BLACKLIST,
+ * it is a no-op.
+ */
+-#define MODPROBE_OPTS "alrDb"
++#define MODPROBE_OPTS "alrDS:b"
+ /* -a and -D _are_ in fact compatible */
+ #define MODPROBE_COMPLEMENTARY "q-v:v-q:l--arD:r--alD:a--lr:D--rl"
+ //#define MODPROBE_OPTS "acd:lnrt:C:b"
+@@ -147,7 +148,8 @@ enum {
+ //OPT_VERONLY = (INSMOD_OPT_UNUSED << x), /* V */
+ //OPT_CONFIGFILE = (INSMOD_OPT_UNUSED << x), /* C */
+ OPT_SHOW_DEPS = (INSMOD_OPT_UNUSED << 3), /* D */
+- OPT_BLACKLIST = (INSMOD_OPT_UNUSED << 4) * ENABLE_FEATURE_MODPROBE_BLACKLIST,
++ OPT_KERNEL = (INSMOD_OPT_UNUSED << 4), /* S */
++ OPT_BLACKLIST = (INSMOD_OPT_UNUSED << 5) * ENABLE_FEATURE_MODPROBE_BLACKLIST,
+ };
+ #if ENABLE_LONG_OPTS
+ static const char modprobe_longopts[] ALIGN1 =
+@@ -560,6 +562,7 @@ int modprobe_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int modprobe_main(int argc UNUSED_PARAM, char **argv)
+ {
+ int rc;
++ char *kernel;
+ unsigned opt;
+ struct module_entry *me;
+
+@@ -567,13 +570,20 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv)
+
+ opt = getopt32long(argv, "^" INSMOD_OPTS MODPROBE_OPTS "\0" MODPROBE_COMPLEMENTARY,
+ modprobe_longopts
+- INSMOD_ARGS
++ INSMOD_ARGS,
++ &kernel
+ );
+ argv += optind;
+
++ /* Set user specified kernel version */
++ if (opt & OPT_KERNEL) {
++ safe_strncpy(G.uts.release, kernel, sizeof(G.uts.release));
++ } else {
++ uname(&G.uts);
++ }
++
+ /* Goto modules location */
+ xchdir(CONFIG_DEFAULT_MODULES_DIR);
+- uname(&G.uts);
+ xchdir(G.uts.release);
+
+ if (opt & OPT_LIST_ONLY) { \ No newline at end of file
diff --git a/busybox/ntpd.run b/busybox/ntpd.run
new file mode 100755
index 00000000..34d2ab20
--- /dev/null
+++ b/busybox/ntpd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec ntpd -n 2>&1
diff --git a/busybox/pause.1 b/busybox/pause.1
new file mode 100644
index 00000000..1e56f20a
--- /dev/null
+++ b/busybox/pause.1
@@ -0,0 +1,39 @@
+.Dd September 27, 2012
+.Dt PAUSE 1
+.Os Linux
+.Sh NAME
+.Nm pause
+.Nd don't exit, efficiently
+.Sh SYNOPSIS
+.Nm pause
+.Sh DESCRIPTION
+.Nm pause
+waits to be terminated by a signal.
+It can be used when service supervision is used but there is no
+long-running program to supervise.
+.Nm pause
+uses minimal system resources.
+.Sh EXAMPLES
+Setting up a static IP address with
+.Xr plugsv 8 .
+.Pp
+.Pa /etc/netsv/eth0/run :
+.Bd -literal -offset indent
+#!/bin/sh
+ip link set eth0 up
+ip addr add 192.0.2.1/24 dev eth0
+exec pause
+.Ed
+.Pp
+.Pa /etc/netsv/eth0/finish :
+.Bd -literal -offset indent
+#!/bin/sh
+ip addr del 192.0.2.1/24 dev eth0
+ip link set eth0 down
+.Ed
+.Sh SEE ALSO
+.Xr sleep 1 ,
+.Xr pause 2
+.Sh AUTHOR
+.An Leah Neukirchen ,
+.Mt leah@vuxu.org .
diff --git a/busybox/pause.c b/busybox/pause.c
new file mode 100644
index 00000000..4825df6b
--- /dev/null
+++ b/busybox/pause.c
@@ -0,0 +1,20 @@
+#include <unistd.h>
+#include <signal.h>
+
+static void
+nop(int sig)
+{
+}
+
+int
+main()
+{
+ signal(SIGTERM, nop);
+ signal(SIGINT, nop);
+ signal(SIGHUP, SIG_IGN);
+
+ pause();
+
+ return 0;
+}
+
diff --git a/busybox/print-unicode.patch b/busybox/print-unicode.patch
new file mode 100644
index 00000000..178fb938
--- /dev/null
+++ b/busybox/print-unicode.patch
@@ -0,0 +1,22 @@
+diff --git a/libbb/printable_string.c b/libbb/printable_string.c
+index a814fd0..f4c7b00 100644
+--- a/libbb/printable_string.c
++++ b/libbb/printable_string.c
+@@ -28,8 +28,6 @@ const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str)
+ }
+ if (c < ' ')
+ break;
+- if (c >= 0x7f)
+- break;
+ s++;
+ }
+
+@@ -42,7 +40,7 @@ const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str)
+ unsigned char c = *d;
+ if (c == '\0')
+ break;
+- if (c < ' ' || c >= 0x7f)
++ if (c < ' ')
+ *d = '?';
+ d++;
+ }
diff --git a/busybox/syslogd.run b/busybox/syslogd.run
new file mode 100755
index 00000000..65a7b972
--- /dev/null
+++ b/busybox/syslogd.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec syslogd -s -m0 2>&1
diff --git a/busybox/tty1.run b/busybox/tty1.run
new file mode 100755
index 00000000..284385d5
--- /dev/null
+++ b/busybox/tty1.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec getty -L 38400 tty1 linux
diff --git a/busybox/tty2.run b/busybox/tty2.run
new file mode 100755
index 00000000..2e49f8db
--- /dev/null
+++ b/busybox/tty2.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec getty -L 38400 tty2 linux
diff --git a/busybox/tty3.run b/busybox/tty3.run
new file mode 100755
index 00000000..ce2a32a0
--- /dev/null
+++ b/busybox/tty3.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec getty -L 38400 tty3 linux
diff --git a/busybox/tty4.run b/busybox/tty4.run
new file mode 100755
index 00000000..65a9beb3
--- /dev/null
+++ b/busybox/tty4.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec getty -L 38400 tty4 linux
diff --git a/busybox/tty5.run b/busybox/tty5.run
new file mode 100755
index 00000000..7f91eb13
--- /dev/null
+++ b/busybox/tty5.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec getty -L 38400 tty5 linux
diff --git a/busybox/ttyS0.run b/busybox/ttyS0.run
new file mode 100755
index 00000000..e4aadabe
--- /dev/null
+++ b/busybox/ttyS0.run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec getty -L 38400 ttyS0 vt100