mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
bootimg: Pull syslinux specific bits into syslinux.bbclass
Working towards a more generic bootimg.bbclass, pull out all syslinux specific bits and let syslinux.bbclass manage them directly. This introduces no functional changes to the images constructed and the behavior remains unchanged. (From OE-Core rev: 1915293688d348a765aa0bcdf01168c9fecd9842) Signed-off-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
4cdd02fe10
commit
bcbd57aae5
@@ -17,34 +17,24 @@
|
|||||||
# in syslinux. Actions based on the label are then performed (e.g. installing to
|
# in syslinux. Actions based on the label are then performed (e.g. installing to
|
||||||
# an hdd)
|
# an hdd)
|
||||||
|
|
||||||
# External variables
|
# External variables (also used by syslinux.bbclass)
|
||||||
# ${INITRD} - indicates a filesystem image to use as an initrd (optional)
|
# ${INITRD} - indicates a filesystem image to use as an initrd (optional)
|
||||||
|
# ${NOISO} - skip building the ISO image if set to 1
|
||||||
# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
|
# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
|
||||||
# ${AUTO_SYSLINUXCFG} - set this to 1 to enable creating an automatic config
|
|
||||||
# ${LABELS} - a list of targets for the automatic config
|
|
||||||
# ${APPEND} - an override list of append strings for each label
|
|
||||||
# ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited
|
|
||||||
|
|
||||||
do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
|
do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
|
||||||
syslinux:do_populate_sysroot \
|
mtools-native:do_populate_sysroot \
|
||||||
syslinux-native:do_populate_sysroot \
|
cdrtools-native:do_populate_sysroot"
|
||||||
mtools-native:do_populate_sysroot \
|
|
||||||
cdrtools-native:do_populate_sysroot"
|
|
||||||
|
|
||||||
PACKAGES = " "
|
PACKAGES = " "
|
||||||
EXCLUDE_FROM_WORLD = "1"
|
EXCLUDE_FROM_WORLD = "1"
|
||||||
|
|
||||||
HDDDIR = "${S}/hdd/boot"
|
HDDDIR = "${S}/hdd/boot"
|
||||||
ISODIR = "${S}/cd/isolinux"
|
ISODIR = "${S}/cd"
|
||||||
|
|
||||||
BOOTIMG_VOLUME_ID ?= "boot"
|
BOOTIMG_VOLUME_ID ?= "boot"
|
||||||
BOOTIMG_EXTRA_SPACE ?= "512"
|
BOOTIMG_EXTRA_SPACE ?= "512"
|
||||||
|
|
||||||
# Get the build_syslinux_cfg() function from the syslinux class
|
|
||||||
|
|
||||||
SYSLINUXCFG = "${HDDDIR}/syslinux.cfg"
|
|
||||||
SYSLINUXMENU = "${HDDDIR}/menu"
|
|
||||||
|
|
||||||
inherit syslinux
|
inherit syslinux
|
||||||
|
|
||||||
build_iso() {
|
build_iso() {
|
||||||
@@ -56,31 +46,12 @@ build_iso() {
|
|||||||
|
|
||||||
install -d ${ISODIR}
|
install -d ${ISODIR}
|
||||||
|
|
||||||
# Install the kernel
|
syslinux_iso_populate
|
||||||
install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \
|
|
||||||
${ISODIR}/vmlinuz
|
|
||||||
|
|
||||||
# Install the configuration files
|
|
||||||
cp ${HDDDIR}/syslinux.cfg ${ISODIR}/isolinux.cfg
|
|
||||||
|
|
||||||
if [ -f ${SYSLINUXMENU} ]; then
|
|
||||||
cp ${SYSLINUXMENU} ${ISODIR}
|
|
||||||
fi
|
|
||||||
|
|
||||||
install -m 0644 ${INITRD} ${ISODIR}/initrd
|
|
||||||
|
|
||||||
if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then
|
|
||||||
install -m 0644 ${ROOTFS} ${ISODIR}/rootfs.img
|
|
||||||
fi
|
|
||||||
|
|
||||||
# And install the syslinux stuff
|
|
||||||
cp ${STAGING_LIBDIR}/syslinux/isolinux.bin ${ISODIR}
|
|
||||||
|
|
||||||
mkisofs -V ${BOOTIMG_VOLUME_ID} \
|
mkisofs -V ${BOOTIMG_VOLUME_ID} \
|
||||||
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
|
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
|
||||||
-b isolinux/isolinux.bin -c isolinux/boot.cat -r \
|
-b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \
|
||||||
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
${MKISOFS_OPTIONS} ${ISODIR}
|
||||||
${S}/cd/
|
|
||||||
|
|
||||||
cd ${DEPLOY_DIR_IMAGE}
|
cd ${DEPLOY_DIR_IMAGE}
|
||||||
rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso
|
rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso
|
||||||
@@ -91,27 +62,17 @@ build_hddimg() {
|
|||||||
# Create an HDD image
|
# Create an HDD image
|
||||||
if [ "${NOHDD}" != "1" ] ; then
|
if [ "${NOHDD}" != "1" ] ; then
|
||||||
install -d ${HDDDIR}
|
install -d ${HDDDIR}
|
||||||
install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \
|
syslinux_hddimg_populate
|
||||||
${HDDDIR}/vmlinuz
|
|
||||||
|
|
||||||
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
|
# Determine the block count for the final image
|
||||||
install -m 0644 ${INITRD} ${HDDDIR}/initrd
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then
|
|
||||||
install -m 0644 ${ROOTFS} ${HDDDIR}/rootfs.img
|
|
||||||
fi
|
|
||||||
|
|
||||||
install -m 444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${HDDDIR}/ldlinux.sys
|
|
||||||
|
|
||||||
# Do a little math, bash style
|
|
||||||
BLOCKS=`du -bks ${HDDDIR} | cut -f 1`
|
BLOCKS=`du -bks ${HDDDIR} | cut -f 1`
|
||||||
SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}`
|
SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}`
|
||||||
|
|
||||||
mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \
|
mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \
|
||||||
-C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE
|
-C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE
|
||||||
|
|
||||||
|
syslinux_hddimg_install
|
||||||
|
|
||||||
syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
|
|
||||||
chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
|
chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
|
||||||
|
|
||||||
cd ${DEPLOY_DIR_IMAGE}
|
cd ${DEPLOY_DIR_IMAGE}
|
||||||
|
|||||||
@@ -2,7 +2,63 @@
|
|||||||
# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
|
# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
|
||||||
# Released under the MIT license (see packages/COPYING)
|
# Released under the MIT license (see packages/COPYING)
|
||||||
|
|
||||||
# This creates a configuration file suitable for use with syslinux.
|
# Provide syslinux specific functions for building bootable images.
|
||||||
|
|
||||||
|
# External variables
|
||||||
|
# ${INITRD} - indicates a filesystem image to use as an initrd (optional)
|
||||||
|
# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
|
||||||
|
# ${AUTO_SYSLINUXMENU} - set this to 1 to enable creating an automatic menu
|
||||||
|
# ${LABELS} - a list of targets for the automatic config
|
||||||
|
# ${APPEND} - an override list of append strings for each label
|
||||||
|
# ${SYSLINUX_OPTS} - additional options to add to the syslinux file ';' delimited
|
||||||
|
|
||||||
|
do_bootimg[depends] += "syslinux:do_populate_sysroot \
|
||||||
|
syslinux-native:do_populate_sysroot"
|
||||||
|
|
||||||
|
SYSLINUXCFG = "syslinux.cfg"
|
||||||
|
SYSLINUXMENU = "menu"
|
||||||
|
|
||||||
|
SYSLINUX_ISODIR = "${ISODIR}/isolinux"
|
||||||
|
SYSLINUX_HDDDIR = "${HDDDIR}"
|
||||||
|
ISO_BOOTIMG = "isolinux/isolinux.bin"
|
||||||
|
ISO_BOOTCAT = "isolinux/boot.cat"
|
||||||
|
MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table"
|
||||||
|
|
||||||
|
syslinux_populate() {
|
||||||
|
DEST=$1
|
||||||
|
CFGNAME=$2
|
||||||
|
|
||||||
|
install -d ${DEST}
|
||||||
|
|
||||||
|
# Install the kernel, initrd, and rootfs
|
||||||
|
install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage ${DEST}/vmlinuz
|
||||||
|
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
|
||||||
|
install -m 0644 ${INITRD} ${DEST}/initrd
|
||||||
|
fi
|
||||||
|
if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then
|
||||||
|
install -m 0644 ${ROOTFS} ${DEST}/rootfs.img
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install the config files
|
||||||
|
install -m 0644 ${SYSLINUXCFG} ${DEST}/${CFGNAME}
|
||||||
|
if [ -f ${SYSLINUXMENU} ]; then
|
||||||
|
install -m 0644 ${SYSLINUXMENU} ${DEST}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
syslinux_iso_populate() {
|
||||||
|
syslinux_populate ${SYSLINUX_ISODIR} isolinux.cfg
|
||||||
|
install -m 0644 ${STAGING_LIBDIR}/syslinux/isolinux.bin ${SYSLINUX_ISODIR}
|
||||||
|
}
|
||||||
|
|
||||||
|
syslinux_hddimg_populate() {
|
||||||
|
syslinux_populate ${SYSLINUX_HDDDIR} syslinux.cfg
|
||||||
|
install -m 0444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${SYSLINUX_HDDDIR}/ldlinux.sys
|
||||||
|
}
|
||||||
|
|
||||||
|
syslinux_hddimg_install() {
|
||||||
|
syslinux ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
|
||||||
|
}
|
||||||
|
|
||||||
python build_syslinux_menu () {
|
python build_syslinux_menu () {
|
||||||
import copy
|
import copy
|
||||||
@@ -26,10 +82,8 @@ python build_syslinux_menu () {
|
|||||||
if not cfile:
|
if not cfile:
|
||||||
raise bb.build.FuncFailed('Unable to read SYSLINUXMENU')
|
raise bb.build.FuncFailed('Unable to read SYSLINUXMENU')
|
||||||
|
|
||||||
bb.mkdirhier(os.path.dirname(cfile))
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cfgfile = file(cfile, 'w')
|
cfgfile = file(cfile, 'w')
|
||||||
except OSError:
|
except OSError:
|
||||||
raise bb.build.funcFailed('Unable to open %s' % (cfile))
|
raise bb.build.funcFailed('Unable to open %s' % (cfile))
|
||||||
|
|
||||||
@@ -85,10 +139,8 @@ python build_syslinux_cfg () {
|
|||||||
if not cfile:
|
if not cfile:
|
||||||
raise bb.build.FuncFailed('Unable to read SYSLINUXCFG')
|
raise bb.build.FuncFailed('Unable to read SYSLINUXCFG')
|
||||||
|
|
||||||
bb.mkdirhier(os.path.dirname(cfile))
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cfgfile = file(cfile, 'w')
|
cfgfile = file(cfile, 'w')
|
||||||
except OSError:
|
except OSError:
|
||||||
raise bb.build.funcFailed('Unable to open %s' % (cfile))
|
raise bb.build.funcFailed('Unable to open %s' % (cfile))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user