diff --git a/.gitignore b/.gitignore index 722e8c3..0968438 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -*/dl -*/dl/* +download */output/* *~ br.log id_rsa_funkey id_rsa_funkey.pub +images diff --git a/FunKey/board/funkey/post-build.sh b/FunKey/board/funkey/post-build.sh index 2dd7f35..57f26e1 100755 --- a/FunKey/board/funkey/post-build.sh +++ b/FunKey/board/funkey/post-build.sh @@ -13,6 +13,3 @@ rm -f ${TARGET_DIR}/etc/init.d/S01syslogd ${TARGET_DIR}/etc/init.d/S02klogd # Change dropbear init sequence mv ${TARGET_DIR}/etc/init.d/S50dropbear ${TARGET_DIR}/etc/init.d/S42dropbear - -# Generate U-Boot environment -${HOST_DIR}/bin/mkenvimage -p 0x0 -s 0x20000 -o ${BINARIES_DIR}/u-boot-env.img ${TARGET_DIR}/etc/u-boot.env diff --git a/FunKey/configs/funkey_defconfig b/FunKey/configs/funkey_defconfig index 138ae7e..6cc4b0b 100644 --- a/FunKey/configs/funkey_defconfig +++ b/FunKey/configs/funkey_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a7=y -BR2_DL_DIR="$(BR2_EXTERNAL_FUNKEY_PATH)/dl" +BR2_DL_DIR="../download" BR2_CCACHE=y BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/patches" BR2_TOOLCHAIN_EXTERNAL=y @@ -14,8 +14,6 @@ BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/users_table.txt" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/rootfs-overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/FunKey-Project/linux" @@ -89,6 +87,5 @@ BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7acc940 --- /dev/null +++ b/Makefile @@ -0,0 +1,75 @@ +# Makefile for FunKey-OS +# +# Copyright (C) 2020 by Michel Stempin +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +BRMAKE = buildroot/utils/brmake -C buildroot +BR = make -C buildroot + +.PHONY: fun source image clean distclean + +.IGNORE: Makefile + +all: fun image + +fun: download Recovery/output/.config FunKey/output/.config + @echo "*** Making fun" + $(BRMAKE) BR2_EXTERNAL=../Recovery O=../Recovery/output + $(BRMAKE) BR2_EXTERNAL=../FunKey O=../FunKey/output + +FunKey/%: download FunKey/output/.config + @echo "*** Making $(notdir $@) in $(subst /,,$(dir $@))" + $(BR) BR2_EXTERNAL=../FunKey O=../FunKey/output $(notdir $@) + +Recovery/%: download Recovery/output/.config + @echo "*** Making $(notdir $@) in $(subst /,,$(dir $@))" + $(BR) BR2_EXTERNAL=../Recovery O=../Recovery/output $(notdir $@) + +%: download FunKey/output/.config + @echo "*** Making $* in FunKey" + $(BR) BR2_EXTERNAL=../FunKey O=../FunKey/output $* + +source: + @echo "*** Getting sources" + $(BR) BR2_EXTERNAL=../Recovery O=../Recovery/output source + $(BR) BR2_EXTERNAL=../FunKey O=../FunKey/output source + +image: + mkdir -p root tmp + ./Recovery/output/host/bin/genimage --inputpath . + rm -rf root tmp + +clean: + @echo "*** Clean everything" + $(BR) BR2_EXTERNAL=../Recovery O=../Recovery/output distclean + $(BR) BR2_EXTERNAL=../FunKey O=../FunKey/output distclean + +distclean: clean + @echo "*** Really clean everything" + rm -rf download images + +download: + @echo "*** Making download directory" + mkdir -rf download + +FunKey/output/.config: + @echo "*** Configure FunKey" + $(BR) BR2_EXTERNAL=../FunKey O=../FunKey/output funkey_defconfig + +Recovery/output/.config: + @echo "*** Configure Recovery" + $(BR) BR2_EXTERNAL=../Recovery O=../Recovery/output recovery_defconfig diff --git a/Recovery/Config.in b/Recovery/Config.in new file mode 100644 index 0000000..a30956c --- /dev/null +++ b/Recovery/Config.in @@ -0,0 +1 @@ +source "$BR2_EXTERNAL_RECOVERY_PATH/package/FunKey-GPIO-Mapping/Config.in" diff --git a/Recovery/board/funkey/busybox.config b/Recovery/board/funkey/busybox.config new file mode 100644 index 0000000..47bcb70 --- /dev/null +++ b/Recovery/board/funkey/busybox.config @@ -0,0 +1,1183 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.31.1 +# Tue Oct 20 22:46:50 2020 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_SHOW_SCRIPT=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y +CONFIG_FEATURE_SYSLOG=y +CONFIG_PLATFORM_LINUX=y + +# +# 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_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_STACK_OPTIMIZATION_386=y + +# +# 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" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FLOAT_DURATION=y +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=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_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +CONFIG_FEATURE_EDITING_WINCH=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL 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_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +CONFIG_AR=y +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_FEATURE_AR_CREATE=y +# CONFIG_UNCOMPRESS is not set +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y +# CONFIG_BZIP2 is not set +CONFIG_BZIP2_SMALL=0 +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +CONFIG_CPIO=y +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +CONFIG_GZIP=y +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +# CONFIG_FEATURE_TAR_AUTODETECT is not set +CONFIG_FEATURE_TAR_FROM=y +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y +# CONFIG_FEATURE_LZMA_FAST is not set + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +# CONFIG_FEATURE_CP_REFLINK is not set +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +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_EXPAND is not set +# CONFIG_UNEXPAND is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=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_WIDTH=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_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MKTEMP=y +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=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_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# 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_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_FSYNC is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +# CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +# CONFIG_BASE64 is not set +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +CONFIG_LOADFONT=y +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=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 is not set +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +CONFIG_NUKE=y +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +CONFIG_AWK=y +# CONFIG_FEATURE_AWK_LIBM is not set +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_ED is not set +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +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_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +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_EXECUTABLE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +# CONFIG_FEATURE_FIND_INUM is not set +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=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_QUIT=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 is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +CONFIG_FEATURE_WAIT_FOR_INIT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# 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_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDGROUP=y +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_CRYPTPW is not set +CONFIG_MKPASSWD=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +# CONFIG_CHATTR is not set +CONFIG_FSCK=y +# CONFIG_LSATTR is not set +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +CONFIG_INSMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +# CONFIG_MODINFO is not set +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_RMMOD=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES 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=y +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +# CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +CONFIG_CHRT=y +# CONFIG_DMESG is not set +# CONFIG_FEATURE_DMESG_PRETTY is not set +CONFIG_EJECT=y +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFORMAT=y +# CONFIG_FDISK is not set +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +# 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 is not set +# CONFIG_FLOCK is not set +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +# CONFIG_FSTRIM is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +# CONFIG_HEXDUMP is not set +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_XXD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +# CONFIG_IONICE is not set +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LAST=y +# CONFIG_FEATURE_LAST_FANCY is not set +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 is not set +CONFIG_FEATURE_MDEV_EXEC=y +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_FEATURE_MDEV_DAEMON=y +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +# CONFIG_MKE2FS 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_MKDOSFS is not set +# CONFIG_MKFS_VFAT is not set +# CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# 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=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +CONFIG_NOLOGIN=y +CONFIG_NOLOGIN_DEPENDENCIES=y +# CONFIG_NSENTER is not set +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +# CONFIG_RENICE is not set +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +# CONFIG_SETSID is not set +# CONFIG_SWAPON is not set +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +# CONFIG_SWAPOFF is not set +# CONFIG_FEATURE_SWAPONOFF_LABEL is not set +CONFIG_SWITCH_ROOT=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# 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 is not set +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set +# CONFIG_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_FEATURE_VOLUMEID_FAT is not set +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_FEATURE_VOLUMEID_MINIX is not set +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +CONFIG_BC=y +CONFIG_DC=y +CONFIG_FEATURE_DC_BIG=y +# CONFIG_FEATURE_DC_LIBM is not set +CONFIG_FEATURE_BC_INTERACTIVE=y +CONFIG_FEATURE_BC_LONG_OPTIONS=y +# 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_CONSPY is not set +CONFIG_CROND=y +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=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_FBSPLASH is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASHCP is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +# 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_HEXEDIT=y +CONFIG_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +CONFIG_I2CTRANSFER=y +# CONFIG_INOTIFYD is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y +# CONFIG_FEATURE_LESS_MARKS is not set +CONFIG_FEATURE_LESS_REGEXP=y +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +# CONFIG_FEATURE_LESS_RAW is not set +# CONFIG_FEATURE_LESS_ENV is not set +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MAN is not set +CONFIG_MICROCOM=y +CONFIG_MT=y +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +# CONFIG_RX is not set +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y +CONFIG_TIME=y +CONFIG_TS=y +# CONFIG_TTYSIZE is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +CONFIG_UBIRENAME=y +# CONFIG_VOLNAME is not set +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +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_FEATURE_TLS_SHA1 is not set +CONFIG_ARP=y +CONFIG_ARPING=y +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES 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 is not set +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +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 is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_NEIGH=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +# CONFIG_NC is not set +# CONFIG_NETCAT is not set +# CONFIG_NC_SERVER is not set +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +# CONFIG_FEATURE_NETSTAT_PRG is not set +CONFIG_NSLOOKUP=y +CONFIG_FEATURE_NSLOOKUP_BIG=y +CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +# CONFIG_FEATURE_NTP_AUTH 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_SSL_CLIENT is not set +CONFIG_TC=y +CONFIG_FEATURE_TC_INGRESS=y +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=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_FEATURE_TFTP_PROGRESS_BAR is not set +CONFIG_FEATURE_TFTP_HPA_COMPAT=y +# CONFIG_TFTPD is not set +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +CONFIG_TRACEROUTE=y +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set + +# +# Common options for DHCP applets +# +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" + +# +# 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_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 +CONFIG_FEATURE_MIME_CHARSET="" + +# +# Process Utilities +# +CONFIG_FREE=y +CONFIG_FUSER=y +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_LSOF=y +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_WATCH=y +# CONFIG_FEATURE_SHOW_THREADS is not set + +# +# Runit Utilities +# +# 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_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_SVC=y +CONFIG_SVOK=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON 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_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +# CONFIG_ASH_BASH_SOURCE_CURDIR is not set +CONFIG_ASH_BASH_NOT_FOUND_HOOK=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_LINENO_VAR is not set +# CONFIG_HUSH_BASH_SOURCE_CURDIR 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_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_COMMAND is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_MATH_BASE=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y +# CONFIG_FEATURE_SH_HISTFILESIZE is not set +CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y + +# +# System Logging Utilities +# +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/Recovery/board/funkey/device_table.txt b/Recovery/board/funkey/device_table.txt new file mode 100644 index 0000000..e69de29 diff --git a/Recovery/board/funkey/linux.config b/Recovery/board/funkey/linux.config new file mode 100644 index 0000000..d1e3519 --- /dev/null +++ b/Recovery/board/funkey/linux.config @@ -0,0 +1,173 @@ +CONFIG_LOCALVERSION="-funkey" +CONFIG_KERNEL_LZO=y +CONFIG_DEFAULT_HOSTNAME="funkey" +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=12 +CONFIG_CGROUPS=y +CONFIG_EMBEDDED=y +CONFIG_PERF_EVENTS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_MSDOS_PARTITION is not set +CONFIG_ARCH_SUNXI=y +# CONFIG_MACH_SUN4I is not set +# CONFIG_MACH_SUN5I is not set +# CONFIG_MACH_SUN6I is not set +# CONFIG_MACH_SUN7I is not set +# CONFIG_MACH_SUN9I is not set +CONFIG_SMP=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_ARM_PSCI=y +CONFIG_HIGHMEM=y +CONFIG_CPU_FREQ=y +CONFIG_CPUFREQ_DT=y +CONFIG_VFP=y +CONFIG_NEON=y +# CONFIG_COREDUMP is not set +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="/dev/mmcblk0p2" +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +CONFIG_DNS_RESOLVER=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_SUNXI_RSB is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=1 +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_NETDEVICES=y +# CONFIG_ETHERNET is not set +# CONFIG_WLAN is not set +CONFIG_INPUT_POLLDEV=y +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=y +CONFIG_LEGACY_PTY_COUNT=4 +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=8 +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MV64XXX=y +CONFIG_SPI=y +CONFIG_SPI_SUN6I=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_AXP209=y +CONFIG_POWER_SUPPLY=y +CONFIG_CHARGER_AXP20X=y +CONFIG_BATTERY_AXP20X=y +CONFIG_AXP20X_POWER=y +# CONFIG_HWMON is not set +CONFIG_THERMAL=y +CONFIG_CPU_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_SUNXI_WATCHDOG=y +CONFIG_MFD_AXP20X_I2C=y +CONFIG_MFD_SYSCON=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_AXP20X=y +# CONFIG_RC_CORE is not set +CONFIG_FB=y +CONFIG_FB_SIMPLE=y +CONFIG_FB_SSD1307=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_LOGO=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=y +CONFIG_SND_SUN4I_CODEC=y +CONFIG_SND_SUN8I_CODEC_ANALOG=y +# CONFIG_HID is not set +# CONFIG_USB_HID is not set +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_GADGET=y +CONFIG_USB_MUSB_SUNXI=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GADGET=y +CONFIG_USB_ZERO=m +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_USB_G_NCM=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_ACM_MS=m +CONFIG_MMC=y +# CONFIG_PWRSEQ_EMMC is not set +CONFIG_MMC_SUNXI=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_INTF_SYSFS is not set +# CONFIG_RTC_INTF_PROC is not set +CONFIG_DMADEVICES=y +CONFIG_DMA_SUN6I=y +CONFIG_SYNC_FILE=y +CONFIG_STAGING=y +CONFIG_FB_TFT=y +CONFIG_FB_TFT_ST7789V=y +CONFIG_FB_FLEX=y +# CONFIG_SUN8I_A23_CCU is not set +# CONFIG_SUN8I_A33_CCU is not set +# CONFIG_SUN8I_H3_CCU is not set +CONFIG_SUN8I_DE2_CCU=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_AXP20X_ADC=y +CONFIG_PWM_SUN4I=y +CONFIG_PHY_SUN4I_USB=y +CONFIG_NVMEM_SUNXI_SID=y +CONFIG_EXT4_FS=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set +CONFIG_FANOTIFY=y +CONFIG_AUTOFS4_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_CONFIGFS_FS=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_PRINTK_TIME=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_FTRACE is not set +# CONFIG_ARM_UNWIND is not set +CONFIG_KEYS=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_DEV_SUN4I_SS=y +CONFIG_XZ_DEC=y diff --git a/Recovery/board/funkey/post-build.sh b/Recovery/board/funkey/post-build.sh new file mode 100755 index 0000000..bdc9716 --- /dev/null +++ b/Recovery/board/funkey/post-build.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# Add local path to init scripts +sed -i '3iexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin' ${TARGET_DIR}/etc/init.d/rcK +sed -i '3iexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin' ${TARGET_DIR}/etc/init.d/rcS + +# Remove log daemon init scripts since they are loaded from inittab +rm -f ${TARGET_DIR}/etc/init.d/S01syslogd ${TARGET_DIR}/etc/init.d/S02klogd + +# Change dropbear init sequence +mv ${TARGET_DIR}/etc/init.d/S50dropbear ${TARGET_DIR}/etc/init.d/S42dropbear + +# Generate U-Boot environment +${HOST_DIR}/bin/mkenvimage -p 0x0 -s 0x20000 -o ${BINARIES_DIR}/u-boot-env.img ${TARGET_DIR}/etc/u-boot.env diff --git a/Recovery/board/funkey/readme.txt b/Recovery/board/funkey/readme.txt new file mode 100644 index 0000000..edef6a0 --- /dev/null +++ b/Recovery/board/funkey/readme.txt @@ -0,0 +1,76 @@ +# FunKey + +Intro +===== + +This directory contains a buildroot-based external configuration for +building the FunKey. + +How to get it +=============== + +Clone the FunKey OS repository and the required submodules from +BitBucket: + + $ git clone --recurse-submodules git@bitbucket.org:keymu2/funkey-os.git + +Then enter into the created directory: + + $ cd + +How to build it +=============== + +Configure Buildroot +------------------- + +There is only one Funkey defconfig files in Buildroot: + + $ ./fun funkey_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot +will download the packages' sources. + +You may now build your FunKey with: + + $ ./have fun + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + FunKey/output/images/ + +-- boot.scr + +-- boot.vfat + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- sdcard.img + +-- sun8i-v3s-funkey.dtb + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- uImage + +How to write the SD card +======================== + +Once the build process is finished you will have an image called +"sdcard.img" in the FunKey/output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=/FunKey/output/images/sdcard.img of=/dev/sdX + +Alternatively, you can use the Etcher graphical tool to burn the image +to the SD card safely and on any platform: + +https://etcher.io/ + +Once the SD card is burned, insert it into your FunKey board, and +power it up. Your new system should come up now and start a console on +the UART0 serial port. diff --git a/Recovery/board/funkey/rootfs-overlay/etc/current_battery_percentage b/Recovery/board/funkey/rootfs-overlay/etc/current_battery_percentage new file mode 100644 index 0000000..29d6383 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/current_battery_percentage @@ -0,0 +1 @@ +100 diff --git a/Recovery/board/funkey/rootfs-overlay/etc/current_brightness b/Recovery/board/funkey/rootfs-overlay/etc/current_brightness new file mode 100644 index 0000000..29d6383 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/current_brightness @@ -0,0 +1 @@ +100 diff --git a/Recovery/board/funkey/rootfs-overlay/etc/default/dropbear b/Recovery/board/funkey/rootfs-overlay/etc/default/dropbear new file mode 100644 index 0000000..e7fe5c1 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/default/dropbear @@ -0,0 +1,3 @@ +#!/bin/sh + +#DROPBEAR_ARGS="-b /etc/issue.net" diff --git a/Recovery/board/funkey/rootfs-overlay/etc/fstab b/Recovery/board/funkey/rootfs-overlay/etc/fstab new file mode 100644 index 0000000..9f07740 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/fstab @@ -0,0 +1,10 @@ +# +/dev/root / ext2 rw,noauto 0 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 +tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 +sysfs /sys sysfs defaults 0 0 +configfs /sys/kernel/config configfs rw,relatime 0 0 +/dev/mmcblk0p3 /mnt vfat rw,relatime,fmask=0022,dmask=0022,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0 diff --git a/Recovery/board/funkey/rootfs-overlay/etc/fw_env.config b/Recovery/board/funkey/rootfs-overlay/etc/fw_env.config new file mode 100644 index 0000000..f28a6c3 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/fw_env.config @@ -0,0 +1,40 @@ +# Configuration file for fw_(printenv/setenv) utility. +# Up to two entries are valid, in this case the redundant +# environment sector is assumed present. +# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash. +# Futhermore, if the Flash sector size is omitted, this value is assumed to +# be the same as the Environment size, which is valid for NOR and SPI-dataflash +# Device offset must be prefixed with 0x to be parsed as a hexadecimal value. + +# NOR example +# MTD device name Device offset Env. size Flash sector size Number of sectors +#/dev/mtd1 0x0000 0x4000 0x4000 +#/dev/mtd2 0x0000 0x4000 0x4000 + +# MTD SPI-dataflash example +# MTD device name Device offset Env. size Flash sector size Number of sectors +#/dev/mtd5 0x4200 0x4200 +#/dev/mtd6 0x4200 0x4200 + +# NAND example +#/dev/mtd0 0x4000 0x4000 0x20000 2 + +# On a block device a negative offset is treated as a backwards offset from the +# end of the device/partition, rather than a forwards offset from the start. + +# Block device example +#/dev/mmcblk0 0xc0000 0x20000 +#/dev/mmcblk0 -0x20000 0x20000 +/dev/mmcblk0 0x88000 0x20000 + +# VFAT example +#/boot/uboot.env 0x0000 0x4000 + +# UBI volume +#/dev/ubi0_0 0x0 0x1f000 0x1f000 +#/dev/ubi0_1 0x0 0x1f000 0x1f000 + +# UBI volume by name +#/dev/ubi0:env 0x0 0x1f000 0x1f000 +#/dev/ubi0:env-redund 0x0 0x1f000 0x1f000 + diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S03rclocal b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S03rclocal new file mode 100755 index 0000000..c30451f --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S03rclocal @@ -0,0 +1,21 @@ +#!/bin/sh + +THIS=$(basename $0) + +case "$1" in + start) + if /etc/rc.local; then + echo "Starting rc.local: OK" + exit 0 + else + echo "Starting rc.local: ERROR" + exit 1 + fi + ;; + stop) + ;; + *) + echo "Usage: $0 {start|stop}" >&2 + exit 2 + ;; +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S04modules b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S04modules new file mode 100755 index 0000000..3bca198 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S04modules @@ -0,0 +1,47 @@ +#!/bin/sh +# Assure that the kernel has module support. +[ -e /proc/ksyms -o -e /proc/modules ] || exit 0 + +THIS=$(basename $0) + +case "${1}" in + start) + + # Exit if there's no modules file or there are no + # valid entries + if [ -r /etc/sysconfig/modules ]; then + egrep -qv '^($|#)' /etc/sysconfig/modules + if [ $? -ne 0 ]; then + exit 0 + fi + fi + + # Only try to load modules if the user has actually given us + # some modules to load. + while read MODULE ARGS; do + + # Ignore comments and blank lines. + case "$MODULE" in + ""|"#"*) continue ;; + esac + + # Attempt to load the module, making + # sure to pass any arguments provided. + modprobe ${MODULE} ${ARGS} >/dev/null + + # Print the module name if successful, + # otherwise take note. + if [ $? -eq 0 ]; then + echo "Loading module ${MODULE}: OK" + else + echo "Loading module ${MODULE}: ERROR" + fi + done < /etc/sysconfig/modules + ;; + stop) + ;; + *) + echo "Usage: ${0} {start|stop}" + exit 1 + ;; +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S10share b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S10share new file mode 100755 index 0000000..6a73137 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S10share @@ -0,0 +1,28 @@ +#!/bin/sh + +THIS=$(basename $0) + +case "$1" in + start) + if share init; then + echo "Starting share: OK" + exit 0 + else + echo "Starting share: ERROR" + exit 1 + fi + ;; + stop) + if share stop >/dev/null 2>&1; then + echo "Stopping share: OK" + exit 0 + else + echo "Stopping share: ERROR" + exit 2 + fi + ;; + *) + echo "Usage: $0 {start|stop}" >&2 + exit 3 + ;; +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S12low-bat-check b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S12low-bat-check new file mode 100755 index 0000000..03a4bf5 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S12low-bat-check @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Start/stop low_bat_check +# + +DAEMON=/usr/local/sbin/low_bat_check +PIDFILE=/var/run/low_bat_check.pid + +case "$1" in + start) + echo -n "Starting low_bat_check: " + start-stop-daemon -S -x ${DAEMON} -p ${PIDFILE} -m -b -- > /dev/null 2>&1 + if [ ${?} -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + stop) + echo -n "Stopping low_bat_check: " + start-stop-daemon -K -x ${DAEMON} -p ${PIDFILE} -o > /dev/null 2>&1 + if [ ${?} -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + restart) + ${0} stop + sleep 1 # Prevent race condition: ensure low_bat_check stops before start. + ${0} start + ;; + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S13system-stats b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S13system-stats new file mode 100755 index 0000000..16edd8b --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S13system-stats @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Start/stop system_stats +# + +DAEMON=/usr/local/sbin/system_stats +PIDFILE=/var/run/system_stats.pid + +case "$1" in + start) + echo -n "Starting system_stats: " + start-stop-daemon -S -x ${DAEMON} -p ${PIDFILE} -m -b -- > /dev/null 2>&1 + if [ ${?} -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + stop) + echo -n "Stopping system_stats: " + start-stop-daemon -K -x ${DAEMON} -p ${PIDFILE} -o > /dev/null 2>&1 + if [ ${?} -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + restart) + ${0} stop + sleep 1 # Prevent race condition: ensure system_stats stops before start. + ${0} start + ;; + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S20urandom b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S20urandom new file mode 100755 index 0000000..126c9d4 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S20urandom @@ -0,0 +1,51 @@ +#! /bin/sh +# +# urandom This script saves the random seed between reboots. +# It is called from the boot, halt and reboot scripts. +# +# Version: @(#)urandom 1.33 22-Jun-1998 miquels@cistron.nl +# + +[ -c /dev/urandom ] || exit 0 +#. /etc/default/rcS + +case "$1" in + start|"") + # check for read only file system + if ! touch /etc/random-seed 2>/dev/null + then +# echo "read-only file system detected...done" + exit + fi + if [ "$VERBOSE" != no ] + then + echo -n "Starting random number generator: " + fi + # Load and then save 512 bytes, + # which is the size of the entropy pool + cat /etc/random-seed >/dev/urandom + rm -f /etc/random-seed + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "ERROR" + umask 022 + [ "$VERBOSE" != no ] && echo "OK" + ;; + stop) + if ! touch /etc/random-seed 2>/dev/null + then + exit + fi + # Carry a random seed from shut-down to start-up; + # see documentation in linux/drivers/char/random.c + [ "$VERBOSE" != no ] && echo -n "Stopping random number generator: " + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "ERROR" + [ "$VERBOSE" != no ] && echo "OK" + ;; + *) + echo "Usage: urandom {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S40network b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S40network new file mode 100755 index 0000000..f7e45a4 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S40network @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Start the network.... +# + +# Debian ifupdown needs the /run/network lock directory +mkdir -p /run/network +[ -f /mnt/usbnet ] || exit 0 +case "$1" in + start) + printf "Starting network: " + /sbin/ifup -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping network: " + /sbin/ifdown -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S41dhcpcd b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S41dhcpcd new file mode 100755 index 0000000..05e01b3 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S41dhcpcd @@ -0,0 +1,48 @@ +#!/bin/sh +# +# Start/stop dhcpcd +# + +DAEMON=/sbin/dhcpcd +CONFIG=/etc/dhcpcd.conf +PIDFILE=/var/run/dhcpcd.pid +[ -f /mnt/usbnet ] || exit 0 +[ -f $CONFIG ] || exit 0 + +case "$1" in + start) + echo -n "Starting dhcpcd: " + start-stop-daemon -S -x "$DAEMON" -p "$PIDFILE" -- -f "$CONFIG" > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + stop) + echo -n "Stopping dhcpcd: " + start-stop-daemon -K -x "$DAEMON" -p "$PIDFILE" -o > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + reload|force-reload) + echo -n "Reloading dhcpcd configuration: " + "$DAEMON" -s reload >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + restart) + "$0" stop + sleep 1 # Prevent race condition: ensure dhcpcd stops before start. + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac diff --git a/Recovery/board/funkey/rootfs-overlay/etc/init.d/S50dropbear b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S50dropbear new file mode 100755 index 0000000..7314588 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/init.d/S50dropbear @@ -0,0 +1,62 @@ +#!/bin/sh +# +# Starts dropbear sshd. +# + +[ -f /mnt/usbnet ] || exit 0 +# Allow a few customizations from a config file +test -r /etc/default/dropbear && . /etc/default/dropbear + +start() { + DROPBEAR_ARGS="$DROPBEAR_ARGS -R" + + # If /etc/dropbear is a symlink to /var/run/dropbear, and + # - the filesystem is RO (i.e. we can not rm the symlink), + # create the directory pointed to by the symlink. + # - the filesystem is RW (i.e. we can rm the symlink), + # replace the symlink with an actual directory + if [ -L /etc/dropbear \ + -a "$(readlink /etc/dropbear)" = "/var/run/dropbear" ] + then + if rm -f /etc/dropbear >/dev/null 2>&1; then + mkdir -p /etc/dropbear + else + echo "No persistent location to store SSH host keys. New keys will be" + echo "generated at each boot. Are you sure this is what you want to do?" + mkdir -p "$(readlink /etc/dropbear)" + fi + fi + + printf "Starting dropbear sshd: " + umask 077 + + start-stop-daemon -S -q -p /var/run/dropbear.pid \ + --exec /usr/sbin/dropbear -- $DROPBEAR_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping dropbear sshd: " + start-stop-daemon -K -q -p /var/run/dropbear.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/Recovery/board/funkey/rootfs-overlay/etc/inittab b/Recovery/board/funkey/rootfs-overlay/etc/inittab new file mode 100644 index 0000000..798b4b3 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/inittab @@ -0,0 +1,41 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +::sysinit:/bin/cat /etc/issue +::sysinit:/bin/mount -t proc proc /proc +::sysinit:/bin/mount -o remount,rw / +::sysinit:/bin/mkdir -p /dev/pts /dev/shm +::sysinit:/bin/mount -a +null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd +null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin +null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout +null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr +::sysinit:/bin/hostname -F /etc/hostname +::sysinit:/sbin/syslogd +::sysinit:/sbin/klogd + +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Start an automatic root login on the console +::respawn:-/bin/login -f root + +# Stuff to do for the 3-finger salute +#::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/bin/umount -a -r diff --git a/Recovery/board/funkey/rootfs-overlay/etc/issue b/Recovery/board/funkey/rootfs-overlay/etc/issue new file mode 100644 index 0000000..1d4c8e9 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/issue @@ -0,0 +1,10 @@ + + _______ __ __ +| ___|.--.--.-----.| |/ |.-----.--.--. +| ___|| | | || < | -__| | | +|___| |_____|__|__||__|\__||_____|___ | + FUN ON A KEYCHAIN |_____| + ----------------------------------------------------- + Version 0.6 (Recovery) + ----------------------------------------------------- + diff --git a/Recovery/board/funkey/rootfs-overlay/etc/os-release b/Recovery/board/funkey/rootfs-overlay/etc/os-release new file mode 100644 index 0000000..2212a5e --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/os-release @@ -0,0 +1,12 @@ +NAME="FunKey-OS Recovery" +VERSION="0.6 (Khaki Kitten)" +ID=funkey-recovery +ID_LIKE=buildroot +PRETTY_NAME="FunKey-OS Recovery 0.6" +VERSION_ID="0.6" +HOME_URL="https://www.funkey-project.com/" +SUPPORT_URL="https://www.funkey-project.com/" +BUG_REPORT_URL="https://www.funkey-project.com/" +PRIVACY_POLICY_URL="https://www.funkey-project.com" +VERSION_CODENAME=khaki +UBUNTU_CODENAME=khaki diff --git a/Recovery/board/funkey/rootfs-overlay/etc/profile b/Recovery/board/funkey/rootfs-overlay/etc/profile new file mode 100755 index 0000000..831311f --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/profile @@ -0,0 +1,21 @@ +export PATH="/usr/local/games:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +if [ "$PS1" ]; then + if [ "`id -u`" -eq 0 ]; then + export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\# ' + else + export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' + fi +fi + +export PAGER='/bin/more' +export EDITOR='/usr/bin/nano' +export SDL_NOMOUSE=1 + +# Source configuration files from /etc/profile.d +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done +unset i diff --git a/Recovery/board/funkey/rootfs-overlay/etc/rc.local b/Recovery/board/funkey/rootfs-overlay/etc/rc.local new file mode 100755 index 0000000..65634df --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/rc.local @@ -0,0 +1,14 @@ +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/etc/sysconfig/modules b/Recovery/board/funkey/rootfs-overlay/etc/sysconfig/modules new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/sysconfig/modules @@ -0,0 +1 @@ + diff --git a/Recovery/board/funkey/rootfs-overlay/etc/u-boot.env b/Recovery/board/funkey/rootfs-overlay/etc/u-boot.env new file mode 100644 index 0000000..82fb056 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/etc/u-boot.env @@ -0,0 +1,15 @@ +args_mmc=setenv bootargs console=ttyS0,115200 panic=5 rootwait fbcon=map:10 fbcon=font:VGA8x8 vt.global_cursor_default=0 root=/dev/mmcblk0p${bootpart} rootfstype=ext4 rootflags=commit=120,data=writeback,barrier=0,journal_async_commit rw quiet +baudrate=115200 +bootcmd=run getbootpart; run args_mmc; run loadfdt; run loadimage; bootz ${loadaddr} - ${fdtaddr} +bootdelay=0 +console=ttyS0,115200 +fdt_high=0xffffffff +fdtaddr=0x41800000 +getbootpart=part list mmc 0 -bootable bootpart +loadaddr=0x41000000 +loadfdt=load mmc 0:${bootpart} ${fdtaddr} /boot/sun8i-v3s-funkey.dtb +loadimage=load mmc 0:${bootpart} ${loadaddr} /boot/zImage +stderr=serial@01c28000 +stdin=serial@01c28000 +stdout=serial@01c28000 +verify=n diff --git a/Recovery/board/funkey/rootfs-overlay/lib/lsb/init-functions b/Recovery/board/funkey/rootfs-overlay/lib/lsb/init-functions new file mode 100755 index 0000000..a326eb2 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/lib/lsb/init-functions @@ -0,0 +1,34 @@ +#!/bin/sh + +#set -xv + +if [ x"$THIS" != x ]; then + THIS="${THIS}: " +fi +log_action_msg () { + echo "${THIS}${@}." | tee /dev/kmsg +} + +log_action_begin_msg () { + echo -n "${THIS}${@}: " | tee /dev/kmsg +} + +log_action_cont_msg () { + echo "${THIS}${@}..." | tee /dev/kmsg +} + +log_action_end_msg () { + local end + if [ -z "${2:-}" ]; then + end="" + else + end=" ($2)" + fi + + if [ $1 -eq 0 ]; then + echo "${THIS}OK${end}" | tee /dev/kmsg + else + echo "${THIS}ERROR${end}" | tee /dev/kmsg + fi +} + diff --git a/Recovery/board/funkey/rootfs-overlay/root/.profile b/Recovery/board/funkey/rootfs-overlay/root/.profile new file mode 100755 index 0000000..5e99a35 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/root/.profile @@ -0,0 +1,41 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. + +# Note: PS1 and umask are already set in /etc/profile. You should not +# need this unless you want different defaults for root. +# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ ' +# umask 022 + +# You may uncomment the following lines if you want `ls' to be colorized: +export TERM=xterm +export LS_OPTIONS='--color=auto' +#eval "`dircolors`" +alias ls='ls $LS_OPTIONS' +alias ll='ls $LS_OPTIONS -l' +alias l='ls $LS_OPTIONS -lA' +# +# Some more alias to avoid making mistakes: +# alias rm='rm -i' +# alias cp='cp -i' +# alias mv='mv -i' + +# Resize the console to the terminal dimensions +resize() { + if [[ -t 0 && $# -eq 0 ]]; then + local IFS='[;' escape geometry x y + echo -ne '\e7\e[r\e[999;999H\e[6n\e8' + read -sd R escape geometry + x=${geometry##*;} y=${geometry%%;*} + if [[ ${COLUMNS} -eq ${x} && ${LINES} -eq ${y} ]]; then + echo "${TERM} ${x}x${y}" + else + echo "${COLUMNS}x${LINES} -> ${x}x${y}" + stty cols ${x} rows ${y} + fi + else + print 'Usage: resize' + fi +} + +# Reset saved brightness +echo "Reset saved brightness" +brightness_set $(brightness_get) >/dev/null 2>&1 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/lib/utils b/Recovery/board/funkey/rootfs-overlay/usr/local/lib/utils new file mode 100755 index 0000000..7a68128 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/lib/utils @@ -0,0 +1,20 @@ +#!/bin/sh + +# Define log functions if they do not exist yet +type -t info >/dev/null 2>&1 +if [ $? -ne 0 ]; then + info () { + echo "$SELF:" "$@" | tee /dev/kmsg + } + + warn () { + echo "$SELF:" "$@" >&2 | tee /dev/kmsg + } + + die () { + local return_code=$1 + shift + warn "$@" + exit $return_code + } +fi diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_get b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_get new file mode 100755 index 0000000..5f0a544 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_get @@ -0,0 +1,24 @@ +#!/bin/sh + +BRIGHTNESS_FILE=/etc/current_brightness +BRIGHTNESS_DEFAULT_VALUE=100 + +# Check args +if [ ${#} -ne 0 ]; then + echo "Usage: $(basename ${0})" + exit 1 +fi + +# Sanity check: File does not exist +if [ ! -f ${BRIGHTNESS_FILE} ]; then + echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE} +fi + +# Sanity check: Check if integer +brightness=$(cat ${BRIGHTNESS_FILE}) +if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then + echo ${BRIGHTNESS_DEFAULT_VALUE} > ${BRIGHTNESS_FILE} + brightness=${BRIGHTNESS_DEFAULT_VALUE} +fi +echo ${brightness} +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_get_sysfs b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_get_sysfs new file mode 100755 index 0000000..a682958 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_get_sysfs @@ -0,0 +1,13 @@ +#!/bin/sh + +SYSTEM_BRIGHTNESS=/sys/class/backlight/backlight/brightness + +# Check args +if [ ${#} -ne 0 ]; then + echo "Usage: $(basename ${0})" + exit 1 +fi + +let brightness=$(cat ${SYSTEM_BRIGHTNESS})*10-10 +echo ${brightness} +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_set b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_set new file mode 100755 index 0000000..d0f15a0 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_set @@ -0,0 +1,28 @@ +#!/bin/sh + +BRIGHTNESS_FILE=/etc/current_brightness +SYSTEM_BRIGHTNESS=/sys/class/backlight/backlight/brightness + +# Check args +if [ ${#} -ne 1 ]; then + echo "Usage: $(basename ${0}) new_brightness_percentage" + exit 1 +fi + +# Check value's range +if [ ${1} -gt 100 ]; then + echo "Usage: Wrong brightness percentage (${1}), must be between 0 and 100" + exit 1 +fi +brightness_percentage=${1} + +# Set new brightness percentage +let value=${1}+10 +let value/=10 +echo ${value} > ${SYSTEM_BRIGHTNESS} + +# Set new brightness value in brightness file +if [ ${?} -eq 0 ]; then + echo ${brightness_percentage} > ${BRIGHTNESS_FILE} +fi +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_set_sysfs b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_set_sysfs new file mode 100755 index 0000000..424a3d8 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/brightness_set_sysfs @@ -0,0 +1,21 @@ +#!/bin/sh + +SYSTEM_BRIGHTNESS=/sys/class/backlight/backlight/brightness + +# Check args +if [ ${#} -ne 1 ]; then + echo "Usage: $(basename ${0}) new_brightness_percentage" + exit 1 +fi + +# Check value's range +if [ ${1} -gt 100 ]; then + echo "Usage: Wrong brightness percentage (${1}), must be between 0 and 100" + exit 1 +fi + +# Set new brightness percentage +let value=${1}+10 +let value/=10 +echo ${value} > ${SYSTEM_BRIGHTNESS} +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/display_notif_system_stats b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/display_notif_system_stats new file mode 100755 index 0000000..5c4638d --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/display_notif_system_stats @@ -0,0 +1,5 @@ +#!/bin/sh + +notif_set 0 "Getting system stats..." +killall -s USR1 system_stats +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/get_sid b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/get_sid new file mode 100755 index 0000000..b552a1c --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/get_sid @@ -0,0 +1,2 @@ +#!/bin/sh +echo $(for i in 0 4 8 c; do devmem 0x01c2380$i 32; done) | sed 's/ \?0x//g' diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/is_usb_data_connected b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/is_usb_data_connected new file mode 100755 index 0000000..c447693 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/is_usb_data_connected @@ -0,0 +1,20 @@ +#!/bin/sh + +# Uncomment the following line to get debug info +#set -x + +# Get USB state +usb_present=$(cat /sys/class/power_supply/axp20x-usb/present) + +# Get udc state +udc_state=$(cat /sys/class/udc/musb-hdrc.1.auto/state) + +if [[ x"$udc_state" == "xconfigured" -a "$usb_present" == "1" ]]; then + + # Connected succesfully to a host + echo "yes" + exit 0 +else + echo "no" + exit 1 +fi diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check new file mode 100755 index 0000000..142646c --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check @@ -0,0 +1,124 @@ +#!/bin/sh + +# General constants declaration +THRESHOLD_PERCENT_LOW_BAT=5 +THRESHOLD_PERCENT_EXTREMELY_LOW_BAT=2 +MAX_EXTREMELY_LOW_BAT_BEFORE_SHUTDOWN=5 +SLEEP_SECS=2 +RESCALE_MAX_PERCENTAGE=120 + +# Blink Low bat constants declaration +BLINK_ICON=0 +LOW_BAT_SECS_DISPLAYED=5 +LOW_BAT_SECS_NOT_DISPLAYED=5 + +# Files and commands declaration +USB_PRESENT_FILE=/sys/class/power_supply/axp20x-usb/present +#USB_PRESENT_FILE=/sys/class/power_supply/axp20x-ac/present # Cheat for no USB present simulation when debugging +BAT_PRESENT_FILE=/sys/class/power_supply/axp20x-battery/present +BAT_PERCENT_FILE=/sys/class/power_supply/axp20x-battery/capacity +BAT_PERCENT_RESCALED_FILE=/etc/current_battery_percentage +LOW_BAT_ICON=/sys/class/graphics/fb0/low_battery +SCHEDULE_SHUTDOWN_CMD=sched_shutdown +SIGNAL_URS1_TO_EMULATORS_CMD=signal_usr1_to_emulators + +# Variables declaration +low_bat_status=0 +low_bat_displayed=0 +cur_secs_disp=0 +cur_nb_extremely_low_bat_before_shutdown=0 + +# Default: Hide Low Bat Icon +echo 0 > ${LOW_BAT_ICON} + +# Check low bat # +while true; do + #echo "Bat present: $(cat ${BAT_PRESENT_FILE})" + #echo "USB present: $(cat ${USB_PRESENT_FILE})" + #echo "Bat percentage: $(cat ${BAT_PERCENT_FILE})" + + # Get current bat percentage here once + cur_bat_percent=$(cat ${BAT_PERCENT_FILE}) + #echo "cur_bat_percent = ${cur_bat_percent}" + + # Rescale bat percentage between 0 and RESCALE_MAX_PERCENTAGE + bat_percent_rescaled=$(printf "%.f" $(echo $cur_bat_percent $RESCALE_MAX_PERCENTAGE | awk '{print $1*$2/100}')) + #echo "bat_percent_rescaled = ${bat_percent_rescaled}" + + # Re-maximize to 100% + bat_percent_rescaled_maxed=$(( bat_percent_rescaled < 100 ? bat_percent_rescaled : 100 )) + #echo "bat_percent_rescaled_maxed = ${bat_percent_rescaled_maxed}" + + # Save in file + echo ${bat_percent_rescaled_maxed} > ${BAT_PERCENT_RESCALED_FILE} + + # Low bat status detection + if [ "$(cat ${USB_PRESENT_FILE})" -eq "0" ]; then + + # Value of 0 means wrong i2c reading + if [ "${cur_bat_percent}" -ne "0" ]; then + + # Check if we must change state + if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_LOW_BAT} -a ${low_bat_status} -eq 0 ]; then + + # Set Low Bat status + low_bat_status=1 + low_bat_displayed=1 + cur_secs_disp=0 + echo 1 > ${LOW_BAT_ICON} + + elif [ ${cur_bat_percent} -gt ${THRESHOLD_PERCENT_LOW_BAT} -a ${low_bat_status} -eq 1 ]; then + + # Reset status + low_bat_status=0 + cur_nb_extremely_low_bat_before_shutdown=0 + echo 0 > ${LOW_BAT_ICON} + fi + fi + else + if [ ${low_bat_status} -eq 1 ]; then + + # Reset status + low_bat_status=0 + cur_nb_extremely_low_bat_before_shutdown=0 + echo 0 > ${LOW_BAT_ICON} + fi + fi + + # Low bat processing + if [ ${low_bat_status} -eq 1 ]; then + + # Check extremely low bat for clean shutdown + if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_EXTREMELY_LOW_BAT} ]; then + let cur_nb_extremely_low_bat_before_shutdown++ + echo "cur_nb_extremely_low_bat_before_shutdown = ${cur_nb_extremely_low_bat_before_shutdown}" + + # Clean shutdown + if [ ${cur_nb_extremely_low_bat_before_shutdown} -ge ${MAX_EXTREMELY_LOW_BAT_BEFORE_SHUTDOWN} ]; then + echo "Battery extremely low, shutting down now..." + sched_shutdown 1 & signal_usr1_to_emulators + exit 0 + fi + fi + + # Blinking process + if [ ${BLINK_ICON} -eq 1 ]; then + if [ ${low_bat_displayed} -eq 1 -a ${cur_secs_disp} -ge ${LOW_BAT_SECS_DISPLAYED} ]; then + low_bat_displayed=0 + cur_secs_disp=0 + echo 0 > ${LOW_BAT_ICON} + elif [ ${low_bat_displayed} -eq 0 -a ${cur_secs_disp} -ge ${LOW_BAT_SECS_NOT_DISPLAYED} ]; then + low_bat_displayed=1 + cur_secs_disp=0 + echo 1 > ${LOW_BAT_ICON} + fi + fi + fi + + # Sleep before next check + sleep ${SLEEP_SECS} + + # Increase vars + let cur_secs_disp+=${SLEEP_SECS} +done +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_clear b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_clear new file mode 100755 index 0000000..44f6c1b --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_clear @@ -0,0 +1,8 @@ +#!/bin/sh +# Clear all current notifications + +NOTIFICATION_DISPLAY=/sys/class/graphics/fb0/notification + +printf "clear" > ${NOTIFICATION_DISPLAY} + +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_disp b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_disp new file mode 100755 index 0000000..d40bd9f --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_disp @@ -0,0 +1,38 @@ +#!/bin/sh +# Display notification for a certain amount of time +# Special char: ^ to add a new line +# Set seconds to 0 to display indefinitely (until the next notif) + +NOTIFICATION_DISPLAY=/sys/class/graphics/fb0/notification + +display_usage() { + echo -e "Usage:\n$(basename ${0}) nb_seconds_display message_to_display\n" +} + +# If less than two arguments supplied, display usage +if [ ${#} -le 1 ]; then + echo "Display notification for a certain amount of time" + display_usage + exit 1 +fi + +# Get number of seconds to display notif +nb_secs=${1} +if ! [ ! "${nb_secs}" -ne "${nb_secs}" ] 2> /dev/null; then + echo "error: ${nb_secs} is not a number" >&2 + exit 1 +fi + +# Print notif +printf "${*:2}" > ${NOTIFICATION_DISPLAY} + +# Clear notif if NB_SECS is not 0, otherwise never clear +if [ ${nb_secs} -ne 0 ]; then + + # Wait time before clearing notif + sleep ${nb_secs} + + # Clear notif + printf "clear" > ${NOTIFICATION_DISPLAY} +fi +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_set b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_set new file mode 100755 index 0000000..bc04835 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/notif_set @@ -0,0 +1,36 @@ +#!/bin/sh +# Erase previous notif and display new one in background process for a certain amount of seconds +# Special char: ^ to add a new line +# Set seconds to 0 to display indefinitely (until the next notif_set) + +NOTIFICATION_DISPLAY=/sys/class/graphics/fb0/notification + +display_usage() { + echo -e "Usage:\n$(basename ${0}) nb_seconds_display message_to_display\n" +} + +# If less than two arguments supplied, display usage +if [ ${#} -le 1 ]; then + echo "Erase previous notif and display new one in background process for a certain amount of time" + echo "Special char: ^ to add a new line" + echo "Set seconds to 0 to display indefinitely (until the next $(basename ${0}))" + display_usage + exit 1 +fi + +# Get number of seconds to display notif +nb_secs=${1} +if ! [ ! "${nb_secs}" -ne "${nb_secs}" ]; then + echo "error: ${nb_secs} is not a number" >&2 + exit 1 +fi + +# Kill previous notif_disp process +pkill notif_disp 2> /dev/null + +## Clear previous notif +#printf "clear" > ${NOTIFICATION_DISPLAY} + +# Print new notif +notif_disp "$@" & +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/share b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/share new file mode 100755 index 0000000..e2915ec --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/share @@ -0,0 +1,137 @@ +#!/bin/sh + +# Uncomment the following line to get debug info +#set -x + +SELF=${SELF:-$(basename $0)} +LOCK_FILE=/var/lock/share.lock + +source /usr/local/lib/utils +source usb_gadget + +# The USB network interface file +USB_IF=/etc/network/interfaces.d/usb0 + +# The USB mass storage backing store file or partition +BACKING_STORE_FILE=/sys/kernel/config/usb_gadget/FunKey/functions/mass_storage.mmcblk0p3/lun.0/file + +# Unmount a local share +unmount_share () { + + umount /mnt || die 1 "cannot unmount the backing store partition" + return 0 +} + +# Mount a share locally +mount_share () { + + mount | grep -q /dev/mmcblk0p3 + if [ $? -ne 0 ]; then + + # Check if the FAT32 partition has been unmounted cleanly + fsck.fat -n /dev/mmcblk0p3 2>/dev/null | egrep -q "Dirty bit" + if [ $? -eq 0 ]; then + + # The FAT32 partition was not cleanly unmounted, try to + # clean it + warn "the backing store partition was not properly unmounted" + #warn "the backing store partition was not properly + #unmounted, clean it" + # fsck.fat -a -t -w /dev/loop0 >/dev/null 2>&1 + # if [ $? -gt 1 ]; then + # die 3 "cannot clean backing store file" + # fi + fi + + # Mount the backing store file locally + mount /mnt/ || die 4 "cannot mount backing store partition" + fi + + # Create the directory structure if required + (cd /mnt; mkdir -p "Atari lynx" "Game Boy" "Game Boy Color" "Game Boy Advance" "Game Gear" "Neo Geo Pocket" "NES" "PS1" "Sega Genesis" "Sega Master System" "SNES" "WonderSwan") + return 0 +} + +# Initialize the backing store if needed and mount it locally +init_share () { + if [ -f ${LOCK_FILE} ]; then + return 0 + fi + touch ${LOCK_FILE} + + # Initialize the USB gadget + init_usb_gadget + + # Mount the backing store partition locally + mount_share + return 0 +} + +# Stop sharing the backing store partition +stop_share () { + + # Stop sharing the backing store partition + echo > $BACKING_STORE_FILE || die 11 "the backing store partition is still mounted on host" + + # 3) Mount the backing store partition locally + mount_share + + info "stopped sharing the backing store partition" + + return 0 +} + +# Start sharing the backing store partition +start_share () { + + # 1) Check if the backing store partition is already shared + cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p3 && die 12 "the backing store partition is already shared" + + # 2) Check if USB data is connected + is_usb_data_connected > /dev/null 2>&1 || die 13 "USB sharing impossible, not connected to a host" + + # 3) Unmount the backing store partition if it is locally mounted + unmount_share + + # 4) Everything is now clear to start sharing the backing store partition + info "start sharing the backing store partition" + echo /dev/mmcblk0p3 > $BACKING_STORE_FILE || die 14 "cannot share the backing store partition" +} + +# Return if currently sharing +is_share_started () { + + cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p3 + local res=$? + if [ "$res" == "0" ]; then + echo "yes" + else + echo "no" + fi + return $res +} + +case "$1" in + + init) + init_share + ;; + + start) + start_share + ;; + + stop) + stop_share + ;; + + is_sharing) + is_share_started + ;; + + + *) + die 15 "Usage $0 {init|start|stop|is_sharing}" + ;; +esac +exit $? diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey new file mode 100755 index 0000000..f252c4e --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey @@ -0,0 +1,22 @@ +#!/bin/sh + +# Notif fullscreen "Shutting down" +notif_set 0 "^^^^^^^^ SHUTTING DOWN...^^^^^^^^" + +# Kill Emulators +#kill_emulators >/dev/null 2>&1 + +# Kill Retrofe +#pkill retrofe + +# Sync filesystems (useful in case poweroff could not finish) +sync + +# Unmount Roms partition +umount /mnt + +# Shutdown amp +start_audio_amp 0 >/dev/null 2>&1 + +# Poweroff +poweroff diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/start_gpio_manager b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/start_gpio_manager new file mode 100755 index 0000000..635f18f --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/start_gpio_manager @@ -0,0 +1,12 @@ +#!/bin/sh + +LOCK_FILE=/var/lock/gpio_manager.lock + +if [ -f ${LOCK_FILE} ]; then + echo "${LOCK_FILE} already exists" + exit 1 +fi +touch ${LOCK_FILE} +funkey_gpio_management +rm "${LOCK_FILE}" +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/system_stats b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/system_stats new file mode 100755 index 0000000..a6a091a --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/system_stats @@ -0,0 +1,38 @@ +#!/bin/sh + +UPDATE_PERIOD=2 #seconds + +notif_dirty=0 +perform=0 + +# USR1 callback +function toggle_perform() +{ + let perform=1-${perform} + if [ ${perform} -eq 0 ]; then + notif_clear + notif_dirty=1 + fi +} +trap toggle_perform SIGUSR1 + +while true; do + if [ ${perform} -eq 1 ]; then + + # Compute stats + cpu=$(printf "%.1f\n" $(mpstat -P ALL $UPDATE_PERIOD 1 | tail -1 | awk '{print 100-$12}')) + ram_mem=$(printf "%.1f\n" $(free | grep Mem | awk '{print $3/$2 * 100.0}')) + ram_swap=$(printf "%.1f\n" $(free | grep Swap | awk '{print $3/$2 * 100.0}')) + + # Notif + if [ ${notif_dirty} -eq 1 ]; then + notif_clear + notif_dirty=0 + else + notif_set 0 "CPU:${cpu}%% RAM:${ram_mem}%% SWAP:${ram_swap}%%" + fi + else + sleep ${UPDATE_PERIOD} + fi +done +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/test-led b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/test-led new file mode 100755 index 0000000..485dd2e --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/test-led @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ $# -ne 1 ];then + echo "ERROR LED ARGS" + exit; +fi +case ${1} in + 0) value=0x0a;; + 1) value=0x3a;; + *) echo "ERROR LED VALUE"; exit 1;; +esac + +# Turn on/off the LED +i2cset -f -y 0 0x34 0x32 ${value} +if [ $? -ne 0 ]; then + #echo "ERROR LED I2C" + exit 1 +else + #echo "OK" + exit 0 +fi diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/test-speaker b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/test-speaker new file mode 100755 index 0000000..306b300 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/test-speaker @@ -0,0 +1,24 @@ +#!/bin/sh + +# Turn on Power Amplifier +gpioset $(gpiofind "PA")=1 +if [ $? -ne 0 ]; then + echo "ERROR SPEAKER ON" +else + + # Play 1kHz sine wave + speaker-test -t sine -s 1 -f 1000 >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "ERROR SPEAKER SINE" + gpioset $(gpiofind "PA")=0 + else + + # Turn off Power Amplifier + gpioset $(gpiofind "PA")=0 + if [ $? -ne 0 ]; then + echo "ERROR SPEAKER OFF" + else + echo "OK" + fi + fi +fi diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/toggle_boot b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/toggle_boot new file mode 100755 index 0000000..9c1ed93 --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/toggle_boot @@ -0,0 +1,8 @@ +#!/bin/sh +sgdisk -A 1:toggle:2 -A 2:toggle:2 /dev/mmcblk0 >/dev/null 2>&1 +recovery=$(sgdisk -A 1:get:2 /dev/mmcblk0 | cut -d : -f3) +if [ ${recovery} -eq 1 ]; then + echo "Next boot will be in recovery mode" +else + echo "Next boot will be in normal mode" +fi diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/usb_gadget b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/usb_gadget new file mode 100755 index 0000000..b43b24b --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/usb_gadget @@ -0,0 +1,169 @@ +#!/bin/sh + +#set -xv + +SELF=${SELF:-$(basename $0)} + +source /usr/local/lib/utils + +# The composite gadget directory +GADGET=/sys/kernel/config/usb_gadget/FunKey + +# Check if Ethernet over USB network is requested +[ ! -f /mnt/usbnet ] +USBNET=${?} + +# USB VID for Linux Foundation +ID_VENDOR="0x1d6b" + +# USB PID for Multifunction Composite Gadget +ID_PRODUCT="0x0104" + +# Get the CPU serial number +SERIAL="$(grep Serial /proc/cpuinfo | sed 's/Serial\s*: \(\w*\)/\1/')" + +# Build a MAC address from it +MAC="$(echo ${SERIAL} | sed 's/\(\w\w\)/:\1/g' | cut -b 2-)" + +# Derive host and device MAC addresses +MAC_HOST="12$(echo ${MAC} | cut -b 3-)" +MAC_DEV="02$(echo ${MAC} | cut -b 3-)" + +# Initialize the USB gadget +init_usb_gadget() { + + # Don't proceed if existing gadget is present + if [ -e ${GADGET} ]; then + return 0 + fi + + # Get the legacy drivers out of the way + modprobe -r g_ether + modprobe -r g_mass_storage + + # Load the libcomposite USB driver + modprobe libcomposite + + # USB Device Controller Driver + local udc_driver=$(ls /sys/class/udc | cut -f1 | head -n 1) + + # Create our gadget directory + mkdir ${GADGET} + mkdir ${GADGET}/strings/0x409 + mkdir ${GADGET}/configs/FunKey.1 + mkdir ${GADGET}/configs/FunKey.1/strings/0x409 + test ${USBNET} -eq 1 && mkdir ${GADGET}/functions/rndis.usb0 + mkdir ${GADGET}/functions/mass_storage.mmcblk0p3 + + # USB2 + echo "0x0200" > ${GADGET}/bcdUSB + + # Communication Device Class + if [ ${USBNET} -eq 1 ]; then + echo "0x02" > ${GADGET}/bDeviceClass + echo "0x00" > ${GADGET}/bDeviceSubClass + fi + + # USB VID and PID + echo ${ID_VENDOR} > ${GADGET}/idVendor + echo ${ID_PRODUCT} > ${GADGET}/idProduct + + # Device Release Number + echo "0x0100" > ${GADGET}/bcdDevice + + # Device String Descriptiors + echo "FunKey" > ${GADGET}/strings/0x409/manufacturer + echo "FunKey S" > ${GADGET}/strings/0x409/product + echo ${SERIAL} > ${GADGET}/strings/0x409/serialnumber + + # Turn on "OS Descriptors" support for RNDIS + if [ ${USBNET} -eq 1 ]; then + echo 1 > ${GADGET}/os_desc/use + echo "0xcd" > ${GADGET}/os_desc/b_vendor_code + echo "MSFT100" > ${GADGET}/os_desc/qw_sign + fi + + # Configuration + + # Maximum power is 500 mA + echo 500 > ${GADGET}/configs/FunKey.1/MaxPower + + # Configuration String Descriptors + if [ ${USBNET} -eq 1 ]; then + echo "Mass Storage + RNDIS" > ${GADGET}/configs/FunKey.1/strings/0x409/configuration + else + echo "Mass Storage" > ${GADGET}/configs/FunKey.1/strings/0x409/configuration + fi + + if [ ${USBNET} -eq 1 ]; then + + # Make the FunKey.1 configuration the one associated with OS Descriptors + ln -s ${GADGET}/configs/FunKey.1 ${GADGET}/os_desc + + # RNDIS Function + + # Host & Device MAC Addresses + echo ${MAC_HOST} > ${GADGET}/functions/rndis.usb0/host_addr + echo ${MAC_DEV} > ${GADGET}/functions/rndis.usb0/dev_addr + + # Compatible ID & Sub-Compatible ID + echo "RNDIS" > ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/compatible_id + echo "5162001" > ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id + + # Add the "Icons" Extended Property + mkdir ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/Icons + echo 2 > ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/Icons/type + echo "%SystemRoot%\\system32\\shell32.dll,-233" > ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/Icons/data + + # Add the "Label" Extended Property + mkdir ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/Label + echo 1 > ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/Label/type + echo "FunKey S Device" > ${GADGET}/functions/rndis.usb0/os_desc/interface.rndis/Label/data + fi + + # Mass Storage Function + + # Backing Store file + #echo "/dev/mmcblk0p3" > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/file + + # Gadget is not allowed to halt bulk endpoints + echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/stall + + # Do not simulate a CDROM + echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/cdrom + + # No SCSI Force Unit Access (FUA) to work in synchronous mode ?!? + echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/nofua + + # LUN is removable + echo 1 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/removable + + # Inquiry String + echo "FunKey S Shared Disk" > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/inquiry_string + + if [ ${USBNET} -eq 1 ]; then + + # Add the RNDIS function to the FunKey.1 configuration + ln -s ${GADGET}/functions/rndis.usb0 ${GADGET}/configs/FunKey.1 + + # Bind the USB Gadget as RNDIS device + echo ${udc_driver} > ${GADGET}/UDC + sleep 5 + + # Start network services + systemctl start networking ntp dropbear > /dev/null 2>&1 + + # Unbind the device + echo > ${GADGET}/UDC + fi + + # Add the Mass Storage function to the FunKey.1 configuration + ln -s ${GADGET}/functions/mass_storage.mmcblk0p3 ${GADGET}/configs/FunKey.1 + + # Each interface specifies its own class code + echo "0x00" > ${GADGET}/bDeviceClass + + # Bind the USB Gadget as a Mass Storage device + echo ${udc_driver} > ${GADGET}/UDC + return 0 +} diff --git a/Recovery/board/funkey/uboot.config b/Recovery/board/funkey/uboot.config new file mode 100644 index 0000000..0cc6989 --- /dev/null +++ b/Recovery/board/funkey/uboot.config @@ -0,0 +1,29 @@ +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y +CONFIG_SPL=y +CONFIG_IDENT_STRING=" FunKey" +CONFIG_MACH_SUN8I_V3S=y +CONFIG_DRAM_CLK=360 +# CONFIG_ARMV7_NONSEC is not set +CONFIG_DEFAULT_DEVICE_TREE="sun8i-v3s-funkey" +CONFIG_LOCALVERSION="-funkey" +# CONFIG_DISTRO_DEFAULTS is not set +# CONFIG_FIT is not set +CONFIG_BOOTDELAY=0 +# CONFIG_PRE_CONSOLE_BUFFER is not set +CONFIG_SYS_CONSOLE_INFO_QUIET=y +CONFIG_SYS_STDIO_DEREGISTER=y +# CONFIG_DISPLAY_CPUINFO is not set +# CONFIG_DISPLAY_BOARDINFO is not set +CONFIG_HUSH_PARSER=y +CONFIG_CMD_BOOTZ=y +CONFIG_CMD_PART=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_FAT=y +CONFIG_CMD_FS_GENERIC=y +# CONFIG_ENV_IS_IN_FAT is not set +CONFIG_ENV_IS_IN_MMC=y +CONFIG_USE_DEFAULT_ENV_FILE=y +CONFIG_DEFAULT_ENV_FILE="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/rootfs-overlay/etc/u-boot.env" +# CONFIG_NET is not set diff --git a/Recovery/board/funkey/users_table.txt b/Recovery/board/funkey/users_table.txt new file mode 100644 index 0000000..e69de29 diff --git a/Recovery/configs/recovery_defconfig b/Recovery/configs/recovery_defconfig new file mode 100644 index 0000000..d1573ae --- /dev/null +++ b/Recovery/configs/recovery_defconfig @@ -0,0 +1,67 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_DL_DIR="../download" +BR2_CCACHE=y +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/patches" +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y +BR2_TARGET_GENERIC_HOSTNAME="FunKey" +BR2_TARGET_GENERIC_ISSUE="Welcome to Recovery Buildroot for the FunKey" +BR2_ROOTFS_DEVICE_TABLE="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/device_table.txt" +BR2_TARGET_GENERIC_ROOT_PASSWD="funkey" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/users_table.txt" +BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/rootfs-overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/FunKey-Project/linux" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="932bc41a1a2ce477855240d39edbf7a9af5b7490" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/linux.config" +BR2_LINUX_KERNEL_LZO=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-v3s-funkey" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_E2FSPROGS=y +# BR2_PACKAGE_E2FSPROGS_FSCK is not set +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_GPTFDISK=y +BR2_PACKAGE_GPTFDISK_GDISK=y +BR2_PACKAGE_GPTFDISK_SGDISK=y +BR2_PACKAGE_PARTED=y +BR2_PACKAGE_SYSSTAT=y +BR2_PACKAGE_UBOOT_TOOLS=y +BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y +BR2_PACKAGE_LIBNL=y +BR2_PACKAGE_DHCPCD=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_PROCPS_NG=y +BR2_PACKAGE_UTIL_LINUX_BINARIES=y +BR2_PACKAGE_NANO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="100M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/FunKey-Project/u-boot" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="02e613eaddaacaf0ac0f0b941b90d9645be29f56" +BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/uboot.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/Recovery/external.desc b/Recovery/external.desc new file mode 100644 index 0000000..b88ef00 --- /dev/null +++ b/Recovery/external.desc @@ -0,0 +1,2 @@ +name: RECOVERY +desc: FunKey Recovery packages diff --git a/Recovery/external.mk b/Recovery/external.mk new file mode 100644 index 0000000..a1ea17e --- /dev/null +++ b/Recovery/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_RECOVERY_PATH)/package/*/*.mk)) diff --git a/Recovery/package/FunKey-GPIO-Mapping/Config.in b/Recovery/package/FunKey-GPIO-Mapping/Config.in new file mode 100644 index 0000000..455a4b8 --- /dev/null +++ b/Recovery/package/FunKey-GPIO-Mapping/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_FUNKEY_GPIO_MAPPING + bool "FunKey GPIO Mapping" + default y + help + The FunKey GPIO mapping utility. diff --git a/Recovery/package/FunKey-GPIO-Mapping/FunKey-GPIO-Mapping.mk b/Recovery/package/FunKey-GPIO-Mapping/FunKey-GPIO-Mapping.mk new file mode 100644 index 0000000..3e1b8e8 --- /dev/null +++ b/Recovery/package/FunKey-GPIO-Mapping/FunKey-GPIO-Mapping.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# FunKey-GPIO-mapping +# +################################################################################ + +FUNKEY_GPIO_MAPPING_VERSION = cd412528079a59eab66e7d426e28d9966c2d731c +FUNKEY_GPIO_MAPPING_SITE_METHOD = git +#FUNKEY_GPIO_MAPPING_SITE = ssh://git@github.com/FunKey-Project/FunKey-GPIO-Mapping.git +FUNKEY_GPIO_MAPPING_SITE = ssh://git@fk/FunKey-Project/FunKey-GPIO-Mapping.git +FUNKEY_GPIO_MAPPING_SITE_LICENSE = GPL-2.1+ +FUNKEY_GPIO_MAPPING_SITE_LICENSE_FILES = COPYING + +define FUNKEY_GPIO_MAPPING_BUILD_CMDS + $(TARGET_MAKE_ENV) CROSS_COMPILE=$(TARGET_CROSS) \ + CC="$(TARGET_CC)" \ + $(MAKE) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS)" $(FUNKEY_GPIO_MAPPING_BUILD_TARGET) +endef + +define FUNKEY_GPIO_MAPPING_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/sbin + $(INSTALL) -m 0755 $(@D)/funkey_gpio_management $(TARGET_DIR)/usr/local/sbin/funkey_gpio_management + $(INSTALL) -m 0755 $(@D)/termfix $(TARGET_DIR)/usr/local/sbin/termfix + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc + $(INSTALL) -m 0644 $(@D)/funkey_gpio_mapping.conf $(TARGET_DIR)/etc/funkey_gpio_mapping.conf + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/init.d + $(INSTALL) -m 0755 $(FUNKEY_GPIO_MAPPING_PKGDIR)etc/init.d/S11funkey-gpio-management $(TARGET_DIR)/etc/init.d/S11funkey-gpio-management +endef + +$(eval $(generic-package)) diff --git a/Recovery/package/FunKey-GPIO-Mapping/etc/init.d/S11funkey-gpio-management b/Recovery/package/FunKey-GPIO-Mapping/etc/init.d/S11funkey-gpio-management new file mode 100755 index 0000000..1e2ee08 --- /dev/null +++ b/Recovery/package/FunKey-GPIO-Mapping/etc/init.d/S11funkey-gpio-management @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Start/stop funkey_gpio_management +# + +DAEMON=/usr/local/sbin/funkey_gpio_management +PIDFILE=/var/run/funkey_gpio_management.pid + +case "$1" in + start) + echo -n "Starting funkey_gpio_management: " + start-stop-daemon -S -x ${DAEMON} -p ${PIDFILE} -m -b -- > /dev/null 2>&1 + if [ ${?} -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + stop) + echo -n "Stopping funkey_gpio_management: " + start-stop-daemon -K -x ${DAEMON} -p ${PIDFILE} -o > /dev/null 2>&1 + if [ ${?} -eq 0 ]; then + echo "OK" + else + echo "ERROR" + fi + ;; + restart) + ${0} stop + sleep 1 # Prevent race condition: ensure funkey_gpio_management stops before start. + ${0} start + ;; + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 +esac diff --git a/FunKey-OS-docker/Dockerfile b/docker/Dockerfile similarity index 100% rename from FunKey-OS-docker/Dockerfile rename to docker/Dockerfile diff --git a/FunKey-OS-docker/README_FR b/docker/README_FR similarity index 100% rename from FunKey-OS-docker/README_FR rename to docker/README_FR diff --git a/FunKey-OS-docker/apt-sources.list b/docker/apt-sources.list similarity index 100% rename from FunKey-OS-docker/apt-sources.list rename to docker/apt-sources.list diff --git a/FunKey-OS-docker/config b/docker/config similarity index 100% rename from FunKey-OS-docker/config rename to docker/config diff --git a/FunKey-OS-docker/known_hosts b/docker/known_hosts similarity index 100% rename from FunKey-OS-docker/known_hosts rename to docker/known_hosts diff --git a/fel-boot.sh b/fel-boot.sh deleted file mode 100755 index ac62729..0000000 --- a/fel-boot.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -cd PCBA/output/images -sudo ~/sunxi-tools/sunxi-fel -v -p uboot u-boot-sunxi-with-spl.bin \ - multi 3 \ - 0x41000000 zImage \ - 0x41800000 sun8i-v3s-funkey.dtb \ - 0x41900000 boot.scr -cd - diff --git a/FunKey/board/funkey/genimage.cfg b/genimage.cfg similarity index 73% rename from FunKey/board/funkey/genimage.cfg rename to genimage.cfg index a41ef43..7c47729 100644 --- a/FunKey/board/funkey/genimage.cfg +++ b/genimage.cfg @@ -12,7 +12,7 @@ image sdcard.img { partition u-boot { in-partition-table = "no" - image = "u-boot-sunxi-with-spl.bin" + image = "Recovery/output/images/u-boot-sunxi-with-spl.bin" offset = 8K size = 536K # 544KB - 8KB } @@ -21,7 +21,7 @@ image sdcard.img { in-partition-table = "no" offset = 544K size = 128K - image = "u-boot-env.img" + image = "FunKey/output/images/u-boot-env.img" } # partition gpt-table { @@ -30,18 +30,18 @@ image sdcard.img { # size = 16K # } - partition rootfs_alt { + partition Recovery { offset = 1M partition-type = 0x83 - image = "rootfs.ext4" + image = "Recovery/output/images/rootfs.ext4" size = 100M } - partition rootfs { + partition FunKey { offset = 101M partition-type = 0x83 bootable = "yes" - image = "rootfs.ext4" + image = "FunKey/output/images/rootfs.ext4" size = 100M } diff --git a/pcba b/pcba deleted file mode 100755 index c0b230e..0000000 --- a/pcba +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -BR="make -C buildroot BR2_EXTERNAL=../PCBA O=../PCBA/output" - -case "$1" in - start) - $BR distclean funkey_defconfig - ;; - update) - $BR savedefconfig linux-update-defconfig uboot-update-defconfig busybox-update-config - ;; - *) - $BR $* - ;; -esac