Part one of the discussion series. Config options which are enabled in udeb and static builds but not enabled in regular build.
I assume two things: 1) regular build should include at least all options (with very few exceptions, see below) as udeb and static builds does. 2) generally, we want to ship all available utilities in regular build, and probably the same (maybe minus few exceptions which makes the binary extra-large) for static. This is just a beginning of the list of differences. If the assumptions above are correct, and the changes below look sane, and we agree with something..... ;) Just for the record, non-static allyesconfig for i386 produces the following: text data bss dec hex filename 403449 1790 8988 414227 65213 busybox-1.17.1-9 1331954 2901 9180 1344035 148223 busybox-1.18.3-allyesconfig-shared I'm not sure we really need such a monster, so actual good question I'm still unsure about is: what's the intended usage for this tool? The config I use here does not include "everything" but only the most important utils, especially the ones which can't be easily substituted with shell code fragments. Most important: what's the usage for the static build? DPKG and DPKG_DEB (dpkg applet) Current: deb n static y udeb n Proposed action: enable for deb, keep disabled for udeb Discussion: small dpkg can be useful, especially in a static build indeed (for repair purposes when nothing else can be run). Just keeping two configs in sync for regular build. For udeb it isn't needed, -- can be enabled but we've size constraints. See next option. AR (ar applet) Current: deb n static y udeb y Proposed action: drop from static and udeb Discussion: I'm not sure why it's used for udeb. May be obsolete dpkg applet. Since .deb file is an ar archive, only one of these tools can be built. I prefer to keep dpkg since it is more debian-friendly. FEATURE_NON_POSIX_CP With this option, "cp file symlink" will delete symlink and create a regular file. This does not conform to POSIX, but prevents a symlink attack. Similarly, "cp file device" will not send file's data to the device. Current: deb y static n udeb n Proposed action: disable for deb. This is a good one. From one side we're trying to be POSIX-compatible, from another the standard behavour is a somewhat unsafe, and from 3rd side, this busybox feature appears to be unexpected. Anyway, current cp from coreutils behaves as if this feature is turned off, so let's match coreutils here. --- autentification, login utils --- FEATURE_SHADOWPASSWDS support for getspent() and friends. Current: deb n static y udeb n Proposed action: enable for deb Discussion: It is quite unexpected that busybox can't use shadow passwords. On the other hand, there's just a few applets which actually deals with passwords, and most of them are disabled for deb build. ADDUSER, DELUSER, ADDGROUP, DELGROUP Current: deb n static y udeb n Proposed action: remove from static. Discussion: can be trivially done using some editor or "sed magic" or just 'echo'. PASSWD Current: deb n static y udeb n Proposed action: enable for deb Discussion: probably needs to be setuid to work well, but good for root-only. Can be used from within an initrd to (re)set system password (alternative is to use editor to set it to empty string). CHPASSWD or CRYPTPW (not really a difference, but suggested to be enabled in context of passwd utility, currently disabled) FEATURE_PASSWD_WEAK_CHECK Current: deb n static y udeb n Proposed action: drop for static Discussion: most likely irrelevant option, since the checks it performs are very basic. GETTY, LOGIN, NOLOGIN, SU, SULOGIN, VLOCK Current: deb n static y udeb n Proposed action: disable static Discussion: I'm not actually sure why all this is enabled for static build, it makes very little sense unless we really need full system in a single executable. --- init --- INIT (init applet) Current: deb n static y udeb y Proposed action: enable for deb Discussion: small init is actually useful at times, I use it on our diskless workstations (which runs Debian). FEATURE_INIT_SYSLOG this lets init to perform syslog logging. Current: static n udeb y Proposed action: set to n for deb after enabling init (by default it is enabled upstream). RFC. FEATURE_INITRD Legacy support for running init under the old-style initrd. Allows the name linuxrc to act as init, and it doesn't assume init is PID 1. Current: static y udeb n Proposed action: enable for deb Discussion: Is it actually needed? The feature itself is still supported by current kernel, so it's probably a good idea to support it. The code size is very small. PIVOT_ROOT and FREERAMDISK goes together and near INITRD, since most usage is around initrd. Note that pivot_root is used nowadays for lxc Current: deb n static y udeb y Proposed action: enable for deb Discussion: tools for initrd (legacy but may be useful) HALT Current: deb n static n udeb y Proposed action: enable Discussion: useful system-maintenance utility --- Miscellaneous --- ACPID Current: deb n static y udeb n Proposed action: disable for static Discussion: small acpid is sometimes useful, but it is mostly equivalent for a shell loop reading /proc/acpi/event (this interface is obsolete but still supported). May be used for various custom buttons. RFC. FDISK Current: deb n static y udeb n Proposed action: enable for deb Discussion: may be not the best fdisk tool out there, but sometimes it's very useful in early boot to diagnose boot problems and the like - at least to inspect partition tables. HWCLOCK Current: deb n static y udeb n Proposed action: enable for deb Discussion: manipulation for system time is useful even from initramfs MKSWAP Current: deb n static y udeb y Proposed action: enable for deb Discussion: simple utility, useful for rescue mode, complete implementation so d-i can use it too FBSET Current: deb n static y udeb n Proposed action: drop from static Discussion: legacy code, maybe still useful on old/embedded systems. FDFLUSH Current: deb n static y udeb n Proposed action: drop from static Discussion: legacy code, not needed most of the time, maybe except of some very rare embedded systems EXPAND and UNEXPAND applets. Current: deb n static y udeb n Proposed action: disable for static ED (ed applet) Current: deb n static y udeb n Proposed action: enable for deb Discussion: probably not very useful nowadays directly, but can be used to implement various things like addgroup if needed MESG (mesg applet) Current: deb n static y udeb n Proposed action: disable for static Discussion: chmod can do this FSCK_MINIX, MKFS_MINIX Current: deb n static y udeb n Proposed action: disable for static Discussion: obsolete filesystem REV (rev utility, reverse each line) Current: deb y static n udeb n Proposed action: disable for deb Discussion: anyone use it? MAKEDEVS Current: deb n static y udeb n Proposed action: drop from static Discussion: we've mknod, and we don't create devices in batches nowadays since we've dynamic /dev. MDEV Current: deb n static y udeb n Proposed action: enable for deb Discussion: very small alternative for udev, for all the udev haters out there. CROND, CRONTAB Current: deb n static y udeb n Proposed action: disable for static Discussion: small crond, do we need it? Not needed for rescue, we have real cron (several of them) on the system. RFC. EJECT Current: deb n static y udeb n Proposed action: drop from static Discussion: mostly desktop-oriented command, but actually may be useful to eject an installation media. RFC. LESS Current: deb n static y udeb n Proposed action: enable for deb Discussion: handy utility. We've more too, but it can't scroll backwards. Probably more(1) should go and be replaced with less, or both enabled. IFUPDOWN Current: deb n static y udeb n Proposed: remove from static Discussion: network configuration can be processed manually if necessary NC_SERVER, NC_EXTRA (netcat options) Current: deb n static n udeb y Proposed action: enable for deb and static Discussion: actually useful for rescue system FEATURE_MD5_SHA1_SUM_CHECK Current: deb n static y udeb y Proposed action: enable for deb and static Discussion: useful utility for rescue system That's all for now. Quite a few other differences exists, but I want some agreement with the general line. Thank you for your attention! /mjt -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

