initial buildroot for linux 5.15

This commit is contained in:
Huan.Feng
2021-12-06 14:12:13 +08:00
parent d7767d594e
commit 7b6fc358fa
12736 changed files with 508822 additions and 0 deletions
@@ -0,0 +1,37 @@
From 60da1d0763224698008d847eb8ad8d4d8c6f54ff Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 5 Oct 2013 15:55:06 +0200
Subject: [PATCH] networking/libiproute: use <linux/if_packet.h> instead of
<net/if_packet.h>
The musl C library doesn't provide the <net/if_packet.h> since the
corresponding kernel headers <linux/if_packet.h> already provides the
necessary definitions. Replacing <net/if_packet.h> by
<linux/if_packet.h> also removes the need to include
<netpacket/packet.h>
This commit fixes the build of iplink with the musl C library.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[Gustavo: update for busybox 1.22.0]
Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
---
networking/libiproute/iplink.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c
index 1a1064bdc..a4c3ad307 100644
--- a/networking/libiproute/iplink.c
+++ b/networking/libiproute/iplink.c
@@ -7,7 +7,7 @@
*/
#include <net/if.h>
/*#include <net/if_packet.h> - not needed? */
-#include <netpacket/packet.h>
+#include <linux/if_packet.h>
#include <netinet/if_ether.h>
#include <linux/if_vlan.h>
--
2.33.0
@@ -0,0 +1,33 @@
From 59daea82e7b5abcdb42a4f97a0109f14d5a774ea Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Mon, 25 Nov 2013 22:51:53 +0100
Subject: [PATCH] Makefile.flags: strip non -l arguments returned by
pkg-config
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[yann.morin.1998@free.fr: refresh for 1.29.0]
[petr.vorel@gmail.com: refresh for 1.32.0]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
---
Makefile.flags | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Makefile.flags b/Makefile.flags
index 667481983..88d76efec 100644
--- a/Makefile.flags
+++ b/Makefile.flags
@@ -180,7 +180,9 @@ ifeq ($(CONFIG_SELINUX),y)
SELINUX_PC_MODULES = libselinux libsepol
$(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES)))
CPPFLAGS += $(SELINUX_CFLAGS)
-LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%))
+LDLIBS += $(if $(SELINUX_LIBS),\
+ $(patsubst -l%,%,$(filter -l%,$(SELINUX_LIBS))),\
+ $(SELINUX_PC_MODULES:lib%=%))
endif
ifeq ($(CONFIG_FEATURE_NSLOOKUP_BIG),y)
--
2.33.0
+103
View File
@@ -0,0 +1,103 @@
config BR2_PACKAGE_BUSYBOX
bool "BusyBox"
default y
help
The Swiss Army Knife of embedded Linux. It slices, it dices,
it makes Julian Fries.
http://busybox.net/
Most people will answer Y.
if BR2_PACKAGE_BUSYBOX
config BR2_PACKAGE_BUSYBOX_CONFIG
string "BusyBox configuration file to use?"
default "package/busybox/busybox.config"
help
Some people may wish to use their own modified BusyBox
configuration file, and will specify their config file
location with this option.
Most people will just use the default BusyBox configuration
file.
config BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES
string "Additional BusyBox configuration fragment files"
help
A space-separated list of configuration fragment files,
that will be merged to the main BusyBox configuration file.
# This option is not an option of Busybox, it can be selected even
# if Busybox is not enabled.
config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
bool "Show packages that are also provided by busybox"
help
Show packages in menuconfig that are potentially also provided
by busybox.
config BR2_PACKAGE_BUSYBOX_SELINUX
bool "Enable SELinux support"
default y
depends on BR2_PACKAGE_LIBSELINUX
select BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES
help
Enable SELinux support in BusyBox. Please note that
depending on your BusyBox configuration and the SELinux
policy implementation, you may want to also enable
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES.
For instance, if your BusyBox configuration only uses a
couple of minor BusyBox features, such as simple command
line utilities, the symlinked version of BusyBox can be used
to save space. If BusyBox provides more features, such as
crond, then individual binaries have to be enabled for the
SELinux type transitions to occur properly.
config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES
bool "Individual binaries"
depends on !BR2_STATIC_LIBS
help
By default (i.e with this option disabled), Busybox is
installed as a single binary in /bin/busybox and all applets
are a symbolic link to /bin/busybox.
With this option enabled, each applet is a separate binary,
which is needed for proper operation with SELinux.
comment "Busybox individual binaries need a toolchain w/ dynamic library"
depends on BR2_STATIC_LIBS
config BR2_PACKAGE_BUSYBOX_WATCHDOG
bool "Install the watchdog daemon startup script"
help
Install the watchdog daemon startup script,
that just start at the boot the busybox watchdog daemon.
if BR2_PACKAGE_BUSYBOX_WATCHDOG
config BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD
string "Delay between reset"
default "5"
help
Select the number of seconds between each
reset of the watchdog (default 5)
Use ms suffix to specify milliseconds (e.g. 500ms)
endif
endif
if !BR2_PACKAGE_BUSYBOX # kconfig doesn't support else
comment "You may need to enable other packages to get a working system"
comment "You better know what you're doing!"
# This option is not an option of Busybox, it can be selected even if
# Busybox is not enabled. This dummy option ensures that packages that
# depend on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS are visible when Busybox
# is disabled.
config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
default y
endif
+55
View File
@@ -0,0 +1,55 @@
#!/bin/sh
DAEMON="syslogd"
PIDFILE="/var/run/$DAEMON.pid"
SYSLOGD_ARGS=""
# shellcheck source=/dev/null
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
# BusyBox' syslogd does not create a pidfile, so pass "-n" in the command line
# and use "-m" to instruct start-stop-daemon to create one.
start() {
printf 'Starting %s: ' "$DAEMON"
# shellcheck disable=SC2086 # we need the word splitting
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \
-- -n $SYSLOGD_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
sleep 1
start
}
case "$1" in
start|stop|restart)
"$1";;
reload)
# Restart, since there is no true "reload" feature.
restart;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
+55
View File
@@ -0,0 +1,55 @@
#!/bin/sh
DAEMON="klogd"
PIDFILE="/var/run/$DAEMON.pid"
KLOGD_ARGS=""
# shellcheck source=/dev/null
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
# BusyBox' klogd does not create a pidfile, so pass "-n" in the command line
# and use "-m" to instruct start-stop-daemon to create one.
start() {
printf 'Starting %s: ' "$DAEMON"
# shellcheck disable=SC2086 # we need the word splitting
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/sbin/$DAEMON" \
-- -n $KLOGD_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
sleep 1
start
}
case "$1" in
start|stop|restart)
"$1";;
reload)
# Restart, since there is no true "reload" feature.
restart;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
+1
View File
@@ -0,0 +1 @@
../procps-ng/S02sysctl
+42
View File
@@ -0,0 +1,42 @@
#!/bin/sh
#
# Run the mdev daemon
#
DAEMON="mdev"
PIDFILE="/var/run/$DAEMON.pid"
start() {
echo -n "Starting $DAEMON... "
start-stop-daemon -S -b -m -p $PIDFILE -x /sbin/mdev -- -df
[ $? -eq 0 ] && echo "OK" || echo "ERROR"
# coldplug modules
find /sys/ -name modalias -print0 | \
xargs -0 sort -u | \
tr '\n' '\0' | \
xargs -0 modprobe -abq
}
stop() {
echo -n "Stopping $DAEMON... "
start-stop-daemon -K -p $PIDFILE
[ $? -eq 0 ] && echo "OK" || echo "ERROR"
}
restart() {
stop
start
}
case "$1" in
start|stop|restart)
"$1"
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
#
# Start watchdog
#
case "$1" in
start)
echo "Starting watchdog..."
watchdog -t PERIOD /dev/watchdog
;;
stop)
;;
restart|reload)
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
+39
View File
@@ -0,0 +1,39 @@
#!/bin/sh
#
# Start telnet....
#
TELNETD_ARGS=-F
[ -r /etc/default/telnet ] && . /etc/default/telnet
start() {
printf "Starting telnetd: "
start-stop-daemon -S -q -m -b -p /var/run/telnetd.pid \
-x /usr/sbin/telnetd -- $TELNETD_ARGS
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
stop() {
printf "Stopping telnetd: "
start-stop-daemon -K -q -p /var/run/telnetd.pid \
-x /usr/sbin/telnetd
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+5
View File
@@ -0,0 +1,5 @@
# From https://busybox.net/downloads/busybox-1.34.1.tar.bz2.sha256
sha256 415fbd89e5344c96acf449d94a6f956dbed62e18e835fc83e064db33a34bd549 busybox-1.34.1.tar.bz2
# Locally computed
sha256 bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548 LICENSE
sha256 b5a136ed67798e51fe2e0ca0b2a21cb01b904ff0c9f7d563a6292e276607e58f archival/libarchive/bz/LICENSE
+413
View File
@@ -0,0 +1,413 @@
################################################################################
#
# busybox
#
################################################################################
BUSYBOX_VERSION = 1.34.1
BUSYBOX_SITE = https://www.busybox.net/downloads
BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2
BUSYBOX_LICENSE = GPL-2.0, bzip2-1.0.4
BUSYBOX_LICENSE_FILES = LICENSE archival/libarchive/bz/LICENSE
BUSYBOX_CPE_ID_VENDOR = busybox
BUSYBOX_CFLAGS = \
$(TARGET_CFLAGS)
BUSYBOX_LDFLAGS = \
$(TARGET_LDFLAGS)
# Packages that provide commands that may also be busybox applets:
BUSYBOX_DEPENDENCIES = \
$(if $(BR2_PACKAGE_ATTR),attr) \
$(if $(BR2_PACKAGE_BASH),bash) \
$(if $(BR2_PACKAGE_BC),bc) \
$(if $(BR2_PACKAGE_BINUTILS),binutils) \
$(if $(BR2_PACKAGE_COREUTILS),coreutils) \
$(if $(BR2_PACKAGE_CPIO),cpio) \
$(if $(BR2_PACKAGE_DCRON),dcron) \
$(if $(BR2_PACKAGE_DEBIANUTILS),debianutils) \
$(if $(BR2_PACKAGE_DIFFUTILS),diffutils) \
$(if $(BR2_PACKAGE_DOS2UNIX),dos2unix) \
$(if $(BR2_PACKAGE_DOSFSTOOLS),dosfstools) \
$(if $(BR2_PACKAGE_E2FSPROGS),e2fsprogs) \
$(if $(BR2_PACKAGE_FBSET),fbset) \
$(if $(BR2_PACKAGE_GAWK),gawk) \
$(if $(BR2_PACKAGE_GREP),grep) \
$(if $(BR2_PACKAGE_GZIP),gzip) \
$(if $(BR2_PACKAGE_I2C_TOOLS),i2c-tools) \
$(if $(BR2_PACKAGE_IFENSLAVE),ifenslave) \
$(if $(BR2_PACKAGE_IFPLUGD),ifplugd) \
$(if $(BR2_PACKAGE_IFUPDOWN),ifupdown) \
$(if $(BR2_PACKAGE_IPCALC),ipcalc) \
$(if $(BR2_PACKAGE_IPROUTE2),iproute2) \
$(if $(BR2_PACKAGE_IPUTILS),iputils) \
$(if $(BR2_PACKAGE_KMOD),kmod) \
$(if $(BR2_PACKAGE_LESS),less) \
$(if $(BR2_PACKAGE_LSOF),lsof) \
$(if $(BR2_PACKAGE_MTD),mtd) \
$(if $(BR2_PACKAGE_NET_TOOLS),net-tools) \
$(if $(BR2_PACKAGE_NETCAT),netcat) \
$(if $(BR2_PACKAGE_NETCAT_OPENSBSD),netcat-openbsd) \
$(if $(BR2_PACKAGE_NMAP),nmap) \
$(if $(BR2_PACKAGE_NTP),ntp) \
$(if $(BR2_PACKAGE_PCIUTILS),pciutils) \
$(if $(BR2_PACKAGE_PROCPS_NG),procps-ng) \
$(if $(BR2_PACKAGE_PSMISC),psmisc) \
$(if $(BR2_PACKAGE_START_STOP_DAEMON),start-stop-daemon) \
$(if $(BR2_PACKAGE_SYSKLOGD),sysklogd) \
$(if $(BR2_PACKAGE_SYSTEMD),systemd) \
$(if $(BR2_PACKAGE_SYSVINIT),sysvinit) \
$(if $(BR2_PACKAGE_TAR),tar) \
$(if $(BR2_PACKAGE_TFTPD),tftpd) \
$(if $(BR2_PACKAGE_TRACEROUTE),traceroute) \
$(if $(BR2_PACKAGE_UNZIP),unzip) \
$(if $(BR2_PACKAGE_USBUTILS),usbutils) \
$(if $(BR2_PACKAGE_UTIL_LINUX),util-linux) \
$(if $(BR2_PACKAGE_VIM),vim) \
$(if $(BR2_PACKAGE_WATCHDOG),watchdog) \
$(if $(BR2_PACKAGE_WGET),wget) \
$(if $(BR2_PACKAGE_WHOIS),whois)
# Link against libtirpc if available so that we can leverage its RPC
# support for NFS mounting with BusyBox
ifeq ($(BR2_PACKAGE_LIBTIRPC),y)
BUSYBOX_DEPENDENCIES += libtirpc host-pkgconf
BUSYBOX_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`"
# Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for
# the non-final link of modules as well.
BUSYBOX_CFLAGS_busybox += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`"
endif
# Allows the build system to tweak CFLAGS
BUSYBOX_MAKE_ENV = \
$(TARGET_MAKE_ENV) \
CFLAGS="$(BUSYBOX_CFLAGS)" \
CFLAGS_busybox="$(BUSYBOX_CFLAGS_busybox)"
ifeq ($(BR2_REPRODUCIBLE),y)
BUSYBOX_MAKE_ENV += \
KCONFIG_NOTIMESTAMP=1
endif
BUSYBOX_MAKE_OPTS = \
CC="$(TARGET_CC)" \
ARCH=$(KERNEL_ARCH) \
PREFIX="$(TARGET_DIR)" \
EXTRA_LDFLAGS="$(BUSYBOX_LDFLAGS)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
CONFIG_PREFIX="$(TARGET_DIR)" \
SKIP_STRIP=y
ifndef BUSYBOX_CONFIG_FILE
BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
endif
BUSYBOX_KCONFIG_SUPPORTS_DEFCONFIG = NO
BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE)
BUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES))
BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig
BUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS)
ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y)
define BUSYBOX_PERMISSIONS
# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE.
# 12 Applets are pulled from applets.h using grep command :
# grep -r -e "APPLET.*BB_SUID_REQUIRE\|APPLET.*BB_SUID_MAYBE" \
# $(@D)/include/applets.h
# These applets are added to the device table and the makedev file
# ignores the files with type 'F' ( optional files).
/usr/bin/wall F 4755 0 0 - - - - -
/bin/ping F 4755 0 0 - - - - -
/bin/ping6 F 4755 0 0 - - - - -
/usr/bin/crontab F 4755 0 0 - - - - -
/sbin/findfs F 4755 0 0 - - - - -
/bin/login F 4755 0 0 - - - - -
/bin/mount F 4755 0 0 - - - - -
/usr/bin/passwd F 4755 0 0 - - - - -
/bin/su F 4755 0 0 - - - - -
/usr/bin/traceroute F 4755 0 0 - - - - -
/usr/bin/traceroute6 F 4755 0 0 - - - - -
/usr/bin/vlock F 4755 0 0 - - - - -
endef
else
define BUSYBOX_PERMISSIONS
/bin/busybox f 4755 0 0 - - - - -
endef
endif
# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d
ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y)
define BUSYBOX_INSTALL_MDEV_SCRIPT
$(INSTALL) -D -m 0755 package/busybox/S10mdev \
$(TARGET_DIR)/etc/init.d/S10mdev
endef
define BUSYBOX_INSTALL_MDEV_CONF
$(INSTALL) -D -m 0644 package/busybox/mdev.conf \
$(TARGET_DIR)/etc/mdev.conf
endef
define BUSYBOX_SET_MDEV
$(call KCONFIG_ENABLE_OPT,CONFIG_MDEV)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE)
endef
endif
# sha passwords need USE_BB_CRYPT_SHA
ifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256)$(BR2_TARGET_GENERIC_PASSWD_SHA512),y)
define BUSYBOX_SET_CRYPT_SHA
$(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_CRYPT_SHA)
endef
endif
ifeq ($(BR2_USE_MMU),y)
define BUSYBOX_SET_MMU
$(call KCONFIG_DISABLE_OPT,CONFIG_NOMMU)
endef
else
define BUSYBOX_SET_MMU
$(call KCONFIG_ENABLE_OPT,CONFIG_NOMMU)
$(call KCONFIG_DISABLE_OPT,CONFIG_SWAPON)
$(call KCONFIG_DISABLE_OPT,CONFIG_SWAPOFF)
$(call KCONFIG_DISABLE_OPT,CONFIG_ASH)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BASH_COMPAT)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BRACE_EXPANSION)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_HELP)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_INTERACTIVE)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_SAVEHISTORY)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_JOB)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_TICK)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_IF)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOOPS)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_CASE)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_FUNCTIONS)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOCAL)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_RANDOM_SUPPORT)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_EXPORT_N)
$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_MODE_X)
endef
endif
# If we're using static libs do the same for busybox
ifeq ($(BR2_STATIC_LIBS),y)
define BUSYBOX_PREFER_STATIC
$(call KCONFIG_ENABLE_OPT,CONFIG_STATIC)
endef
endif
define BUSYBOX_INSTALL_UDHCPC_SCRIPT
if grep -q CONFIG_UDHCPC=y $(@D)/.config; then \
$(INSTALL) -m 0755 -D package/busybox/udhcpc.script \
$(TARGET_DIR)/usr/share/udhcpc/default.script; \
$(INSTALL) -m 0755 -d \
$(TARGET_DIR)/usr/share/udhcpc/default.script.d; \
fi
endef
define BUSYBOX_INSTALL_ZCIP_SCRIPT
if grep -q CONFIG_ZCIP=y $(@D)/.config; then \
$(INSTALL) -m 0755 -D $(@D)/examples/zcip.script \
$(TARGET_DIR)/usr/share/zcip/default.script; \
fi
endef
ifeq ($(BR2_INIT_BUSYBOX),y)
define BUSYBOX_SET_INIT
$(call KCONFIG_ENABLE_OPT,CONFIG_INIT)
endef
ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
define BUSYBOX_SET_GETTY
$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \
$(TARGET_DIR)/etc/inittab
endef
else
define BUSYBOX_SET_GETTY
$(SED) '/# GENERIC_SERIAL$$/s~^.*#~#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 #~' $(TARGET_DIR)/etc/inittab
endef
endif # BR2_TARGET_GENERIC_GETTY
BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY
BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB
endif # BR2_INIT_BUSYBOX
ifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX),y)
BUSYBOX_DEPENDENCIES += host-pkgconf libselinux libsepol
define BUSYBOX_SET_SELINUX
$(call KCONFIG_ENABLE_OPT,CONFIG_SELINUX)
$(call KCONFIG_ENABLE_OPT,CONFIG_SELINUXENABLED)
endef
endif
# enable relevant options to allow the Busybox less applet to be used
# as a systemd pager
ifeq ($(BR2_PACKAGE_SYSTEMD):$(BR2_PACKAGE_LESS),y:)
define BUSYBOX_SET_LESS_FLAGS
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_DASHCMD)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_RAW)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_TRUNCATE)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_FLAGS)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_ENV)
endef
endif
ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y)
define BUSYBOX_SET_INDIVIDUAL_BINARIES
$(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX)
$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL)
endef
define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES
rm -f $(TARGET_DIR)/bin/busybox
endef
endif
# Only install our logging scripts if no other package does it.
ifeq ($(BR2_PACKAGE_SYSKLOGD)$(BR2_PACKAGE_RSYSLOG)$(BR2_PACKAGE_SYSLOG_NG),)
define BUSYBOX_INSTALL_LOGGING_SCRIPT
if grep -q CONFIG_SYSLOGD=y $(@D)/.config; \
then \
$(INSTALL) -m 0755 -D package/busybox/S01syslogd \
$(TARGET_DIR)/etc/init.d/S01syslogd; \
fi; \
if grep -q CONFIG_KLOGD=y $(@D)/.config; \
then \
$(INSTALL) -m 0755 -D package/busybox/S02klogd \
$(TARGET_DIR)/etc/init.d/S02klogd; \
fi
endef
endif
# Only install our sysctl scripts if no other package does it.
ifeq ($(BR2_PACKAGE_PROCPS_NG),)
define BUSYBOX_INSTALL_SYSCTL_SCRIPT
if grep -q CONFIG_BB_SYSCTL=y $(@D)/.config; \
then \
$(INSTALL) -m 0755 -D package/busybox/S02sysctl \
$(TARGET_DIR)/etc/init.d/S02sysctl ; \
fi
endef
endif
ifeq ($(BR2_INIT_BUSYBOX),y)
define BUSYBOX_INSTALL_INITTAB
if test ! -e $(TARGET_DIR)/etc/inittab; then \
$(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab; \
fi
endef
endif
ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y)
define BUSYBOX_SET_WATCHDOG
$(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG)
endef
define BUSYBOX_INSTALL_WATCHDOG_SCRIPT
$(INSTALL) -D -m 0755 package/busybox/S15watchdog \
$(TARGET_DIR)/etc/init.d/S15watchdog
$(SED) s/PERIOD/$(call qstrip,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD))/ \
$(TARGET_DIR)/etc/init.d/S15watchdog
endef
endif
# PAM support requires thread support in the toolchain
ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
define BUSYBOX_LINUX_PAM
$(call KCONFIG_ENABLE_OPT,CONFIG_PAM)
endef
BUSYBOX_DEPENDENCIES += linux-pam
else
define BUSYBOX_LINUX_PAM
$(call KCONFIG_DISABLE_OPT,CONFIG_PAM)
endef
endif
# Telnet support
define BUSYBOX_INSTALL_TELNET_SCRIPT
if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \
$(INSTALL) -m 0755 -D package/busybox/S50telnet \
$(TARGET_DIR)/etc/init.d/S50telnet ; \
fi
endef
define BUSYBOX_INSTALL_TELNET_SERVICE
if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \
$(INSTALL) -D -m 0644 package/busybox/telnetd.service \
$(TARGET_DIR)/usr/lib/systemd/system/telnetd.service ; \
fi
endef
# Add /bin/{a,hu}sh to /etc/shells otherwise some login tools like dropbear
# can reject the user connection. See man shells.
define BUSYBOX_INSTALL_ADD_TO_SHELLS
if grep -q CONFIG_ASH=y $(BUSYBOX_DIR)/.config; then \
grep -qsE '^/bin/ash$$' $(TARGET_DIR)/etc/shells \
|| echo "/bin/ash" >> $(TARGET_DIR)/etc/shells; \
fi
if grep -q CONFIG_HUSH=y $(BUSYBOX_DIR)/.config; then \
grep -qsE '^/bin/hush$$' $(TARGET_DIR)/etc/shells \
|| echo "/bin/hush" >> $(TARGET_DIR)/etc/shells; \
fi
endef
BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS
define BUSYBOX_KCONFIG_FIXUP_CMDS
$(BUSYBOX_SET_MMU)
$(BUSYBOX_PREFER_STATIC)
$(BUSYBOX_SET_MDEV)
$(BUSYBOX_SET_CRYPT_SHA)
$(BUSYBOX_LINUX_PAM)
$(BUSYBOX_SET_INIT)
$(BUSYBOX_SET_WATCHDOG)
$(BUSYBOX_SET_SELINUX)
$(BUSYBOX_SET_LESS_FLAGS)
$(BUSYBOX_SET_INDIVIDUAL_BINARIES)
endef
define BUSYBOX_BUILD_CMDS
$(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D)
endef
define BUSYBOX_INSTALL_TARGET_CMDS
# Use the 'noclobber' install rule, to prevent BusyBox from overwriting
# any full-blown versions of apps installed by other packages.
$(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install-noclobber
$(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES)
$(BUSYBOX_INSTALL_INITTAB)
$(BUSYBOX_INSTALL_UDHCPC_SCRIPT)
$(BUSYBOX_INSTALL_ZCIP_SCRIPT)
$(BUSYBOX_INSTALL_MDEV_CONF)
endef
# Install the sysvinit scripts, for the moment, but not those that already
# have a corresponding one in openrc.
define BUSYBOX_INSTALL_INIT_OPENRC
$(BUSYBOX_INSTALL_MDEV_SCRIPT)
$(BUSYBOX_INSTALL_LOGGING_SCRIPT)
$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
$(BUSYBOX_INSTALL_TELNET_SCRIPT)
endef
define BUSYBOX_INSTALL_INIT_SYSTEMD
$(BUSYBOX_INSTALL_TELNET_SERVICE)
endef
define BUSYBOX_INSTALL_INIT_SYSV
$(BUSYBOX_INSTALL_MDEV_SCRIPT)
$(BUSYBOX_INSTALL_LOGGING_SCRIPT)
$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
$(BUSYBOX_INSTALL_SYSCTL_SCRIPT)
$(BUSYBOX_INSTALL_TELNET_SCRIPT)
endef
# Checks to give errors that the user can understand
# Must be before we call to kconfig-package
ifeq ($(BR2_PACKAGE_BUSYBOX)$(BR_BUILDING),yy)
ifeq ($(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)),)
$(error No BusyBox configuration file specified, check your BR2_PACKAGE_BUSYBOX_CONFIG setting)
endif
endif
$(eval $(kconfig-package))
+39
View File
@@ -0,0 +1,39 @@
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# 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>:<runlevels>:<action>:<process>
#
# 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/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts /dev/shm
::sysinit:/bin/mount -a
::sysinit:/sbin/swapon -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
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# Put a getty on the serial port
#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
+39
View File
@@ -0,0 +1,39 @@
# null may already exist; therefore ownership has to be changed with command
null root:root 666 @chmod 666 $MDEV
zero root:root 666
full root:root 666
random root:root 444
urandom root:root 444
hwrandom root:root 444
grsec root:root 660
kmem root:root 640
mem root:root 640
port root:root 640
# console may already exist; therefore ownership has to be changed with command
console root:tty 600 @chmod 600 $MDEV
ptmx root:tty 666
pty.* root:tty 660
# Typical devices
tty root:tty 666
tty[0-9]* root:tty 660
vcsa*[0-9]* root:tty 660
ttyS[0-9]* root:root 660
ttyUSB[0-9]* root:root 660
# alsa sound devices
snd/pcm.* root:audio 660
snd/control.* root:audio 660
snd/midi.* root:audio 660
snd/seq root:audio 660
snd/timer root:audio 660
# input stuff
input/event[0-9]+ root:root 640
input/mice root:root 640
input/mouse[0-9] root:root 640
input/ts[0-9] root:root 600
# load modules
$MODALIAS=.* root:root 660 @modprobe "$MODALIAS"
+10
View File
@@ -0,0 +1,10 @@
[Unit]
Description=Telnetd Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/telnetd -F
[Install]
WantedBy=multi-user.target
+122
View File
@@ -0,0 +1,122 @@
#!/bin/sh
# udhcpc script edited by Tim Riker <Tim@Rikers.org>
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
ACTION="$1"
RESOLV_CONF="/etc/resolv.conf"
[ -e $RESOLV_CONF ] || touch $RESOLV_CONF
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
# Handle stateful DHCPv6 like DHCPv4
[ -n "$ipv6" ] && ip="$ipv6/128"
if [ -z "${IF_WAIT_DELAY}" ]; then
IF_WAIT_DELAY=10
fi
wait_for_ipv6_default_route() {
printf "Waiting for IPv6 default route to appear"
while [ $IF_WAIT_DELAY -gt 0 ]; do
if ip -6 route list | grep -q default; then
printf "\n"
return
fi
sleep 1
printf "."
: $((IF_WAIT_DELAY -= 1))
done
printf " timeout!\n"
}
case "$ACTION" in
deconfig)
/sbin/ifconfig $interface up
/sbin/ifconfig $interface 0.0.0.0
# drop info from this interface
# resolv.conf may be a symlink to /tmp/, so take care
TMPFILE=$(mktemp)
grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE
cat $TMPFILE > $RESOLV_CONF
rm -f $TMPFILE
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface
fi
;;
leasefail|nak)
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -c $interface || /usr/sbin/avahi-autoipd -wD $interface --no-chroot
fi
;;
renew|bound)
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface
fi
/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
if [ -n "$ipv6" ] ; then
wait_for_ipv6_default_route
fi
# RFC3442: If the DHCP server returns both a Classless
# Static Routes option and a Router option, the DHCP
# client MUST ignore the Router option.
if [ -n "$staticroutes" ]; then
echo "deleting routers"
route -n | while read dest gw mask flags metric ref use iface; do
[ "$iface" != "$interface" -o "$gw" = "0.0.0.0" ] || \
route del -net "$dest" netmask "$mask" gw "$gw" dev "$interface"
done
# format: dest1/mask gw1 ... destn/mask gwn
set -- $staticroutes
while [ -n "$1" -a -n "$2" ]; do
route add -net "$1" gw "$2" dev "$interface"
shift 2
done
elif [ -n "$router" ] ; then
echo "deleting routers"
while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do
:
done
for i in $router ; do
route add default gw $i dev $interface
done
fi
# drop info from this interface
# resolv.conf may be a symlink to /tmp/, so take care
TMPFILE=$(mktemp)
grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE
cat $TMPFILE > $RESOLV_CONF
rm -f $TMPFILE
# prefer rfc3397 domain search list (option 119) if available
if [ -n "$search" ]; then
search_list=$search
elif [ -n "$domain" ]; then
search_list=$domain
fi
[ -n "$search_list" ] &&
echo "search $search_list # $interface" >> $RESOLV_CONF
for i in $dns ; do
echo adding dns $i
echo "nameserver $i # $interface" >> $RESOLV_CONF
done
;;
esac
HOOK_DIR="$0.d"
for hook in "${HOOK_DIR}/"*; do
[ -f "${hook}" -a -x "${hook}" ] || continue
"${hook}" "$ACTION"
done
exit 0