diff options
| -rw-r--r-- | meta/classes/bootimg.bbclass | 31 | ||||
| -rw-r--r-- | meta/classes/grub-efi.bbclass | 28 | ||||
| -rw-r--r-- | meta/classes/syslinux.bbclass | 34 | 
3 files changed, 46 insertions, 47 deletions
| diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass index a717600cf9..1d1a3d04af 100644 --- a/meta/classes/bootimg.bbclass +++ b/meta/classes/bootimg.bbclass @@ -8,13 +8,13 @@  # End result is two things:  #  # 1. A .hddimg file which is an msdos filesystem containing syslinux, a kernel, -# an initrd and a rootfs image. These can be written to harddisks directly and  +# an initrd and a rootfs image. These can be written to harddisks directly and  # also booted on USB flash disks (write them there with dd).  #  # 2. A CD .iso image -# Boot process is that the initrd will boot and process which label was selected  -# in syslinux. Actions based on the label are then performed (e.g. installing to  +# Boot process is that the initrd will boot and process which label was selected +# in syslinux. Actions based on the label are then performed (e.g. installing to  # an hdd)  # External variables (also used by syslinux.bbclass) @@ -29,8 +29,8 @@ do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \  PACKAGES = " "  EXCLUDE_FROM_WORLD = "1" -HDDDIR = "${S}/hdd/boot" -ISODIR = "${S}/cd" +HDDDIR = "${S}/hddimg" +ISODIR = "${S}/iso"  BOOTIMG_VOLUME_ID   ?= "boot"  BOOTIMG_EXTRA_SPACE ?= "512" @@ -58,6 +58,22 @@ PCBIOS_CLASS = ${@pcbios_class(d)}  inherit ${PCBIOS_CLASS}  inherit ${EFI_CLASS} +populate() { +	DEST=$1 +	install -d ${DEST} + +	# Install bzImage, initrd, and rootfs.img in DEST for all loaders to use. +	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 + +}  build_iso() {  	# Only create an ISO if we have an INITRD and NOISO was not set @@ -66,7 +82,7 @@ build_iso() {  		return  	fi -	install -d ${ISODIR} +	populate ${ISODIR}  	if [ "${PCBIOS}" = "1" ]; then  		syslinux_iso_populate @@ -95,7 +111,8 @@ build_iso() {  build_hddimg() {  	# Create an HDD image  	if [ "${NOHDD}" != "1" ] ; then -		install -d ${HDDDIR} +		populate ${HDDDIR} +  		if [ "${PCBIOS}" = "1" ]; then  			syslinux_hddimg_populate  		fi diff --git a/meta/classes/grub-efi.bbclass b/meta/classes/grub-efi.bbclass index 762322b28e..1efb43b805 100644 --- a/meta/classes/grub-efi.bbclass +++ b/meta/classes/grub-efi.bbclass @@ -22,39 +22,29 @@ GRUB_TIMEOUT ?= "10"  GRUB_OPTS ?= "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"  EFIDIR = "/EFI/BOOT" -GRUB_HDDDIR = "${HDDDIR}${EFIDIR}" -GRUB_ISODIR = "${ISODIR}${EFIDIR}"  grubefi_populate() { +	# DEST must be the root of the image so that EFIDIR is not +	# nested under a top level directory.  	DEST=$1 -	install -d ${DEST} - -	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 -d ${DEST}${EFIDIR}  	GRUB_IMAGE="bootia32.efi"  	if [ "${TARGET_ARCH}" = "x86_64" ]; then  		GRUB_IMAGE="bootx64.efi"  	fi -	install -m 0644 ${DEPLOY_DIR_IMAGE}/${GRUB_IMAGE} ${DEST} +	install -m 0644 ${DEPLOY_DIR_IMAGE}/${GRUB_IMAGE} ${DEST}${EFIDIR} -	install -m 0644 ${GRUBCFG} ${DEST} +	install -m 0644 ${GRUBCFG} ${DEST}${EFIDIR}  }  grubefi_iso_populate() { -	grubefi_populate ${GRUB_ISODIR} +	grubefi_populate ${ISODIR}  }  grubefi_hddimg_populate() { -	grubefi_populate ${GRUB_HDDDIR} +	grubefi_populate ${HDDDIR}  }  python build_grub_cfg() { @@ -109,7 +99,7 @@ python build_grub_cfg() {          bb.data.update_data(localdata)          cfgfile.write('\nmenuentry \'%s\'{\n' % (label)) -        cfgfile.write('linux ${EFIDIR}/vmlinuz LABEL=%s' % (label)) +        cfgfile.write('linux /vmlinuz LABEL=%s' % (label))          append = localdata.getVar('APPEND', True)          initrd = localdata.getVar('INITRD', True) @@ -119,7 +109,7 @@ python build_grub_cfg() {          cfgfile.write('\n')          if initrd: -            cfgfile.write('initrd ${EFIDIR}/initrd') +            cfgfile.write('initrd /initrd')          cfgfile.write('\n}\n')      cfgfile.close() diff --git a/meta/classes/syslinux.bbclass b/meta/classes/syslinux.bbclass index 91c4275747..1569074b21 100644 --- a/meta/classes/syslinux.bbclass +++ b/meta/classes/syslinux.bbclass @@ -18,42 +18,34 @@ do_bootimg[depends] += "syslinux:do_populate_sysroot \  SYSLINUXCFG  = "${S}/syslinux.cfg"  SYSLINUXMENU = "${S}/menu" -SYSLINUX_ISODIR = "${ISODIR}/isolinux" -SYSLINUX_HDDDIR = "${HDDDIR}" +ISOLINUXDIR = "/isolinux" +SYSLINUXDIR = "/"  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 +	BOOTDIR=$2 +	CFGNAME=$3 -	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 -d ${DEST}${BOOTDIR}  	# Install the config files -	install -m 0644 ${SYSLINUXCFG} ${DEST}/${CFGNAME} +	install -m 0644 ${SYSLINUXCFG} ${DEST}${BOOTDIR}/${CFGNAME}  	if [ -f ${SYSLINUXMENU} ]; then -		install -m 0644 ${SYSLINUXMENU} ${DEST} +		install -m 0644 ${SYSLINUXMENU} ${DEST}${BOOTDIR}  	fi  }  syslinux_iso_populate() { -	syslinux_populate ${SYSLINUX_ISODIR} isolinux.cfg -	install -m 0644 ${STAGING_LIBDIR}/syslinux/isolinux.bin ${SYSLINUX_ISODIR} +	syslinux_populate ${ISODIR} ${ISOLINUXDIR} isolinux.cfg +	install -m 0644 ${STAGING_LIBDIR}/syslinux/isolinux.bin ${ISODIR}${ISOLINUXDIR}  }  syslinux_hddimg_populate() { -	syslinux_populate ${SYSLINUX_HDDDIR} syslinux.cfg -	install -m 0444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${SYSLINUX_HDDDIR}/ldlinux.sys +	syslinux_populate ${HDDDIR} ${SYSLINUXDIR} syslinux.cfg +	install -m 0444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${HDDDIR}${SYSLINUXDIR}/ldlinux.sys  }  syslinux_hddimg_install() { @@ -187,7 +179,7 @@ python build_syslinux_cfg () {  		localdata.setVar('OVERRIDES', label + ':' + overrides)  		bb.data.update_data(localdata) -		cfgfile.write('LABEL %s\nKERNEL vmlinuz\n' % (label)) +		cfgfile.write('LABEL %s\nKERNEL /vmlinuz\n' % (label))  		append = localdata.getVar('APPEND', 1)  		initrd = localdata.getVar('INITRD', 1) @@ -196,7 +188,7 @@ python build_syslinux_cfg () {  			cfgfile.write('APPEND ')  			if initrd: -				cfgfile.write('initrd=initrd ') +				cfgfile.write('initrd=/initrd ')  			cfgfile.write('LABEL=%s '% (label)) | 
