[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

differences in busybox configurations, part1 (longish)



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


Reply to: