# Description: Utilities for rescue and embedded systems # URL: https://www.busybox.net/ # Maintainer: KRAK3N Team, core ports at krak3n dot my name=busybox version=1.37.0 release=5 source=(https://${name}.net/downloads/${name}-${version}.tar.bz2 0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch 0006-modinfo-add-k-option-for-kernel-version.patch 0007-nologin-Install-applet-to-sbin-instead-of-usr-sbin.patch 0016-ping-make-ping-work-without-root-privileges.patch 0031-syslogd-fix-wrong-OPT_locallog-flag-detection.patch 0034-adduser-remove-preconfigured-GECOS-full-name-field.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 shutdown) _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() { cd ${name}-${version} for p in $SRC/*.patch; do patch -Np1 -i $p done make defconfig # disable unneeded applets _disable LINUX32 LINUX64 LINUXRC DPKG DPKG_DEB RPM RUN_PARTS MODPROBE_SMALL HUSH SHELL_HUSH # enable needed applets _enable STATIC FEATURE_MODUTILS_ALIAS FEATURE_MODUTILS_SYMBOLS # workaround lxdialog not work with clang #sed 's/$cc/$cc -Wno-implicit-int/' -i scripts/kconfig/lxdialog/check-lxdialog.sh #make menuconfig 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 # wall is provided by util-linux rm $PKG/usr/bin/wall # remove from package that conflict with existing packages for i in chattr dmesg getopt ionice kill lsattr more mount mountpoint rev scriptreplay \ setarch umount blkid blockdev depmod fdisk findfs fsck fsck.minix fstrim hwclock \ insmod losetup lsmod mkdosfs mke2fs mkfs.ext2 mkfs.minix mkfs.vfat mkswap modinfo \ modprobe pivot_root rmmod sulogin swapoff swapon switch_root; do rm $PKG/*/$i done for i in blkdiscard bunzip2 bzcat bzip2 cal chrt clear eject fallocate find flock getfattr \ hexdump ipcrm ipcs last logger lzcat lzma man mesg nsenter patch renice reset rx \ script setfattr setsid strings taskset unlzma unshare unxz xargs xz xzcat chat \ fsfreeze partprobe readprofile rtcwake; do rm $PKG/*/*/$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 for s in $SRC/*.run; do s=${s##*/}; s=${s%.run} install -Dm755 $SRC/$s.run $PKG/etc/sv/$s/run ln -s ../../../run/runit/supervise.$s $PKG/etc/sv/$s/supervise done # shutdown wrapper script install -m755 $SRC/shutdown $PKG/sbin/shutdown # crontab dir mkdir -p $PKG/var/spool/cron/crontabs }