1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
DESCRIPTION = "OpenProtium image"
HOMEPAGE = "http://www.openprotium.com"
LICENSE = "MIT"
PR = "r0"
DEPENDS = "${MACHINE_TASK_PROVIDER}"
# SLUGOS_IMAGENAME defines the name of the image to be build, if it
# is not set this package will be skipped!
EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x10000 -D ${SLUGOS_DEVICE_TABLE}"
IMAGE_LINGUAS = ""
# Setting USE_DEVFS prevents *any* entries being created initially
# in /dev
USE_DEVFS = "1"
# This is passed to the image command to build the correct /dev
# directory (because only the image program can make actual
# dev entries!)
SLUGOS_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-slugos.txt')}"
# IMAGE_PREPROCESS_COMMAND is run before making the image. In SlugOS the
# kernel image is removed from the root file system to recover the space used -
# SlugOS is assumed to boot from a separate kernel image in flash (not in the
# root file system), if this is not the case the following must not be done!
IMAGE_PREPROCESS_COMMAND += "rm ${IMAGE_ROOTFS}/boot/uImage*;"
# Always just make a new flash image.
PACK_IMAGE = 'storcenter_pack_image;'
IMAGE_POSTPROCESS_COMMAND += "${PACK_IMAGE}"
PACK_IMAGE_DEPENDS = ""
#EXTRA_IMAGEDEPENDS += "${PACK_IMAGE_DEPENDS}"
# This hack removes '${MACHINE}' from the end of the arch.conf for ipk,
# preventing _mach.ipk (with no byte sex) taking precedence over everything
# else.
# but we want 'storcenter' in there so kernel modules work correctly.
#
#ROOTFS_POSTPROCESS_COMMAND += "sed -i '$d' '${IMAGE_ROOTFS}/etc/ipkg/arch.conf';"
# These depends define native utilities - they do not get put in the flash and
# are not required to build the image.
IMAGE_TOOLS = ""
#EXTRA_IMAGEDEPENDS += "${IMAGE_TOOLS}"
# CONFIG:
# SLUGOS_EXTRA_RDEPENDS: set in conf, things to add to the image
# SLUGOS_SUPPORT: set to here, see below, added to the image.
# SLUGOS_KERNEL: set here, kernel modules added to the image
#
# Do not override the last two unless you really know what you
# are doing - there is more information below.
# diff, cpio and find are required for reflash and turnup ram.
# Removing these probably leaves the system bootable, but standard
# openslug and ucslugc stuff won't work, so only take these out in
# very non-standard turnkey slugos builds.
#
# udev is the default way of handling devices, there is no guarantee
# that the static device table is completely correct (it is just
# known to be sufficient for boot.)
# we'ere still on 2.6.12 devfs....
#OPENPROTIUM_SUPPORT ?= "diffutils cpio findutils udev"
#
OPENPROTIUM_SUPPORT ?= "diffutils cpio findutils uboot-utils"
# kernel-module-af-packet must be in the image for DHCP to work
# kernel-module-netconsole is here because it is small and is
# highly useful on minimal systems (which really don't have anywhere
# other than the network to output error messages!)
SLUGOS_KERNEL ?= "kernel-module-af-packet kernel-module-netconsole \
kernel-module-mii "
# this gets /lib/modules made....
OPENPROTIUM_KERNEL = "kernel-module-dummy \
kernel-module-af-packet "
RDEPENDS = " \
kernel base-files base-passwd netbase \
busybox initscripts-openprotium slugos-init \
update-modules sysvinit tinylogin \
module-init-tools modutils-initscripts \
ipkg-collateral ipkg ipkg-link \
libgcc1 \
portmap \
dropbear \
e2fsprogs-blkid \
mdadm \
hdparm \
mtd-utils \
sccd \
util-linux-mount \
util-linux-umount \
util-linux-swaponoff \
util-linux-losetup \
${OPENPROTIUM_SUPPORT} \
${OPENPROTIUM_KERNEL} "
# ${SLUGOS_EXTRA_RDEPENDS}"
IPKG_INSTALL = "${RDEPENDS}"
inherit image_ipk
storcenter_pack_image() {
ls -ltr ${DEPLOY_DIR_IMAGE}/uImage*
pwd
echo ${IMAGE_NAME}
# find latest kernel
KERNEL=`ls -ltr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1 | awk '{print $9}'`
if [ -z "$KERNEL" ]; then
oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux-storcenter to create one."
exit 1
fi
ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
HEX_MAX_KERN_SIZE=170000
DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc `
HEX_MAX_ROOT_SIZE=590000
DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc `
KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then
oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $DEC_MAX_KERN_SIZE."
exit 1
fi
ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then
oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $DEC_MAX_ROOT_SIZE."
exit 1
fi
PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc `
dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
rm -f $PADFILE
ls -l $OUTPUT
}
|