summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Wilcox <andy@protium.com>2006-12-07 19:13:24 +0000
committerAndrew Wilcox <andy@protium.com>2006-12-07 19:13:24 +0000
commit5aa4a59b009bfd254976fa020456a3339612a308 (patch)
tree3ef4b3a26c88b3612315a4085cdb409b23fd6290
parent1d5f50bce888b5b4f20ff3bd14f6685f2c0355e7 (diff)
openprotium: bitbake file for flash image construction
-rw-r--r--packages/images/openprotium-image.bb135
1 files changed, 135 insertions, 0 deletions
diff --git a/packages/images/openprotium-image.bb b/packages/images/openprotium-image.bb
new file mode 100644
index 0000000000..ba25af373a
--- /dev/null
+++ b/packages/images/openprotium-image.bb
@@ -0,0 +1,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
+}