diff options
Diffstat (limited to 'recipes/images/base-image.bb')
-rw-r--r-- | recipes/images/base-image.bb | 86 |
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. |