CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
Added initial stuff (linux-2.6.35.6 and busybox-1.18.4) and verified compilation...
authorJose V Beneyto <sepen@crux.nu>
Mon, 23 May 2011 13:32:07 +0000 (15:32 +0200)
committerJose V Beneyto <sepen@crux.nu>
Mon, 23 May 2011 13:32:07 +0000 (15:32 +0200)
15 files changed:
Makefile [new file with mode: 0644]
busybox-1.18.4.config [new file with mode: 0644]
filesystem/crux [new file with mode: 0755]
filesystem/fstab [new file with mode: 0644]
filesystem/inittab [new file with mode: 0644]
filesystem/ld.so.conf [new file with mode: 0644]
filesystem/mdev.conf [new file with mode: 0644]
filesystem/nsswitch.conf [new file with mode: 0644]
filesystem/pro [new file with mode: 0644]
filesystem/profile [new file with mode: 0644]
filesystem/protocols [new file with mode: 0644]
filesystem/rc [new file with mode: 0755]
filesystem/resolv.conf [new file with mode: 0644]
work/gen_init_cpio.c [new file with mode: 0644]
work/initramfs.lst [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..546403c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,86 @@
+# 
+# initramfs/Makefile
+#
+
+TARGET = arm-crux-linux-gnueabi
+DEVICE = versatile
+
+PWD  = $(shell pwd)
+WORK = $(PWD)/work
+CLFS = $(PWD)/../toolchain/clfs
+CROSSTOOLS = $(PWD)/../toolchain/crosstools
+
+
+KERNEL_PATH = $(PWD)/../kernel/$(DEVICE)
+KERNEL_VERSION = $(shell grep '^KERNEL_VERSION = ' $(KERNEL_PATH)/Makefile | sed 's|KERNEL_VERSION = ||')
+
+BUSYBOX_SOURCE   = http://busybox.net/downloads/busybox-$(BUSYBOX_VERSION).tar.bz2
+BUSYBOX_VERSION  = 1.18.4
+
+.PHONY: all check-root busybox initramfs clean distclean
+
+all: busybox initramfs
+
+clean: busybox-clean initramfs-clean
+
+dist-clean: busybox-distclean gen_init_cpio-distclean initramfs-distclean
+
+check-root:
+       @if [ "$$UID" != "0" ]; then \
+               echo "You need to be root to do this."; \
+               echo "Now you should run 'make initramfs' as root to finish compilation or 'sudo make initramfs'."; \
+               exit 1; \
+       fi
+
+$(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2:
+       wget -P $(WORK) -c http://busybox.net/downloads/busybox-$(BUSYBOX_VERSION).tar.bz2
+
+$(WORK)/busybox-$(BUSYBOX_VERSION): $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2 $(PWD)/busybox-$(BUSYBOX_VERSION).config
+       tar -C $(WORK) -xvjf $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2
+       cp -v $(PWD)/busybox-$(BUSYBOX_VERSION).config $(WORK)/busybox-$(BUSYBOX_VERSION)/.config
+       touch $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2
+
+$(WORK)/busybox-$(BUSYBOX_VERSION)/_install: $(WORK)/busybox-$(BUSYBOX_VERSION)
+       export PATH=$(CROSSTOOLS)/bin:$$PATH &&  \
+       export LD_LIBRARY_PATH=$(CROSSTOOLS)/lib:$$LD_LIBRARY_PATH && \
+       make -C $(WORK)/busybox-$(BUSYBOX_VERSION) ARCH=arm CROSS_COMPILE=$(TARGET)- install
+       touch $(WORK)/busybox-$(BUSYBOX_VERSION)/_install
+
+busybox: $(WORK)/busybox-$(BUSYBOX_VERSION)/_install
+
+busybox-clean:
+       rm -vrf $(WORK)/busybox-$(BUSYBOX_VERSION)
+
+busybox-distclean: busybox-clean
+       rm -vf $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2
+
+$(WORK)/gen_init_cpio: $(WORK)/gen_init_cpio.c
+       cd $(WORK) && \
+               $(CC) $(CFLAGS) -Wall -o gen_init_cpio gen_init_cpio.c
+
+gen_init_cpio: $(WORK)/gen_init_cpio
+
+gen_init_cpio-clean:
+       rm -rf $(WORK)/gen_init_cpio
+
+gen_init_cpio-distclean: gen_init_cpio-clean
+
+$(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION): check-root $(WORK)/busybox-$(BUSYBOX_VERSION)/_install $(KERNEL_PATH) $(WORK)/gen_init_cpio $(WORK)/initramfs.lst
+       mkdir -p $(WORK)/mnt
+       cp -drv $(PWD)/filesystem/* $(WORK)/busybox-$(BUSYBOX_VERSION)/_install/* $(WORK)/mnt
+       ln -s /bin/busybox $(WORK)/mnt/init
+       cd $(WORK)/mnt && \
+               $(WORK)/gen_init_cpio $(WORK)/initramfs.lst | cpio -id && \
+               find * | cpio -H newc -o > $(WORK)/initramfs.cpio && \
+               gzip -v9 $(WORK)/initramfs.cpio
+       mv $(WORK)/initramfs.cpio.gz{,-$(KERNEL_VERSION)}
+       rm -rf $(WORK)/mnt
+
+initramfs: $(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION)
+
+initramfs-clean:
+       rm -rf $(WORK)/initramfs-$(KERNEL_VERSION) $(WORK)/mnt $(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION)
+
+initramfs-distclean: initramfs-clean
+
+# End of file
diff --git a/busybox-1.18.4.config b/busybox-1.18.4.config
new file mode 100644 (file)
index 0000000..4192e8f
--- /dev/null
@@ -0,0 +1,990 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.18.4
+# Mon May 16 16:22:43 2011
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_DESKTOP is not set
+# CONFIG_EXTRA_COMPAT is not set
+CONFIG_INCLUDE_SUSv2=y
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_PLATFORM_LINUX=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_INSTALL_NO_USR is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_UNICODE_SUPPORT is not set
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=0
+CONFIG_LAST_SUPPORTED_WCHAR=0
+# 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 is not set
+CONFIG_FEATURE_PIDFILE=y
+# CONFIG_FEATURE_SUID is not set
+# 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=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# 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="arm-crux-linux-gnueabi-"
+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=255
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+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 is not set
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+# CONFIG_FEATURE_AR_CREATE is not set
+CONFIG_BUNZIP2=y
+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=y
+CONFIG_RPM=y
+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=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_TO_COMMAND=y
+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=y
+CONFIG_LZMA=y
+CONFIG_UNXZ=y
+CONFIG_XZ=y
+CONFIG_UNZIP=y
+
+#
+# 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=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_BASE64=y
+CONFIG_CAL=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+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=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_FSYNC=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+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=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+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=y
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_FEATURE_FLOAT_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TOUCH=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+# CONFIG_WHO is not set
+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=y
+CONFIG_DUMPKMAP=y
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+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=y
+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 is not set
+# 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=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+# 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=y
+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=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+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=y
+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=y
+CONFIG_USE_BB_PWD_GRP=y
+CONFIG_USE_BB_SHADOW=y
+CONFIG_USE_BB_CRYPT=y
+CONFIG_USE_BB_CRYPT_SHA=y
+CONFIG_ADDUSER=y
+CONFIG_FEATURE_ADDUSER_LONG_OPTIONS=y
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+CONFIG_TUNE2FS=y
+
+#
+# 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=y
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# 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=y
+CONFIG_FINDFS=y
+CONFIG_FLOCK=y
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_EXT2=y
+CONFIG_MKFS_MINIX=y
+CONFIG_FEATURE_MINIX2=y
+# CONFIG_MKFS_REISER is not set
+CONFIG_MKFS_VFAT=y
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+CONFIG_HD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_LSPCI=y
+CONFIG_LSUSB=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_UUID=y
+CONFIG_MORE=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+CONFIG_FEATURE_MOUNT_VERBOSE=y
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_RDEV=y
+CONFIG_READPROFILE=y
+CONFIG_RTCWAKE=y
+CONFIG_SCRIPT=y
+CONFIG_SCRIPTREPLAY=y
+CONFIG_SETARCH=y
+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=y
+CONFIG_NANDDUMP=y
+CONFIG_UBIATTACH=y
+CONFIG_UBIDETACH=y
+CONFIG_ADJTIMEX=y
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+CONFIG_BEEP=y
+CONFIG_FEATURE_BEEP_FREQ=4000
+CONFIG_FEATURE_BEEP_LENGTH_MS=30
+CONFIG_CHAT=y
+CONFIG_FEATURE_CHAT_NOFAIL=y
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
+CONFIG_FEATURE_CHAT_SWALLOW_OPTS=y
+CONFIG_FEATURE_CHAT_SEND_ESCAPES=y
+CONFIG_FEATURE_CHAT_VAR_ABORT_LEN=y
+CONFIG_FEATURE_CHAT_CLR_ABORT=y
+CONFIG_CHRT=y
+CONFIG_CROND=y
+CONFIG_FEATURE_CROND_D=y
+CONFIG_FEATURE_CROND_CALL_SENDMAIL=y
+CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+CONFIG_FEATURE_DC_LIBM=y
+# 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=y
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+CONFIG_FBSPLASH=y
+CONFIG_FLASHCP=y
+CONFIG_FLASH_LOCK=y
+CONFIG_FLASH_UNLOCK=y
+CONFIG_FLASH_ERASEALL=y
+CONFIG_IONICE=y
+CONFIG_INOTIFYD=y
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_SMALL is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_FEATURE_LESS_WINCH=y
+CONFIG_FEATURE_LESS_DASHCMD=y
+CONFIG_FEATURE_LESS_LINENUMS=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+CONFIG_MAN=y
+CONFIG_MICROCOM=y
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RFKILL=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+CONFIG_TIMEOUT=y
+CONFIG_TTYSIZE=y
+CONFIG_VOLNAME=y
+CONFIG_WALL=y
+CONFIG_WATCHDOG=y
+
+#
+# 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=y
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+CONFIG_FEATURE_BRCTL_FANCY=y
+CONFIG_FEATURE_BRCTL_SHOW=y
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPD=y
+CONFIG_FEATURE_FTP_WRITE=y
+CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_RANGES=y
+CONFIG_FEATURE_HTTPD_USE_SENDFILE=y
+CONFIG_FEATURE_HTTPD_SETUID=y
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
+CONFIG_FEATURE_HTTPD_PROXY=y
+CONFIG_FEATURE_HTTPD_GZIP=y
+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=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+CONFIG_FEATURE_INETD_RPC=y
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+CONFIG_FEATURE_NAMEIF_EXTENDED=y
+CONFIG_NETSTAT=y
+CONFIG_FEATURE_NETSTAT_WIDE=y
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+CONFIG_NTPD=y
+CONFIG_FEATURE_NTPD_SERVER=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+CONFIG_SLATTACH=y
+CONFIG_TCPSVD=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+CONFIG_TFTP=y
+CONFIG_TFTPD=y
+
+#
+# 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=y
+CONFIG_TRACEROUTE6=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
+CONFIG_UDHCPD=y
+CONFIG_DHCPRELAY=y
+CONFIG_DUMPLEASES=y
+CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y
+CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases"
+CONFIG_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+CONFIG_FEATURE_UDHCP_PORT=y
+CONFIG_UDHCP_DEBUG=9
+CONFIG_FEATURE_UDHCP_RFC3397=y
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+CONFIG_UDPSVD=y
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+CONFIG_ZCIP=y
+
+#
+# Print Utilities
+#
+CONFIG_LPD=y
+CONFIG_LPR=y
+CONFIG_LPQ=y
+
+#
+# Mail Utilities
+#
+CONFIG_MAKEMIME=y
+CONFIG_FEATURE_MIME_CHARSET="us-ascii"
+CONFIG_POPMAILDIR=y
+CONFIG_FEATURE_POPMAILDIR_DELIVERY=y
+CONFIG_REFORMIME=y
+CONFIG_FEATURE_REFORMIME_COMPAT=y
+CONFIG_SENDMAIL=y
+
+#
+# Process Utilities
+#
+CONFIG_IOSTAT=y
+CONFIG_MPSTAT=y
+CONFIG_PMAP=y
+CONFIG_POWERTOP=y
+CONFIG_SMEMCAP=y
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PKILL=y
+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=y
+CONFIG_BB_SYSCTL=y
+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=y
+CONFIG_FEATURE_TOP_SMP_PROCESS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_FEATURE_SHOW_THREADS=y
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+CONFIG_SV=y
+CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service"
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# 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=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+CONFIG_CTTYHACK=y
+CONFIG_HUSH=y
+CONFIG_HUSH_BASH_COMPAT=y
+CONFIG_HUSH_BRACE_EXPANSION=y
+CONFIG_HUSH_HELP=y
+CONFIG_HUSH_INTERACTIVE=y
+CONFIG_HUSH_SAVEHISTORY=y
+CONFIG_HUSH_JOB=y
+CONFIG_HUSH_TICK=y
+CONFIG_HUSH_IF=y
+CONFIG_HUSH_LOOPS=y
+CONFIG_HUSH_CASE=y
+CONFIG_HUSH_FUNCTIONS=y
+CONFIG_HUSH_LOCAL=y
+CONFIG_HUSH_RANDOM_SUPPORT=y
+CONFIG_HUSH_EXPORT_N=y
+CONFIG_HUSH_MODE_X=y
+# 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=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+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=y
diff --git a/filesystem/crux b/filesystem/crux
new file mode 100755 (executable)
index 0000000..ac2d1b1
--- /dev/null
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+echo "CRUX-ARM 2.7"
+
+# End of file
diff --git a/filesystem/fstab b/filesystem/fstab
new file mode 100644 (file)
index 0000000..6ae5af6
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# /etc/fstab: static file system information
+#
+
+none   /sys      sysfs  defaults 0 0
+none   /proc     proc   defaults 0 0
+tmp    /tmp      tmpfs  defaults 0 0
+
+# End of file
diff --git a/filesystem/inittab b/filesystem/inittab
new file mode 100644 (file)
index 0000000..9a7cb0f
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# /etc/inittab
+#
+
+::sysinit:/etc/rc
+::restart:/sbin/init
+::ctrlaltdel:/sbin/init
+::shutdown:/sbin/swapoff -a
+::shutdown:/bin/umount -a -r
+
+::askfirst:-/bin/sh
+
+tty2::askfirst:-/bin/sh
+tty3::askfirst:-/bin/sh
+tty4::askfirst:-/bin/sh
+
+# End of file
diff --git a/filesystem/ld.so.conf b/filesystem/ld.so.conf
new file mode 100644 (file)
index 0000000..2227e1e
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# /etc/ld.so.conf
+#
+
+# End of file
diff --git a/filesystem/mdev.conf b/filesystem/mdev.conf
new file mode 100644 (file)
index 0000000..589a5f5
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# /etc/mdev.conf
+#
+
+# End of file
diff --git a/filesystem/nsswitch.conf b/filesystem/nsswitch.conf
new file mode 100644 (file)
index 0000000..ef1f6b3
--- /dev/null
@@ -0,0 +1,24 @@
+#
+# /etc/nsswitch.conf: name service switch configuration file
+#
+
+passwd:      files
+group:       files
+shadow:      files
+
+hosts:       files dns
+networks:    files
+
+services:    files
+protocols:   files
+rpc:         files
+publickey:   files
+ethers:      files
+netmasks:    files
+netgroup:    files
+bootparams:  files
+
+automount:   files
+aliases:     files
+
+# End of file
diff --git a/filesystem/pro b/filesystem/pro
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/filesystem/profile b/filesystem/profile
new file mode 100644 (file)
index 0000000..d41d6fa
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# /etc/profile
+#
+
+export PS1="\\033[1mcrux-arm:\w \$ \\033[0m"
+
+# End of file
diff --git a/filesystem/protocols b/filesystem/protocols
new file mode 100644 (file)
index 0000000..becf37f
--- /dev/null
@@ -0,0 +1,147 @@
+#      $NetBSD: protocols,v 1.12.4.1 2006/12/02 12:58:19 bouyer Exp $
+#
+# Internet (IP) protocols
+#
+#      originally from: @(#)protocols  8.1 (Berkeley) 6/9/93
+#      see http://www.iana.org/assignments/protocol-numbers
+#
+ip     0       IP              # internet protocol, pseudo protocol number
+icmp   1       ICMP            # internet control message protocol
+igmp   2       IGMP            # internet group management protocol
+ggp    3       GGP             # gateway-gateway protocol
+ipencap        4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
+st     5       ST              # ST datagram mode
+tcp    6       TCP             # transmission control protocol
+cbt    7       CBT
+egp    8       EGP             # exterior gateway protocol
+igp    9       IGP             # any private interior gateway protocol
+bbn-rcc-mon    10      BBN-RCC-MON     # BBN RCC Monitoring
+nvp-ii 11      NVP-II          # Network Voice Protocol
+pup    12      PUP             # PARC universal packet protocol
+argus  13      ARGUS
+emcon  14      EMCON
+xnet   15      XNET            # Cross net debugger
+chaos  16      CHAOS           # Chaos
+udp    17      UDP             # user datagram protocol
+mux    18      MUX             # Multiplexing
+dcn-meas       19      DCN-MEAS        # DCN Measurement Subsystems
+hmp    20      HMP             # host monitoring protocol
+prm    21      PRM             # Packet Radio Measurement
+xns-idp        22      XNS-IDP         # Xerox NS IDP
+trunk-1        23      TRUNK-1
+trunk-2        24      TRUNK-2
+leaf-1 25      LEAF-1
+leaf-2 26      LEAF-2
+rdp    27      RDP             # reliable data protocol
+irtp   28      IRTP            # Internet Reliable Transaction
+iso-tp4        29      ISO-TP4         # ISO Transport Protocol Class 4
+netblt 30      NETBLT          # Bulk Data Transfer Protocol
+mfe-nsp        31      MFE-NSP         # MFE Network Services Protocol
+merit-inp      32      MERIT-INP       # MERIT Internodal Protocol
+sep    33      SEP             # Sequential Exchange Protocol
+3pc    34      3PC             # Third Party Connect Protocol
+idpr   35      IDPR            # Inter-Domain Policy Routing Protocol
+xtp    36      XTP             # Xpress Transfer Protocol
+ddp    37      DDP             # Datagram Delivery Protocol
+idpr-cmtp      38      IDPR-CMTP       # IDPR Control Message Transport
+tp++   39      TP++            # TP++ Transport Protocol
+il     40      IL              # IL Transport Protocol
+ipv6   41      IPv6            # Internet Protocol, version 6
+sdrp   42      SDRP            # Source Demand Routing Protocol
+ipv6-route     43      IPv6-Route      # Routing Header for IPv6
+ipv6-frag      44      IPv6-Frag       # Fragment Header for IPv6
+idrp   45      IDRP            # Inter-Domain Routing Protocol
+rsvp   46      RSVP            # Resource ReSerVation Protocol
+gre    47      GRE             # General Routing Encapsulation
+mhrp   48      MHRP            # Mobile Host Routing Protocol
+bna    49      BNA
+esp    50      ESP             # Encapsulating Security Payload
+ah     51      AH              # Authentication Header
+i-nlsp 52      I-NLSP          # Integrated Net Layer Security
+swipe  53      SWIPE           # IP with Encryption
+narp   54      NARP            # NBMA Address Resolution Protocol
+mobile 55      MOBILE          # IP Mobility (IP tunneling)
+tlsp   56      TLSP            # Transport Layer Security Protocol
+skip   57      SKIP
+ipv6-icmp      58      IPv6-ICMP icmp6 # ICMP version 6
+ipv6-nonxt     59      IPv6-NoNxt      # No Next Header for IPv6
+ipv6-opts      60      IPv6-Opts       # Destination Options for IPv6
+#      61                      # any host internal protocol
+cftp   62      CFTP            # CFTP
+#      63                      # any local network
+sat-expak      64      SAT-expak       #  SATNET and Backroom EXPAK
+kryptolan      65      KRYPTOLAN       # Kryptolan
+rvd    66      RVD             # MIT Remote Virtual Disk Protocol
+ippc   67      IPPC            # Internet Pluribus Packet Core
+#      68                      # any distributed file system
+sat-mon        69      SAT-MON         # SATNET Monitoring
+visa   70      VISA            # VISA Protocol
+ipcv   71      IPCV            # Internet Packet Core Utility
+cpnx   72      CPNX            # Computer Protocol Network Executive
+cphb   73      CPHB            # Computer Protocol Heart Beat
+wsn    74      WSN             # Wang Span Network
+pvp    75      PVP             # Packet Video Protocol
+br-sat-mon     76      BR-SAT-MON      # Backroom SATNET Monitoring
+sun-nd 77      SUN-ND          # SUN ND PROTOCOL-Temporary
+wb-mon 78      WB-MON          # WIDEBAND Monitoring
+wb-expak       79      WB-EXPAK        # WIDEBAND EXPAK
+iso-ip 80      ISO-IP          # ISO Internet Protocol
+vmtp   81      VMTP            # Versatile Message Transport
+secure-vmtp    82      SECURE-VMTP     # SECURE-VMTP
+vines  83      VINES
+ttp    84      TTP
+nsfnet-igp     85      NSFNET-IGP
+dgp    86      DGP             # Dissimilar Gateway Protocol
+tcf    87      TCF
+eigrp  88      EIGRP           # Enhanced Inter-Gateway Routing Protocol
+ospf   89      OSPFIGP         # Open Shortest Path First IGP
+sprite-rpc     90      Sprite-RPC      # Sprite RPC Protocol
+larp   91      LARP            # Locus Address Resolution Protocol
+mtp    92      MTP             # Multicast Transport Protocol
+ax.25  93      AX.25           # AX.25 Frames
+ipip   94      IPIP            # Yet Another IP encapsulation
+micp   95      MICP            # Mobile Internetworking Control Pro.
+scc-sp 96      SCC-SP          # Semaphore Communications Sec. Pro.
+etherip        97      ETHERIP         # Ethernet-within-IP Encapsulation
+encap  98      ENCAP           # RFC1241 encapsulation
+#      99                      # any private encryption scheme
+gmtp   100     GMTP
+ifmp   101     IFMP            # Ipsilon Flow Management Protocol
+pnni   102     PNNI            # PNNI over IP
+pim    103     PIM             # Protocol Independent Multicast
+aris   104     ARIS
+scps   105     SCPS
+qnx    106     QNX
+a/n    107     A/N             # Active Networks
+ipcomp 108     IPCOMP          # IP Payload Compression Protocol
+snp    109     SNP             # Sitara Networks Protocol
+compaq-peer    110     Compaq-Peer     # Compaq Peer Protocol
+ipx-in-ip      111     IPX-in-IP       # IPX in IP
+carp   112     CARP    vrrp    # Virtual Router Redundancy Protocol
+pgm    113     PGM             # PGM Reliable Transport Protocol
+#      114                     # any 0-hop protocol
+l2tp   115     L2TP            # Layer Two Tunneling Protocol
+ddx    116     DDX             # D-II Data Exchange (DDX)
+iatp   117     IATP            # Interactive Agent Transfer Protocol
+stp    118     STP             # Schedule Transfer Protocol
+srp    119     SRP             # SpectraLink Radio Protocol
+uti    120     UTI
+smp    121     SMP             # Simple Message Protocol
+sm     122     SM
+ptp    123     PTP             # Performance Transparency Protocol
+isis   124     ISIS            # IS-IS over IPv4
+fire   125     FIRE
+crtp   126     CRTP            # Combat Radio Transport Protocol
+crudp  127     CRUDP           # Combat Radio User Datagram
+sscopmce       128     SSCOPMCE
+iplt   129     IPLT
+sps    130     SPS             # Secure Packet Shield
+pipe   131     PIPE            # Private IP Encapsulation within IP
+sctp   132     SCTP            # Stream Control Transmission Protocol
+fc     133     FC              # Fibre Channel
+rsvp-e2e-ignore        134     RSVP-E2E-IGNORE
+mobility-header        135     MOBILITY-HEADER # Mobility Header
+udplite                136     UDPLite
+mpls-in-ip     137     MPLS-in-IP      # MPLS in IP
+#      138-254                 # Unassigned
+#      255                     # Reserved
diff --git a/filesystem/rc b/filesystem/rc
new file mode 100755 (executable)
index 0000000..151f232
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# /etc/rc: Init startup script
+#
+
+exec > /dev/console < /dev/console 2>&1
+
+echo "The system is coming up.  Please wait."
+
+# Mounting filesystems
+/bin/mount -v -a
+
+# Remounting root filesystem (rw)
+/bin/mount -o remount,rw /
+
+# Populating /dev
+/sbin/mdev -s
+
+# Registering mdev as hotplug agent
+echo "/bin/mdev" > /proc/sys/kernel/hotplug
+
+# Creating and mounting /dev/pts
+/bin/mkdir /dev/pts
+/bin/mount -t devpts devpts /dev/pts
+
+# Starting kernel log daemon
+/sbin/klogd
+
+# Setting hostname
+/bin/hostname "crux-arm"
+
+# Loading network loopback device
+/bin/ip addr add 127.0.0.1/8 dev lo broadcast + scope host
+/bin/ip link set lo up
+
+# Saving boot messages
+/bin/dmesg > /var/log/boot
+
+# End of file
diff --git a/filesystem/resolv.conf b/filesystem/resolv.conf
new file mode 100644 (file)
index 0000000..9c531f0
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# /etc/resolv.conf
+#
+
+# End of file
diff --git a/work/gen_init_cpio.c b/work/gen_init_cpio.c
new file mode 100644 (file)
index 0000000..7abc07f
--- /dev/null
@@ -0,0 +1,566 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <ctype.h>
+#include <limits.h>
+
+/*
+ * Original work by Jeff Garzik
+ *
+ * External file lists, symlink, pipe and fifo support by Thayne Harbaugh
+ * Hard link support by Luciano Rocha
+ */
+
+#define xstr(s) #s
+#define str(s) xstr(s)
+
+static unsigned int offset;
+static unsigned int ino = 721;
+
+struct file_handler {
+       const char *type;
+       int (*handler)(const char *line);
+};
+
+static void push_string(const char *name)
+{
+       unsigned int name_len = strlen(name) + 1;
+
+       fputs(name, stdout);
+       putchar(0);
+       offset += name_len;
+}
+
+static void push_pad (void)
+{
+       while (offset & 3) {
+               putchar(0);
+               offset++;
+       }
+}
+
+static void push_rest(const char *name)
+{
+       unsigned int name_len = strlen(name) + 1;
+       unsigned int tmp_ofs;
+
+       fputs(name, stdout);
+       putchar(0);
+       offset += name_len;
+
+       tmp_ofs = name_len + 110;
+       while (tmp_ofs & 3) {
+               putchar(0);
+               offset++;
+               tmp_ofs++;
+       }
+}
+
+static void push_hdr(const char *s)
+{
+       fputs(s, stdout);
+       offset += 110;
+}
+
+static void cpio_trailer(void)
+{
+       char s[256];
+       const char name[] = "TRAILER!!!";
+
+       sprintf(s, "%s%08X%08X%08lX%08lX%08X%08lX"
+              "%08X%08X%08X%08X%08X%08X%08X",
+               "070701",               /* magic */
+               0,                      /* ino */
+               0,                      /* mode */
+               (long) 0,               /* uid */
+               (long) 0,               /* gid */
+               1,                      /* nlink */
+               (long) 0,               /* mtime */
+               0,                      /* filesize */
+               0,                      /* major */
+               0,                      /* minor */
+               0,                      /* rmajor */
+               0,                      /* rminor */
+               (unsigned)strlen(name)+1, /* namesize */
+               0);                     /* chksum */
+       push_hdr(s);
+       push_rest(name);
+
+       while (offset % 512) {
+               putchar(0);
+               offset++;
+       }
+}
+
+static int cpio_mkslink(const char *name, const char *target,
+                        unsigned int mode, uid_t uid, gid_t gid)
+{
+       char s[256];
+       time_t mtime = time(NULL);
+
+       sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+              "%08X%08X%08X%08X%08X%08X%08X",
+               "070701",               /* magic */
+               ino++,                  /* ino */
+               S_IFLNK | mode,         /* mode */
+               (long) uid,             /* uid */
+               (long) gid,             /* gid */
+               1,                      /* nlink */
+               (long) mtime,           /* mtime */
+               (unsigned)strlen(target)+1, /* filesize */
+               3,                      /* major */
+               1,                      /* minor */
+               0,                      /* rmajor */
+               0,                      /* rminor */
+               (unsigned)strlen(name) + 1,/* namesize */
+               0);                     /* chksum */
+       push_hdr(s);
+       push_string(name);
+       push_pad();
+       push_string(target);
+       push_pad();
+       return 0;
+}
+
+static int cpio_mkslink_line(const char *line)
+{
+       char name[PATH_MAX + 1];
+       char target[PATH_MAX + 1];
+       unsigned int mode;
+       int uid;
+       int gid;
+       int rc = -1;
+
+       if (5 != sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) "s %o %d %d", name, target, &mode, &uid, &gid)) {
+               fprintf(stderr, "Unrecognized dir format '%s'", line);
+               goto fail;
+       }
+       rc = cpio_mkslink(name, target, mode, uid, gid);
+ fail:
+       return rc;
+}
+
+static int cpio_mkgeneric(const char *name, unsigned int mode,
+                      uid_t uid, gid_t gid)
+{
+       char s[256];
+       time_t mtime = time(NULL);
+
+       sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+              "%08X%08X%08X%08X%08X%08X%08X",
+               "070701",               /* magic */
+               ino++,                  /* ino */
+               mode,                   /* mode */
+               (long) uid,             /* uid */
+               (long) gid,             /* gid */
+               2,                      /* nlink */
+               (long) mtime,           /* mtime */
+               0,                      /* filesize */
+               3,                      /* major */
+               1,                      /* minor */
+               0,                      /* rmajor */
+               0,                      /* rminor */
+               (unsigned)strlen(name) + 1,/* namesize */
+               0);                     /* chksum */
+       push_hdr(s);
+       push_rest(name);
+       return 0;
+}
+
+enum generic_types {
+       GT_DIR,
+       GT_PIPE,
+       GT_SOCK
+};
+
+struct generic_type {
+       const char *type;
+       mode_t mode;
+};
+
+static struct generic_type generic_type_table[] = {
+       [GT_DIR] = {
+               .type = "dir",
+               .mode = S_IFDIR
+       },
+       [GT_PIPE] = {
+               .type = "pipe",
+               .mode = S_IFIFO
+       },
+       [GT_SOCK] = {
+               .type = "sock",
+               .mode = S_IFSOCK
+       }
+};
+
+static int cpio_mkgeneric_line(const char *line, enum generic_types gt)
+{
+       char name[PATH_MAX + 1];
+       unsigned int mode;
+       int uid;
+       int gid;
+       int rc = -1;
+
+       if (4 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d", name, &mode, &uid, &gid)) {
+               fprintf(stderr, "Unrecognized %s format '%s'",
+                       line, generic_type_table[gt].type);
+               goto fail;
+       }
+       mode |= generic_type_table[gt].mode;
+       rc = cpio_mkgeneric(name, mode, uid, gid);
+ fail:
+       return rc;
+}
+
+static int cpio_mkdir_line(const char *line)
+{
+       return cpio_mkgeneric_line(line, GT_DIR);
+}
+
+static int cpio_mkpipe_line(const char *line)
+{
+       return cpio_mkgeneric_line(line, GT_PIPE);
+}
+
+static int cpio_mksock_line(const char *line)
+{
+       return cpio_mkgeneric_line(line, GT_SOCK);
+}
+
+static int cpio_mknod(const char *name, unsigned int mode,
+                      uid_t uid, gid_t gid, char dev_type,
+                      unsigned int maj, unsigned int min)
+{
+       char s[256];
+       time_t mtime = time(NULL);
+
+       if (dev_type == 'b')
+               mode |= S_IFBLK;
+       else
+               mode |= S_IFCHR;
+
+       sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+              "%08X%08X%08X%08X%08X%08X%08X",
+               "070701",               /* magic */
+               ino++,                  /* ino */
+               mode,                   /* mode */
+               (long) uid,             /* uid */
+               (long) gid,             /* gid */
+               1,                      /* nlink */
+               (long) mtime,           /* mtime */
+               0,                      /* filesize */
+               3,                      /* major */
+               1,                      /* minor */
+               maj,                    /* rmajor */
+               min,                    /* rminor */
+               (unsigned)strlen(name) + 1,/* namesize */
+               0);                     /* chksum */
+       push_hdr(s);
+       push_rest(name);
+       return 0;
+}
+
+static int cpio_mknod_line(const char *line)
+{
+       char name[PATH_MAX + 1];
+       unsigned int mode;
+       int uid;
+       int gid;
+       char dev_type;
+       unsigned int maj;
+       unsigned int min;
+       int rc = -1;
+
+       if (7 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d %c %u %u",
+                        name, &mode, &uid, &gid, &dev_type, &maj, &min)) {
+               fprintf(stderr, "Unrecognized nod format '%s'", line);
+               goto fail;
+       }
+       rc = cpio_mknod(name, mode, uid, gid, dev_type, maj, min);
+ fail:
+       return rc;
+}
+
+static int cpio_mkfile(const char *name, const char *location,
+                       unsigned int mode, uid_t uid, gid_t gid,
+                       unsigned int nlinks)
+{
+       char s[256];
+       char *filebuf = NULL;
+       struct stat buf;
+       long size;
+       int file = -1;
+       int retval;
+       int rc = -1;
+       int namesize;
+       int i;
+
+       mode |= S_IFREG;
+
+       retval = stat (location, &buf);
+       if (retval) {
+               fprintf (stderr, "File %s could not be located\n", location);
+               goto error;
+       }
+
+       file = open (location, O_RDONLY);
+       if (file < 0) {
+               fprintf (stderr, "File %s could not be opened for reading\n", location);
+               goto error;
+       }
+
+       filebuf = malloc(buf.st_size);
+       if (!filebuf) {
+               fprintf (stderr, "out of memory\n");
+               goto error;
+       }
+
+       retval = read (file, filebuf, buf.st_size);
+       if (retval < 0) {
+               fprintf (stderr, "Can not read %s file\n", location);
+               goto error;
+       }
+
+       size = 0;
+       for (i = 1; i <= nlinks; i++) {
+               /* data goes on last link */
+               if (i == nlinks) size = buf.st_size;
+
+               namesize = strlen(name) + 1;
+               sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+                      "%08lX%08X%08X%08X%08X%08X%08X",
+                       "070701",               /* magic */
+                       ino,                    /* ino */
+                       mode,                   /* mode */
+                       (long) uid,             /* uid */
+                       (long) gid,             /* gid */
+                       nlinks,                 /* nlink */
+                       (long) buf.st_mtime,    /* mtime */
+                       size,                   /* filesize */
+                       3,                      /* major */
+                       1,                      /* minor */
+                       0,                      /* rmajor */
+                       0,                      /* rminor */
+                       namesize,               /* namesize */
+                       0);                     /* chksum */
+               push_hdr(s);
+               push_string(name);
+               push_pad();
+
+               if (size) {
+                       fwrite(filebuf, size, 1, stdout);
+                       offset += size;
+                       push_pad();
+               }
+
+               name += namesize;
+       }
+       ino++;
+       rc = 0;
+       
+error:
+       if (filebuf) free(filebuf);
+       if (file >= 0) close(file);
+       return rc;
+}
+
+static int cpio_mkfile_line(const char *line)
+{
+       char name[PATH_MAX + 1];
+       char *dname = NULL; /* malloc'ed buffer for hard links */
+       char location[PATH_MAX + 1];
+       unsigned int mode;
+       int uid;
+       int gid;
+       int nlinks = 1;
+       int end = 0, dname_len = 0;
+       int rc = -1;
+
+       if (5 > sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX)
+                               "s %o %d %d %n",
+                               name, location, &mode, &uid, &gid, &end)) {
+               fprintf(stderr, "Unrecognized file format '%s'", line);
+               goto fail;
+       }
+       if (end && isgraph(line[end])) {
+               int len;
+               int nend;
+
+               dname = malloc(strlen(line));
+               if (!dname) {
+                       fprintf (stderr, "out of memory (%d)\n", dname_len);
+                       goto fail;
+               }
+
+               dname_len = strlen(name) + 1;
+               memcpy(dname, name, dname_len);
+
+               do {
+                       nend = 0;
+                       if (sscanf(line + end, "%" str(PATH_MAX) "s %n",
+                                       name, &nend) < 1)
+                               break;
+                       len = strlen(name) + 1;
+                       memcpy(dname + dname_len, name, len);
+                       dname_len += len;
+                       nlinks++;
+                       end += nend;
+               } while (isgraph(line[end]));
+       } else {
+               dname = name;
+       }
+       rc = cpio_mkfile(dname, location, mode, uid, gid, nlinks);
+ fail:
+       if (dname_len) free(dname);
+       return rc;
+}
+
+void usage(const char *prog)
+{
+       fprintf(stderr, "Usage:\n"
+               "\t%s <cpio_list>\n"
+               "\n"
+               "<cpio_list> is a file containing newline separated entries that\n"
+               "describe the files to be included in the initramfs archive:\n"
+               "\n"
+               "# a comment\n"
+               "file <name> <location> <mode> <uid> <gid> [<hard links>]\n"
+               "dir <name> <mode> <uid> <gid>\n"
+               "nod <name> <mode> <uid> <gid> <dev_type> <maj> <min>\n"
+               "slink <name> <target> <mode> <uid> <gid>\n"
+               "pipe <name> <mode> <uid> <gid>\n"
+               "sock <name> <mode> <uid> <gid>\n"
+               "\n"
+               "<name>       name of the file/dir/nod/etc in the archive\n"
+               "<location>   location of the file in the current filesystem\n"
+               "<target>     link target\n"
+               "<mode>       mode/permissions of the file\n"
+               "<uid>        user id (0=root)\n"
+               "<gid>        group id (0=root)\n"
+               "<dev_type>   device type (b=block, c=character)\n"
+               "<maj>        major number of nod\n"
+               "<min>        minor number of nod\n"
+               "<hard links> space separated list of other links to file\n"
+               "\n"
+               "example:\n"
+               "# A simple initramfs\n"
+               "dir /dev 0755 0 0\n"
+               "nod /dev/console 0600 0 0 c 5 1\n"
+               "dir /root 0700 0 0\n"
+               "dir /sbin 0755 0 0\n"
+               "file /sbin/kinit /usr/src/klibc/kinit/kinit 0755 0 0\n",
+               prog);
+}
+
+struct file_handler file_handler_table[] = {
+       {
+               .type    = "file",
+               .handler = cpio_mkfile_line,
+       }, {
+               .type    = "nod",
+               .handler = cpio_mknod_line,
+       }, {
+               .type    = "dir",
+               .handler = cpio_mkdir_line,
+       }, {
+               .type    = "slink",
+               .handler = cpio_mkslink_line,
+       }, {
+               .type    = "pipe",
+               .handler = cpio_mkpipe_line,
+       }, {
+               .type    = "sock",
+               .handler = cpio_mksock_line,
+       }, {
+               .type    = NULL,
+               .handler = NULL,
+       }
+};
+
+#define LINE_SIZE (2 * PATH_MAX + 50)
+
+int main (int argc, char *argv[])
+{
+       FILE *cpio_list;
+       char line[LINE_SIZE];
+       char *args, *type;
+       int ec = 0;
+       int line_nr = 0;
+
+       if (2 != argc) {
+               usage(argv[0]);
+               exit(1);
+       }
+
+       if (!strcmp(argv[1], "-"))
+               cpio_list = stdin;
+       else if (! (cpio_list = fopen(argv[1], "r"))) {
+               fprintf(stderr, "ERROR: unable to open '%s': %s\n\n",
+                       argv[1], strerror(errno));
+               usage(argv[0]);
+               exit(1);
+       }
+
+       while (fgets(line, LINE_SIZE, cpio_list)) {
+               int type_idx;
+               size_t slen = strlen(line);
+
+               line_nr++;
+
+               if ('#' == *line) {
+                       /* comment - skip to next line */
+                       continue;
+               }
+
+               if (! (type = strtok(line, " \t"))) {
+                       fprintf(stderr,
+                               "ERROR: incorrect format, could not locate file type line %d: '%s'\n",
+                               line_nr, line);
+                       ec = -1;
+                       break;
+               }
+
+               if ('\n' == *type) {
+                       /* a blank line */
+                       continue;
+               }
+
+               if (slen == strlen(type)) {
+                       /* must be an empty line */
+                       continue;
+               }
+
+               if (! (args = strtok(NULL, "\n"))) {
+                       fprintf(stderr,
+                               "ERROR: incorrect format, newline required line %d: '%s'\n",
+                               line_nr, line);
+                       ec = -1;
+               }
+
+               for (type_idx = 0; file_handler_table[type_idx].type; type_idx++) {
+                       int rc;
+                       if (! strcmp(line, file_handler_table[type_idx].type)) {
+                               if ((rc = file_handler_table[type_idx].handler(args))) {
+                                       ec = rc;
+                                       fprintf(stderr, " line %d\n", line_nr);
+                               }
+                               break;
+                       }
+               }
+
+               if (NULL == file_handler_table[type_idx].type) {
+                       fprintf(stderr, "unknown file type line %d: '%s'\n",
+                               line_nr, line);
+               }
+       }
+       if (ec == 0)
+               cpio_trailer();
+
+       exit(ec);
+}
diff --git a/work/initramfs.lst b/work/initramfs.lst
new file mode 100644 (file)
index 0000000..7db1494
--- /dev/null
@@ -0,0 +1,40 @@
+dir / 755 0 0
+
+nod /dev/console 664 0 0 c 5 1
+
+nod /dev/null 664 0 0 c 1 3
+
+nod /dev/tty 664 0 0 c 5 0
+
+nod /dev/tty0 644 0 0 c 4 0
+nod /dev/tty1 644 0 0 c 4 1
+nod /dev/tty2 644 0 0 c 4 2
+nod /dev/tty3 644 0 0 c 4 3
+nod /dev/tty4 644 0 0 c 4 4
+nod /dev/tty5 644 0 0 c 4 5
+nod /dev/tty6 644 0 0 c 4 6
+nod /dev/tty7 644 0 0 c 4 7
+
+nod /dev/rd/0 664 0 0 b 1 0
+
+nod /dev/ram0 664 0 0 b 1 0
+
+nod /dev/hda0 644 0 0 b 3 0
+nod /dev/hda1 644 0 0 b 3 1
+
+nod /dev/mmcblk0 664 0 0 b 179 0
+
+nod /dev/mmcblk0p0 644 0 0 b 179 0
+nod /dev/mmcblk0p1 644 0 0 b 179 1
+nod /dev/mmcblk0p2 644 0 0 b 179 2
+nod /dev/mmcblk0p3 644 0 0 b 179 3
+
+nod /dev/mtd0 644 0 0 c 90 0
+nod /dev/mtd1 644 0 0 c 90 1
+nod /dev/mtd2 644 0 0 c 90 2
+nod /dev/mtd3 644 0 0 c 90 3
+
+nod /dev/mtdblock0 644 0 0 c 31 0
+nod /dev/mtdblock1 644 0 0 c 31 1
+nod /dev/mtdblock2 644 0 0 c 31 2
+nod /dev/mtdblock3 644 0 0 c 31 3