summaryrefslogtreecommitdiff
path: root/recipes/images/base-image.bb
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/images/base-image.bb')
-rw-r--r--recipes/images/base-image.bb86
1 files changed, 86 insertions, 0 deletions
diff --git a/recipes/images/base-image.bb b/recipes/images/base-image.bb
new file mode 100644
index 0000000000..295e0ed449
--- /dev/null
+++ b/recipes/images/base-image.bb
@@ -0,0 +1,86 @@
+# This image is intended to provide a basic configuration that allows
+# you to access a newly flashed device over the network or via the
+# native console, and use ipkg to install (from feeds accessible via
+# the network) any further features you require into internal flash
+# memory or onto attached storage.
+
+# It should be as small as possible, while still achieving that goal.
+
+# The rationale for naming it 'base-image' is that this image is the
+# base upon which you can install any other functionality you desire.
+
+# See the end of this file for further rationale and policy regarding
+# the contents of this image, and the criteria which are used to make
+# decisions about adding and removing packages from this image.
+
+# Although it is only fully tested with the Angstrom distro, this
+# image is intended to be distro-agnostic.
+
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
+
+DISTRO_SSH_DAEMON ?= "dropbear"
+
+DISTRO_PACKAGE_MANAGER ?= "ipkg ipkg-collateral"
+
+# FIXME: We need a distro-indendent way of specifying feed configs.
+# Once the RFC for the DISTRO_FEED_CONFIGS variable name is approved,
+# we can remove this default definition and set it in the distro config.
+DISTRO_FEED_CONFIGS ?= "${ANGSTROM_FEED_CONFIGS}"
+
+DEPENDS = "\
+ task-boot \
+ ${DISTRO_SSH_DAEMON} \
+ ${DISTRO_PACKAGE_MANAGER} \
+ ${DISTRO_FEED_CONFIGS} \
+ ${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
+ ${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
+ "
+
+IMAGE_INSTALL = "\
+ task-boot \
+ ${DISTRO_SSH_DAEMON} \
+ ${DISTRO_PACKAGE_MANAGER} \
+ ${DISTRO_FEED_CONFIGS} \
+ ${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
+ ${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
+ "
+
+export IMAGE_BASENAME = "base-image"
+IMAGE_LINGUAS = ""
+
+inherit image
+
+# Key features of this image are:
+
+# 1) Must be able to mount attached storage devices like SD cards, CF
+# cards, internal disks, external USB disks, etc. Should support
+# various filesystem choices, but ext2 at a minimum. The rationale
+# for this is that you need storage to be able to install significant
+# new functionality.
+
+# 2) Must be able to boot from internal flash, or directly from a
+# filesystem stored on the attached storage. The rationale for this
+# is that you will want to boot from attached storage instead of
+# messing around with ipkg-link.
+
+# Rationale and policy:
+
+# 'base-image' is the smallest possible image which allows you to ssh
+# into a device via it's native network interface, and install
+# packages from feeds across the network into internal flash or onto
+# an attached storage device.
+
+# It is "larger" than minimal-image (which is strictly only that which
+# is required to boot and get ssh access to the device, and nothing
+# else), but is "smaller" than console-image (which has a whole lot of
+# stuff in it which could easily be ipkg installed after boot rather
+# than being in the initial rootfs).
+
+# It is required to always be small enough to fit in the internal
+# flash rootfs partition of an NSLU2 (as an example of the smaller end
+# of flash sizes that OE supports), and features will be removed from
+# the image to ensure that this is always the case. Any feature that
+# can be installed over the network using the package manager after
+# the first boot is always fair game for removal at any time, and
+# patches are welcome to make base-image as small as possible while
+# still retaining the ability to subsequently install that feature.