summaryrefslogtreecommitdiffstats
path: root/meta/classes/boot-directdisk.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/boot-directdisk.bbclass')
-rw-r--r--meta/classes/boot-directdisk.bbclass20
1 files changed, 20 insertions, 0 deletions
diff --git a/meta/classes/boot-directdisk.bbclass b/meta/classes/boot-directdisk.bbclass
index 31690432dd..182957b106 100644
--- a/meta/classes/boot-directdisk.bbclass
+++ b/meta/classes/boot-directdisk.bbclass
@@ -34,6 +34,7 @@ BOOTDD_EXTRA_SPACE ?= "16384"
34# Get the build_syslinux_cfg() function from the syslinux class 34# Get the build_syslinux_cfg() function from the syslinux class
35 35
36AUTO_SYSLINUXCFG = "1" 36AUTO_SYSLINUXCFG = "1"
37DISK_SIGNATURE ?= "${DISK_SIGNATURE_GENERATED}"
37SYSLINUX_ROOT ?= "root=/dev/sda2" 38SYSLINUX_ROOT ?= "root=/dev/sda2"
38SYSLINUX_TIMEOUT ?= "10" 39SYSLINUX_TIMEOUT ?= "10"
39 40
@@ -80,6 +81,9 @@ build_boot_dd() {
80 parted $IMAGE set 1 boot on 81 parted $IMAGE set 1 boot on
81 parted $IMAGE print 82 parted $IMAGE print
82 83
84 echo -ne "$(echo ${DISK_SIGNATURE} | fold -w 2 | tac | paste -sd '' | sed 's/\(..\)/\\x&/g')" | \
85 dd of=$IMAGE bs=1 seek=440 conv=notrunc
86
83 OFFSET=`expr $END2 / 512` 87 OFFSET=`expr $END2 / 512`
84 dd if=${STAGING_DATADIR}/syslinux/mbr.bin of=$IMAGE conv=notrunc 88 dd if=${STAGING_DATADIR}/syslinux/mbr.bin of=$IMAGE conv=notrunc
85 dd if=$HDDIMG of=$IMAGE conv=notrunc seek=1 bs=512 89 dd if=$HDDIMG of=$IMAGE conv=notrunc seek=1 bs=512
@@ -91,8 +95,24 @@ build_boot_dd() {
91} 95}
92 96
93python do_bootdirectdisk() { 97python do_bootdirectdisk() {
98 validate_disk_signature(d)
94 bb.build.exec_func('build_syslinux_cfg', d) 99 bb.build.exec_func('build_syslinux_cfg', d)
95 bb.build.exec_func('build_boot_dd', d) 100 bb.build.exec_func('build_boot_dd', d)
96} 101}
97 102
103def generate_disk_signature():
104 import uuid
105
106 return str(uuid.uuid4())[:8]
107
108def validate_disk_signature(d):
109 import re
110
111 disk_signature = d.getVar("DISK_SIGNATURE", True)
112
113 if not re.match(r'^[0-9a-fA-F]{8}$', disk_signature):
114 bb.fatal("DISK_SIGNATURE '%s' must be an 8 digit hex string" % disk_signature)
115
116DISK_SIGNATURE_GENERATED := "${@generate_disk_signature()}"
117
98addtask bootdirectdisk before do_build 118addtask bootdirectdisk before do_build