summaryrefslogtreecommitdiffstats
path: root/meta/classes/grub-efi.bbclass
blob: ec692f1646f3411b1e79ee25a49f610ed602eaf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
inherit grub-efi-cfg

efi_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}${EFIDIR}

	GRUB_IMAGE="grub-efi-bootia32.efi"
	DEST_IMAGE="bootia32.efi"
	if [ -n "${MLPREFIX}" ]; then
		if [ "${TARGET_ARCH_MULTILIB_ORIGINAL}" = "x86_64" ]; then
			GRUB_IMAGE="grub-efi-bootx64.efi"
			DEST_IMAGE="bootx64.efi"
		fi
	else
		if [ "${TARGET_ARCH}" = "x86_64" ]; then
			GRUB_IMAGE="grub-efi-bootx64.efi"
			DEST_IMAGE="bootx64.efi"
		fi
	fi
	install -m 0644 ${DEPLOY_DIR_IMAGE}/${GRUB_IMAGE} ${DEST}${EFIDIR}/${DEST_IMAGE}
	EFIPATH=$(echo "${EFIDIR}" | sed 's/\//\\/g')
	printf 'fs0:%s\%s\n' "$EFIPATH" "$DEST_IMAGE" >${DEST}/startup.nsh

	install -m 0644 ${GRUB_CFG} ${DEST}${EFIDIR}/grub.cfg
}

efi_iso_populate() {
	iso_dir=$1
	efi_populate $iso_dir
	# Build a EFI directory to create efi.img
	mkdir -p ${EFIIMGDIR}/${EFIDIR}
	cp $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR}
	cp $iso_dir/${KERNEL_IMAGETYPE} ${EFIIMGDIR}
	EFIPATH=$(echo "${EFIDIR}" | sed 's/\//\\/g')
	printf 'fs0:%s\%s\n' "$EFIPATH" "$GRUB_IMAGE" > ${EFIIMGDIR}/startup.nsh
	if [ -f "$iso_dir/initrd" ] ; then
		cp $iso_dir/initrd ${EFIIMGDIR}
	fi
}

efi_hddimg_populate() {
	efi_populate $1
}