mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-16 13:16:47 +02:00
Compare commits
1 Commits
20231021
...
20231021fix
| Author | SHA1 | Date | |
|---|---|---|---|
| e86af9a60a |
+8
-6
@@ -22,8 +22,8 @@ extract_mrc()
|
|||||||
extract_coreboot
|
extract_coreboot
|
||||||
)
|
)
|
||||||
|
|
||||||
x_ "${cbfstool}" "${appdir}/"coreboot-*.bin extract -n mrc.bin \
|
"${cbfstool}" "${appdir}/"coreboot-*.bin extract -n mrc.bin \
|
||||||
-f "${_dest}" -r RO_SECTION
|
-f "${_dest}" -r RO_SECTION || err "extract_mrc: cbfstool ${_dest}"
|
||||||
}
|
}
|
||||||
|
|
||||||
extract_partition()
|
extract_partition()
|
||||||
@@ -40,8 +40,9 @@ extract_partition()
|
|||||||
START=$(( $( echo ${ROOTP} | cut -f2 -d\ | tr -d "B" ) ))
|
START=$(( $( echo ${ROOTP} | cut -f2 -d\ | tr -d "B" ) ))
|
||||||
SIZE=$(( $( echo ${ROOTP} | cut -f4 -d\ | tr -d "B" ) ))
|
SIZE=$(( $( echo ${ROOTP} | cut -f4 -d\ | tr -d "B" ) ))
|
||||||
|
|
||||||
x_ dd if="${FILE}" of="${ROOTFS}" bs=${_bs} \
|
dd if="${FILE}" of="${ROOTFS}" bs=${_bs} \
|
||||||
skip=$(( ${START} / ${_bs} )) count=$(( ${SIZE} / ${_bs} ))
|
skip=$(( ${START} / ${_bs} )) count=$(( ${SIZE} / ${_bs} )) || \
|
||||||
|
err "extract_partition, dd ${FILE}, ${ROOTFS}"
|
||||||
}
|
}
|
||||||
|
|
||||||
extract_shellball()
|
extract_shellball()
|
||||||
@@ -58,7 +59,7 @@ extract_coreboot()
|
|||||||
printf "Extracting coreboot image\n"
|
printf "Extracting coreboot image\n"
|
||||||
[ -f "${SHELLBALL}" ] || \
|
[ -f "${SHELLBALL}" ] || \
|
||||||
err "extract_coreboot: shellball missing in google cros image"
|
err "extract_coreboot: shellball missing in google cros image"
|
||||||
x_ sh "${SHELLBALL}" --unpack "${_unpacked}"
|
sh "${SHELLBALL}" --unpack "${_unpacked}" || err "shellball, ${SHELLBALL}"
|
||||||
|
|
||||||
# TODO: audit the f* out of that shellball, for each mrc version.
|
# TODO: audit the f* out of that shellball, for each mrc version.
|
||||||
# it has to be updated for each mrc update. we should ideally
|
# it has to be updated for each mrc update. we should ideally
|
||||||
@@ -70,5 +71,6 @@ extract_coreboot()
|
|||||||
_version=$( cat "${_unpacked}/VERSION" | grep BIOS\ version: | \
|
_version=$( cat "${_unpacked}/VERSION" | grep BIOS\ version: | \
|
||||||
cut -f2 -d: | tr -d \ )
|
cut -f2 -d: | tr -d \ )
|
||||||
|
|
||||||
x_ cp "${_unpacked}/bios.bin" "coreboot-${_version}.bin"
|
cp "${_unpacked}/bios.bin" "coreboot-${_version}.bin" || \
|
||||||
|
err "!cp unpacked, ${_unpacked}/bios.bin, coreboot-${_version}.rom"
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -89,12 +89,12 @@ modify_coreboot_rom()
|
|||||||
done
|
done
|
||||||
elif [ "${romtype}" = "i945 laptop" ]; then
|
elif [ "${romtype}" = "i945 laptop" ]; then
|
||||||
# for bucts-based installation method from factory bios
|
# for bucts-based installation method from factory bios
|
||||||
x_ dd if="${rompath}" of="${tmprom}" bs=1 \
|
dd if="${rompath}" of="${tmprom}" bs=1 \
|
||||||
skip=$(($(stat -c %s "${rompath}") - 0x10000)) \
|
skip=$(($(stat -c %s "${rompath}") - 0x10000)) \
|
||||||
count=64k
|
count=64k || err "modrom 1, dd, ${rompath}"
|
||||||
x_ dd if="${tmprom}" of="${rompath}" bs=1 \
|
dd if="${tmprom}" of="${rompath}" bs=1 \
|
||||||
seek=$(($(stat -c %s "${rompath}") - 0x20000)) \
|
seek=$(($(stat -c %s "${rompath}") - 0x20000)) \
|
||||||
count=64k conv=notrunc
|
count=64k conv=notrunc || err "modrom 2, dd, ${rompath}"
|
||||||
fi
|
fi
|
||||||
x_ rm -f "${tmprom}"
|
x_ rm -f "${tmprom}"
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -26,7 +26,7 @@ handle_dependencies()
|
|||||||
[ -d "src/grub" ] || x_ ./update trees -f grub
|
[ -d "src/grub" ] || x_ ./update trees -f grub
|
||||||
[ -f "src/grub/grub-mkstandalone" ] || build_grub_utils
|
[ -f "src/grub/grub-mkstandalone" ] || build_grub_utils
|
||||||
x_ mkdir -p "${elfdir}"
|
x_ mkdir -p "${elfdir}"
|
||||||
x_ rm -f "${elfdir}/"*
|
rm -f "${elfdir}/"* || err "!rm elf, handle_, ${elfdir}/"
|
||||||
}
|
}
|
||||||
|
|
||||||
build_grub_utils()
|
build_grub_utils()
|
||||||
@@ -37,7 +37,7 @@ build_grub_utils()
|
|||||||
x_ ./bootstrap --gnulib-srcdir=gnulib/ --no-git
|
x_ ./bootstrap --gnulib-srcdir=gnulib/ --no-git
|
||||||
x_ ./autogen.sh
|
x_ ./autogen.sh
|
||||||
x_ ./configure --with-platform=coreboot
|
x_ ./configure --with-platform=coreboot
|
||||||
x_ make -j$(nproc) FS_PAYLOAD_MODULES=""
|
make -j$(nproc) FS_PAYLOAD_MODULES="" || err "!mk grub utils"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,8 +47,8 @@ build_keymap_configs()
|
|||||||
[ -f "${keylayoutfile}" ] || continue
|
[ -f "${keylayoutfile}" ] || continue
|
||||||
keymap="${keylayoutfile##${grubcfgsdir}/keymap/}"
|
keymap="${keylayoutfile##${grubcfgsdir}/keymap/}"
|
||||||
keymap="${keymap%.gkb}"
|
keymap="${keymap%.gkb}"
|
||||||
x_ printf "keymap %s\n" "${keymap}" > \
|
printf "keymap %s\n" "${keymap}" > \
|
||||||
"${elfdir}/keymap_${keymap}.cfg"
|
"${elfdir}/keymap_${keymap}.cfg" || err "!insert keymap"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-5
@@ -136,7 +136,7 @@ prepare_target()
|
|||||||
[ "${payload_memtest}" != "y" ] || [ -f "src/${memtest_bin}" ] || \
|
[ "${payload_memtest}" != "y" ] || [ -f "src/${memtest_bin}" ] || \
|
||||||
x_ ./update trees -b memtest86plus
|
x_ ./update trees -b memtest86plus
|
||||||
|
|
||||||
x_ rm -f "${romdir}/"*
|
rm -f "${romdir}/"* || err "!prepare, rm files, ${romdir}"
|
||||||
|
|
||||||
build_dependency_grub
|
build_dependency_grub
|
||||||
build_dependency_uboot
|
build_dependency_uboot
|
||||||
@@ -274,15 +274,17 @@ build_grub_roms()
|
|||||||
if [ "${displaymode}" = "vesafb" ] || \
|
if [ "${displaymode}" = "vesafb" ] || \
|
||||||
[ "${displaymode}" = "corebootfb" ]; then
|
[ "${displaymode}" = "corebootfb" ]; then
|
||||||
backgroundfile="config/grub/background/${grub_background}"
|
backgroundfile="config/grub/background/${grub_background}"
|
||||||
x_ "${cbfstool}" "${tmprom}" add -f ${backgroundfile} \
|
"${cbfstool}" "${tmprom}" add -f ${backgroundfile} \
|
||||||
-n background.png -t raw
|
-n background.png -t raw || err "insert background, ${backgroundfile}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tmpcfg=$(mktemp -t coreboot_rom.XXXXXXXXXX)
|
tmpcfg=$(mktemp -t coreboot_rom.XXXXXXXXXX)
|
||||||
x_ printf "set grub_scan_disk=\"%s\"\n" "${grub_scan_disk}" >"${tmpcfg}"
|
printf "set grub_scan_disk=\"%s\"\n" "${grub_scan_disk}" >"${tmpcfg}" \
|
||||||
|
|| err "set grub_scandisk, ${grub_scan_disk}, ${tmpcfg}"
|
||||||
[ "${grub_scan_disk}" = "both" ] || \
|
[ "${grub_scan_disk}" = "both" ] || \
|
||||||
x_ "${cbfstool}" "${tmprom}" add -f "${tmpcfg}" -n scan.cfg -t raw
|
x_ "${cbfstool}" "${tmprom}" add -f "${tmpcfg}" -n scan.cfg -t raw
|
||||||
x_ printf "set timeout=%s\n" "${grub_timeout}" > "${tmpcfg}"
|
printf "set timeout=%s\n" "${grub_timeout}" > "${tmpcfg}" || \
|
||||||
|
err "set timeout, ${grub_timeout}, ${tmpcfg}"
|
||||||
[ -z "${grub_timeout}" ] || x_ "${cbfstool}" "${tmprom}" add \
|
[ -z "${grub_timeout}" ] || x_ "${cbfstool}" "${tmprom}" add \
|
||||||
-f "${tmpcfg}" -n timeout.cfg -t raw
|
-f "${tmpcfg}" -n timeout.cfg -t raw
|
||||||
x_ rm -f "${tmpcfg}"
|
x_ rm -f "${tmpcfg}"
|
||||||
|
|||||||
+35
-29
@@ -118,7 +118,8 @@ fetch_trees()
|
|||||||
for x in config/*/build.list; do
|
for x in config/*/build.list; do
|
||||||
[ -f "${x}" ] || continue
|
[ -f "${x}" ] || continue
|
||||||
xp="${x#*/}"; xp="${xp%/*}"
|
xp="${x#*/}"; xp="${xp%/*}"
|
||||||
[ -L "${xp}" ] || x_ rm -Rf "src/${xp}/${xp}"
|
[ -L "${xp}" ] || rm -Rf "src/${xp}/${xp}" || \
|
||||||
|
err "!rm -Rf \"src/${xp}/${xp}\""
|
||||||
done
|
done
|
||||||
|
|
||||||
find . -name ".git" -exec rm -Rf {} + || err "${_xm}: rm .git"
|
find . -name ".git" -exec rm -Rf {} + || err "${_xm}: rm .git"
|
||||||
@@ -144,20 +145,21 @@ handle_rom_archive()
|
|||||||
{
|
{
|
||||||
builddir="${1}"
|
builddir="${1}"
|
||||||
romdir="tmp/romdir"
|
romdir="tmp/romdir"
|
||||||
x_ rm -Rf "${romdir}"
|
rm -Rf "${romdir}" || err "!rm romdir, handle_rom_archive"
|
||||||
target="${builddir##*/}"
|
target="${builddir##*/}"
|
||||||
|
|
||||||
if [ ! -f "config/coreboot/${target}/target.cfg" ]; then
|
if [ ! -f "config/coreboot/${target}/target.cfg" ]; then
|
||||||
# No config, just make a tarball
|
# No config, just make a tarball
|
||||||
tarball="release/${version}/roms/${relname}_${target}.tar.xz"
|
tarball="release/${version}/roms/${relname}_${target}.tar.xz"
|
||||||
insert_copying_files "${builddir}"
|
insert_copying_files "${builddir}" || \
|
||||||
|
err "!insert copy, handle, ${builddir}"
|
||||||
mktarball "${builddir}" "${tarball}"
|
mktarball "${builddir}" "${tarball}"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
romdir="${romdir}/bin/${target}"
|
romdir="${romdir}/bin/${target}"
|
||||||
x_ mkdir -p "${romdir}"
|
mkdir -p "${romdir}" || err "!mkdir -p romdir, handle_rom_archive"
|
||||||
x_ cp "${builddir}/"* "${romdir}"
|
cp "${builddir}/"* "${romdir}" || err "!cp romdir, handle_rom_archive"
|
||||||
|
|
||||||
nukerom
|
nukerom
|
||||||
|
|
||||||
@@ -166,7 +168,7 @@ handle_rom_archive()
|
|||||||
insert_version_files "${romdir}" || \
|
insert_version_files "${romdir}" || \
|
||||||
err "mkrom_tarball ${romdir}: versionfile"
|
err "mkrom_tarball ${romdir}: versionfile"
|
||||||
|
|
||||||
insert_copying_files "${romdir}"
|
insert_copying_files "${romdir}" || err "!insert copy, handle 2, ${romdir}"
|
||||||
mkrom_tarball
|
mkrom_tarball
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,22 +185,24 @@ nukerom()
|
|||||||
done
|
done
|
||||||
for romfile in "${romdir}"/*.tmprom; do
|
for romfile in "${romdir}"/*.tmprom; do
|
||||||
[ -f "${romfile}" ] || continue
|
[ -f "${romfile}" ] || continue
|
||||||
x_ mv "${romfile}" "${romfile%.tmprom}.rom"
|
mv "${romfile}" "${romfile%.tmprom}.rom" || \
|
||||||
|
err "!mv romfile, nukerom"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Hash the images before removing vendor files
|
# Hash the images before removing vendor files
|
||||||
# which "./vendor inject" uses for verification
|
# which "./vendor inject" uses for verification
|
||||||
x_ rm -f "${romdir}/vendorhashes"
|
rm -f "${romdir}/vendorhashes" || err "!rm ${romdir}/vendorhashes"
|
||||||
x_ touch "${romdir}/vendorhashes"
|
touch "${romdir}/vendorhashes" || err "!touch ${romdir}/vendorhashes"
|
||||||
(
|
(
|
||||||
x_ cd "${romdir}"
|
cd "${romdir}" || err "!cd romdir ${romdir}, nukerom"
|
||||||
x_ sha512sum *.rom >> vendorhashes
|
sha512sum *.rom >> vendorhashes || err "!create vendorhashes, nukerom"
|
||||||
)
|
)
|
||||||
|
|
||||||
for romfile in "${romdir}"/*.rom; do
|
for romfile in "${romdir}"/*.rom; do
|
||||||
[ -f "${romfile}" ] || continue
|
[ -f "${romfile}" ] || continue
|
||||||
x_ ./vendor inject -r "${romfile}" -b ${target} -n nuke
|
./vendor inject -r "${romfile}" -b ${target} -n nuke || \
|
||||||
|
err "!vendor inject (nuke) ${romfile}, nukerom"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,42 +210,43 @@ strip_ucode()
|
|||||||
{
|
{
|
||||||
romfile=${1}
|
romfile=${1}
|
||||||
_newrom_b="${romfile%.rom}_nomicrocode.tmprom"
|
_newrom_b="${romfile%.rom}_nomicrocode.tmprom"
|
||||||
x_ cp "${romfile}" "${_newrom_b}"
|
cp "${romfile}" "${_newrom_b}" || err "!cp romfile ${romfile}, strip_u"
|
||||||
microcode_present="y"
|
microcode_present="y"
|
||||||
"${cbfstool}" "${_newrom_b}" remove -n \
|
"${cbfstool}" "${_newrom_b}" remove -n \
|
||||||
cpu_microcode_blob.bin 2>/dev/null || microcode_present="n"
|
cpu_microcode_blob.bin 2>/dev/null || microcode_present="n"
|
||||||
[ "${microcode_present}" = "n" ] || return 0
|
[ "${microcode_present}" = "n" ] || return 0
|
||||||
printf "REMARK: '%s' already lacks microcode\n" "${romfile}" 1>&2
|
printf "REMARK: '%s' already lacks microcode\n" "${romfile}" 1>&2
|
||||||
printf "Renaming default ROM file instead.\n" 1>&2
|
printf "Renaming default ROM file instead.\n" 1>&2
|
||||||
x_ mv "${romfile}" "${_newrom_b}"
|
mv "${romfile}" "${_newrom_b}" || err "!mv romfile ${romfile}, strip_u"
|
||||||
}
|
}
|
||||||
|
|
||||||
insert_copying_files()
|
insert_copying_files()
|
||||||
{
|
{
|
||||||
x_ rm -Rf "${1}/licenses"
|
rm -Rf "${1}/licenses" || return 1
|
||||||
x_ mkdir -p "${1}/licenses"
|
mkdir -p "${1}/licenses" || return 1
|
||||||
l="${1}/licenses"
|
l="${1}/licenses"
|
||||||
# copy licenses to rom image archive, for completion
|
# copy licenses to rom image archive, for completion
|
||||||
x_ cp "src/grub/COPYING" "${l}/COPYING.grub"
|
cp "src/grub/COPYING" "${l}/COPYING.grub" || return 1
|
||||||
x_ cp "src/coreboot/default/COPYING" "${l}/COPYING.coreboot"
|
cp "src/coreboot/default/COPYING" "${l}/COPYING.coreboot" || return 1
|
||||||
x_ cp -R "src/coreboot/default/LICENSES" "${l}/LICENSES.coreboot"
|
cp -R "src/coreboot/default/LICENSES" "${l}/LICENSES.coreboot" || return 1
|
||||||
x_ cp "src/seabios/default/COPYING" "${l}/COPYING.coreboot"
|
cp "src/seabios/default/COPYING" "${l}/COPYING.coreboot" || return 1
|
||||||
x_ cp "src/seabios/default/COPYING.LESSER" "${l}/COPYING.LESSER.seabios"
|
cp "src/seabios/default/COPYING.LESSER" "${l}/COPYING.LESSER.seabios" || return 1
|
||||||
x_ cp -R "src/u-boot/default/Licenses" "${l}/COPYING.u-boot"
|
cp -R "src/u-boot/default/Licenses" "${l}/COPYING.u-boot" || return 1
|
||||||
x_ printf "Multiple licenses. Check corresponding %s source archive\n" \
|
printf "Multiple licenses. Check corresponding %s source archive\n" \
|
||||||
"${projectname}" > "${1}/COPYING"
|
"${projectname}" > "${1}/COPYING" || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
mkrom_tarball()
|
mkrom_tarball()
|
||||||
{
|
{
|
||||||
archivename="${relname}_${target##*/}"
|
archivename="${relname}_${target##*/}"
|
||||||
f="release/${version}/roms/${archivename}"
|
f="release/${version}/roms/${archivename}"
|
||||||
x_ mkdir -p "${f%/*}"
|
mkdir -p "${f%/*}" || err "mkrom_tarball: !mkdir -p ${f%/*}"
|
||||||
(
|
(
|
||||||
x_ cd "${romdir%/bin/${target}}"
|
cd "${romdir%/bin/${target}}" || err "!cd ${romdir%/bin/${target}}"
|
||||||
mktarball "bin/${target}" "${archivename}.tar.xz"
|
mktarball "bin/${target}" "${archivename}.tar.xz"
|
||||||
)
|
)
|
||||||
x_ mv "${romdir%/bin/${target}}/${archivename}.tar.xz"* "${f%/*}"
|
mv "${romdir%/bin/${target}}/${archivename}.tar.xz"* "${f%/*}" || \
|
||||||
|
err "!mktarball, rom, ${f%/*}/${romdir%/bin/${target}}/${archivename}.tar.xz"
|
||||||
|
|
||||||
printf "Created ROM archive: ${f%/*}/${archivename}.tar.xz"
|
printf "Created ROM archive: ${f%/*}/${archivename}.tar.xz"
|
||||||
}
|
}
|
||||||
@@ -258,7 +263,7 @@ mktarball()
|
|||||||
# preserve timestamps for reproducible tarballs
|
# preserve timestamps for reproducible tarballs
|
||||||
tar_implementation=$(tar --version | head -n1) || :
|
tar_implementation=$(tar --version | head -n1) || :
|
||||||
|
|
||||||
[ "${2%/*}" = "${2}" ] || x_ mkdir -p "${2%/*}"
|
[ "${2%/*}" = "${2}" ] || mkdir -p "${2%/*}" || err "mk, !mkdir -p \"${2%/*}\""
|
||||||
if [ "${tar_implementation% *}" = "tar (GNU tar)" ]; then
|
if [ "${tar_implementation% *}" = "tar (GNU tar)" ]; then
|
||||||
tar --sort=name --owner=root:0 --group=root:0 \
|
tar --sort=name --owner=root:0 --group=root:0 \
|
||||||
--mtime="UTC 2023-10-21" -c "${1}" | xz -T0 -9e > "${2}" || \
|
--mtime="UTC 2023-10-21" -c "${1}" | xz -T0 -9e > "${2}" || \
|
||||||
@@ -269,7 +274,8 @@ mktarball()
|
|||||||
fi
|
fi
|
||||||
(
|
(
|
||||||
[ "${2%/*}" != "${2}" ] && x_ cd "${2%/*}"
|
[ "${2%/*}" != "${2}" ] && x_ cd "${2%/*}"
|
||||||
x_ sha512sum "${2##*/}" > "${2##*/}.sha512"
|
sha512sum "${2##*/}" > "${2##*/}.sha512" || \
|
||||||
|
err "!sha512sum \"${2##*/}\" > \"${2##*/}.sha512\""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
-1
@@ -122,7 +122,8 @@ patch_release_roms()
|
|||||||
[ -f "${x}" ] || continue
|
[ -f "${x}" ] || continue
|
||||||
[ -f "${x%_nomicrocode.rom}.rom" ] || continue
|
[ -f "${x%_nomicrocode.rom}.rom" ] || continue
|
||||||
|
|
||||||
x_ cp "${x%_nomicrocode.rom}.rom" "${x}"
|
cp "${x%_nomicrocode.rom}.rom" "${x}" || \
|
||||||
|
err "patch_r: !cp \"${x%_nomicrocode.rom}.rom\" \"${x}\""
|
||||||
x_ "${cbfstool}" "${x}" remove -n cpu_microcode_blob.bin
|
x_ "${cbfstool}" "${x}" remove -n cpu_microcode_blob.bin
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user