mirror of
https://git.yoctoproject.org/poky
synced 2026-04-18 12:32:12 +02:00
The generated filesystem has some errors that dosfsck is able to repair: dosfsck 2.11, 12 Mar 2005, FAT32, LFN Checking file /ldlinux.sys (LDLINUX.SYS) Checking file /initrd (INITRD) Checking file /syslinux.cfg (SYSLINUX.CFG) Checking file /EFI (EFI) Checking file /vmlinuz (VMLINUZ) Checking file /rootfs.img (ROOTFS.IMG) /vmlinuz File size is 4144896 bytes, cluster chain length is > 4145152 bytes. Truncating file to 4144896 bytes. Checking file /EFI/.. (..) Checking file /EFI/BOOT (BOOT) Checking file /EFI/. (.) /EFI/.. Start (16022) does not point to .. (0) /EFI/. Start (0) does not point to parent (16022) Checking file /EFI/BOOT/.. (..) Checking file /EFI/BOOT/. (.) Checking file /EFI/BOOT/initrd (INITRD) Checking file /EFI/BOOT/grub.cfg (GRUB.CFG) Checking file /EFI/BOOT/bootia32.efi (BOOTIA32.EFI) Checking file /EFI/BOOT/vmlinuz (VMLINUZ) Checking file /EFI/BOOT/rootfs.img (ROOTFS.IMG) /EFI/BOOT/.. Start (16021) does not point to .. (16022) /EFI/BOOT/. Start (0) does not point to parent (16021) /EFI/BOOT/vmlinuz File size is 4144896 bytes, cluster chain length is > 4145152 bytes. Truncating file to 4144896 bytes. Performing changes. /build/poky/fri2/tmp/deploy/images/core-image-minimal-fri2-noemgd-20111216000605.hddimg: 12 files, 26635/26828 clusters Add a dosfsck command following the mkdosfs command to correct these. (From OE-Core rev: 5d2554ec5f1d3b15e02b1d76cc9bd2d4861969f8) Signed-off-by: Darren Hart <dvhart@linux.intel.com> CC: Nitin A Kamble <nitin.a.kamble@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
137 lines
3.9 KiB
Plaintext
137 lines
3.9 KiB
Plaintext
# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
|
|
# Released under the MIT license (see packages/COPYING)
|
|
|
|
# Creates a bootable image using syslinux, your kernel and an optional
|
|
# initrd
|
|
|
|
#
|
|
# End result is two things:
|
|
#
|
|
# 1. A .hddimg file which is an msdos filesystem containing syslinux, a kernel,
|
|
# an initrd and a rootfs image. These can be written to harddisks directly and
|
|
# also booted on USB flash disks (write them there with dd).
|
|
#
|
|
# 2. A CD .iso image
|
|
|
|
# Boot process is that the initrd will boot and process which label was selected
|
|
# in syslinux. Actions based on the label are then performed (e.g. installing to
|
|
# an hdd)
|
|
|
|
# External variables (also used by syslinux.bbclass)
|
|
# ${INITRD} - indicates a filesystem image to use as an initrd (optional)
|
|
# ${NOISO} - skip building the ISO image if set to 1
|
|
# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
|
|
|
|
do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
|
|
mtools-native:do_populate_sysroot \
|
|
cdrtools-native:do_populate_sysroot"
|
|
|
|
PACKAGES = " "
|
|
EXCLUDE_FROM_WORLD = "1"
|
|
|
|
HDDDIR = "${S}/hdd/boot"
|
|
ISODIR = "${S}/cd"
|
|
|
|
BOOTIMG_VOLUME_ID ?= "boot"
|
|
BOOTIMG_EXTRA_SPACE ?= "512"
|
|
|
|
EFI = ${@base_contains("MACHINE_FEATURES", "efi", "1", "0", d)}
|
|
EFI_CLASS = ${@base_contains("MACHINE_FEATURES", "efi", "grub-efi", "dummy", d)}
|
|
|
|
# Include legacy boot if MACHINE_FEATURES includes "pcbios" or if it does not
|
|
# contain "efi". This way legacy is supported by default if neither is
|
|
# specified, maintaining the original behavior.
|
|
def pcbios(d):
|
|
pcbios = base_contains("MACHINE_FEATURES", "pcbios", "1", "0", d)
|
|
if pcbios == "0":
|
|
pcbios = base_contains("MACHINE_FEATURES", "efi", "0", "1", d)
|
|
return pcbios
|
|
|
|
def pcbios_class(d):
|
|
if d.getVar("PCBIOS", True) == "1":
|
|
return "syslinux"
|
|
return "dummy"
|
|
|
|
PCBIOS = ${@pcbios(d)}
|
|
PCBIOS_CLASS = ${@pcbios_class(d)}
|
|
|
|
inherit ${PCBIOS_CLASS}
|
|
inherit ${EFI_CLASS}
|
|
|
|
|
|
build_iso() {
|
|
# Only create an ISO if we have an INITRD and NOISO was not set
|
|
if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then
|
|
bbnote "ISO image will not be created."
|
|
return
|
|
fi
|
|
|
|
install -d ${ISODIR}
|
|
|
|
if [ "${PCBIOS}" = "1" ]; then
|
|
syslinux_iso_populate
|
|
fi
|
|
if [ "${EFI}" = "1" ]; then
|
|
grubefi_iso_populate
|
|
fi
|
|
|
|
if [ "${PCBIOS}" = "1" ]; then
|
|
mkisofs -V ${BOOTIMG_VOLUME_ID} \
|
|
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
|
|
-b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \
|
|
${MKISOFS_OPTIONS} ${ISODIR}
|
|
else
|
|
bbnote "EFI-only ISO images are untested, please provide feedback."
|
|
mkisofs -V ${BOOTIMG_VOLUME_ID} \
|
|
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
|
|
-r ${ISODIR}
|
|
fi
|
|
|
|
cd ${DEPLOY_DIR_IMAGE}
|
|
rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso
|
|
ln -s ${IMAGE_NAME}.iso ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso
|
|
}
|
|
|
|
build_hddimg() {
|
|
# Create an HDD image
|
|
if [ "${NOHDD}" != "1" ] ; then
|
|
install -d ${HDDDIR}
|
|
if [ "${PCBIOS}" = "1" ]; then
|
|
syslinux_hddimg_populate
|
|
fi
|
|
if [ "${EFI}" = "1" ]; then
|
|
grubefi_hddimg_populate
|
|
fi
|
|
|
|
# Determine the block count for the final image
|
|
BLOCKS=`du -bks ${HDDDIR} | cut -f 1`
|
|
SIZE=`expr $BLOCKS + ${BOOTIMG_EXTRA_SPACE}`
|
|
|
|
mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \
|
|
-C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE
|
|
dosfsck -a -l ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg || true
|
|
|
|
if [ "${PCBIOS}" = "1" ]; then
|
|
syslinux_hddimg_install
|
|
fi
|
|
|
|
chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
|
|
|
|
cd ${DEPLOY_DIR_IMAGE}
|
|
rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg
|
|
ln -s ${IMAGE_NAME}.hddimg ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg
|
|
fi
|
|
}
|
|
|
|
python do_bootimg() {
|
|
if d.getVar("PCBIOS", True) == "1":
|
|
bb.build.exec_func('build_syslinux_cfg', d)
|
|
if d.getVar("EFI", True) == "1":
|
|
bb.build.exec_func('build_grub_cfg', d)
|
|
bb.build.exec_func('build_hddimg', d)
|
|
bb.build.exec_func('build_iso', d)
|
|
}
|
|
|
|
addtask bootimg before do_build
|
|
do_bootimg[nostamp] = "1"
|