Discussion:
CTRL-ALT-DEL not working as expected. Seeking for advices
(too old to reply)
Bruno Cornec
2013-03-22 23:53:36 UTC
Permalink
Hello,

I'm using busybox in the context of the GPL disaster recovery and
cloning solution called MondoRescue (Cf: http://www.mondorescue.org).

We have an opened bug report (Cf:
http://trac.mondorescue.org/ticket/627) concerning the restoration
phasebase don busybox, where a user is supposed to be able to press
CTRL-ALT-DEL in order to reboot the computer before launching an
automatic restore. This is not working as expected.

We are up to now using version 1.18.5, with the attached .config file to
compile busybox. We have an inittab file containing:

#
# inittab This file describes how the INIT process should set up
# the system in the mindi-busybox context
#

# Order is important, read from bottom to top

# By default launch the MondoRescue script
console::sysinit:/etc/init.d/rcS

console::restart:/sbin/init

# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot

null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
null::shutdown:/bin/umount -a -r

I'm testing mostly on KVM VMs, and simulate the CTRL-ALT-DEL with the
sendkey command from the monitor window. This is working when we are at
syslinux boot prompt, but as soon as we launch init, then we are unable
to reboot the VM using CTRL-ALT-DEL. I also tested on real HW with the
same result.

So I'm surely doing something wrong, either in my inittab or in my
config of busybox, but I don't see what.

I even tried with the latest 1.20.2 (which I may use as the base for the
next stable version) without more luck either.

Using showkey in the VM, I see that the sendkey command does indeed send
the keys to the system, but it doesn't generate the reboot. I attached
the corresponding capture (well not as it's blocking this mail to the ML
,-).

I read at
http://lists.busybox.net/pipermail/busybox/2012-May/077855.html that a
reason could be a non-busybox reboot but that's not our case. While we
do replace some busybox commands by the native ones, reboot is linked to
busybox (as well as halt, but not shutdown, which I just remarked
now,but linking it to busybox doesn't change stuff anyway).

So I'm looking for advises on how to debug more, or any hint wrt my
usage.

Thanks in advance,
Best regards,
Bruno.
--
Des infos sur la musique ancienne -- http://www.musique-ancienne.org
Des infos sur les logiciels libres -- http://www.HyPer-Linux.org
Home, sweet musical Home -- Lover of Androm?de, B?atrice, Early Music,
Josquin, Linux, M?lisande, Recorder, and S?gol?ne (not in that order)

#
# Automatically generated make config: don't edit
# Busybox version: 1.18.5-rPBREV
# Wed Mar 13 18:16:16 2013
#
CONFIG_HAVE_DOT_CONFIG=y

#
# Busybox Settings
#

#
# General Configuration
#
# CONFIG_DESKTOP is not set
CONFIG_EXTRA_COMPAT=y
CONFIG_INCLUDE_SUSv2=y
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_PLATFORM_LINUX=y
# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_FEATURE_INSTALLER=y
# CONFIG_INSTALL_NO_USR is not set
CONFIG_LOCALE_SUPPORT=y
CONFIG_UNICODE_SUPPORT=y
# CONFIG_UNICODE_USING_LOCALE is not set
# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
CONFIG_SUBST_WCHAR=63
CONFIG_LAST_SUPPORTED_WCHAR=767
# CONFIG_UNICODE_COMBINING_WCHARS is not set
# CONFIG_UNICODE_WIDE_WCHARS is not set
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
# CONFIG_FEATURE_CLEAN_UP is not set
# CONFIG_FEATURE_WTMP is not set
CONFIG_FEATURE_UTMP=y
# CONFIG_FEATURE_PIDFILE is not set
CONFIG_FEATURE_SUID=y
# CONFIG_FEATURE_SUID_CONFIG is not set
# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
# CONFIG_SELINUX is not set
# CONFIG_FEATURE_PREFER_APPLETS is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_FEATURE_SYSLOG=y
# CONFIG_FEATURE_HAVE_RPC is not set

#
# Build Options
#
# CONFIG_STATIC is not set
# CONFIG_PIE is not set
# CONFIG_NOMMU is not set
# CONFIG_BUILD_LIBBUSYBOX is not set
# CONFIG_FEATURE_INDIVIDUAL is not set
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_EXTRA_CFLAGS=""

#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_DEBUG_PESSIMIZE is not set
# CONFIG_WERROR is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set

#
# Installation Options ("make install" behavior)
#
CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_APPLET_HARDLINKS is not set
# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
# CONFIG_INSTALL_APPLET_DONT is not set
# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
CONFIG_PREFIX="./_install"

#
# Busybox Library Tuning
#
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SIZE_VS_SPEED=2
CONFIG_FEATURE_FAST_TOP=y
# CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set
CONFIG_FEATURE_EDITING_HISTORY=15
# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
CONFIG_FEATURE_TAB_COMPLETION=y
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
CONFIG_FEATURE_NON_POSIX_CP=y
CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
CONFIG_FEATURE_COPYBUF_KB=4
# CONFIG_MONOTONIC_SYSCALL is not set
CONFIG_IOCTL_HEX2STR_ERROR=y
CONFIG_FEATURE_HWIB=y

#
# Applets
#

#
# Archival Utilities
#
CONFIG_FEATURE_SEAMLESS_XZ=y
CONFIG_FEATURE_SEAMLESS_LZMA=y
CONFIG_FEATURE_SEAMLESS_BZ2=y
CONFIG_FEATURE_SEAMLESS_GZ=y
# CONFIG_FEATURE_SEAMLESS_Z is not set
CONFIG_AR=y
# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
CONFIG_FEATURE_AR_CREATE=y
# CONFIG_BUNZIP2 is not set
CONFIG_BZIP2=y
CONFIG_CPIO=y
CONFIG_FEATURE_CPIO_O=y
CONFIG_FEATURE_CPIO_P=y
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
CONFIG_GUNZIP=y
CONFIG_GZIP=y
CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
CONFIG_LZOP=y
# CONFIG_LZOP_COMPR_HIGH is not set
# CONFIG_RPM2CPIO is not set
# CONFIG_RPM is not set
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_AUTODETECT=y
CONFIG_FEATURE_TAR_FROM=y
CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
# CONFIG_FEATURE_TAR_TO_COMMAND is not set
CONFIG_FEATURE_TAR_UNAME_GNAME=y
CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
# CONFIG_FEATURE_TAR_SELINUX is not set
# CONFIG_UNCOMPRESS is not set
CONFIG_UNLZMA=y
# CONFIG_FEATURE_LZMA_FAST is not set
CONFIG_LZMA=y
CONFIG_UNXZ=y
CONFIG_XZ=y
# CONFIG_UNZIP is not set

#
# Coreutils
#
CONFIG_BASENAME=y
CONFIG_CAT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
# CONFIG_FEATURE_DATE_NANO is not set
CONFIG_FEATURE_DATE_COMPAT=y
CONFIG_TEST=y
# CONFIG_FEATURE_TEST_64 is not set
CONFIG_TR=y
CONFIG_FEATURE_TR_CLASSES=y
CONFIG_FEATURE_TR_EQUIV=y
CONFIG_BASE64=y
# CONFIG_CAL is not set
# CONFIG_CATV is not set
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
CONFIG_CHROOT=y
CONFIG_CKSUM=y
# CONFIG_COMM is not set
CONFIG_CP=y
CONFIG_FEATURE_CP_LONG_OPTIONS=y
CONFIG_CUT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
# CONFIG_EXPAND is not set
# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
CONFIG_EXPR=y
# CONFIG_EXPR_MATH_SUPPORT_64 is not set
CONFIG_FALSE=y
# CONFIG_FOLD is not set
CONFIG_FSYNC=y
CONFIG_HEAD=y
# CONFIG_FEATURE_FANCY_HEAD is not set
# CONFIG_HOSTID is not set
CONFIG_ID=y
# CONFIG_INSTALL is not set
# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
# CONFIG_LENGTH is not set
CONFIG_LN=y
# CONFIG_LOGNAME is not set
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
CONFIG_MD5SUM=y
CONFIG_MKDIR=y
# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
CONFIG_MKFIFO=y
CONFIG_MKNOD=y
CONFIG_MV=y
# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
# CONFIG_NICE is not set
# CONFIG_NOHUP is not set
CONFIG_OD=y
# CONFIG_PRINTENV is not set
# CONFIG_PRINTF is not set
CONFIG_PWD=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_REALPATH=y
CONFIG_RM=y
CONFIG_RMDIR=y
CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y
# CONFIG_SEQ is not set
CONFIG_SHA1SUM=y
CONFIG_SHA256SUM=y
CONFIG_SHA512SUM=y
CONFIG_SLEEP=y
# CONFIG_FEATURE_FANCY_SLEEP is not set
# CONFIG_FEATURE_FLOAT_SLEEP is not set
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
# CONFIG_SPLIT is not set
# CONFIG_FEATURE_SPLIT_FANCY is not set
# CONFIG_STAT is not set
# CONFIG_FEATURE_STAT_FORMAT is not set
CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
CONFIG_TAC=y
CONFIG_TAIL=y
# CONFIG_FEATURE_FANCY_TAIL is not set
CONFIG_TEE=y
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
CONFIG_TOUCH=y
CONFIG_TRUE=y
CONFIG_TTY=y
CONFIG_UNAME=y
# CONFIG_UNEXPAND is not set
# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
CONFIG_UNIQ=y
# CONFIG_USLEEP is not set
# CONFIG_UUDECODE is not set
# CONFIG_UUENCODE is not set
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
CONFIG_WHO=y
CONFIG_WHOAMI=y
CONFIG_YES=y

#
# Common options for cp and mv
#
CONFIG_FEATURE_PRESERVE_HARDLINKS=y

#
# Common options for ls, more and telnet
#
CONFIG_FEATURE_AUTOWIDTH=y

#
# Common options for df, du, ls
#
CONFIG_FEATURE_HUMAN_READABLE=y

#
# Common options for md5sum, sha1sum, sha256sum, sha512sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y

#
# Console Utilities
#
CONFIG_CHVT=y
CONFIG_FGCONSOLE=y
CONFIG_CLEAR=y
# CONFIG_DEALLOCVT is not set
# CONFIG_DUMPKMAP is not set
CONFIG_KBD_MODE=y
# CONFIG_LOADFONT is not set
CONFIG_LOADKMAP=y
CONFIG_OPENVT=y
CONFIG_RESET=y
# CONFIG_RESIZE is not set
# CONFIG_FEATURE_RESIZE_PRINT is not set
CONFIG_SETCONSOLE=y
CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
CONFIG_SETFONT=y
CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y
CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_SETKEYCODES=y
# CONFIG_SETLOGCONS is not set
CONFIG_SHOWKEY=y

#
# Common options for loadfont and setfont
#
CONFIG_FEATURE_LOADFONT_PSF2=y
CONFIG_FEATURE_LOADFONT_RAW=y

#
# Debian Utilities
#
CONFIG_MKTEMP=y
CONFIG_PIPE_PROGRESS=y
# CONFIG_RUN_PARTS is not set
# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
# CONFIG_START_STOP_DAEMON is not set
# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
CONFIG_WHICH=y

#
# Editors
#
CONFIG_PATCH=y
CONFIG_AWK=y
CONFIG_FEATURE_AWK_LIBM=y
CONFIG_CMP=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
CONFIG_FEATURE_DIFF_DIR=y
# CONFIG_ED is not set
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_MAX_LEN=1024
# CONFIG_FEATURE_VI_8BIT is not set
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_ASK_TERMINAL=y
CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
CONFIG_FEATURE_ALLOW_EXEC=y

#
# Finding Utilities
#
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
CONFIG_FEATURE_FIND_MMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_MAXDEPTH=y
CONFIG_FEATURE_FIND_NEWER=y
CONFIG_FEATURE_FIND_INUM=y
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_FEATURE_FIND_USER=y
CONFIG_FEATURE_FIND_GROUP=y
CONFIG_FEATURE_FIND_NOT=y
CONFIG_FEATURE_FIND_DEPTH=y
CONFIG_FEATURE_FIND_PAREN=y
CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
# CONFIG_FEATURE_FIND_DELETE is not set
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
CONFIG_FEATURE_FIND_LINKS=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
# CONFIG_FEATURE_GREP_CONTEXT is not set
CONFIG_XARGS=y
# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y

#
# Init Utilities
#
CONFIG_BOOTCHARTD=y
CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER=y
CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE=y
CONFIG_HALT=y
# CONFIG_FEATURE_CALL_TELINIT is not set
CONFIG_TELINIT_PATH=""
CONFIG_INIT=y
CONFIG_FEATURE_USE_INITTAB=y
# CONFIG_FEATURE_KILL_REMOVED is not set
CONFIG_FEATURE_KILL_DELAY=0
CONFIG_FEATURE_INIT_SCTTY=y
CONFIG_FEATURE_INIT_SYSLOG=y
# CONFIG_FEATURE_EXTRA_QUIET is not set
CONFIG_FEATURE_INIT_COREDUMPS=y
CONFIG_FEATURE_INITRD=y
CONFIG_INIT_TERMINAL_TYPE="linux"
CONFIG_MESG=y

#
# Login/Password Management Utilities
#
# CONFIG_ADD_SHELL is not set
# CONFIG_REMOVE_SHELL is not set
# CONFIG_FEATURE_SHADOWPASSWDS is not set
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_USE_BB_SHADOW is not set
CONFIG_USE_BB_CRYPT=y
CONFIG_USE_BB_CRYPT_SHA=y
# CONFIG_ADDUSER is not set
# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
# CONFIG_FEATURE_CHECK_NAMES is not set
CONFIG_FIRST_SYSTEM_ID=0
CONFIG_LAST_SYSTEM_ID=0
# CONFIG_ADDGROUP is not set
# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
# CONFIG_DELUSER is not set
# CONFIG_DELGROUP is not set
# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
# CONFIG_GETTY is not set
# CONFIG_LOGIN is not set
# CONFIG_PAM is not set
# CONFIG_LOGIN_SCRIPTS is not set
# CONFIG_FEATURE_NOLOGIN is not set
# CONFIG_FEATURE_SECURETTY is not set
# CONFIG_PASSWD is not set
# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
# CONFIG_CRYPTPW is not set
# CONFIG_CHPASSWD is not set
# CONFIG_SU is not set
# CONFIG_FEATURE_SU_SYSLOG is not set
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
# CONFIG_SULOGIN is not set
# CONFIG_VLOCK is not set

#
# Linux Ext2 FS Progs
#
# CONFIG_CHATTR is not set
# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set
# CONFIG_TUNE2FS is not set

#
# Linux Module Utilities
#
CONFIG_MODINFO=y
CONFIG_MODPROBE_SMALL=y
CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE=y
CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y
# CONFIG_INSMOD is not set
# CONFIG_RMMOD is not set
# CONFIG_LSMOD is not set
# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
# CONFIG_MODPROBE is not set
# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
# CONFIG_DEPMOD is not set

#
# Options common to multiple modutils
#
# CONFIG_FEATURE_2_4_MODULES is not set
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
# CONFIG_FEATURE_MODUTILS_ALIAS is not set
# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"

#
# Linux System Utilities
#
CONFIG_BLOCKDEV=y
CONFIG_REV=y
CONFIG_ACPID=y
CONFIG_FEATURE_ACPID_COMPAT=y
# CONFIG_BLKID is not set
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
# CONFIG_FBSET is not set
# CONFIG_FEATURE_FBSET_FANCY is not set
# CONFIG_FEATURE_FBSET_READMODE is not set
CONFIG_FDFLUSH=y
CONFIG_FDFORMAT=y
# CONFIG_FDISK is not set
CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
# CONFIG_FEATURE_FDISK_WRITABLE is not set
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
# CONFIG_FEATURE_GPT_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
CONFIG_FINDFS=y
CONFIG_FLOCK=y
CONFIG_FREERAMDISK=y
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_EXT2 is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
# CONFIG_MKFS_REISER is not set
# CONFIG_MKFS_VFAT is not set
# CONFIG_GETOPT is not set
# CONFIG_FEATURE_GETOPT_LONG is not set
# CONFIG_HEXDUMP is not set
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
CONFIG_HWCLOCK=y
# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
# CONFIG_IPCRM is not set
# CONFIG_IPCS is not set
CONFIG_LOSETUP=y
CONFIG_LSPCI=y
CONFIG_LSUSB=y
# CONFIG_MDEV is not set
# CONFIG_FEATURE_MDEV_CONF is not set
# CONFIG_FEATURE_MDEV_RENAME is not set
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
# CONFIG_MKSWAP is not set
# CONFIG_FEATURE_MKSWAP_UUID is not set
CONFIG_MORE=y
# CONFIG_MOUNT is not set
# CONFIG_FEATURE_MOUNT_FAKE is not set
# CONFIG_FEATURE_MOUNT_VERBOSE is not set
# CONFIG_FEATURE_MOUNT_HELPERS is not set
# CONFIG_FEATURE_MOUNT_LABEL is not set
# CONFIG_FEATURE_MOUNT_NFS is not set
# CONFIG_FEATURE_MOUNT_CIFS is not set
# CONFIG_FEATURE_MOUNT_FLAGS is not set
# CONFIG_FEATURE_MOUNT_FSTAB is not set
CONFIG_PIVOT_ROOT=y
# CONFIG_RDATE is not set
# CONFIG_RDEV is not set
# CONFIG_READPROFILE is not set
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
# CONFIG_SCRIPTREPLAY is not set
# CONFIG_SETARCH is not set
CONFIG_SWAPONOFF=y
CONFIG_FEATURE_SWAPON_PRI=y
CONFIG_SWITCH_ROOT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y

#
# Common options for mount/umount
#
CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
CONFIG_VOLUMEID=y

#
# Filesystem/Volume identification
#
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y
CONFIG_FEATURE_VOLUMEID_REISERFS=y
CONFIG_FEATURE_VOLUMEID_FAT=y
CONFIG_FEATURE_VOLUMEID_HFS=y
CONFIG_FEATURE_VOLUMEID_JFS=y
CONFIG_FEATURE_VOLUMEID_XFS=y
CONFIG_FEATURE_VOLUMEID_NTFS=y
CONFIG_FEATURE_VOLUMEID_ISO9660=y
CONFIG_FEATURE_VOLUMEID_UDF=y
CONFIG_FEATURE_VOLUMEID_LUKS=y
CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
CONFIG_FEATURE_VOLUMEID_CRAMFS=y
CONFIG_FEATURE_VOLUMEID_ROMFS=y
CONFIG_FEATURE_VOLUMEID_SYSV=y
CONFIG_FEATURE_VOLUMEID_OCFS2=y
CONFIG_FEATURE_VOLUMEID_LINUXRAID=y

#
# Miscellaneous Utilities
#
# CONFIG_CONSPY is not set
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
# CONFIG_UBIATTACH is not set
# CONFIG_UBIDETACH is not set
# CONFIG_ADJTIMEX is not set
# CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
# CONFIG_BEEP is not set
CONFIG_FEATURE_BEEP_FREQ=0
CONFIG_FEATURE_BEEP_LENGTH_MS=0
# CONFIG_CHAT is not set
# CONFIG_FEATURE_CHAT_NOFAIL is not set
# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
# CONFIG_CHRT is not set
# CONFIG_CROND is not set
# CONFIG_FEATURE_CROND_D is not set
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
CONFIG_FEATURE_CROND_DIR=""
# CONFIG_CRONTAB is not set
# CONFIG_DC is not set
# CONFIG_FEATURE_DC_LIBM is not set
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
# CONFIG_DEVMEM is not set
# CONFIG_EJECT is not set
# CONFIG_FEATURE_EJECT_SCSI is not set
# CONFIG_FBSPLASH is not set
# CONFIG_FLASHCP is not set
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
# CONFIG_FLASH_ERASEALL is not set
# CONFIG_IONICE is not set
# CONFIG_INOTIFYD is not set
# CONFIG_LAST is not set
# CONFIG_FEATURE_LAST_SMALL is not set
# CONFIG_FEATURE_LAST_FANCY is not set
# CONFIG_LESS is not set
CONFIG_FEATURE_LESS_MAXLINES=0
# CONFIG_FEATURE_LESS_BRACKETS is not set
# CONFIG_FEATURE_LESS_FLAGS is not set
# CONFIG_FEATURE_LESS_MARKS is not set
# CONFIG_FEATURE_LESS_REGEXP is not set
# CONFIG_FEATURE_LESS_WINCH is not set
# CONFIG_FEATURE_LESS_DASHCMD is not set
# CONFIG_FEATURE_LESS_LINENUMS is not set
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
# CONFIG_MAKEDEVS is not set
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MAN is not set
# CONFIG_MICROCOM is not set
# CONFIG_MOUNTPOINT is not set
CONFIG_MT=y
# CONFIG_RAIDAUTORUN is not set
# CONFIG_READAHEAD is not set
# CONFIG_RFKILL is not set
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
CONFIG_SETSID=y
CONFIG_STRINGS=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
# CONFIG_TIME is not set
# CONFIG_TIMEOUT is not set
# CONFIG_TTYSIZE is not set
# CONFIG_VOLNAME is not set
# CONFIG_WALL is not set
# CONFIG_WATCHDOG is not set

#
# Networking Utilities
#
CONFIG_NBDCLIENT=y
CONFIG_NC=y
CONFIG_NC_SERVER=y
CONFIG_NC_EXTRA=y
# CONFIG_NC_110_COMPAT is not set
# CONFIG_FEATURE_IPV6 is not set
# CONFIG_FEATURE_UNIX_LOCAL is not set
# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
# CONFIG_BRCTL is not set
# CONFIG_FEATURE_BRCTL_FANCY is not set
# CONFIG_FEATURE_BRCTL_SHOW is not set
# CONFIG_DNSD is not set
# CONFIG_ETHER_WAKE is not set
# CONFIG_FAKEIDENTD is not set
# CONFIG_FTPD is not set
# CONFIG_FEATURE_FTP_WRITE is not set
# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
# CONFIG_HOSTNAME is not set
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
# CONFIG_FEATURE_HTTPD_PROXY is not set
# CONFIG_FEATURE_HTTPD_GZIP is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
CONFIG_FEATURE_IFCONFIG_SLIP=y
CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
CONFIG_IFENSLAVE=y
# CONFIG_IFPLUGD is not set
# CONFIG_IFUPDOWN is not set
CONFIG_IFUPDOWN_IFSTATE_PATH=""
# CONFIG_FEATURE_IFUPDOWN_IP is not set
# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
# CONFIG_INETD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
# CONFIG_FEATURE_INETD_RPC is not set
# CONFIG_IP is not set
# CONFIG_FEATURE_IP_ADDRESS is not set
# CONFIG_FEATURE_IP_LINK is not set
# CONFIG_FEATURE_IP_ROUTE is not set
# CONFIG_FEATURE_IP_TUNNEL is not set
# CONFIG_FEATURE_IP_RULE is not set
# CONFIG_FEATURE_IP_SHORT_FORMS is not set
# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
# CONFIG_IPADDR is not set
# CONFIG_IPLINK is not set
# CONFIG_IPROUTE is not set
# CONFIG_IPTUNNEL is not set
# CONFIG_IPRULE is not set
# CONFIG_IPCALC is not set
# CONFIG_FEATURE_IPCALC_FANCY is not set
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
# CONFIG_NAMEIF is not set
# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
CONFIG_NETSTAT=y
# CONFIG_FEATURE_NETSTAT_WIDE is not set
CONFIG_FEATURE_NETSTAT_PRG=y
CONFIG_NSLOOKUP=y
# CONFIG_NTPD is not set
# CONFIG_FEATURE_NTPD_SERVER is not set
CONFIG_PING=y
# CONFIG_PING6 is not set
CONFIG_FEATURE_FANCY_PING=y
# CONFIG_PSCAN is not set
CONFIG_ROUTE=y
# CONFIG_SLATTACH is not set
# CONFIG_TCPSVD is not set
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
CONFIG_TFTP=y
# CONFIG_TFTPD is not set

#
# Common options for tftp/tftpd
#
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
# CONFIG_TFTP_DEBUG is not set
# CONFIG_TRACEROUTE is not set
# CONFIG_TRACEROUTE6 is not set
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
# CONFIG_TUNCTL is not set
# CONFIG_FEATURE_TUNCTL_UG is not set
# CONFIG_UDHCPD is not set
# CONFIG_DHCPRELAY is not set
# CONFIG_DUMPLEASES is not set
# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
CONFIG_DHCPD_LEASES_FILE=""
CONFIG_UDHCPC=y
CONFIG_FEATURE_UDHCPC_ARPING=y
CONFIG_FEATURE_UDHCP_PORT=y
CONFIG_UDHCP_DEBUG=9
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
# CONFIG_UDPSVD is not set
# CONFIG_VCONFIG is not set
# CONFIG_WGET is not set
# CONFIG_FEATURE_WGET_STATUSBAR is not set
# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
# CONFIG_FEATURE_WGET_TIMEOUT is not set
# CONFIG_ZCIP is not set

#
# Print Utilities
#
# CONFIG_LPD is not set
# CONFIG_LPR is not set
# CONFIG_LPQ is not set

#
# Mail Utilities
#
# CONFIG_MAKEMIME is not set
CONFIG_FEATURE_MIME_CHARSET=""
# CONFIG_POPMAILDIR is not set
# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
# CONFIG_REFORMIME is not set
# CONFIG_FEATURE_REFORMIME_COMPAT is not set
# CONFIG_SENDMAIL is not set

#
# Process Utilities
#
# CONFIG_IOSTAT is not set
# CONFIG_MPSTAT is not set
# CONFIG_PMAP is not set
# CONFIG_POWERTOP is not set
# CONFIG_SMEMCAP is not set
CONFIG_FREE=y
# CONFIG_FUSER is not set
CONFIG_KILL=y
CONFIG_KILLALL=y
# CONFIG_KILLALL5 is not set
# CONFIG_NMETER is not set
# CONFIG_PGREP is not set
# CONFIG_PIDOF is not set
# CONFIG_FEATURE_PIDOF_SINGLE is not set
# CONFIG_FEATURE_PIDOF_OMIT is not set
# CONFIG_PKILL is not set
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
# CONFIG_FEATURE_PS_TIME is not set
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
# CONFIG_RENICE is not set
# CONFIG_BB_SYSCTL is not set
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
CONFIG_FEATURE_TOP_SMP_CPU=y
# CONFIG_FEATURE_TOP_DECIMALS is not set
CONFIG_FEATURE_TOP_SMP_PROCESS=y
CONFIG_FEATURE_TOPMEM=y
CONFIG_FEATURE_SHOW_THREADS=y
# CONFIG_UPTIME is not set
# CONFIG_WATCH is not set

#
# Runit Utilities
#
# CONFIG_RUNSV is not set
# CONFIG_RUNSVDIR is not set
# CONFIG_FEATURE_RUNSVDIR_LOG is not set
# CONFIG_SV is not set
CONFIG_SV_DEFAULT_SERVICE_DIR=""
# CONFIG_SVLOGD is not set
# CONFIG_CHPST is not set
# CONFIG_SETUIDGID is not set
# CONFIG_ENVUIDGID is not set
# CONFIG_ENVDIR is not set
# CONFIG_SOFTLIMIT is not set
# CONFIG_CHCON is not set
# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
# CONFIG_GETENFORCE is not set
# CONFIG_GETSEBOOL is not set
# CONFIG_LOAD_POLICY is not set
# CONFIG_MATCHPATHCON is not set
# CONFIG_RESTORECON is not set
# CONFIG_RUNCON is not set
# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
# CONFIG_SELINUXENABLED is not set
# CONFIG_SETENFORCE is not set
# CONFIG_SETFILES is not set
# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
# CONFIG_SETSEBOOL is not set
# CONFIG_SESTATUS is not set

#
# Shells
#
CONFIG_ASH=y
CONFIG_ASH_BASH_COMPAT=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
# CONFIG_ASH_GETOPTS is not set
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_PRINTF=y
CONFIG_ASH_BUILTIN_TEST=y
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
# CONFIG_ASH_RANDOM_SUPPORT is not set
# CONFIG_ASH_EXPAND_PRMT is not set
CONFIG_CTTYHACK=y
# CONFIG_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_HELP is not set
# CONFIG_HUSH_INTERACTIVE is not set
# CONFIG_HUSH_SAVEHISTORY is not set
# CONFIG_HUSH_JOB is not set
# CONFIG_HUSH_TICK is not set
# CONFIG_HUSH_IF is not set
# CONFIG_HUSH_LOOPS is not set
# CONFIG_HUSH_CASE is not set
# CONFIG_HUSH_FUNCTIONS is not set
# CONFIG_HUSH_LOCAL is not set
# CONFIG_HUSH_RANDOM_SUPPORT is not set
# CONFIG_HUSH_EXPORT_N is not set
# CONFIG_HUSH_MODE_X is not set
# CONFIG_MSH is not set
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
# CONFIG_FEATURE_BASH_IS_ASH is not set
# CONFIG_FEATURE_BASH_IS_HUSH is not set
CONFIG_FEATURE_BASH_IS_NONE=y
CONFIG_SH_MATH_SUPPORT=y
CONFIG_SH_MATH_SUPPORT_64=y
# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set

#
# System Logging Utilities
#
CONFIG_SYSLOGD=y
# CONFIG_FEATURE_ROTATE_LOGFILE is not set
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
CONFIG_FEATURE_KLOGD_KLOGCTL=y
# CONFIG_LOGGER is not set


----- End forwarded message -----
--
Open Source & Linux Profession Lead EMEA http://opensource.hp.com
EMEA Open Source HPISC Chief Technologist http://hpintelco.net
FLOSS projects: http://mondorescue.org http://project-builder.org
Musique ancienne? http://www.musique-ancienne.org http://www.medieval.org
Harald Becker
2013-03-23 00:17:54 UTC
Permalink
Hi Bruno !
Post by Bruno Cornec
I'm testing mostly on KVM VMs, and simulate the CTRL-ALT-DEL with the
sendkey command from the monitor window. This is working when we are at
syslinux boot prompt, but as soon as we launch init, then we are unable
to reboot the VM using CTRL-ALT-DEL. I also tested on real HW with the
same result.
A year ago or so I stumbled on a similar problem. After searching
for a while, I found the process signals being blocked (look in
/proc/PID/status, for init /proc/1/status). If process signals got
blocked, the kernel signal for CTRL-ALT-DEL (SIGINT to process 1) can't
be delivered. This is the same reason why Ctrl-C in a Busybox shell
started directly from an linuxrc script is not working as expected
(even when using cttyhack).

May be this is your problem, so check /proc/1/status when CTRL-ALT-DEL
does not work and look at the signal flags (SigBlk, SigIgn, SigCgt).

--
Harald
Harald Becker
2013-03-24 17:43:28 UTC
Permalink
Hi Bruno !
I'll nee to try your advise to see whether I encounter the same
situation.
Just bring your board/emulator to the situation when CTRL-ALT-DEL does
not work. Then access your system from a console or remote login shelll
and do

$ cat /proc/1/status | grep ^Sig

The given numbers are hex with MSB on the left and LSB on the right,
the bits correspond to the signals with bit #0 not used, bit #1 for
SIGINT, etc. (for a list of signals see "kill -l").

SigPnd = currently pending signals
SigBlk = blocked signals (sigprocmask)
SigIgn = signals with action of SIG_IGN
SigCgt = signals with an installed signal handler
Is it linked to a specific kernel configuration/version ?
The kernels behave somewhat different depending on versions and I
can't tell you which versions show up the information
in /proc/PID/status, but this signal handling has not much changed
over time and I had such issues from start of 2.2 until current
3.8 kernels.
Now, how did you unlock your proces (if possible) ?
1) Best is to change software to unblock/enable signal receiption at
it's initialization time.

2) For situations where this it not possible (e.g. Busybox ash) I used
a simple start wrapper to unblock signals. Something like this (untested
and unverified from brain, so double check man pages):

#include <signal.h>

...

register int sig;
struct sigaction sa;

sa.sa_flags = 0;
sa.sa_handler = SIG_DFL;
sigemptyset(&sa.sa_mask);
for( sig=1; sig<=SIGRTMAX; ++sig)
sigaction(sig, &sa, NULL);
sigprocmask(SIG_SETMASK, &sa.sa_mask, NULL);

...

then exec to your program (execve or corresponding call)

I do not know, if this works with Busybox init. May be init does it's
own interrupt handling and overwrites your start wrapper. But it shall
not harm in any way if all needed arguments/environment are passed on
to your program. The wrapper just sets all signals to there default
actions and unblock them to allow there delivery.

--
Harald
Laurent Bercot
2013-03-25 09:33:05 UTC
Permalink
Post by Harald Becker
2) For situations where this it not possible (e.g. Busybox ash) I used
a simple start wrapper to unblock signals.
I'm curious: how come your process 1 ash had blocked signals ?
Process 1 is launched by the kernel, and I haven't heard of a case where
the kernel blocks signals before doing so. Or was it maybe something in
your linuxrc blocking signals and failing to unblock them ?
--
Laurent
Bastian Bittorf
2013-03-25 11:20:16 UTC
Permalink
Post by Laurent Bercot
Post by Harald Becker
2) For situations where this it not possible (e.g. Busybox ash) I used
a simple start wrapper to unblock signals.
I'm curious: how come your process 1 ash had blocked signals ?
http://www.landley.net/hg/toybox/file/aad12ce05aae/toys/other/oneit.c

"PID 1 is special: can't exit, has various signals blocked"

bye, bastian
Harald Becker
2013-03-25 15:08:28 UTC
Permalink
Hi Bastian !
Post by Bastian Bittorf
http://www.landley.net/hg/toybox/file/aad12ce05aae/toys/other/oneit.c
"PID 1 is special: can't exit, has various signals blocked"
If your oneit command is started with blocked signals or there action
has been set to SIG_IGN this setting is inherited by the command you
start. So it is better to set all signals to there default action and
unblock before you do your exec. This way the started program has a
clean signal handling on it's own session/process group.

--
Harald
Laurent Bercot
2013-03-25 21:39:34 UTC
Permalink
Post by Harald Becker
If your oneit command is started with blocked signals or there action
has been set to SIG_IGN this setting is inherited by the command you
start. So it is better to set all signals to there default action and
unblock before you do your exec. This way the started program has a
clean signal handling on it's own session/process group.
Hi Harald,

I believe Bastian was just quoting the oneit page to mention that
"PID 1 is special".
It seems that the kernel sometimes launches process 1 with a nonempty
set of blocked signals - apparently, Rob says so. I have never personally
witnessed it, but getting a clean sigprocmask is one of the first duties of
a long-running process 1, so it's not commonly observable. It makes sense
that a shell running as process 1 (which it's not designed for) would have
some trouble in this case because it has no reason to sigprocmask the world;
but it's very weird that it wouldn't receive SIGINT, because a shell does
want to catch, and actually handle, SIGINT, so it has to sig_unblock it
sooner or later.

I will experiment tomorrow, but my money isn't on the nonempty pid 1
sigprocmask thing. It's still on a tty/job control issue, which is far
more voodoo (including the bloody, gory entrails) than signal stuff.
--
Laurent
Laurent Bercot
2013-03-26 10:54:27 UTC
Permalink
OK, so I have analyzed how a Debian Linux system boots. (Debian 6.0 with
a 2.6.32 kernel, but I don't think it has changed much with newer kernels.

The process is incredibly bloated - and I strongly suspect other mainstream
distributions are just as bad, if not worse. Those guys do a lot of work
in a pre-init initramfs; work that could easily be done in the real system,
without an initramfs, if only people would realize that "init" is nothing
sacred and can actually be a script that does early stuff before launching
the long-running binary - which is actually exactly what they do, except
they're hiding it in an initramfs as if it was shameful. I'm mentioning it
because I had to dive deep into it to track the information I was looking
for, and unneeded complexity in the boot process is one of my pet peeves.

The binaries that run as process 1 before /sbin/init (which in my case
is a SysVinit, but it would be the exact same thing with a systemd or
anything else) are:
* the initramfs shell, which is actually a Busybox shell. (I do not know
whether it's hush or ash.) It is the first actual userspace binary
launched by the kernel.
* initramfs-tools' "run-init" binary, which acts as a transition
between the /init shell script and the long-running /sbin/init binary.
(Yeah, looks like they didn't manage to perform everything they wanted
in the /init shell script, so they *still* had to insert some C code
there. So much for flexibility and maintainability. Oops, I ranted again.)

The run-init binary performs no signal handling at all.
So if a some code performs signal blocking/unblocking between
the kernel and the init process, it has to be the Busybox shell.

Right before /sbin/init is launched, /proc/1/status shows *no* blocked
signal.

I haven't delved into ash and hush's source, because other people here
will know their internals better than I will, but my conclusion for now
is that it is *very unlikely* that the "initial process 1 sigmask" idea
has anything to do with the problem.

- Either the Linux kernel passes an empty sigmask to its first userspace
binary (which I strongly believe is the case), and there is no problem
here; as I already said, go investigate tty and job control, where
unholy magicks are at work.
- Or the Linux kernel passes a nonempty sigmask to process 1; but
then the Busybox shell actually performs active sigmask management, since
when it execs into something else, it has an empty sigmask. So in this
case:
* either it manages its sigmask correctly from the start, and there is
no problem here - look somewhere else;
* or it only cleans up the sigmask when executing, and incorrectly
keeps some inherited blocked signals in its main loop. I'll leave the
refutation (or bugfix !) here to the busybox shell experts.

I'm still interested in hearing Rob on the inherited process 1 sigmask
thing, or even in just pointers to relevant kernel-dev discussions.
--
Laurent
Harald Becker
2013-03-26 23:58:07 UTC
Permalink
Hi Laurent,

just a quick response as I'm late and busy today ...
Post by Laurent Bercot
I haven't delved into ash and hush's source, because other people here
will know their internals better than I will, but my conclusion for now
is that it is *very unlikely* that the "initial process 1 sigmask" idea
has anything to do with the problem.
You tell me truth about those distro startups. Therefore I striped that
down to nothing! On my systems the kernel start a shell script from
mine which does necessary initializations and then the scripts
exec's my applications main, a very minimalist program, which does
nearly nothing until it receives a signal. Based on the received signal
it does exec another script of mine to shutdown the system.
Post by Laurent Bercot
- Either the Linux kernel passes an empty sigmask to its first
userspace
binary (which I strongly believe is the case), and there is no problem
here; as I already said, go investigate tty and job control, where
unholy magicks are at work.
- Or the Linux kernel passes a nonempty sigmask to process 1; but
then the Busybox shell actually performs active sigmask management,
since when it execs into something else, it has an empty sigmask. So
* either it manages its sigmask correctly from the start, and there is
no problem here - look somewhere else;
* or it only cleans up the sigmask when executing, and incorrectly
keeps some inherited blocked signals in its main loop. I'll leave the
refutation (or bugfix !) here to the busybox shell experts.
I'm still interested in hearing Rob on the inherited process 1 sigmask
thing, or even in just pointers to relevant kernel-dev discussions.
It is not only the sigmask issue. I noticed two things which may leed
to a blocked signal situation. First is a sigmask blocking SIGINT and
the second is SIGINT being ignored. And especially leads to trouble with
Ctrl-C in the shell, as the shell does not enable SIGINT, if it is
ignored on entry (feature not bug). So you need to check which issue
is blocking your interrupt ... or you just unblock and restore all
SIGs to there default action.

... it's a really simple wrapper to have as either /bin/sh or /bin/init
to just do that signal unblocking than execve with the original
arguments to /bin/busybox. This enables usage of a shell script as a
long lived process 1 ... works since Linux kernel 2.2.1 on several of
my Boxes without any failures.

This shows the problem is not, Busybox doing something wrong. It is
just Busybox is missing to do something, required to enable normal
signal response (in some usage cases, because getty seems to correct
that problem - in getty started sessions everything looks fine).

A suggestion: Add that signal unblocking stuff to cttyhack. If one
needs to run shell scripts directly or has some corresponding trouble,
he can run those applications trough an "exec cttyhack".
--
Harald
Laurent Bercot
2013-03-27 06:04:09 UTC
Permalink
Post by Harald Becker
You tell me truth about those distro startups. Therefore I striped that
down to nothing! On my systems the kernel start a shell script from
mine which does necessary initializations and then the scripts
exec's my applications main, a very minimalist program, which does
nearly nothing until it receives a signal. Based on the received signal
it does exec another script of mine to shutdown the system.
Eh, embedded systems are another thing - I think we all do something
like that, to some extent. But my point was that even for mainstream
distros, they could keep all the power, genericity and features of their
startup systems, and still move it into post-init, without having to
hide things in a useless pre-init phase.
Post by Harald Becker
It is not only the sigmask issue. I noticed two things which may leed
to a blocked signal situation. First is a sigmask blocking SIGINT and
the second is SIGINT being ignored. And especially leads to trouble with
Ctrl-C in the shell, as the shell does not enable SIGINT, if it is
ignored on entry (feature not bug). So you need to check which issue
is blocking your interrupt ... or you just unblock and restore all
SIGs to there default action.
Well, my tracking also applies to ignored signals. Right before init is
executed, there's no blocked signal. run-init does no signal work at all.
So, when the busybox shell executes into run-init, no signal is ignored.
If the busybox shell keeps the ignored signal list it receives on entry,
that means the kernel executes it with no signal ignored.
But that specific point might very well have changed with recent kernels.
I see no reason why the kernel should have init ignore SIGINT by default,
as it totally defeats the purpose of /proc/sys/kernel/ctrl-alt-del
- but maybe the kernel guys managed to come up with one.
Post by Harald Becker
... it's a really simple wrapper to have as either /bin/sh or /bin/init
to just do that signal unblocking than execve with the original
arguments to /bin/busybox. This enables usage of a shell script as a
long lived process 1 ... works since Linux kernel 2.2.1 on several of
my Boxes without any failures.
You mean, signal unblocking *and* unignoring, then.
This is a safe option for sure. I doubt it's useful, but it can't hurt.
Post by Harald Becker
A suggestion: Add that signal unblocking stuff to cttyhack.
I support this suggestion.
--
Laurent
Harald Becker
2013-03-25 14:56:27 UTC
Permalink
Hi Laurent !
Post by Laurent Bercot
Post by Harald Becker
2) For situations where this it not possible (e.g. Busybox ash) I
used a simple start wrapper to unblock signals.
I'm curious: how come your process 1 ash had blocked signals ?
Yes curious. I was afraid too.
Post by Laurent Bercot
Process 1 is launched by the kernel, and I haven't heard of a case
where the kernel blocks signals before doing so. Or was it maybe
something in your linuxrc blocking signals and failing to unblock
them ?
No it's not the kernel, it is definitely Busybox, as it is the only
binary involved in the testing environment.

- no linuxrc at all
- kernel starts /bin/init
- /bin/init is a shell script "#!/bin/busybox sh"
- shell script initializes system and mounts things, e.g. /proc
- a "cat /proc/1/status" from script shows SIGINT (and others are
either blocked or ignored)
- script forks and starts a login shell with cttyhack on different
console (/dev/tty2)
- login shell comes up and looking into /proc it shows SIGINT is either
blocked or ignored (depends on Busybox version)
- verifying controlling terminal showed /dev/tty is controlling
terminal of my login shell and the login shell is running as session
leader (setsid after fork).
- Ctrl-C doesn't work in this login shell, as SIGINT stays blocked or
ignored


in contrast:
Starting the login shell via a wrapper, unblocking all signals and
setting there handler to default enables Ctrl-C in my login shell.

As this my /bin/sh is this wrapper. Unblock signals and than
exec "/bin/busybox sh" passing through all arguments.

... and everything runs fine.

--
Harald
Denys Vlasenko
2013-03-29 13:31:44 UTC
Permalink
Post by Bruno Cornec
We are up to now using version 1.18.5, with the attached .config file to
...
Post by Bruno Cornec
# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot
Try removing "null". Init actions fail if opening of the tty fails.
Empty tty won't try opening anything, will reuse init's stdio:

::ctrlaltdel:/sbin/reboot
Post by Bruno Cornec
I'm testing mostly on KVM VMs, and simulate the CTRL-ALT-DEL with the
sendkey command from the monitor window.
You can simply run "kill -INT 1", it should do the same thing as C-A-Del:
C-A-Del only makes kernel send SIGINT to PID 1.
Post by Bruno Cornec
So I'm surely doing something wrong, either in my inittab or in my
config of busybox, but I don't see what.
I even tried with the latest 1.20.2 (which I may use as the base for the
next stable version) without more luck either.
I also can't see any obvious problems.

sigprocmask_allsigs(SIG_UNBLOCK);
Post by Bruno Cornec
I read at
http://lists.busybox.net/pipermail/busybox/2012-May/077855.html that a
reason could be a non-busybox reboot but that's not our case.
You can replace "/sbin/reboot" with something benign like

/bin/touch /tmp/SIGINT_PID1_SEEN
Post by Bruno Cornec
So I'm looking for advises on how to debug more, or any hint wrt my
usage.
Other people report that init may have some of its signals blocked.
I am a bit skeptical, but it's easy to check. Find this place in init.c:

die_sleep = 30 * 24*60*60;

/* Figure out where the default console should be */
console_init();

and add this line:

reset_sighandlers_and_unblock_sigs();

directly below "die_sleep =..." line.

Then rebuild, install, reboot, and try SIGINT'ing init again.
If it starts working after this modification, then it is indeed the case.
Let me know what kernel version do you use then.
--
vda
Harald Becker
2013-03-29 14:51:14 UTC
Permalink
Hi Denys !
Post by Denys Vlasenko
You can simply run "kill -INT 1", it should do the same thing as
C-A-Del: C-A-Del only makes kernel send SIGINT to PID 1.
For process 1 it is not! Signals send from another user to process 1
are handled somewhat different than signals send from the kernel. This
includes automatically blocking of signals not handled by pid 1
(installed signal handler).
Post by Denys Vlasenko
sigprocmask_allsigs(SIG_UNBLOCK);
May be the signal is not blocked but ignored, that is one of two issues
leading to same problems. So in addition to sigprocmask you need to set
all interrupts to there default action.

Remember: If you exec to another program, signals ignored before the
exec stay ignored after the exec. So if you ignore a signal for any
purpose and forget to restore it's action to default the forked process
will not receive such signals if it does not install a signal handler
(can't receive ignored signal with signalfd or sigwaitinfo).

From manpage of execve(2):

* POSIX.1-2001 specifies that the dispositions of any signals
that are ignored or set to the default are left unchanged.
POSIX.1-2001 specifies one exception: if SIGCHLD is being
ignored, then an implementa? tion may leave the disposition
unchanged or reset it to the default; Linux does the former.

And shells usually tend to not enable SIGINT if the signal is ignored
on invocation of the shell (for none interactive shells = scripts). The
caveat from this is, forking another shell from such a script does not
restore SIGINT from it's ignored state. This blocks Ctrl-C in the
forked shell even if the controlling tty is set correct.

Hence my suggestion to add this sigprocmask to unblock all signals
*AND* restore all signal actions to there default as part of the
cttyhack applet.

--
Harald
Denys Vlasenko
2013-03-29 15:12:57 UTC
Permalink
Post by Harald Becker
Hence my suggestion to add this sigprocmask to unblock all signals
*AND* restore all signal actions to there default as part of the
cttyhack applet.
I would like to hear people confirming that kernel indeed blocks
ant signals to pid 1. Which kernel version does that?
--
vda
Harald Becker
2013-03-29 15:56:32 UTC
Permalink
Hi Denys !
Post by Denys Vlasenko
Post by Harald Becker
Hence my suggestion to add this sigprocmask to unblock all signals
*AND* restore all signal actions to there default as part of the
cttyhack applet.
I would like to hear people confirming that kernel indeed blocks
ant signals to pid 1. Which kernel version does that?
May be you narrowed your focus a bit to much to the kernel. Sorry for
my bad English and the misunderstandings it may produce. I'm no native
English speaker.

To clarify it a bit:

- On Linux system startup from bare kernel to nothing else than a
Busybox binary (startup script), I noticed at several times / system
constellations issues due to signal actions not being processed.

- Digging a bit into this, I found signals being either blocked
(sigprocmask) *OR* ignored (action = SIG_IGN).

- As at least some 2.4er Kernels mangled with the signals on startup, I
did not look for the real reason of such signal blocking. I just
added a simple wrapper to release the blocking that may have
occurred ... and everything was fine for me.

- As someone was asking for a problem which may be the result of such
blocked signals I wanted to give a hint, why the signal may not be
processed, even if you do a kill -SIGINT 1.

- Restoring all signals action to there default and unblocking, before
doing an exec to another program is good programming practice. To
avoid searching for all the cases where this need to be done, I
focused on the question, when is it required. Except the case of init
it matters only when an interactive shell is started, as daemons
usually setup there own signal handling without respect of signal
setting on entrance. So the central place to trow that signal
unblocking/default action restoring is the place used to startup the
shell, usually the cttyhack applet.

- Restoring signal actions to there default and unblocking doesn't
harm if it's done without being required. It just waste some
time/code space, but avoids lengthy debug sessions due to blocked
signal handling.

--
Harald
Michael Conrad
2013-03-30 04:49:25 UTC
Permalink
Post by Harald Becker
Hi Denys !
Post by Denys Vlasenko
Post by Harald Becker
Hence my suggestion to add this sigprocmask to unblock all signals
*AND* restore all signal actions to there default as part of the
cttyhack applet.
I would like to hear people confirming that kernel indeed blocks
ant signals to pid 1. Which kernel version does that?
Linux 3.0.0 and 3.6.11 do not mask any signals.

And it's easy to find out!

/root # gcc init-debug.c
(see attached init-debug.c)

followed by editing grub's boot line during a reboot:

kernel (hd0,0)/vmlinuz-... root=/dev/sda2 init=/root/a.out

revealing

SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: ffffffffffffffff
CapBnd: ffffffffffffffff

Meanwhile, the man page for kill (2) says:

The only signals that can be sent to process ID 1, the
init process, are those for which init has explicitly
installed signal handlers. This is done to assure the
system is not brought down accidentally.

So perhaps the confusion is that Linux is simply not delivering
the signal (regardless of sigprocmask) unless you install a signal
handler. I question whether anyone would actually want to write a
shell script with signal handling to act as "init"... that seems
messy and error prone.

Anyway, this little test also reveals that (as I thought I remembered)
you have to make a special syscall to get the ctrl-alt-del behavior.
Namely,

reboot(RB_DISABLE_CAD);

causes the system to stop instantly rebooting when ctrl-alt-del is
pressed, and instead send SIGINT to pid 1. I'm not even sure if
there is a command-line access to this call. I've only ever done
it from C.
Post by Harald Becker
setting on entrance. So the central place to trow that signal
unblocking/default action restoring is the place used to startup the
shell, usually the cttyhack applet.
- Restoring signal actions to there default and unblocking doesn't
harm if it's done without being required. It just waste some
time/code space, but avoids lengthy debug sessions due to blocked
signal handling.
Can you name any actual cases where busybox caused signals to be
blocked?

Again, I'm suspecting that the real problem all along was either a
missing call to reboot (2) or not installing a handler and causing
the kernel to not deliver the signal.

-Mike


-------------- next part --------------
A non-text attachment was scrubbed...
Name: init-debug.c
Type: text/x-csrc
Size: 730 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20130330/521956c1/attachment.c>
Laurent Bercot
2013-03-30 09:34:40 UTC
Permalink
Post by Michael Conrad
Linux 3.0.0 and 3.6.11 do not mask any signals.
Neither do Linux 2.6.32 or 3.2.34, in my experience.
Post by Michael Conrad
kernel (hd0,0)/vmlinuz-... root=/dev/sda2 init=/root/a.out
Depending on your kernel, it may be a little more complicated than that.
If your kernel has been compiled with an initramfs, the first userland
process won't be /root/a.out, but the /init file in the initramfs. If
that /init file is a script, then the first userland process is the
script interpreter.
Post by Michael Conrad
So perhaps the confusion is that Linux is simply not delivering
the signal (regardless of sigprocmask) unless you install a signal
handler.
No, this is not the problem. Every shell in the world traps SIGINT.
Post by Michael Conrad
I question whether anyone would actually want to write a
shell script with signal handling to act as "init"... that seems
messy and error prone.
Lots of people do that, and for good reasons: see
http://skarnet.org/software/s6/s6-svscan-1.html

For shell scripts, remember that process 1 is the shell itself, not
the subprocesses, so no specific signal handling is needed. The shell
performs enough signal handling by default.
Post by Michael Conrad
Anyway, this little test also reveals that (as I thought I remembered)
you have to make a special syscall to get the ctrl-alt-del behavior.
Namely,
reboot(RB_DISABLE_CAD);
causes the system to stop instantly rebooting when ctrl-alt-del is
pressed, and instead send SIGINT to pid 1. I'm not even sure if
there is a command-line access to this call.
echo 0 > /proc/sys/kernel/ctrl-alt-del
--
Laurent
Ralf Friedl
2013-03-30 17:58:25 UTC
Permalink
Post by Laurent Bercot
Post by Michael Conrad
kernel (hd0,0)/vmlinuz-... root=/dev/sda2 init=/root/a.out
Depending on your kernel, it may be a little more complicated than that.
If your kernel has been compiled with an initramfs, the first userland
process won't be /root/a.out, but the /init file in the initramfs.
The kernel is never compiled with an initramfs. The kernel is often
compiled to use an initramfs, if the boot loader supplies one. If you
don't load an initramfs (with the command initrd in grub), the kernel
won't use one.
The other question is whether the kernel has all necessary drivers
compiled in to mount the root filesystem. But if the kernel mounts the
root partition and starts the program when you don't pass an initrd
parameter, you can be sure that this /root/a.out was started directly by
the kernel.
Michael Conrad
2013-03-30 18:45:09 UTC
Permalink
Post by Ralf Friedl
The kernel is never compiled with an initramfs. The kernel is often
compiled to use an initramfs, if the boot loader supplies one.
Actually, check kconfig for newer kernels. They have an option to
automatically create the cpio archive from a directory of your choice
and build it directly into the kernel image. I used this for a while
because it seemed convenient, but then decided I'd rather decouple the
kernel from the initrd so I could mix & match (and do things like
init=/bin/sh). I imagine it makes life easier for people with limited
bootloaders, or people making advanced use of kexec.

-Mike
Bernhard Reutner-Fischer
2013-03-30 21:21:12 UTC
Permalink
Post by Michael Conrad
Post by Ralf Friedl
The kernel is never compiled with an initramfs. The kernel is often
compiled to use an initramfs, if the boot loader supplies one.
Actually, check kconfig for newer kernels. They have an option to
IIRC this was introduced pretty early in the 2.6 series, fwiw.

Cheers,


Sent with AquaMail for Android
http://www.aqua-mail.com
Michael Conrad
2013-03-30 18:35:39 UTC
Permalink
Post by Laurent Bercot
Post by Michael Conrad
So perhaps the confusion is that Linux is simply not delivering
the signal (regardless of sigprocmask) unless you install a signal
handler.
No, this is not the problem. Every shell in the world traps SIGINT.
Hm, true... but then the problem you actually have is that there
might be signals that the shell is allowing to be delivered that you
didn't expect.
Post by Laurent Bercot
Post by Michael Conrad
I question whether anyone would actually want to write a
shell script with signal handling to act as "init"... that seems
messy and error prone.
Lots of people do that, and for good reasons: see
http://skarnet.org/software/s6/s6-svscan-1.html
You make great arguments for stage 1 and 3, but it still seems a
shell is ill-suited for stage 2. You would have to handle any
signal where you didn't want the shell's default behavior, and
if I remember right, there was also a trick needed to get the
shell to reap zombies.

It just seems too easy to write a tiny C program that
1 - launches a supervisor
2 - reaps zombies
3 - runs a script when it receives signals
4 - execs stage 3 when the supervisor exits

Not to mention the large number of supervisor programs that
already do this.

I use shells as init sometimes, but mostly just for diagnostics.
Post by Laurent Bercot
Post by Michael Conrad
I'm not even sure if there is a command-line access to this call.
echo 0 > /proc/sys/kernel/ctrl-alt-del
Ah, nice.

-Mike
Laurent Bercot
2013-03-30 21:47:05 UTC
Permalink
Post by Michael Conrad
You make great arguments for stage 1 and 3, but it still seems a
shell is ill-suited for stage 2. You would have to handle any
signal where you didn't want the shell's default behavior, and
if I remember right, there was also a trick needed to get the
shell to reap zombies.
Oh, I wasn't arguing about stage 2 at all. Having a shell as
process 1 is either stage 1 or stage 3, or debug/recovery mode with an
interactive shell, which causes the infamous "job control turned off"
problem cttyhack is supposed to work around.
I agree it is totally nonsensical to use a shell as a normal stage 2
process 1.
Post by Michael Conrad
It just seems too easy to write a tiny C program that
1 - launches a supervisor
2 - reaps zombies
3 - runs a script when it receives signals
4 - execs stage 3 when the supervisor exits
Not to mention the large number of supervisor programs that
already do this.
runit does exactly that.
s6-svscan also does that - except it is, strictly speaking, the supervisor.
Process 1 management is a solved problem, has been for a while now, and
that's why I can rant on and on about it when presented with
less-than-optimal (to remain civil) solutions. ;)
SysVinit being one of them. systemd being another.

We've strayed far away from the OP's question, and I'm afraid I'm the
main culprit. My apologies. Denys' answer looks promising to me, however -
much more promising that the "kernel starts init with a nonempty sigmask"
hypothesis, which I've only been able to find evidence against.
--
Laurent
Bruno Cornec
2013-03-20 10:18:05 UTC
Permalink
Hello,

I'm using busybox in the context of the GPL disaster recovery and
cloning solution called MondoRescue (Cf: http://www.mondorescue.org).

We have an opened bug report (Cf:
http://trac.mondorescue.org/ticket/627) concerning the restoration
phasebase don busybox, where a user is supposed to be able to press
CTRL-ALT-DEL in order to reboot the computer before launching an
automatic restore. This is not working as expected.

We are up to now using version 1.18.5, with the attached .config file to
compile busybox. We have an inittab file containing:

#
# inittab This file describes how the INIT process should set up
# the system in the mindi-busybox context
#

# Order is important, read from bottom to top

# By default launch the MondoRescue script
console::sysinit:/etc/init.d/rcS

console::restart:/sbin/init

# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot

null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
null::shutdown:/bin/umount -a -r

I'm testing mostly on KVM VMs, and simulate the CTRL-ALT-DEL with the
sendkey command from the monitor window. This is working when we are at
syslinux boot prompt, but as soon as we launch init, then we are unable
to reboot the VM using CTRL-ALT-DEL. I also tested on real HW with the
same result.

So I'm surely doing something wrong, either in my inittab or in my
congif of busybox, but I don't see what.

I even tried with the latest 1.20.2 (which I may use as the base for the
next stable version) without more luck either.

Using showkey in the VM, I see that the sendkey command does indeed send
the keys to the system, but it doesn't generate the reboot. I attached
the corresponding capture.

I read at
http://lists.busybox.net/pipermail/busybox/2012-May/077855.html that a
reason could be a non-busybox reboot but that's not our case. While we
do replace some busybox commands by the native ones, reboot is linked to
busybox (as well as halt, but not shutdown, which I just remarked
now,but linking it to busybox doesn't change stuff anyway).

So I'm looking for advises on how to debug more, or any hint wrt my
usage.

Thanks in advance,
Best regards,
Bruno.
--
Des infos sur la musique ancienne -- http://www.musique-ancienne.org
Des infos sur les logiciels libres -- http://www.HyPer-Linux.org
Home, sweet musical Home -- Lover of Androm?de, B?atrice, Early Music,
Josquin, Linux, M?lisande, Recorder, and S?gol?ne (not in that order)
-------------- next part --------------
#
# Automatically generated make config: don't edit
# Busybox version: 1.18.5-rPBREV
# Wed Mar 13 18:16:16 2013
#
CONFIG_HAVE_DOT_CONFIG=y

#
# Busybox Settings
#

#
# General Configuration
#
# CONFIG_DESKTOP is not set
CONFIG_EXTRA_COMPAT=y
CONFIG_INCLUDE_SUSv2=y
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_PLATFORM_LINUX=y
# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_FEATURE_INSTALLER=y
# CONFIG_INSTALL_NO_USR is not set
CONFIG_LOCALE_SUPPORT=y
CONFIG_UNICODE_SUPPORT=y
# CONFIG_UNICODE_USING_LOCALE is not set
# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
CONFIG_SUBST_WCHAR=63
CONFIG_LAST_SUPPORTED_WCHAR=767
# CONFIG_UNICODE_COMBINING_WCHARS is not set
# CONFIG_UNICODE_WIDE_WCHARS is not set
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
# CONFIG_FEATURE_CLEAN_UP is not set
# CONFIG_FEATURE_WTMP is not set
CONFIG_FEATURE_UTMP=y
# CONFIG_FEATURE_PIDFILE is not set
CONFIG_FEATURE_SUID=y
# CONFIG_FEATURE_SUID_CONFIG is not set
# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
# CONFIG_SELINUX is not set
# CONFIG_FEATURE_PREFER_APPLETS is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_FEATURE_SYSLOG=y
# CONFIG_FEATURE_HAVE_RPC is not set

#
# Build Options
#
# CONFIG_STATIC is not set
# CONFIG_PIE is not set
# CONFIG_NOMMU is not set
# CONFIG_BUILD_LIBBUSYBOX is not set
# CONFIG_FEATURE_INDIVIDUAL is not set
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_EXTRA_CFLAGS=""

#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_DEBUG_PESSIMIZE is not set
# CONFIG_WERROR is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set

#
# Installation Options ("make install" behavior)
#
CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_APPLET_HARDLINKS is not set
# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
# CONFIG_INSTALL_APPLET_DONT is not set
# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
CONFIG_PREFIX="./_install"

#
# Busybox Library Tuning
#
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SIZE_VS_SPEED=2
CONFIG_FEATURE_FAST_TOP=y
# CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set
CONFIG_FEATURE_EDITING_HISTORY=15
# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
CONFIG_FEATURE_TAB_COMPLETION=y
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
CONFIG_FEATURE_NON_POSIX_CP=y
CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
CONFIG_FEATURE_COPYBUF_KB=4
# CONFIG_MONOTONIC_SYSCALL is not set
CONFIG_IOCTL_HEX2STR_ERROR=y
CONFIG_FEATURE_HWIB=y

#
# Applets
#

#
# Archival Utilities
#
CONFIG_FEATURE_SEAMLESS_XZ=y
CONFIG_FEATURE_SEAMLESS_LZMA=y
CONFIG_FEATURE_SEAMLESS_BZ2=y
CONFIG_FEATURE_SEAMLESS_GZ=y
# CONFIG_FEATURE_SEAMLESS_Z is not set
CONFIG_AR=y
# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
CONFIG_FEATURE_AR_CREATE=y
# CONFIG_BUNZIP2 is not set
CONFIG_BZIP2=y
CONFIG_CPIO=y
CONFIG_FEATURE_CPIO_O=y
CONFIG_FEATURE_CPIO_P=y
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
CONFIG_GUNZIP=y
CONFIG_GZIP=y
CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
CONFIG_LZOP=y
# CONFIG_LZOP_COMPR_HIGH is not set
# CONFIG_RPM2CPIO is not set
# CONFIG_RPM is not set
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_AUTODETECT=y
CONFIG_FEATURE_TAR_FROM=y
CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
# CONFIG_FEATURE_TAR_TO_COMMAND is not set
CONFIG_FEATURE_TAR_UNAME_GNAME=y
CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
# CONFIG_FEATURE_TAR_SELINUX is not set
# CONFIG_UNCOMPRESS is not set
CONFIG_UNLZMA=y
# CONFIG_FEATURE_LZMA_FAST is not set
CONFIG_LZMA=y
CONFIG_UNXZ=y
CONFIG_XZ=y
# CONFIG_UNZIP is not set

#
# Coreutils
#
CONFIG_BASENAME=y
CONFIG_CAT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
# CONFIG_FEATURE_DATE_NANO is not set
CONFIG_FEATURE_DATE_COMPAT=y
CONFIG_TEST=y
# CONFIG_FEATURE_TEST_64 is not set
CONFIG_TR=y
CONFIG_FEATURE_TR_CLASSES=y
CONFIG_FEATURE_TR_EQUIV=y
CONFIG_BASE64=y
# CONFIG_CAL is not set
# CONFIG_CATV is not set
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
CONFIG_CHROOT=y
CONFIG_CKSUM=y
# CONFIG_COMM is not set
CONFIG_CP=y
CONFIG_FEATURE_CP_LONG_OPTIONS=y
CONFIG_CUT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
# CONFIG_EXPAND is not set
# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
CONFIG_EXPR=y
# CONFIG_EXPR_MATH_SUPPORT_64 is not set
CONFIG_FALSE=y
# CONFIG_FOLD is not set
CONFIG_FSYNC=y
CONFIG_HEAD=y
# CONFIG_FEATURE_FANCY_HEAD is not set
# CONFIG_HOSTID is not set
CONFIG_ID=y
# CONFIG_INSTALL is not set
# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
# CONFIG_LENGTH is not set
CONFIG_LN=y
# CONFIG_LOGNAME is not set
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
CONFIG_MD5SUM=y
CONFIG_MKDIR=y
# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
CONFIG_MKFIFO=y
CONFIG_MKNOD=y
CONFIG_MV=y
# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
# CONFIG_NICE is not set
# CONFIG_NOHUP is not set
CONFIG_OD=y
# CONFIG_PRINTENV is not set
# CONFIG_PRINTF is not set
CONFIG_PWD=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_REALPATH=y
CONFIG_RM=y
CONFIG_RMDIR=y
CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y
# CONFIG_SEQ is not set
CONFIG_SHA1SUM=y
CONFIG_SHA256SUM=y
CONFIG_SHA512SUM=y
CONFIG_SLEEP=y
# CONFIG_FEATURE_FANCY_SLEEP is not set
# CONFIG_FEATURE_FLOAT_SLEEP is not set
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
# CONFIG_SPLIT is not set
# CONFIG_FEATURE_SPLIT_FANCY is not set
# CONFIG_STAT is not set
# CONFIG_FEATURE_STAT_FORMAT is not set
CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
CONFIG_TAC=y
CONFIG_TAIL=y
# CONFIG_FEATURE_FANCY_TAIL is not set
CONFIG_TEE=y
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
CONFIG_TOUCH=y
CONFIG_TRUE=y
CONFIG_TTY=y
CONFIG_UNAME=y
# CONFIG_UNEXPAND is not set
# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
CONFIG_UNIQ=y
# CONFIG_USLEEP is not set
# CONFIG_UUDECODE is not set
# CONFIG_UUENCODE is not set
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
CONFIG_WHO=y
CONFIG_WHOAMI=y
CONFIG_YES=y

#
# Common options for cp and mv
#
CONFIG_FEATURE_PRESERVE_HARDLINKS=y

#
# Common options for ls, more and telnet
#
CONFIG_FEATURE_AUTOWIDTH=y

#
# Common options for df, du, ls
#
CONFIG_FEATURE_HUMAN_READABLE=y

#
# Common options for md5sum, sha1sum, sha256sum, sha512sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y

#
# Console Utilities
#
CONFIG_CHVT=y
CONFIG_FGCONSOLE=y
CONFIG_CLEAR=y
# CONFIG_DEALLOCVT is not set
# CONFIG_DUMPKMAP is not set
CONFIG_KBD_MODE=y
# CONFIG_LOADFONT is not set
CONFIG_LOADKMAP=y
CONFIG_OPENVT=y
CONFIG_RESET=y
# CONFIG_RESIZE is not set
# CONFIG_FEATURE_RESIZE_PRINT is not set
CONFIG_SETCONSOLE=y
CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
CONFIG_SETFONT=y
CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y
CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_SETKEYCODES=y
# CONFIG_SETLOGCONS is not set
CONFIG_SHOWKEY=y

#
# Common options for loadfont and setfont
#
CONFIG_FEATURE_LOADFONT_PSF2=y
CONFIG_FEATURE_LOADFONT_RAW=y

#
# Debian Utilities
#
CONFIG_MKTEMP=y
CONFIG_PIPE_PROGRESS=y
# CONFIG_RUN_PARTS is not set
# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
# CONFIG_START_STOP_DAEMON is not set
# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
CONFIG_WHICH=y

#
# Editors
#
CONFIG_PATCH=y
CONFIG_AWK=y
CONFIG_FEATURE_AWK_LIBM=y
CONFIG_CMP=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
CONFIG_FEATURE_DIFF_DIR=y
# CONFIG_ED is not set
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_MAX_LEN=1024
# CONFIG_FEATURE_VI_8BIT is not set
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_ASK_TERMINAL=y
CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
CONFIG_FEATURE_ALLOW_EXEC=y

#
# Finding Utilities
#
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
CONFIG_FEATURE_FIND_MMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_MAXDEPTH=y
CONFIG_FEATURE_FIND_NEWER=y
CONFIG_FEATURE_FIND_INUM=y
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_FEATURE_FIND_USER=y
CONFIG_FEATURE_FIND_GROUP=y
CONFIG_FEATURE_FIND_NOT=y
CONFIG_FEATURE_FIND_DEPTH=y
CONFIG_FEATURE_FIND_PAREN=y
CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
# CONFIG_FEATURE_FIND_DELETE is not set
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
CONFIG_FEATURE_FIND_LINKS=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
# CONFIG_FEATURE_GREP_CONTEXT is not set
CONFIG_XARGS=y
# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set
# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y

#
# Init Utilities
#
CONFIG_BOOTCHARTD=y
CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER=y
CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE=y
CONFIG_HALT=y
# CONFIG_FEATURE_CALL_TELINIT is not set
CONFIG_TELINIT_PATH=""
CONFIG_INIT=y
CONFIG_FEATURE_USE_INITTAB=y
# CONFIG_FEATURE_KILL_REMOVED is not set
CONFIG_FEATURE_KILL_DELAY=0
CONFIG_FEATURE_INIT_SCTTY=y
CONFIG_FEATURE_INIT_SYSLOG=y
# CONFIG_FEATURE_EXTRA_QUIET is not set
CONFIG_FEATURE_INIT_COREDUMPS=y
CONFIG_FEATURE_INITRD=y
CONFIG_INIT_TERMINAL_TYPE="linux"
CONFIG_MESG=y

#
# Login/Password Management Utilities
#
# CONFIG_ADD_SHELL is not set
# CONFIG_REMOVE_SHELL is not set
# CONFIG_FEATURE_SHADOWPASSWDS is not set
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_USE_BB_SHADOW is not set
CONFIG_USE_BB_CRYPT=y
CONFIG_USE_BB_CRYPT_SHA=y
# CONFIG_ADDUSER is not set
# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
# CONFIG_FEATURE_CHECK_NAMES is not set
CONFIG_FIRST_SYSTEM_ID=0
CONFIG_LAST_SYSTEM_ID=0
# CONFIG_ADDGROUP is not set
# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
# CONFIG_DELUSER is not set
# CONFIG_DELGROUP is not set
# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
# CONFIG_GETTY is not set
# CONFIG_LOGIN is not set
# CONFIG_PAM is not set
# CONFIG_LOGIN_SCRIPTS is not set
# CONFIG_FEATURE_NOLOGIN is not set
# CONFIG_FEATURE_SECURETTY is not set
# CONFIG_PASSWD is not set
# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
# CONFIG_CRYPTPW is not set
# CONFIG_CHPASSWD is not set
# CONFIG_SU is not set
# CONFIG_FEATURE_SU_SYSLOG is not set
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
# CONFIG_SULOGIN is not set
# CONFIG_VLOCK is not set

#
# Linux Ext2 FS Progs
#
# CONFIG_CHATTR is not set
# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set
# CONFIG_TUNE2FS is not set

#
# Linux Module Utilities
#
CONFIG_MODINFO=y
CONFIG_MODPROBE_SMALL=y
CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE=y
CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y
# CONFIG_INSMOD is not set
# CONFIG_RMMOD is not set
# CONFIG_LSMOD is not set
# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
# CONFIG_MODPROBE is not set
# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
# CONFIG_DEPMOD is not set

#
# Options common to multiple modutils
#
# CONFIG_FEATURE_2_4_MODULES is not set
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
# CONFIG_FEATURE_MODUTILS_ALIAS is not set
# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"

#
# Linux System Utilities
#
CONFIG_BLOCKDEV=y
CONFIG_REV=y
CONFIG_ACPID=y
CONFIG_FEATURE_ACPID_COMPAT=y
# CONFIG_BLKID is not set
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
# CONFIG_FBSET is not set
# CONFIG_FEATURE_FBSET_FANCY is not set
# CONFIG_FEATURE_FBSET_READMODE is not set
CONFIG_FDFLUSH=y
CONFIG_FDFORMAT=y
# CONFIG_FDISK is not set
CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
# CONFIG_FEATURE_FDISK_WRITABLE is not set
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
# CONFIG_FEATURE_GPT_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
CONFIG_FINDFS=y
CONFIG_FLOCK=y
CONFIG_FREERAMDISK=y
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_EXT2 is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
# CONFIG_MKFS_REISER is not set
# CONFIG_MKFS_VFAT is not set
# CONFIG_GETOPT is not set
# CONFIG_FEATURE_GETOPT_LONG is not set
# CONFIG_HEXDUMP is not set
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
CONFIG_HWCLOCK=y
# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
# CONFIG_IPCRM is not set
# CONFIG_IPCS is not set
CONFIG_LOSETUP=y
CONFIG_LSPCI=y
CONFIG_LSUSB=y
# CONFIG_MDEV is not set
# CONFIG_FEATURE_MDEV_CONF is not set
# CONFIG_FEATURE_MDEV_RENAME is not set
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
# CONFIG_MKSWAP is not set
# CONFIG_FEATURE_MKSWAP_UUID is not set
CONFIG_MORE=y
# CONFIG_MOUNT is not set
# CONFIG_FEATURE_MOUNT_FAKE is not set
# CONFIG_FEATURE_MOUNT_VERBOSE is not set
# CONFIG_FEATURE_MOUNT_HELPERS is not set
# CONFIG_FEATURE_MOUNT_LABEL is not set
# CONFIG_FEATURE_MOUNT_NFS is not set
# CONFIG_FEATURE_MOUNT_CIFS is not set
# CONFIG_FEATURE_MOUNT_FLAGS is not set
# CONFIG_FEATURE_MOUNT_FSTAB is not set
CONFIG_PIVOT_ROOT=y
# CONFIG_RDATE is not set
# CONFIG_RDEV is not set
# CONFIG_READPROFILE is not set
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
# CONFIG_SCRIPTREPLAY is not set
# CONFIG_SETARCH is not set
CONFIG_SWAPONOFF=y
CONFIG_FEATURE_SWAPON_PRI=y
CONFIG_SWITCH_ROOT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y

#
# Common options for mount/umount
#
CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
CONFIG_VOLUMEID=y

#
# Filesystem/Volume identification
#
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y
CONFIG_FEATURE_VOLUMEID_REISERFS=y
CONFIG_FEATURE_VOLUMEID_FAT=y
CONFIG_FEATURE_VOLUMEID_HFS=y
CONFIG_FEATURE_VOLUMEID_JFS=y
CONFIG_FEATURE_VOLUMEID_XFS=y
CONFIG_FEATURE_VOLUMEID_NTFS=y
CONFIG_FEATURE_VOLUMEID_ISO9660=y
CONFIG_FEATURE_VOLUMEID_UDF=y
CONFIG_FEATURE_VOLUMEID_LUKS=y
CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
CONFIG_FEATURE_VOLUMEID_CRAMFS=y
CONFIG_FEATURE_VOLUMEID_ROMFS=y
CONFIG_FEATURE_VOLUMEID_SYSV=y
CONFIG_FEATURE_VOLUMEID_OCFS2=y
CONFIG_FEATURE_VOLUMEID_LINUXRAID=y

#
# Miscellaneous Utilities
#
# CONFIG_CONSPY is not set
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
# CONFIG_UBIATTACH is not set
# CONFIG_UBIDETACH is not set
# CONFIG_ADJTIMEX is not set
# CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
# CONFIG_BEEP is not set
CONFIG_FEATURE_BEEP_FREQ=0
CONFIG_FEATURE_BEEP_LENGTH_MS=0
# CONFIG_CHAT is not set
# CONFIG_FEATURE_CHAT_NOFAIL is not set
# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
# CONFIG_CHRT is not set
# CONFIG_CROND is not set
# CONFIG_FEATURE_CROND_D is not set
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
CONFIG_FEATURE_CROND_DIR=""
# CONFIG_CRONTAB is not set
# CONFIG_DC is not set
# CONFIG_FEATURE_DC_LIBM is not set
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
# CONFIG_DEVMEM is not set
# CONFIG_EJECT is not set
# CONFIG_FEATURE_EJECT_SCSI is not set
# CONFIG_FBSPLASH is not set
# CONFIG_FLASHCP is not set
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
# CONFIG_FLASH_ERASEALL is not set
# CONFIG_IONICE is not set
# CONFIG_INOTIFYD is not set
# CONFIG_LAST is not set
# CONFIG_FEATURE_LAST_SMALL is not set
# CONFIG_FEATURE_LAST_FANCY is not set
# CONFIG_LESS is not set
CONFIG_FEATURE_LESS_MAXLINES=0
# CONFIG_FEATURE_LESS_BRACKETS is not set
# CONFIG_FEATURE_LESS_FLAGS is not set
# CONFIG_FEATURE_LESS_MARKS is not set
# CONFIG_FEATURE_LESS_REGEXP is not set
# CONFIG_FEATURE_LESS_WINCH is not set
# CONFIG_FEATURE_LESS_DASHCMD is not set
# CONFIG_FEATURE_LESS_LINENUMS is not set
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
# CONFIG_MAKEDEVS is not set
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MAN is not set
# CONFIG_MICROCOM is not set
# CONFIG_MOUNTPOINT is not set
CONFIG_MT=y
# CONFIG_RAIDAUTORUN is not set
# CONFIG_READAHEAD is not set
# CONFIG_RFKILL is not set
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
CONFIG_SETSID=y
CONFIG_STRINGS=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
# CONFIG_TIME is not set
# CONFIG_TIMEOUT is not set
# CONFIG_TTYSIZE is not set
# CONFIG_VOLNAME is not set
# CONFIG_WALL is not set
# CONFIG_WATCHDOG is not set

#
# Networking Utilities
#
CONFIG_NBDCLIENT=y
CONFIG_NC=y
CONFIG_NC_SERVER=y
CONFIG_NC_EXTRA=y
# CONFIG_NC_110_COMPAT is not set
# CONFIG_FEATURE_IPV6 is not set
# CONFIG_FEATURE_UNIX_LOCAL is not set
# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
# CONFIG_BRCTL is not set
# CONFIG_FEATURE_BRCTL_FANCY is not set
# CONFIG_FEATURE_BRCTL_SHOW is not set
# CONFIG_DNSD is not set
# CONFIG_ETHER_WAKE is not set
# CONFIG_FAKEIDENTD is not set
# CONFIG_FTPD is not set
# CONFIG_FEATURE_FTP_WRITE is not set
# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
# CONFIG_HOSTNAME is not set
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
# CONFIG_FEATURE_HTTPD_PROXY is not set
# CONFIG_FEATURE_HTTPD_GZIP is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
CONFIG_FEATURE_IFCONFIG_SLIP=y
CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
CONFIG_IFENSLAVE=y
# CONFIG_IFPLUGD is not set
# CONFIG_IFUPDOWN is not set
CONFIG_IFUPDOWN_IFSTATE_PATH=""
# CONFIG_FEATURE_IFUPDOWN_IP is not set
# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
# CONFIG_INETD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
# CONFIG_FEATURE_INETD_RPC is not set
# CONFIG_IP is not set
# CONFIG_FEATURE_IP_ADDRESS is not set
# CONFIG_FEATURE_IP_LINK is not set
# CONFIG_FEATURE_IP_ROUTE is not set
# CONFIG_FEATURE_IP_TUNNEL is not set
# CONFIG_FEATURE_IP_RULE is not set
# CONFIG_FEATURE_IP_SHORT_FORMS is not set
# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
# CONFIG_IPADDR is not set
# CONFIG_IPLINK is not set
# CONFIG_IPROUTE is not set
# CONFIG_IPTUNNEL is not set
# CONFIG_IPRULE is not set
# CONFIG_IPCALC is not set
# CONFIG_FEATURE_IPCALC_FANCY is not set
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
# CONFIG_NAMEIF is not set
# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
CONFIG_NETSTAT=y
# CONFIG_FEATURE_NETSTAT_WIDE is not set
CONFIG_FEATURE_NETSTAT_PRG=y
CONFIG_NSLOOKUP=y
# CONFIG_NTPD is not set
# CONFIG_FEATURE_NTPD_SERVER is not set
CONFIG_PING=y
# CONFIG_PING6 is not set
CONFIG_FEATURE_FANCY_PING=y
# CONFIG_PSCAN is not set
CONFIG_ROUTE=y
# CONFIG_SLATTACH is not set
# CONFIG_TCPSVD is not set
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
CONFIG_TFTP=y
# CONFIG_TFTPD is not set

#
# Common options for tftp/tftpd
#
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
# CONFIG_TFTP_DEBUG is not set
# CONFIG_TRACEROUTE is not set
# CONFIG_TRACEROUTE6 is not set
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
# CONFIG_TUNCTL is not set
# CONFIG_FEATURE_TUNCTL_UG is not set
# CONFIG_UDHCPD is not set
# CONFIG_DHCPRELAY is not set
# CONFIG_DUMPLEASES is not set
# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
CONFIG_DHCPD_LEASES_FILE=""
CONFIG_UDHCPC=y
CONFIG_FEATURE_UDHCPC_ARPING=y
CONFIG_FEATURE_UDHCP_PORT=y
CONFIG_UDHCP_DEBUG=9
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
# CONFIG_UDPSVD is not set
# CONFIG_VCONFIG is not set
# CONFIG_WGET is not set
# CONFIG_FEATURE_WGET_STATUSBAR is not set
# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
# CONFIG_FEATURE_WGET_TIMEOUT is not set
# CONFIG_ZCIP is not set

#
# Print Utilities
#
# CONFIG_LPD is not set
# CONFIG_LPR is not set
# CONFIG_LPQ is not set

#
# Mail Utilities
#
# CONFIG_MAKEMIME is not set
CONFIG_FEATURE_MIME_CHARSET=""
# CONFIG_POPMAILDIR is not set
# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
# CONFIG_REFORMIME is not set
# CONFIG_FEATURE_REFORMIME_COMPAT is not set
# CONFIG_SENDMAIL is not set

#
# Process Utilities
#
# CONFIG_IOSTAT is not set
# CONFIG_MPSTAT is not set
# CONFIG_PMAP is not set
# CONFIG_POWERTOP is not set
# CONFIG_SMEMCAP is not set
CONFIG_FREE=y
# CONFIG_FUSER is not set
CONFIG_KILL=y
CONFIG_KILLALL=y
# CONFIG_KILLALL5 is not set
# CONFIG_NMETER is not set
# CONFIG_PGREP is not set
# CONFIG_PIDOF is not set
# CONFIG_FEATURE_PIDOF_SINGLE is not set
# CONFIG_FEATURE_PIDOF_OMIT is not set
# CONFIG_PKILL is not set
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
# CONFIG_FEATURE_PS_TIME is not set
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
# CONFIG_RENICE is not set
# CONFIG_BB_SYSCTL is not set
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
CONFIG_FEATURE_TOP_SMP_CPU=y
# CONFIG_FEATURE_TOP_DECIMALS is not set
CONFIG_FEATURE_TOP_SMP_PROCESS=y
CONFIG_FEATURE_TOPMEM=y
CONFIG_FEATURE_SHOW_THREADS=y
# CONFIG_UPTIME is not set
# CONFIG_WATCH is not set

#
# Runit Utilities
#
# CONFIG_RUNSV is not set
# CONFIG_RUNSVDIR is not set
# CONFIG_FEATURE_RUNSVDIR_LOG is not set
# CONFIG_SV is not set
CONFIG_SV_DEFAULT_SERVICE_DIR=""
# CONFIG_SVLOGD is not set
# CONFIG_CHPST is not set
# CONFIG_SETUIDGID is not set
# CONFIG_ENVUIDGID is not set
# CONFIG_ENVDIR is not set
# CONFIG_SOFTLIMIT is not set
# CONFIG_CHCON is not set
# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
# CONFIG_GETENFORCE is not set
# CONFIG_GETSEBOOL is not set
# CONFIG_LOAD_POLICY is not set
# CONFIG_MATCHPATHCON is not set
# CONFIG_RESTORECON is not set
# CONFIG_RUNCON is not set
# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
# CONFIG_SELINUXENABLED is not set
# CONFIG_SETENFORCE is not set
# CONFIG_SETFILES is not set
# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
# CONFIG_SETSEBOOL is not set
# CONFIG_SESTATUS is not set

#
# Shells
#
CONFIG_ASH=y
CONFIG_ASH_BASH_COMPAT=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
# CONFIG_ASH_GETOPTS is not set
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_PRINTF=y
CONFIG_ASH_BUILTIN_TEST=y
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
# CONFIG_ASH_RANDOM_SUPPORT is not set
# CONFIG_ASH_EXPAND_PRMT is not set
CONFIG_CTTYHACK=y
# CONFIG_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_HELP is not set
# CONFIG_HUSH_INTERACTIVE is not set
# CONFIG_HUSH_SAVEHISTORY is not set
# CONFIG_HUSH_JOB is not set
# CONFIG_HUSH_TICK is not set
# CONFIG_HUSH_IF is not set
# CONFIG_HUSH_LOOPS is not set
# CONFIG_HUSH_CASE is not set
# CONFIG_HUSH_FUNCTIONS is not set
# CONFIG_HUSH_LOCAL is not set
# CONFIG_HUSH_RANDOM_SUPPORT is not set
# CONFIG_HUSH_EXPORT_N is not set
# CONFIG_HUSH_MODE_X is not set
# CONFIG_MSH is not set
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
# CONFIG_FEATURE_BASH_IS_ASH is not set
# CONFIG_FEATURE_BASH_IS_HUSH is not set
CONFIG_FEATURE_BASH_IS_NONE=y
CONFIG_SH_MATH_SUPPORT=y
CONFIG_SH_MATH_SUPPORT_64=y
# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set

#
# System Logging Utilities
#
CONFIG_SYSLOGD=y
# CONFIG_FEATURE_ROTATE_LOGFILE is not set
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
CONFIG_FEATURE_KLOGD_KLOGCTL=y
# CONFIG_LOGGER is not set
-------------- next part --------------
A non-text attachment was scrubbed...
Name: busybox-showkey.png
Type: image/png
Size: 78949 bytes
Desc: not available
URL: <Loading Image...>
Bruno Cornec
2013-03-20 23:18:38 UTC
Permalink
Hello,

I'm using busybox in the context of the GPL disaster recovery and
cloning solution called MondoRescue (Cf: http://www.mondorescue.org).

We have an opened bug report (Cf:
http://trac.mondorescue.org/ticket/627) concerning the restoration
phasebase don busybox, where a user is supposed to be able to press
CTRL-ALT-DEL in order to reboot the computer before launching an
automatic restore. This is not working as expected.

We are up to now using version 1.18.5, with the attached .config file to
compile busybox. We have an inittab file containing:

#
# inittab This file describes how the INIT process should set up
# the system in the mindi-busybox context
#

# Order is important, read from bottom to top

# By default launch the MondoRescue script
console::sysinit:/etc/init.d/rcS

console::restart:/sbin/init

# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot

null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
null::shutdown:/bin/umount -a -r

I'm testing mostly on KVM VMs, and simulate the CTRL-ALT-DEL with the
sendkey command from the monitor window. This is working when we are at
syslinux boot prompt, but as soon as we launch init, then we are unable
to reboot the VM using CTRL-ALT-DEL. I also tested on real HW with the
same result.

So I'm surely doing something wrong, either in my inittab or in my
congif of busybox, but I don't see what.

I even tried with the latest 1.20.2 (which I may use as the base for the
next stable version) without more luck either.

Using showkey in the VM, I see that the sendkey command does indeed send
the keys to the system, but it doesn't generate the reboot. I attached
the corresponding capture.

I read at
http://lists.busybox.net/pipermail/busybox/2012-May/077855.html that a
reason could be a non-busybox reboot but that's not our case. While we
do replace some busybox commands by the native ones, reboot is linked to
busybox (as well as halt, but not shutdown, which I just remarked
now,but linking it to busybox doesn't change stuff anyway).

So I'm looking for advises on how to debug more, or any hint wrt my
usage.

Thanks in advance,
Best regards,
Bruno.
--
Des infos sur la musique ancienne -- http://www.musique-ancienne.org
Des infos sur les logiciels libres -- http://www.HyPer-Linux.org
Home, sweet musical Home -- Lover of Androm?de, B?atrice, Early Music,
Josquin, Linux, M?lisande, Recorder, and S?gol?ne (not in that order)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: busybox-showkey.png
Type: image/png
Size: 78949 bytes
Desc: not available
URL: <Loading Image...>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 6167 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20130320/f5df559a/attachment.obj>
Denys Vlasenko
2014-02-19 13:31:01 UTC
Permalink
Post by Bruno Cornec
http://trac.mondorescue.org/ticket/627) concerning the restoration
phasebase don busybox, where a user is supposed to be able to press
CTRL-ALT-DEL in order to reboot the computer before launching an
automatic restore. This is not working as expected.
We are up to now using version 1.18.5, with the attached .config file to
#
# inittab This file describes how the INIT process should set up
# the system in the mindi-busybox context
#
# Order is important, read from bottom to top
# By default launch the MondoRescue script
console::sysinit:/etc/init.d/rcS
console::restart:/sbin/init
# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot
null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
null::shutdown:/bin/umount -a -r
I'm testing mostly on KVM VMs, and simulate the CTRL-ALT-DEL with the
sendkey command from the monitor window. This is working when we are at
syslinux boot prompt, but as soon as we launch init, then we are unable
to reboot the VM using CTRL-ALT-DEL. I also tested on real HW with the
same result.
So I'm surely doing something wrong, either in my inittab or in my
congif of busybox, but I don't see what.
I even tried with the latest 1.20.2 (which I may use as the base for the
next stable version) without more luck either.
Using showkey in the VM, I see that the sendkey command does indeed send
the keys to the system, but it doesn't generate the reboot. I attached
the corresponding capture.
I read at
http://lists.busybox.net/pipermail/busybox/2012-May/077855.html that a
reason could be a non-busybox reboot but that's not our case. While we
do replace some busybox commands by the native ones, reboot is linked to
busybox (as well as halt, but not shutdown, which I just remarked
now,but linking it to busybox doesn't change stuff anyway).
So I'm looking for advises on how to debug more, or any hint wrt my
usage.
Pressing CTRL-ALT-DEL sends SIGINT signal to process 1.
You want to make sure it reaches it.

The handler is installed here in init.c:

/* SIGINT (Ctrl-Alt-Del) must interrupt wait(),
* setting handler without SA_RESTART flag.
*/
bb_signals_recursive_norestart((1 << SIGINT), record_signo);

You can write a my_record_signo() function which also prints
signal number on stdout.

Then, you may want to similarly check whether this location
is reached in check_delayed_sigs():

if (sig == SIGINT)
run_actions(CTRLALTDEL);
--
vda
Harald Becker
2014-02-19 13:48:52 UTC
Permalink
Hi !

On 19-02-2014 14:31 Denys Vlasenko <vda.linux at googlemail.com>
Post by Denys Vlasenko
Post by Bruno Cornec
# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot
Pressing CTRL-ALT-DEL sends SIGINT signal to process 1.
You want to make sure it reaches it.
Don't forget to set /proc/sys/kernel/ctrl-alt-del to "0" (zero)
to enable sending SIGINT to the init process.

e.g.: echo "0" >/proc/sys/kernel/ctrl-alt-del

Without this most Linux kernel try an immediate reboot without
saving buffers etc., know to fail/hang on some emulators.

--
Harald
Denys Vlasenko
2014-02-19 14:35:24 UTC
Permalink
Post by Harald Becker
On 19-02-2014 14:31 Denys Vlasenko <vda.linux at googlemail.com>
Post by Denys Vlasenko
Post by Bruno Cornec
# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot
Pressing CTRL-ALT-DEL sends SIGINT signal to process 1.
You want to make sure it reaches it.
Don't forget to set /proc/sys/kernel/ctrl-alt-del to "0" (zero)
to enable sending SIGINT to the init process.
e.g.: echo "0" >/proc/sys/kernel/ctrl-alt-del
Without this most Linux kernel try an immediate reboot without
saving buffers etc., know to fail/hang on some emulators.
init.c does that already:

/* Turn off rebooting via CTL-ALT-DEL - we get a
* SIGINT on CAD so we can shut things down gracefully... */
reboot(RB_DISABLE_CAD); /* misnomer */
Harald Becker
2014-02-19 14:58:26 UTC
Permalink
Hi Denys !

On 19-02-2014 15:35 Denys Vlasenko <vda.linux at googlemail.com>
Post by Denys Vlasenko
Post by Harald Becker
On 19-02-2014 14:31 Denys Vlasenko <vda.linux at googlemail.com>
Post by Denys Vlasenko
Post by Bruno Cornec
# Trap CTRL-ALT-DELETE
null::ctrlaltdel:/sbin/reboot
Pressing CTRL-ALT-DEL sends SIGINT signal to process 1.
You want to make sure it reaches it.
Don't forget to set /proc/sys/kernel/ctrl-alt-del to "0" (zero)
to enable sending SIGINT to the init process.
e.g.: echo "0" >/proc/sys/kernel/ctrl-alt-del
Without this most Linux kernel try an immediate reboot without
saving buffers etc., know to fail/hang on some emulators.
/* Turn off rebooting via CTL-ALT-DEL - we get a
* SIGINT on CAD so we can shut things down
gracefully... */ reboot(RB_DISABLE_CAD); /* misnomer */
Outch! ... if you do this before proc is mounted and system is
prepared successfully, most emulators fail and many linux systems
just hang when they receive a ctrl-alt-del. The command is right
(same as writing to /proc/sys/kernel/ctrl-alt-del) but time to do
this is wrong. Move that behind the initial system setup, then
enable ctrl-alt-del. As I had several trouble with Busybox init,
I dropped that and replaced it with my own programs, so I didn't
note earlier the wrong time you enable ctrl-alt-del in BB init.

I do not know what's the reason for this. I just found it
necessary to enable ctrl-alt-del at the right time in system
setup (and not earlier). Had several kinds of trouble on system
startup, when ctrl-alt-del is enabled to early and one presses
ctrl-alt-del. I did never look or try to analyze this.

--
Harald
Denys Vlasenko
2014-02-19 16:07:29 UTC
Permalink
Post by Harald Becker
Post by Denys Vlasenko
Post by Harald Becker
Post by Denys Vlasenko
Pressing CTRL-ALT-DEL sends SIGINT signal to process 1.
You want to make sure it reaches it.
Don't forget to set /proc/sys/kernel/ctrl-alt-del to "0" (zero)
to enable sending SIGINT to the init process.
e.g.: echo "0" >/proc/sys/kernel/ctrl-alt-del
Without this most Linux kernel try an immediate reboot without
saving buffers etc., know to fail/hang on some emulators.
/* Turn off rebooting via CTL-ALT-DEL - we get a
* SIGINT on CAD so we can shut things down
gracefully... */ reboot(RB_DISABLE_CAD); /* misnomer */
Outch! ... if you do this before proc is mounted and system is
prepared successfully, most emulators fail and many linux systems
just hang when they receive a ctrl-alt-del.
No. Calling sys_reboot with RB_DISABLE_CAD nee
LINUX_REBOOT_CMD_CAD_OFF nee zero
results in this code executing in kernel:

case LINUX_REBOOT_CMD_CAD_OFF:
C_A_D = 0;
break;

which in turn has this effect on Ctrl-Alt-Del keypress:

void ctrl_alt_del(void)
{
static DECLARE_WORK(cad_work, deferred_cad);

if (C_A_D)
schedule_work(&cad_work);
else
kill_cad_pid(SIGINT, 1);
}

- exactly what init wants.
Harald Becker
2014-02-19 16:39:51 UTC
Permalink
Hi Denys !
Post by Denys Vlasenko
No. Calling sys_reboot with RB_DISABLE_CAD nee
LINUX_REBOOT_CMD_CAD_OFF nee zero
- exactly what init wants.
Denys the problem is the time init does this call. When C-A-D is
enabled to early (before complete system initialization) many
systems fail badly and emulators tend to hang when you try C-A-D
in the phase of system startup. Per intention enabling C-A-D
shall only be done when system is up and init system is ready to
process action on SIGINT, not earlier. Current init seem to
enable C-A-D before executing sysinit actions. It shall be done
AFTER sysinit not BEFORE.

--
Harald
Denys Vlasenko
2014-02-19 17:55:44 UTC
Permalink
Post by Harald Becker
Post by Denys Vlasenko
No. Calling sys_reboot with RB_DISABLE_CAD nee
LINUX_REBOOT_CMD_CAD_OFF nee zero
- exactly what init wants.
Denys the problem is the time init does this call. When C-A-D is
enabled to early (before complete system initialization) many
systems fail badly and emulators tend to hang when you try C-A-D
in the phase of system startup. Per intention enabling C-A-D
shall only be done when system is up and init system is ready to
process action on SIGINT, not earlier. Current init seem to
enable C-A-D before executing sysinit actions. It shall be done
AFTER sysinit not BEFORE.
How do you know that it is ok to allow user to hard-reboot
the machine in the middle of the booting?
--
vda
Loading...