mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

Since systemd v245 (commit 6cd12ebcfe459466257ea63022a32515d756e719), systemd-boot expects default entry to have the complete filename as value. LABELS from poky are by default without any suffixes like "boot install", so default entry does not have the .conf suffix as well and systemd-boot is not able to use this information and it's starting in any case the first entry. To be able to start another entry by default, .conf suffix is required. With this change, LABELS variable can still be used by other bootloaders and being used as description field. (From OE-Core rev: 1adf70729dafc9729e665986ad2e2250cbd25c5b) Signed-off-by: Charles-Antoine Couret <charles-antoine.couret@mind.be> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
78 lines
2.0 KiB
Plaintext
78 lines
2.0 KiB
Plaintext
#
|
|
# Copyright OpenEmbedded Contributors
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
|
|
SYSTEMD_BOOT_ENTRIES ?= ""
|
|
SYSTEMD_BOOT_TIMEOUT ?= "10"
|
|
|
|
# Uses MACHINE specific KERNEL_IMAGETYPE
|
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
|
|
|
# Need UUID utility code.
|
|
inherit fs-uuid
|
|
|
|
python build_efi_cfg() {
|
|
s = d.getVar("S")
|
|
labels = d.getVar('LABELS')
|
|
if not labels:
|
|
bb.debug(1, "LABELS not defined, nothing to do")
|
|
return
|
|
|
|
if labels == []:
|
|
bb.debug(1, "No labels, nothing to do")
|
|
return
|
|
|
|
cfile = d.getVar('SYSTEMD_BOOT_CFG')
|
|
cdir = os.path.dirname(cfile)
|
|
if not os.path.exists(cdir):
|
|
os.makedirs(cdir)
|
|
try:
|
|
cfgfile = open(cfile, 'w')
|
|
except OSError:
|
|
bb.fatal('Unable to open %s' % cfile)
|
|
|
|
cfgfile.write('# Automatically created by OE\n')
|
|
cfgfile.write('default %s.conf\n' % (labels.split()[0]))
|
|
timeout = d.getVar('SYSTEMD_BOOT_TIMEOUT')
|
|
if timeout:
|
|
cfgfile.write('timeout %s\n' % timeout)
|
|
else:
|
|
cfgfile.write('timeout 10\n')
|
|
cfgfile.close()
|
|
|
|
for label in labels.split():
|
|
localdata = d.createCopy()
|
|
|
|
entryfile = "%s/%s.conf" % (s, label)
|
|
if not os.path.exists(s):
|
|
os.makedirs(s)
|
|
d.appendVar("SYSTEMD_BOOT_ENTRIES", " " + entryfile)
|
|
try:
|
|
entrycfg = open(entryfile, "w")
|
|
except OSError:
|
|
bb.fatal('Unable to open %s' % entryfile)
|
|
|
|
entrycfg.write('title %s\n' % label)
|
|
|
|
kernel = localdata.getVar("KERNEL_IMAGETYPE")
|
|
entrycfg.write('linux /%s\n' % kernel)
|
|
|
|
append = localdata.getVar('APPEND')
|
|
initrd = localdata.getVar('INITRD')
|
|
|
|
if initrd:
|
|
entrycfg.write('initrd /initrd\n')
|
|
lb = label
|
|
if label == "install":
|
|
lb = "install-efi"
|
|
entrycfg.write('options LABEL=%s ' % lb)
|
|
if append:
|
|
append = replace_rootfs_uuid(d, append)
|
|
entrycfg.write('%s' % append)
|
|
entrycfg.write('\n')
|
|
entrycfg.close()
|
|
}
|