diff options
Diffstat (limited to 'meta/classes')
| -rw-r--r-- | meta/classes/bootimg.bbclass | 71 | ||||
| -rw-r--r-- | meta/classes/syslinux.bbclass | 68 |
2 files changed, 76 insertions, 63 deletions
diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass index dbaa677600..0554ffa00a 100644 --- a/meta/classes/bootimg.bbclass +++ b/meta/classes/bootimg.bbclass | |||
| @@ -17,36 +17,26 @@ | |||
| 17 | # in syslinux. Actions based on the label are then performed (e.g. installing to | 17 | # in syslinux. Actions based on the label are then performed (e.g. installing to |
| 18 | # an hdd) | 18 | # an hdd) |
| 19 | 19 | ||
| 20 | # External variables | 20 | # External variables (also used by syslinux.bbclass) |
| 21 | # ${INITRD} - indicates a filesystem image to use as an initrd (optional) | 21 | # ${INITRD} - indicates a filesystem image to use as an initrd (optional) |
| 22 | # ${NOISO} - skip building the ISO image if set to 1 | ||
| 22 | # ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) | 23 | # ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) |
| 23 | # ${AUTO_SYSLINUXCFG} - set this to 1 to enable creating an automatic config | ||
| 24 | # ${LABELS} - a list of targets for the automatic config | ||
| 25 | # ${APPEND} - an override list of append strings for each label | ||
| 26 | # ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited | ||
| 27 | 24 | ||
| 28 | do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ | 25 | do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ |
| 29 | syslinux:do_populate_sysroot \ | 26 | mtools-native:do_populate_sysroot \ |
| 30 | syslinux-native:do_populate_sysroot \ | 27 | cdrtools-native:do_populate_sysroot" |
| 31 | mtools-native:do_populate_sysroot \ | ||
| 32 | cdrtools-native:do_populate_sysroot" | ||
| 33 | 28 | ||
| 34 | PACKAGES = " " | 29 | PACKAGES = " " |
| 35 | EXCLUDE_FROM_WORLD = "1" | 30 | EXCLUDE_FROM_WORLD = "1" |
| 36 | 31 | ||
| 37 | HDDDIR = "${S}/hdd/boot" | 32 | HDDDIR = "${S}/hdd/boot" |
| 38 | ISODIR = "${S}/cd/isolinux" | 33 | ISODIR = "${S}/cd" |
| 39 | 34 | ||
| 40 | BOOTIMG_VOLUME_ID ?= "boot" | 35 | BOOTIMG_VOLUME_ID ?= "boot" |
| 41 | BOOTIMG_EXTRA_SPACE ?= "512" | 36 | BOOTIMG_EXTRA_SPACE ?= "512" |
| 42 | 37 | ||
| 43 | # Get the build_syslinux_cfg() function from the syslinux class | ||
| 44 | |||
| 45 | SYSLINUXCFG = "${HDDDIR}/syslinux.cfg" | ||
| 46 | SYSLINUXMENU = "${HDDDIR}/menu" | ||
| 47 | |||
| 48 | inherit syslinux | 38 | inherit syslinux |
| 49 | 39 | ||
| 50 | build_iso() { | 40 | build_iso() { |
| 51 | # Only create an ISO if we have an INITRD and NOISO was not set | 41 | # Only create an ISO if we have an INITRD and NOISO was not set |
| 52 | if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then | 42 | if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then |
| @@ -56,31 +46,12 @@ build_iso() { | |||
| 56 | 46 | ||
| 57 | install -d ${ISODIR} | 47 | install -d ${ISODIR} |
| 58 | 48 | ||
| 59 | # Install the kernel | 49 | syslinux_iso_populate |
| 60 | install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \ | ||
| 61 | ${ISODIR}/vmlinuz | ||
| 62 | |||
| 63 | # Install the configuration files | ||
| 64 | cp ${HDDDIR}/syslinux.cfg ${ISODIR}/isolinux.cfg | ||
| 65 | |||
| 66 | if [ -f ${SYSLINUXMENU} ]; then | ||
| 67 | cp ${SYSLINUXMENU} ${ISODIR} | ||
| 68 | fi | ||
| 69 | |||
| 70 | install -m 0644 ${INITRD} ${ISODIR}/initrd | ||
| 71 | |||
| 72 | if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then | ||
| 73 | install -m 0644 ${ROOTFS} ${ISODIR}/rootfs.img | ||
| 74 | fi | ||
| 75 | |||
| 76 | # And install the syslinux stuff | ||
| 77 | cp ${STAGING_LIBDIR}/syslinux/isolinux.bin ${ISODIR} | ||
| 78 | 50 | ||
| 79 | mkisofs -V ${BOOTIMG_VOLUME_ID} \ | 51 | mkisofs -V ${BOOTIMG_VOLUME_ID} \ |
| 80 | -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ | 52 | -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ |
| 81 | -b isolinux/isolinux.bin -c isolinux/boot.cat -r \ | 53 | -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ |
| 82 | -no-emul-boot -boot-load-size 4 -boot-info-table \ | 54 | ${MKISOFS_OPTIONS} ${ISODIR} |
| 83 | ${S}/cd/ | ||
| 84 | 55 | ||
| 85 | cd ${DEPLOY_DIR_IMAGE} | 56 | cd ${DEPLOY_DIR_IMAGE} |
| 86 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso | 57 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso |
| @@ -91,34 +62,24 @@ build_hddimg() { | |||
| 91 | # Create an HDD image | 62 | # Create an HDD image |
| 92 | if [ "${NOHDD}" != "1" ] ; then | 63 | if [ "${NOHDD}" != "1" ] ; then |
| 93 | install -d ${HDDDIR} | 64 | install -d ${HDDDIR} |
| 94 | install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \ | 65 | syslinux_hddimg_populate |
| 95 | ${HDDDIR}/vmlinuz | ||
| 96 | |||
| 97 | if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then | ||
| 98 | install -m 0644 ${INITRD} ${HDDDIR}/initrd | ||
| 99 | fi | ||
| 100 | |||
| 101 | if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then | ||
| 102 | install -m 0644 ${ROOTFS} ${HDDDIR}/rootfs.img | ||
| 103 | fi | ||
| 104 | 66 | ||
| 105 | install -m 444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${HDDDIR}/ldlinux.sys | 67 | # Determine the block count for the final image |
| 106 | |||
| 107 | # Do a little math, bash style | ||
| 108 | BLOCKS=`du -bks ${HDDDIR} | cut -f 1` | 68 | BLOCKS=`du -bks ${HDDDIR} | cut -f 1` |
| 109 | SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}` | 69 | SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}` |
| 110 | 70 | ||
| 111 | mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \ | 71 | mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \ |
| 112 | -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE | 72 | -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE |
| 73 | |||
| 74 | syslinux_hddimg_install | ||
| 113 | 75 | ||
| 114 | syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg | ||
| 115 | chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg | 76 | chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg |
| 116 | 77 | ||
| 117 | cd ${DEPLOY_DIR_IMAGE} | 78 | cd ${DEPLOY_DIR_IMAGE} |
| 118 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg | 79 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg |
| 119 | ln -s ${IMAGE_NAME}.hddimg ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg | 80 | ln -s ${IMAGE_NAME}.hddimg ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg |
| 120 | fi | 81 | fi |
| 121 | } | 82 | } |
| 122 | 83 | ||
| 123 | python do_bootimg() { | 84 | python do_bootimg() { |
| 124 | bb.build.exec_func('build_syslinux_cfg', d) | 85 | bb.build.exec_func('build_syslinux_cfg', d) |
diff --git a/meta/classes/syslinux.bbclass b/meta/classes/syslinux.bbclass index 0cc6b851bc..6eb804b75c 100644 --- a/meta/classes/syslinux.bbclass +++ b/meta/classes/syslinux.bbclass | |||
| @@ -2,7 +2,63 @@ | |||
| 2 | # Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved | 2 | # Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved |
| 3 | # Released under the MIT license (see packages/COPYING) | 3 | # Released under the MIT license (see packages/COPYING) |
| 4 | 4 | ||
| 5 | # This creates a configuration file suitable for use with syslinux. | 5 | # Provide syslinux specific functions for building bootable images. |
| 6 | |||
| 7 | # External variables | ||
| 8 | # ${INITRD} - indicates a filesystem image to use as an initrd (optional) | ||
| 9 | # ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) | ||
| 10 | # ${AUTO_SYSLINUXMENU} - set this to 1 to enable creating an automatic menu | ||
| 11 | # ${LABELS} - a list of targets for the automatic config | ||
| 12 | # ${APPEND} - an override list of append strings for each label | ||
| 13 | # ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited | ||
| 14 | |||
| 15 | do_bootimg[depends] += "syslinux:do_populate_sysroot \ | ||
| 16 | syslinux-native:do_populate_sysroot" | ||
| 17 | |||
| 18 | SYSLINUXCFG = "syslinux.cfg" | ||
| 19 | SYSLINUXMENU = "menu" | ||
| 20 | |||
| 21 | SYSLINUX_ISODIR = "${ISODIR}/isolinux" | ||
| 22 | SYSLINUX_HDDDIR = "${HDDDIR}" | ||
| 23 | ISO_BOOTIMG = "isolinux/isolinux.bin" | ||
| 24 | ISO_BOOTCAT = "isolinux/boot.cat" | ||
| 25 | MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table" | ||
| 26 | |||
| 27 | syslinux_populate() { | ||
| 28 | DEST=$1 | ||
| 29 | CFGNAME=$2 | ||
| 30 | |||
| 31 | install -d ${DEST} | ||
| 32 | |||
| 33 | # Install the kernel, initrd, and rootfs | ||
| 34 | install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage ${DEST}/vmlinuz | ||
| 35 | if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then | ||
| 36 | install -m 0644 ${INITRD} ${DEST}/initrd | ||
| 37 | fi | ||
| 38 | if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then | ||
| 39 | install -m 0644 ${ROOTFS} ${DEST}/rootfs.img | ||
| 40 | fi | ||
| 41 | |||
| 42 | # Install the config files | ||
| 43 | install -m 0644 ${SYSLINUXCFG} ${DEST}/${CFGNAME} | ||
| 44 | if [ -f ${SYSLINUXMENU} ]; then | ||
| 45 | install -m 0644 ${SYSLINUXMENU} ${DEST} | ||
| 46 | fi | ||
| 47 | } | ||
| 48 | |||
| 49 | syslinux_iso_populate() { | ||
| 50 | syslinux_populate ${SYSLINUX_ISODIR} isolinux.cfg | ||
| 51 | install -m 0644 ${STAGING_LIBDIR}/syslinux/isolinux.bin ${SYSLINUX_ISODIR} | ||
| 52 | } | ||
| 53 | |||
| 54 | syslinux_hddimg_populate() { | ||
| 55 | syslinux_populate ${SYSLINUX_HDDDIR} syslinux.cfg | ||
| 56 | install -m 0444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${SYSLINUX_HDDDIR}/ldlinux.sys | ||
| 57 | } | ||
| 58 | |||
| 59 | syslinux_hddimg_install() { | ||
| 60 | syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg | ||
| 61 | } | ||
| 6 | 62 | ||
| 7 | python build_syslinux_menu () { | 63 | python build_syslinux_menu () { |
| 8 | import copy | 64 | import copy |
| @@ -26,10 +82,8 @@ python build_syslinux_menu () { | |||
| 26 | if not cfile: | 82 | if not cfile: |
| 27 | raise bb.build.FuncFailed('Unable to read SYSLINUXMENU') | 83 | raise bb.build.FuncFailed('Unable to read SYSLINUXMENU') |
| 28 | 84 | ||
| 29 | bb.mkdirhier(os.path.dirname(cfile)) | ||
| 30 | |||
| 31 | try: | 85 | try: |
| 32 | cfgfile = file(cfile, 'w') | 86 | cfgfile = file(cfile, 'w') |
| 33 | except OSError: | 87 | except OSError: |
| 34 | raise bb.build.funcFailed('Unable to open %s' % (cfile)) | 88 | raise bb.build.funcFailed('Unable to open %s' % (cfile)) |
| 35 | 89 | ||
| @@ -85,10 +139,8 @@ python build_syslinux_cfg () { | |||
| 85 | if not cfile: | 139 | if not cfile: |
| 86 | raise bb.build.FuncFailed('Unable to read SYSLINUXCFG') | 140 | raise bb.build.FuncFailed('Unable to read SYSLINUXCFG') |
| 87 | 141 | ||
| 88 | bb.mkdirhier(os.path.dirname(cfile)) | ||
| 89 | |||
| 90 | try: | 142 | try: |
| 91 | cfgfile = file(cfile, 'w') | 143 | cfgfile = file(cfile, 'w') |
| 92 | except OSError: | 144 | except OSError: |
| 93 | raise bb.build.funcFailed('Unable to open %s' % (cfile)) | 145 | raise bb.build.funcFailed('Unable to open %s' % (cfile)) |
| 94 | 146 | ||
| @@ -103,7 +155,7 @@ python build_syslinux_cfg () { | |||
| 103 | if opts: | 155 | if opts: |
| 104 | for opt in opts.split(';'): | 156 | for opt in opts.split(';'): |
| 105 | cfgfile.write('%s\n' % opt) | 157 | cfgfile.write('%s\n' % opt) |
| 106 | 158 | ||
| 107 | cfgfile.write('ALLOWOPTIONS 1\n'); | 159 | cfgfile.write('ALLOWOPTIONS 1\n'); |
| 108 | cfgfile.write('DEFAULT %s\n' % (labels.split()[0])) | 160 | cfgfile.write('DEFAULT %s\n' % (labels.split()[0])) |
| 109 | 161 | ||
