mirror of
https://git.yoctoproject.org/poky
synced 2026-02-09 18:23:02 +01:00
In ISO live, if the size of efi.img > 32MB, and copy EFI application
(bootx64.efi) to efi.img behind of kernel and initrd, UEFI system
could not find EFI application bootx64.efi
Using QEMU+OVMF to boot ISO live image, press ESC to enter UEFI shell:
...
Shell> ls FS0:\
Directory of: FS0:\
04/05/2011 23:00 12,985,344 bzImage
04/05/2011 23:00 <DIR> 2,048 EFI
04/05/2011 23:00 20,494,696 initrd
04/05/2011 23:00 26 startup.nsh
3 File(s) 33,480,066 bytes
1 Dir(s)
Shell> ls FS0:\EFI
Directory of: FS0:\EFI
0 File(s) 0 bytes
0 Dir(s)
...
In following case, add 64MB extra space to bootable image efi.img,
and the partition table of EFI is truncated to 26.3M
$ echo 'IMAGE_FSTYPES:pn-core-image-minimal = " live"' >> conf/local.conf
$ echo 'MACHINE_FEATURES:append = " efi pcbios"' >> conf/local.conf
$ echo '# 64MB extra space to bootable image efi.img' >> conf/local.conf
$ echo 'BOOTIMG_EXTRA_SPACE = "65535"' >> conf/local.conf
$ bitbake core-image-minimal
$ fdisk -l tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.iso
...
Device Boot Start End Sectors Size Id Type
tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.iso1 * 0 376831 376832 184M 0 Empty
tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.iso2 120 54079 53960 26.3M ef EFI (FAT-12/16/32)
According to page 11: `Figure 5 - Section Entry' in El Torito Bootable
CD-ROM Format Specification [1]. The sector count takes 2 byte which
means max sector count is 0xffff (65535), for 512-byte sector, the
size of bootable image is no more than 32MB (65536 * 512 / 1024 / 1024)
This commit truncate to 32MB if image size larger than 32MB, and
report a warning, then save the extra image sector count to
vendor unique selection criteria
After apply this commit, the partition table of EFI is truncated to 32M
$ fdisk -l tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.iso
...
Device Boot Start End Sectors Size Id Type
tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.iso1 * 0 376831 376832 184M 0 Empty
tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.iso2 120 65654 65535 32M ef EFI (FAT-12/16/32)
[1]https://pdos.csail.mit.edu/6.828/2017/readings/boot-cdrom.pdf
(From OE-Core rev: 259bb8907d8bfe1217e88a3b6935c160e5a92f8d)
(From OE-Core rev: d184f119c26983c2f15b47a25204049d0525c871)
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
47 lines
1.8 KiB
BlitzBasic
47 lines
1.8 KiB
BlitzBasic
# cdrtools-native OE build file
|
|
# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
|
|
# Released under the MIT license (see packages/COPYING)
|
|
SUMMARY = "A set of tools for CD recording, including cdrecord"
|
|
HOMEPAGE = "http://sourceforge.net/projects/cdrtools/"
|
|
DESCRIPTION = "cdrecord tool is Highly portable CD/DVD/BluRay command line recording software."
|
|
SECTION = "console/utils"
|
|
LICENSE = "GPL-2.0-only & CDDL-1.0 & LGPL-2.1-or-later"
|
|
LIC_FILES_CHKSUM = "file://COPYING;md5=32f68170be424c2cd64804337726b312"
|
|
|
|
DEPENDS += "gnu-config-native"
|
|
|
|
SRC_URI = " \
|
|
${SOURCEFORGE_MIRROR}/project/cdrtools/cdrtools-${PV}.tar.bz2 \
|
|
file://0001-Don-t-set-uid-gid-during-install.patch \
|
|
file://riscv64-linux-gcc.rul \
|
|
file://gcc14-fix.patch \
|
|
file://0001-fix-nsectors-exceeds-0xffff-situation.patch \
|
|
"
|
|
|
|
SRC_URI[md5sum] = "7d45c5b7e1f78d85d1583b361aee6e8b"
|
|
SRC_URI[sha256sum] = "ed282eb6276c4154ce6a0b5dee0bdb81940d0cbbfc7d03f769c4735ef5f5860f"
|
|
|
|
EXTRA_OEMAKE = "-e MAKEFLAGS= CPPOPTX='${CPPFLAGS}' COPTX='${CFLAGS}' C++OPTX='${CXXFLAGS}' LDOPTX='${LDFLAGS}' GMAKE_NOWARN='true'"
|
|
|
|
# Stop failures when 'cc' can't be found
|
|
export ac_cv_prog_CC = "${CC}"
|
|
|
|
inherit sourceforge-releases native
|
|
|
|
# Use -std=gnu89 to build with gcc-14 (https://bugs.gentoo.org/903876)
|
|
# this needs to be after native inherit (which sets CFLAGS to BUILD_CFLAGS)
|
|
CFLAGS += "-std=gnu89"
|
|
|
|
do_configure() {
|
|
# cdda2wav does not build with GCC 14
|
|
rm -f ${S}/TARGETS/55cdda2wav
|
|
|
|
install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/autoconf
|
|
install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/autoconf
|
|
install -m 0644 ${UNPACKDIR}/riscv64-linux-gcc.rul ${S}/RULES/
|
|
}
|
|
|
|
do_install() {
|
|
make install GMAKE_NOWARN=true INS_BASE=${prefix} DESTDIR=${D}
|
|
}
|