images: update initcontainers and VPU plugin to new base images

This is the part 2 of the work to move our published container images
to new base images. The initcontainers will be based on
distroless/static and the VPU plugin is based on Debian.

Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
This commit is contained in:
Mikko Ylinen 2021-05-19 10:42:33 +03:00
parent a207bfe4ed
commit 7000d30a35
5 changed files with 528 additions and 151 deletions

View File

@ -1,73 +1,64 @@
# CLEAR_LINUX_BASE and CLEAR_LINUX_VERSION can be used to make the build
# reproducible by choosing an image by its hash and installing an OS version
# with --version=:
# CLEAR_LINUX_BASE=clearlinux@sha256:b8e5d3b2576eb6d868f8d52e401f678c873264d349e469637f98ee2adf7b33d4
# CLEAR_LINUX_VERSION="--version=29970"
# Copyright 2021 Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# GOLANG_BASE can be used to make the build reproducible by choosing an
# image by its hash:
# GOLANG_BASE=golang@sha256:9d64369fd3c633df71d7465d67d43f63bb31192193e671742fa1c26ebc3a6210
#
# This is used on release branches before tagging a stable version.
# The master branch defaults to using the latest Clear Linux.
ARG CLEAR_LINUX_BASE=clearlinux/golang:latest
# The main branch defaults to using the latest Golang base image.
ARG GOLANG_BASE=golang:1.15-buster
FROM ${CLEAR_LINUX_BASE} as builder
FROM ${GOLANG_BASE} as builder
ARG CLEAR_LINUX_VERSION=
RUN swupd update --no-boot-update ${CLEAR_LINUX_VERSION}
RUN ldconfig
ARG DIR=/intel-device-plugins-for-kubernetes
ARG GO111MODULE=on
ARG BUILDFLAGS="-ldflags=-w -s"
WORKDIR $DIR
COPY . .
RUN mkdir /install_root \
&& swupd os-install \
${CLEAR_LINUX_VERSION} \
--path /install_root \
--statedir /swupd-state \
--bundles=rsync \
--no-boot-update \
&& rm -rf /install_root/var/lib/swupd/*
ARG ROOT=/install_root
# Build CRI Hook
RUN cd $DIR/cmd/fpga_crihook && \
GO111MODULE=${GO111MODULE} go install && \
chmod a+x /go/bin/fpga_crihook && \
cd $DIR/cmd/fpga_tool && \
go install && \
chmod a+x /go/bin/fpga_tool && \
cd $DIR && \
install -D ${DIR}/LICENSE /install_root/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE && \
scripts/copy-modules-licenses.sh ./cmd/fpga_crihook /install_root/usr/local/share/ && \
scripts/copy-modules-licenses.sh ./cmd/fpga_tool /install_root/usr/local/share/
# Minimal result image
FROM scratch as final
COPY --from=builder /install_root /
RUN cd cmd/fpga_crihook && GO111MODULE=${GO111MODULE} CGO_ENABLED=0 go install "${BUILDFLAGS}" && \
cd ../fpga_tool && GO111MODULE=${GO111MODULE} CGO_ENABLED=0 go install "${BUILDFLAGS}" && \
cd ../.. && \
install -D ${DIR}/LICENSE $ROOT/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE && \
scripts/copy-modules-licenses.sh ./cmd/fpga_crihook $ROOT/usr/local/share/ && \
scripts/copy-modules-licenses.sh ./cmd/fpga_tool $ROOT/usr/local/share/
ARG SRC_DIR=/usr/local/fpga-sw
ARG DST_DIR=/opt/intel/fpga-sw
# CRI hook
ARG CRI_HOOK=intel-fpga-crihook
ARG FPGA_TOOL=fpgatool
ARG HOOK_CONF=$CRI_HOOK.json
ARG HOOK_CONF_SRC=$SRC_DIR/$HOOK_CONF
ARG HOOK_CONF_DST=$DST_DIR/$HOOK_CONF
COPY --from=builder /go/bin/fpga_crihook $SRC_DIR/$CRI_HOOK
COPY --from=builder /go/bin/fpga_tool $SRC_DIR/$FPGA_TOOL
RUN install -D /go/bin/fpga_crihook $ROOT/$SRC_DIR/$CRI_HOOK
RUN install -D /go/bin/fpga_tool $ROOT/$SRC_DIR/
RUN echo -e "{\n\
RUN echo "{\n\
\"hook\" : \"$DST_DIR/$CRI_HOOK\",\n\
\"stage\" : [ \"prestart\" ],\n\
\"annotation\": [ \"fpga.intel.com/region\" ]\n\
}\n">>$HOOK_CONF_SRC
}\n">>$ROOT/$SRC_DIR/$CRI_HOOK.json
RUN echo -e "#!/bin/sh\n\
rsync -a --delete $SRC_DIR/ $DST_DIR\n\
mkdir -p /etc/containers/oci/hooks.d\n\
ln -sf $HOOK_CONF_DST /etc/containers/oci/hooks.d/$HOOK_CONF\n\
rm $DST_DIR/deploy.sh\n\
">> $SRC_DIR/deploy.sh && chmod +x $SRC_DIR/deploy.sh
ARG TOYBOX_VERSION="0.8.4"
RUN apt update && apt -y install musl musl-tools musl-dev
RUN curl -SL https://github.com/landley/toybox/archive/refs/tags/$TOYBOX_VERSION.tar.gz | tar xz \
&& cd toybox-$TOYBOX_VERSION \
&& KCONFIG_CONFIG=${DIR}/build/docker/toybox-config LDFLAGS="--static" CC=musl-gcc PREFIX=$ROOT V=2 make toybox install \
&& install -D LICENSE $ROOT/usr/local/share/package-licenses/toybox \
&& cp -r /usr/share/doc/musl $ROOT/usr/local/share/package-licenses/
ENTRYPOINT [ "/usr/local/fpga-sw/deploy.sh" ]
FROM gcr.io/distroless/static
COPY --from=builder /install_root /
ENTRYPOINT [ "/bin/sh", "-c", "cp -a /usr/local/fpga-sw/* /opt/intel/fpga-sw/ && ln -sf /opt/intel/fpga-sw/intel-fpga-crihook.json /etc/containers/oci/hooks.d/" ]

View File

@ -1,53 +1,55 @@
# CLEAR_LINUX_BASE and CLEAR_LINUX_VERSION can be used to make the build
# reproducible by choosing an image by its hash and installing an OS version
# with --version=:
# CLEAR_LINUX_BASE=clearlinux@sha256:b8e5d3b2576eb6d868f8d52e401f678c873264d349e469637f98ee2adf7b33d4
# CLEAR_LINUX_VERSION="--version=29970"
# Copyright 2021 Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# GOLANG_BASE can be used to make the build reproducible by choosing an
# image by its hash:
# GOLANG_BASE=golang@sha256:9d64369fd3c633df71d7465d67d43f63bb31192193e671742fa1c26ebc3a6210
#
# This is used on release branches before tagging a stable version.
# The master branch defaults to using the latest Clear Linux.
ARG CLEAR_LINUX_BASE=clearlinux/golang:latest
# The main branch defaults to using the latest Golang base image.
ARG GOLANG_BASE=golang:1.15-buster
FROM ${CLEAR_LINUX_BASE} as builder
FROM ${GOLANG_BASE} as builder
ARG CLEAR_LINUX_VERSION=
RUN swupd update --no-boot-update ${CLEAR_LINUX_VERSION}
RUN ldconfig
ARG DIR=/intel-device-plugins-for-kubernetes
ARG GO111MODULE=on
ARG BUILDFLAGS="-ldflags=-w -s"
WORKDIR $DIR
COPY . .
RUN mkdir /install_root \
&& swupd os-install \
${CLEAR_LINUX_VERSION} \
--path /install_root \
--statedir /swupd-state \
--bundles=rsync \
--no-boot-update \
&& rm -rf /install_root/var/lib/swupd/*
ARG ROOT=/install_root
# Build NFD Feature Detector Hook
RUN cd $DIR/cmd/gpu_nfdhook && \
GO111MODULE=${GO111MODULE} go install -ldflags="-s -w" && \
chmod a+x /go/bin/gpu_nfdhook && \
cd $DIR && \
install -D ${DIR}/LICENSE /install_root/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE && \
scripts/copy-modules-licenses.sh ./cmd/gpu_nfdhook /install_root/usr/local/share/package-licenses/
FROM scratch as final
COPY --from=builder /install_root /
RUN cd cmd/gpu_nfdhook && GO111MODULE=${GO111MODULE} CGO_ENABLED=0 go install "${BUILDFLAGS}" && cd -\
install -D ${DIR}/LICENSE $ROOT/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE && \
mkdir -p $ROOT/usr/local/share/ && \
scripts/copy-modules-licenses.sh ./cmd/gpu_nfdhook $ROOT/usr/local/share/
ARG NFD_HOOK=intel-gpu-nfdhook
ARG SRC_DIR=/usr/local/bin/gpu-sw
ARG DST_DIR=/etc/kubernetes/node-feature-discovery/source.d/
COPY --from=builder /go/bin/gpu_nfdhook $SRC_DIR/$NFD_HOOK
RUN install -D /go/bin/gpu_nfdhook $ROOT/$SRC_DIR/$NFD_HOOK
RUN echo -e "#!/bin/sh\n\
rsync -a $SRC_DIR/ $DST_DIR\n\
rm $DST_DIR/deploy.sh\
">> $SRC_DIR/deploy.sh && chmod +x $SRC_DIR/deploy.sh
ARG TOYBOX_VERSION="0.8.4"
RUN apt update && apt -y install musl musl-tools musl-dev
RUN curl -SL https://github.com/landley/toybox/archive/refs/tags/$TOYBOX_VERSION.tar.gz | tar xz \
&& cd toybox-$TOYBOX_VERSION \
&& KCONFIG_CONFIG=${DIR}/build/docker/toybox-config LDFLAGS="--static" CC=musl-gcc PREFIX=$ROOT V=2 make toybox install \
&& install -D LICENSE $ROOT/usr/local/share/package-licenses/toybox \
&& cp -r /usr/share/doc/musl $ROOT/usr/local/share/package-licenses/
ENTRYPOINT [ "/usr/local/bin/gpu-sw/deploy.sh" ]
FROM gcr.io/distroless/static
COPY --from=builder /install_root /
ENTRYPOINT [ "/bin/sh", "-c", "cp -a /usr/local/bin/gpu-sw/intel-gpu-nfdhook /etc/kubernetes/node-feature-discovery/source.d/" ]

View File

@ -1,53 +1,55 @@
# CLEAR_LINUX_BASE and CLEAR_LINUX_VERSION can be used to make the build
# reproducible by choosing an image by its hash and installing an OS version
# with --version=:
# CLEAR_LINUX_BASE=clearlinux@sha256:b8e5d3b2576eb6d868f8d52e401f678c873264d349e469637f98ee2adf7b33d4
# CLEAR_LINUX_VERSION="--version=29970"
# Copyright 2021 Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# GOLANG_BASE can be used to make the build reproducible by choosing an
# image by its hash:
# GOLANG_BASE=golang@sha256:9d64369fd3c633df71d7465d67d43f63bb31192193e671742fa1c26ebc3a6210
#
# This is used on release branches before tagging a stable version.
# The master branch defaults to using the latest Clear Linux.
ARG CLEAR_LINUX_BASE=clearlinux/golang:latest
# The main branch defaults to using the latest Golang base image.
ARG GOLANG_BASE=golang:1.15-buster
FROM ${CLEAR_LINUX_BASE} as builder
FROM ${GOLANG_BASE} as builder
ARG CLEAR_LINUX_VERSION=
RUN swupd update --no-boot-update ${CLEAR_LINUX_VERSION}
RUN ldconfig
ARG DIR=/intel-device-plugins-for-kubernetes
ARG GO111MODULE=on
ARG BUILDFLAGS="-ldflags=-w -s"
WORKDIR $DIR
COPY . .
RUN mkdir /install_root \
&& swupd os-install \
${CLEAR_LINUX_VERSION} \
--path /install_root \
--statedir /swupd-state \
--bundles=rsync \
--no-boot-update \
&& rm -rf /install_root/var/lib/swupd/*
ARG ROOT=/install_root
# Build NFD Feature Detector Hook
RUN cd $DIR/cmd/sgx_epchook && \
GO111MODULE=${GO111MODULE} go install && \
chmod a+x /go/bin/sgx_epchook && \
cd $DIR && \
install -D ${DIR}/LICENSE /install_root/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE && \
scripts/copy-modules-licenses.sh ./cmd/sgx_epchook /install_root/usr/local/share/
FROM scratch as final
COPY --from=builder /install_root /
RUN cd cmd/sgx_epchook && GO111MODULE=${GO111MODULE} CGO_ENABLED=0 go install "${BUILDFLAGS}" && cd -\
install -D ${DIR}/LICENSE $ROOT/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE && \
mkdir -p $ROOT/usr/local/share/ && \
scripts/copy-modules-licenses.sh ./cmd/sgx_epchook $ROOT/usr/local/share/
ARG NFD_HOOK=intel-sgx-epchook
ARG SRC_DIR=/usr/local/bin/sgx-sw
ARG DST_DIR=/etc/kubernetes/node-feature-discovery/source.d/
COPY --from=builder /go/bin/sgx_epchook $SRC_DIR/$NFD_HOOK
RUN install -D /go/bin/sgx_epchook $ROOT/$SRC_DIR/$NFD_HOOK
RUN echo -e "#!/bin/sh\n\
rsync -a $SRC_DIR/ $DST_DIR\n\
rm $DST_DIR/deploy.sh\
">> $SRC_DIR/deploy.sh && chmod +x $SRC_DIR/deploy.sh
ARG TOYBOX_VERSION="0.8.4"
RUN apt update && apt -y install musl musl-tools musl-dev
RUN curl -SL https://github.com/landley/toybox/archive/refs/tags/$TOYBOX_VERSION.tar.gz | tar xz \
&& cd toybox-$TOYBOX_VERSION \
&& KCONFIG_CONFIG=${DIR}/build/docker/toybox-config LDFLAGS="--static" CC=musl-gcc PREFIX=$ROOT V=2 make toybox install \
&& install -D LICENSE $ROOT/usr/local/share/package-licenses/toybox \
&& cp -r /usr/share/doc/musl $ROOT/usr/local/share/package-licenses/
ENTRYPOINT [ "/usr/local/bin/sgx-sw/deploy.sh" ]
FROM gcr.io/distroless/static
COPY --from=builder /install_root /
ENTRYPOINT [ "/bin/sh", "-c", "cp -a /usr/local/bin/sgx-sw/intel-sgx-epchook /etc/kubernetes/node-feature-discovery/source.d/" ]

View File

@ -1,38 +1,45 @@
# CLEAR_LINUX_BASE and CLEAR_LINUX_VERSION can be used to make the build
# reproducible by choosing an image by its hash and installing an OS version
# with --version=:
# CLEAR_LINUX_BASE=clearlinux@sha256:b8e5d3b2576eb6d868f8d52e401f678c873264d349e469637f98ee2adf7b33d4
# CLEAR_LINUX_VERSION="--version=29970"
# Copyright 2021 Intel Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# GOLANG_BASE can be used to make the build reproducible by choosing an
# image by its hash:
# GOLANG_BASE=golang@sha256:9d64369fd3c633df71d7465d67d43f63bb31192193e671742fa1c26ebc3a6210
#
# This is used on release branches before tagging a stable version.
# The master branch defaults to using the latest Clear Linux.
ARG CLEAR_LINUX_BASE=clearlinux/golang:latest
FROM ${CLEAR_LINUX_BASE} as builder
ARG CLEAR_LINUX_VERSION=
# The main branch defaults to using the latest Golang base image.
ARG GOLANG_BASE=golang:1.15-buster
RUN swupd update --no-boot-update ${CLEAR_LINUX_VERSION}
RUN ldconfig
RUN swupd bundle-add devpkg-libusb
RUN mkdir /install_root \
&& swupd os-install \
${CLEAR_LINUX_VERSION} \
--path /install_root \
--statedir /swupd-state \
--no-boot-update \
&& rm -rf /install_root/var/lib/swupd/*
FROM ${GOLANG_BASE} as builder
ARG DIR=/intel-device-plugins-for-kubernetes
ARG GO111MODULE=on
ARG BUILDFLAGS="-ldflags=-w -s"
WORKDIR $DIR
COPY . .
RUN cd cmd/vpu_plugin; GO111MODULE=${GO111MODULE} go install; cd -
RUN chmod a+x /go/bin/vpu_plugin \
&& install -D /go/bin/vpu_plugin /install_root/usr/local/bin/intel_vpu_device_plugin \
&& install -D ${DIR}/LICENSE /install_root/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE \
&& scripts/copy-modules-licenses.sh ./cmd/vpu_plugin /install_root/usr/local/share/ \
&& install -D /usr/share/package-licenses/libusb/* -t /install_root/usr/local/share/package-licenses/libusb \
&& install -D /lib64/libusb-1.0.so.0 /install_root/lib64
FROM scratch as final
RUN echo "deb-src http://deb.debian.org/debian buster main" | tee -a /etc/apt/sources.list
RUN apt update && apt -y install dpkg-dev libusb-1.0-0-dev
RUN mkdir -p /install_root/usr/local/share/package-sources/libusb \
&& cd /install_root/usr/local/share/package-sources/libusb \
&& apt source libusb-1.0-0 \
&& cd -
RUN cd cmd/vpu_plugin; GO111MODULE=${GO111MODULE} CGO_ENABLED=1 go install "${BUILDFLAGS}"; cd -
RUN install -D /go/bin/vpu_plugin /install_root/usr/local/bin/intel_vpu_device_plugin \
&& install -D ${DIR}/LICENSE /install_root/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE \
&& scripts/copy-modules-licenses.sh ./cmd/vpu_plugin /install_root/usr/local/share/
FROM debian:buster-slim
RUN apt update && apt -y install libusb-1.0-0
COPY --from=builder /install_root /
ENTRYPOINT ["/usr/local/bin/intel_vpu_device_plugin"]

375
build/docker/toybox-config Normal file
View File

@ -0,0 +1,375 @@
#
# Automatically generated make config: don't edit
# ToyBox version: KCONFIG_VERSION
# Sat May 15 08:23:52 2021
#
CONFIG_TOYBOX_CONTAINER=y
CONFIG_TOYBOX_FIFREEZE=y
CONFIG_TOYBOX_ICONV=y
CONFIG_TOYBOX_UTMPX=y
CONFIG_TOYBOX_SHADOW=y
# CONFIG_TOYBOX_ON_ANDROID is not set
# CONFIG_TOYBOX_ANDROID_SCHEDPOLICY is not set
CONFIG_TOYBOX_FORK=y
CONFIG_TOYBOX_PRLIMIT=y
CONFIG_TOYBOX_GETRANDOM=y
# CONFIG_TOYBOX_COPYFILERANGE is not set
#
# Posix commands
#
# CONFIG_BASENAME is not set
# CONFIG_CAL is not set
# CONFIG_CAT is not set
# CONFIG_CAT_V is not set
# CONFIG_CATV is not set
# CONFIG_CHGRP is not set
# CONFIG_CHOWN is not set
# CONFIG_CHMOD is not set
# CONFIG_CKSUM is not set
# CONFIG_CRC32 is not set
# CONFIG_CMP is not set
# CONFIG_COMM is not set
CONFIG_CP=y
# CONFIG_MV is not set
# CONFIG_INSTALL is not set
# CONFIG_CPIO is not set
# CONFIG_CUT is not set
# CONFIG_DATE is not set
# CONFIG_DF is not set
# CONFIG_DIRNAME is not set
# CONFIG_DU is not set
# CONFIG_ECHO is not set
# CONFIG_ENV is not set
# CONFIG_EXPAND is not set
# CONFIG_FALSE is not set
# CONFIG_FILE is not set
# CONFIG_FIND is not set
# CONFIG_GETCONF is not set
# CONFIG_GREP is not set
# CONFIG_EGREP is not set
# CONFIG_FGREP is not set
# CONFIG_HEAD is not set
# CONFIG_ICONV is not set
# CONFIG_ID is not set
# CONFIG_ID_Z is not set
# CONFIG_GROUPS is not set
# CONFIG_LOGNAME is not set
# CONFIG_WHOAMI is not set
# CONFIG_KILL is not set
# CONFIG_KILLALL5 is not set
# CONFIG_LINK is not set
CONFIG_LN=y
# CONFIG_LOGGER is not set
CONFIG_LS=y
# CONFIG_MKDIR is not set
# CONFIG_MKDIR_Z is not set
# CONFIG_MKFIFO is not set
# CONFIG_MKFIFO_Z is not set
# CONFIG_NICE is not set
# CONFIG_NL is not set
# CONFIG_NOHUP is not set
# CONFIG_OD is not set
# CONFIG_PASTE is not set
# CONFIG_PATCH is not set
# CONFIG_PRINTF is not set
# CONFIG_PS is not set
# CONFIG_TOP is not set
# CONFIG_IOTOP is not set
# CONFIG_PGREP is not set
# CONFIG_PKILL is not set
# CONFIG_PWD is not set
# CONFIG_RENICE is not set
# CONFIG_RM is not set
# CONFIG_RMDIR is not set
# CONFIG_SED is not set
# CONFIG_SLEEP is not set
# CONFIG_SORT is not set
# CONFIG_SORT_FLOAT is not set
# CONFIG_SPLIT is not set
# CONFIG_STRINGS is not set
# CONFIG_TAIL is not set
# CONFIG_TAR is not set
# CONFIG_TEE is not set
# CONFIG_TEST is not set
# CONFIG_TIME is not set
# CONFIG_TOUCH is not set
# CONFIG_TRUE is not set
# CONFIG_TTY is not set
# CONFIG_ULIMIT is not set
# CONFIG_ARCH is not set
# CONFIG_UNAME is not set
# CONFIG_UNIQ is not set
# CONFIG_UNLINK is not set
# CONFIG_UUDECODE is not set
# CONFIG_UUENCODE is not set
# CONFIG_WC is not set
# CONFIG_WHO is not set
# CONFIG_XARGS is not set
#
# pending (see toys/pending/README)
#
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
# CONFIG_BC is not set
# CONFIG_BOOTCHARTD is not set
# CONFIG_BRCTL is not set
# CONFIG_CROND is not set
# CONFIG_CRONTAB is not set
# CONFIG_DD is not set
# CONFIG_DHCP6 is not set
# CONFIG_DHCP is not set
# CONFIG_DHCPD is not set
# CONFIG_DEBUG_DHCP is not set
# CONFIG_DIFF is not set
# CONFIG_DUMPLEASES is not set
# CONFIG_EXPR is not set
# CONFIG_FDISK is not set
# CONFIG_FOLD is not set
# CONFIG_FSCK is not set
# CONFIG_GETFATTR is not set
# CONFIG_GETOPT is not set
# CONFIG_GETTY is not set
# CONFIG_GROUPADD is not set
# CONFIG_GROUPDEL is not set
# CONFIG_HOST is not set
# CONFIG_INIT is not set
# CONFIG_IP is not set
# CONFIG_IPCRM is not set
# CONFIG_IPCS is not set
# CONFIG_KLOGD is not set
# CONFIG_KLOGD_SOURCE_RING_BUFFER is not set
# CONFIG_LAST is not set
# CONFIG_LSOF is not set
# CONFIG_MAN is not set
# CONFIG_MDEV is not set
# CONFIG_MDEV_CONF is not set
# CONFIG_MKE2FS is not set
# CONFIG_MKE2FS_JOURNAL is not set
# CONFIG_MKE2FS_GEN is not set
# CONFIG_MKE2FS_LABEL is not set
# CONFIG_MKE2FS_EXTENDED is not set
# CONFIG_MODPROBE is not set
# CONFIG_MORE is not set
# CONFIG_OPENVT is not set
# CONFIG_DEALLOCVT is not set
# CONFIG_READELF is not set
# CONFIG_ROUTE is not set
CONFIG_SH=y
# CONFIG_CD is not set
# CONFIG_EXIT is not set
# CONFIG_UNSET is not set
# CONFIG_EVAL is not set
# CONFIG_EXEC is not set
# CONFIG_EXPORT is not set
# CONFIG_JOBS is not set
# CONFIG_SHIFT is not set
# CONFIG_SOURCE is not set
# CONFIG_STTY is not set
# CONFIG_SULOGIN is not set
# CONFIG_SYSLOGD is not set
# CONFIG_TCPSVD is not set
# CONFIG_TELNET is not set
# CONFIG_TELNETD is not set
# CONFIG_TFTP is not set
# CONFIG_TFTPD is not set
# CONFIG_TRACEROUTE is not set
# CONFIG_TR is not set
# CONFIG_USERADD is not set
# CONFIG_USERDEL is not set
# CONFIG_VI is not set
# CONFIG_WGET is not set
# CONFIG_XZCAT is not set
#
# Other commands
#
# CONFIG_ACPI is not set
# CONFIG_ASCII is not set
# CONFIG_BASE64 is not set
# CONFIG_BLKDISCARD is not set
# CONFIG_BLKID is not set
# CONFIG_FSTYPE is not set
# CONFIG_BLOCKDEV is not set
# CONFIG_BUNZIP2 is not set
# CONFIG_BZCAT is not set
# CONFIG_CHCON is not set
# CONFIG_CHROOT is not set
# CONFIG_CHRT is not set
# CONFIG_CHVT is not set
# CONFIG_CLEAR is not set
# CONFIG_COUNT is not set
# CONFIG_DEVMEM is not set
# CONFIG_DOS2UNIX is not set
# CONFIG_UNIX2DOS is not set
# CONFIG_EJECT is not set
# CONFIG_FACTOR is not set
# CONFIG_FALLOCATE is not set
# CONFIG_FLOCK is not set
# CONFIG_FMT is not set
# CONFIG_FREE is not set
# CONFIG_FREERAMDISK is not set
# CONFIG_FSFREEZE is not set
# CONFIG_FSYNC is not set
# CONFIG_HELP is not set
# CONFIG_HEXEDIT is not set
# CONFIG_HWCLOCK is not set
# CONFIG_I2CDETECT is not set
# CONFIG_I2CDUMP is not set
# CONFIG_I2CGET is not set
# CONFIG_I2CSET is not set
# CONFIG_INOTIFYD is not set
# CONFIG_INSMOD is not set
# CONFIG_IONICE is not set
# CONFIG_IORENICE is not set
# CONFIG_LOGIN is not set
# CONFIG_LOSETUP is not set
# CONFIG_LSATTR is not set
# CONFIG_CHATTR is not set
# CONFIG_LSMOD is not set
# CONFIG_LSPCI is not set
# CONFIG_LSPCI_TEXT is not set
# CONFIG_LSUSB is not set
# CONFIG_MAKEDEVS is not set
# CONFIG_MCOOKIE is not set
# CONFIG_MIX is not set
# CONFIG_MKPASSWD is not set
# CONFIG_MKSWAP is not set
# CONFIG_MODINFO is not set
# CONFIG_MOUNTPOINT is not set
# CONFIG_NBD_CLIENT is not set
# CONFIG_UNSHARE is not set
# CONFIG_NSENTER is not set
# CONFIG_ONEIT is not set
# CONFIG_PARTPROBE is not set
# CONFIG_PIVOT_ROOT is not set
# CONFIG_PMAP is not set
# CONFIG_PRINTENV is not set
# CONFIG_PWDX is not set
# CONFIG_READAHEAD is not set
# CONFIG_READLINK is not set
# CONFIG_REALPATH is not set
# CONFIG_REBOOT is not set
# CONFIG_RESET is not set
# CONFIG_REV is not set
# CONFIG_RMMOD is not set
# CONFIG_RTCWAKE is not set
# CONFIG_SETFATTR is not set
# CONFIG_SETSID is not set
# CONFIG_SHA3SUM is not set
# CONFIG_SHRED is not set
# CONFIG_STAT is not set
# CONFIG_SWAPOFF is not set
# CONFIG_SWAPON is not set
# CONFIG_SWITCH_ROOT is not set
# CONFIG_SYSCTL is not set
# CONFIG_TAC is not set
# CONFIG_NPROC is not set
# CONFIG_TASKSET is not set
# CONFIG_TIMEOUT is not set
# CONFIG_TRUNCATE is not set
# CONFIG_UPTIME is not set
# CONFIG_USLEEP is not set
# CONFIG_UUIDGEN is not set
# CONFIG_VCONFIG is not set
# CONFIG_VMSTAT is not set
# CONFIG_WATCH is not set
# CONFIG_WATCHDOG is not set
# CONFIG_W is not set
# CONFIG_WHICH is not set
# CONFIG_XXD is not set
# CONFIG_YES is not set
#
# Networking
#
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_IFCONFIG is not set
# CONFIG_MICROCOM is not set
# CONFIG_NETCAT is not set
# CONFIG_NETCAT_LISTEN is not set
# CONFIG_NETSTAT is not set
# CONFIG_PING is not set
# CONFIG_RFKILL is not set
# CONFIG_SNTP is not set
# CONFIG_TUNCTL is not set
#
# Linux Standard Base commands
#
# CONFIG_DMESG is not set
# CONFIG_GZIP is not set
# CONFIG_GUNZIP is not set
# CONFIG_ZCAT is not set
# CONFIG_HOSTNAME is not set
# CONFIG_DNSDOMAINNAME is not set
# CONFIG_KILLALL is not set
# CONFIG_MD5SUM is not set
# CONFIG_SHA1SUM is not set
# CONFIG_SHA224SUM is not set
# CONFIG_SHA256SUM is not set
# CONFIG_SHA384SUM is not set
# CONFIG_SHA512SUM is not set
# CONFIG_MKNOD is not set
# CONFIG_MKNOD_Z is not set
# CONFIG_MKTEMP is not set
# CONFIG_MOUNT is not set
# CONFIG_PASSWD is not set
# CONFIG_PASSWD_SAD is not set
# CONFIG_PIDOF is not set
# CONFIG_SEQ is not set
# CONFIG_SU is not set
# CONFIG_SYNC is not set
# CONFIG_UMOUNT is not set
#
# Example commands
#
# CONFIG_DEMO_MANY_OPTIONS is not set
# CONFIG_DEMO_NUMBER is not set
# CONFIG_DEMO_SCANKEY is not set
# CONFIG_DEMO_UTF8TOWC is not set
# CONFIG_HELLO is not set
# CONFIG_HOSTID is not set
# CONFIG_LOGWRAPPER is not set
# CONFIG_SKELETON is not set
# CONFIG_SKELETON_ALIAS is not set
#
# Android
#
# CONFIG_GETENFORCE is not set
# CONFIG_LOAD_POLICY is not set
# CONFIG_LOG is not set
# CONFIG_RESTORECON is not set
# CONFIG_RUNCON is not set
# CONFIG_SENDEVENT is not set
# CONFIG_SETENFORCE is not set
#
#
#
#
# Toybox global settings
#
CONFIG_TOYBOX=y
# CONFIG_TOYBOX_SUID is not set
CONFIG_TOYBOX_LSM_NONE=y
# CONFIG_TOYBOX_SELINUX is not set
# CONFIG_TOYBOX_SMACK is not set
# CONFIG_TOYBOX_LIBCRYPTO is not set
# CONFIG_TOYBOX_LIBZ is not set
# CONFIG_TOYBOX_FLOAT is not set
# CONFIG_TOYBOX_HELP is not set
# CONFIG_TOYBOX_HELP_DASHDASH is not set
# CONFIG_TOYBOX_I18N is not set
# CONFIG_TOYBOX_FREE is not set
# CONFIG_TOYBOX_NORECURSE is not set
# CONFIG_TOYBOX_DEBUG is not set
# CONFIG_TOYBOX_PEDANTIC_ARGS is not set
CONFIG_TOYBOX_UID_SYS=100
CONFIG_TOYBOX_UID_USR=500
# CONFIG_TOYBOX_FORCE_NOMMU is not set