meta-digi/meta-digi-dey/classes/dey-image.bbclass

81 lines
3.2 KiB
Plaintext

# DEY image features.
#
# Copyright (C) 2012 Digi International.
# DEY image features (alphabetical order)
PACKAGE_GROUP_dey-audio = "packagegroup-dey-audio"
PACKAGE_GROUP_dey-bluetooth = "packagegroup-dey-bluetooth"
PACKAGE_GROUP_dey-debug = "packagegroup-dey-debug"
PACKAGE_GROUP_dey-examples = "packagegroup-dey-examples"
PACKAGE_GROUP_dey-gstreamer = "packagegroup-dey-gstreamer"
PACKAGE_GROUP_dey-network = "packagegroup-dey-network"
PACKAGE_GROUP_dey-qt = "packagegroup-dey-qt"
PACKAGE_GROUP_dey-wireless = "packagegroup-dey-wireless"
## Auxiliar variables and functions (used in dey_rootfs_tuning)
LAYERS_REV = "${@'\n'.join(get_layers_branch_rev(d))}"
DEY_TAG = "${@dey_tag(d).strip()}"
def dey_tag(d):
import subprocess
for layer in d.getVar('BBLAYERS', True).split():
if 'meta-digi-dey' in layer:
cmd = 'git describe --tags --exact-match 2>/dev/null || true'
return subprocess.Popen(cmd, cwd=layer, shell=True, stdout=subprocess.PIPE).stdout.read()
return ""
## DEY rootfs final tuning
dey_rootfs_tuning() {
#######################################################################
## Create '/etc/build' with build statistics
#######################################################################
cat >${IMAGE_ROOTFS}/etc/build <<-_EOF_
TIMESTAMP=${DATETIME}
DEY_TAG=${DEY_TAG}
Layers revisions:
=================
${LAYERS_REV}
_EOF_
#######################################################################
## Set root password to 'root' if 'debug-tweaks' is NOT enabled.
## command: echo -n 'root' | mkpasswd -5 -s
#######################################################################
MD5_ROOT_PASSWD='$1$SML0de4S$lOWs3t82QAH0oEf8NyNKA0'
if echo "${IMAGE_FEATURES}" | grep -qs debug-tweaks; then
: # No-op
else
# Shadow passwords ENABLED
if [ -f "${IMAGE_ROOTFS}/etc/shadow" ]; then
sed 's%^root:[^:]*:%root:x:%' <${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new
sed "s%^root:[^:]*:%root:${MD5_ROOT_PASSWD}:%" <${IMAGE_ROOTFS}/etc/shadow >${IMAGE_ROOTFS}/etc/shadow.new
mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd
mv ${IMAGE_ROOTFS}/etc/shadow.new ${IMAGE_ROOTFS}/etc/shadow
# Shadow passwords DISABLED
else
sed "s%^root:[^:]*:%root:${MD5_ROOT_PASSWD}:%" <${IMAGE_ROOTFS}/etc/passwd >${IMAGE_ROOTFS}/etc/passwd.new
mv ${IMAGE_ROOTFS}/etc/passwd.new ${IMAGE_ROOTFS}/etc/passwd
fi
fi
#######################################################################
## WARNING:
## enable passwordless 'root' autologin in serial console and telnetd
## for testing purposes (when IMAGE_FEATURES contains 'dey-test')
#######################################################################
if echo "${IMAGE_FEATURES}" | grep -qs dey-test; then
if [ -f "${IMAGE_ROOTFS}/etc/inittab" ]; then
cat >${IMAGE_ROOTFS}/sbin/rootlogin <<-_EOF_
#!/bin/sh
exec /bin/login -f root
_EOF_
chmod u+x ${IMAGE_ROOTFS}/sbin/rootlogin
sed -i -e '
/^S.*getty/{
i\## WARNING: passwordless 'root' autologin enabled
a\~~::sysinit:/usr/sbin/telnetd -l /sbin/rootlogin
s,getty,getty -n -l /sbin/rootlogin,g
}' ${IMAGE_ROOTFS}/etc/inittab
rm -f ${IMAGE_ROOTFS}/etc/securetty
fi
fi
}