summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/bootimg.bbclass31
-rw-r--r--meta/classes/grub-efi.bbclass28
-rw-r--r--meta/classes/syslinux.bbclass34
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 @@
8# End result is two things: 8# End result is two things:
9# 9#
10# 1. A .hddimg file which is an msdos filesystem containing syslinux, a kernel, 10# 1. A .hddimg file which is an msdos filesystem containing syslinux, a kernel,
11# an initrd and a rootfs image. These can be written to harddisks directly and 11# an initrd and a rootfs image. These can be written to harddisks directly and
12# also booted on USB flash disks (write them there with dd). 12# also booted on USB flash disks (write them there with dd).
13# 13#
14# 2. A CD .iso image 14# 2. A CD .iso image
15 15
16# Boot process is that the initrd will boot and process which label was selected 16# Boot process is that the initrd will boot and process which label was selected
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 (also used by syslinux.bbclass) 20# External variables (also used by syslinux.bbclass)
@@ -29,8 +29,8 @@ do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
29PACKAGES = " " 29PACKAGES = " "
30EXCLUDE_FROM_WORLD = "1" 30EXCLUDE_FROM_WORLD = "1"
31 31
32HDDDIR = "${S}/hdd/boot" 32HDDDIR = "${S}/hddimg"
33ISODIR = "${S}/cd" 33ISODIR = "${S}/iso"
34 34
35BOOTIMG_VOLUME_ID ?= "boot" 35BOOTIMG_VOLUME_ID ?= "boot"
36BOOTIMG_EXTRA_SPACE ?= "512" 36BOOTIMG_EXTRA_SPACE ?= "512"
@@ -58,6 +58,22 @@ PCBIOS_CLASS = ${@pcbios_class(d)}
58inherit ${PCBIOS_CLASS} 58inherit ${PCBIOS_CLASS}
59inherit ${EFI_CLASS} 59inherit ${EFI_CLASS}
60 60
61populate() {
62 DEST=$1
63 install -d ${DEST}
64
65 # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use.
66 install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage ${DEST}/vmlinuz
67
68 if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
69 install -m 0644 ${INITRD} ${DEST}/initrd
70 fi
71
72 if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then
73 install -m 0644 ${ROOTFS} ${DEST}/rootfs.img
74 fi
75
76}
61 77
62build_iso() { 78build_iso() {
63 # Only create an ISO if we have an INITRD and NOISO was not set 79 # Only create an ISO if we have an INITRD and NOISO was not set
@@ -66,7 +82,7 @@ build_iso() {
66 return 82 return
67 fi 83 fi
68 84
69 install -d ${ISODIR} 85 populate ${ISODIR}
70 86
71 if [ "${PCBIOS}" = "1" ]; then 87 if [ "${PCBIOS}" = "1" ]; then
72 syslinux_iso_populate 88 syslinux_iso_populate
@@ -95,7 +111,8 @@ build_iso() {
95build_hddimg() { 111build_hddimg() {
96 # Create an HDD image 112 # Create an HDD image
97 if [ "${NOHDD}" != "1" ] ; then 113 if [ "${NOHDD}" != "1" ] ; then
98 install -d ${HDDDIR} 114 populate ${HDDDIR}
115
99 if [ "${PCBIOS}" = "1" ]; then 116 if [ "${PCBIOS}" = "1" ]; then
100 syslinux_hddimg_populate 117 syslinux_hddimg_populate
101 fi 118 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"
22GRUB_OPTS ?= "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" 22GRUB_OPTS ?= "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
23 23
24EFIDIR = "/EFI/BOOT" 24EFIDIR = "/EFI/BOOT"
25GRUB_HDDDIR = "${HDDDIR}${EFIDIR}"
26GRUB_ISODIR = "${ISODIR}${EFIDIR}"
27 25
28grubefi_populate() { 26grubefi_populate() {
27 # DEST must be the root of the image so that EFIDIR is not
28 # nested under a top level directory.
29 DEST=$1 29 DEST=$1
30 30
31 install -d ${DEST} 31 install -d ${DEST}${EFIDIR}
32
33 install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage ${DEST}/vmlinuz
34
35 if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
36 install -m 0644 ${INITRD} ${DEST}/initrd
37 fi
38
39 if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then
40 install -m 0644 ${ROOTFS} ${DEST}/rootfs.img
41 fi
42 32
43 GRUB_IMAGE="bootia32.efi" 33 GRUB_IMAGE="bootia32.efi"
44 if [ "${TARGET_ARCH}" = "x86_64" ]; then 34 if [ "${TARGET_ARCH}" = "x86_64" ]; then
45 GRUB_IMAGE="bootx64.efi" 35 GRUB_IMAGE="bootx64.efi"
46 fi 36 fi
47 install -m 0644 ${DEPLOY_DIR_IMAGE}/${GRUB_IMAGE} ${DEST} 37 install -m 0644 ${DEPLOY_DIR_IMAGE}/${GRUB_IMAGE} ${DEST}${EFIDIR}
48 38
49 install -m 0644 ${GRUBCFG} ${DEST} 39 install -m 0644 ${GRUBCFG} ${DEST}${EFIDIR}
50} 40}
51 41
52grubefi_iso_populate() { 42grubefi_iso_populate() {
53 grubefi_populate ${GRUB_ISODIR} 43 grubefi_populate ${ISODIR}
54} 44}
55 45
56grubefi_hddimg_populate() { 46grubefi_hddimg_populate() {
57 grubefi_populate ${GRUB_HDDDIR} 47 grubefi_populate ${HDDDIR}
58} 48}
59 49
60python build_grub_cfg() { 50python build_grub_cfg() {
@@ -109,7 +99,7 @@ python build_grub_cfg() {
109 bb.data.update_data(localdata) 99 bb.data.update_data(localdata)
110 100
111 cfgfile.write('\nmenuentry \'%s\'{\n' % (label)) 101 cfgfile.write('\nmenuentry \'%s\'{\n' % (label))
112 cfgfile.write('linux ${EFIDIR}/vmlinuz LABEL=%s' % (label)) 102 cfgfile.write('linux /vmlinuz LABEL=%s' % (label))
113 103
114 append = localdata.getVar('APPEND', True) 104 append = localdata.getVar('APPEND', True)
115 initrd = localdata.getVar('INITRD', True) 105 initrd = localdata.getVar('INITRD', True)
@@ -119,7 +109,7 @@ python build_grub_cfg() {
119 cfgfile.write('\n') 109 cfgfile.write('\n')
120 110
121 if initrd: 111 if initrd:
122 cfgfile.write('initrd ${EFIDIR}/initrd') 112 cfgfile.write('initrd /initrd')
123 cfgfile.write('\n}\n') 113 cfgfile.write('\n}\n')
124 114
125 cfgfile.close() 115 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 \
18SYSLINUXCFG = "${S}/syslinux.cfg" 18SYSLINUXCFG = "${S}/syslinux.cfg"
19SYSLINUXMENU = "${S}/menu" 19SYSLINUXMENU = "${S}/menu"
20 20
21SYSLINUX_ISODIR = "${ISODIR}/isolinux" 21ISOLINUXDIR = "/isolinux"
22SYSLINUX_HDDDIR = "${HDDDIR}" 22SYSLINUXDIR = "/"
23ISO_BOOTIMG = "isolinux/isolinux.bin" 23ISO_BOOTIMG = "isolinux/isolinux.bin"
24ISO_BOOTCAT = "isolinux/boot.cat" 24ISO_BOOTCAT = "isolinux/boot.cat"
25MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table" 25MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table"
26 26
27syslinux_populate() { 27syslinux_populate() {
28 DEST=$1 28 DEST=$1
29 CFGNAME=$2 29 BOOTDIR=$2
30 CFGNAME=$3
30 31
31 install -d ${DEST} 32 install -d ${DEST}${BOOTDIR}
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 33
42 # Install the config files 34 # Install the config files
43 install -m 0644 ${SYSLINUXCFG} ${DEST}/${CFGNAME} 35 install -m 0644 ${SYSLINUXCFG} ${DEST}${BOOTDIR}/${CFGNAME}
44 if [ -f ${SYSLINUXMENU} ]; then 36 if [ -f ${SYSLINUXMENU} ]; then
45 install -m 0644 ${SYSLINUXMENU} ${DEST} 37 install -m 0644 ${SYSLINUXMENU} ${DEST}${BOOTDIR}
46 fi 38 fi
47} 39}
48 40
49syslinux_iso_populate() { 41syslinux_iso_populate() {
50 syslinux_populate ${SYSLINUX_ISODIR} isolinux.cfg 42 syslinux_populate ${ISODIR} ${ISOLINUXDIR} isolinux.cfg
51 install -m 0644 ${STAGING_LIBDIR}/syslinux/isolinux.bin ${SYSLINUX_ISODIR} 43 install -m 0644 ${STAGING_LIBDIR}/syslinux/isolinux.bin ${ISODIR}${ISOLINUXDIR}
52} 44}
53 45
54syslinux_hddimg_populate() { 46syslinux_hddimg_populate() {
55 syslinux_populate ${SYSLINUX_HDDDIR} syslinux.cfg 47 syslinux_populate ${HDDDIR} ${SYSLINUXDIR} syslinux.cfg
56 install -m 0444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${SYSLINUX_HDDDIR}/ldlinux.sys 48 install -m 0444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${HDDDIR}${SYSLINUXDIR}/ldlinux.sys
57} 49}
58 50
59syslinux_hddimg_install() { 51syslinux_hddimg_install() {
@@ -187,7 +179,7 @@ python build_syslinux_cfg () {
187 localdata.setVar('OVERRIDES', label + ':' + overrides) 179 localdata.setVar('OVERRIDES', label + ':' + overrides)
188 bb.data.update_data(localdata) 180 bb.data.update_data(localdata)
189 181
190 cfgfile.write('LABEL %s\nKERNEL vmlinuz\n' % (label)) 182 cfgfile.write('LABEL %s\nKERNEL /vmlinuz\n' % (label))
191 183
192 append = localdata.getVar('APPEND', 1) 184 append = localdata.getVar('APPEND', 1)
193 initrd = localdata.getVar('INITRD', 1) 185 initrd = localdata.getVar('INITRD', 1)
@@ -196,7 +188,7 @@ python build_syslinux_cfg () {
196 cfgfile.write('APPEND ') 188 cfgfile.write('APPEND ')
197 189
198 if initrd: 190 if initrd:
199 cfgfile.write('initrd=initrd ') 191 cfgfile.write('initrd=/initrd ')
200 192
201 cfgfile.write('LABEL=%s '% (label)) 193 cfgfile.write('LABEL=%s '% (label))
202 194