]> git.ipfire.org Git - people/ms/bricklayer.git/commitdiff
master: Ensure that the kernel in the build and live environment is the same
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 25 May 2021 15:01:22 +0000 (15:01 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 25 May 2021 15:01:22 +0000 (15:01 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/bricklayer-master

index 3d87f063c65877ff59db785364a099047b1ed3ff..65fe3bb31151812a96ea2bd22508a37c9400aa74 100644 (file)
@@ -87,12 +87,13 @@ in_buildsystem() {
 
 make_live_system_image() {
        local filename="${1}"
+       shift
 
        local tempdir="$(mktemp -d)"
 
        # Install a very basic system
        if ! pakfire --arch="${arch}" --config="${PAKFIRE_CONFIG}" --root="${tempdir}" \
-                       install --without-recommends "${PACKAGES[@]}"; then
+                       install --without-recommends "${PACKAGES[@]}" "$@"; then
                echo "Could not install live system" >&2
                rm -rf "${tempdir}"
                return 1
@@ -215,19 +216,21 @@ find_kernel_release() {
 }
 
 install_kernel_image() {
-       local filename="${1}"
+       local kernel_release="${1}"
+       local filename="${2}"
 
-       # Find kernel release
-       local kernel_release="$(find_kernel_release)"
+       # Copy the kernel image
+       if ! cp -v "${buildsystem}/boot/vmlinuz-${kernel_release}" "${filename}"; then
+               echo "Could not install kernel image (release ${kernel_release})" >&2
+               return 1
+       fi
 
-       cp "${buildsystem}/boot/vmlinuz-${kernel_release}" "${filename}"
+       return 0
 }
 
 install_initramfs() {
-       local filename="${1}"
-
-       # Find kernel release
-       local kernel_release="$(find_kernel_release)"
+       local kernel_release="${1}"
+       local filename="${2}"
 
        local args=(
                --verbose
@@ -257,7 +260,8 @@ install_initramfs() {
 }
 
 mkimage() {
-       local filename="${1}"
+       local buildsystem="${1}"
+       local filename="${2}"
        local r=0
 
        # Create a temporary working directory
@@ -305,6 +309,25 @@ mkimage() {
                        ;;
        esac
 
+       # Find the kernel release
+       local kernel_release="$(find_kernel_release)"
+       if [ -z "${kernel_release}" ]; then
+               echo "Could not find kernel release" >&2
+               return 1
+       fi
+
+       # Install the kernel image
+       if ! install_kernel_image "${kernel_release}" "${tempdir}/boot/vmlinuz"; then
+               rm -rf "${tempdir}"
+               return 1
+       fi
+
+       # Create live ramdisk
+       if ! install_initramfs "${kernel_release}" "${tempdir}/boot/initramfs.img"; then
+               rm -rf "${tempdir}"
+               return 1
+       fi
+
        # Generate GRUB BIOS image
        if [ "${has_bios_boot}" = "true" ]; then
                if ! make_grub_bios_image "${tempdir}/boot/biosboot.img"; then
@@ -348,20 +371,8 @@ mkimage() {
                )
        fi
 
-       # Install the kernel image
-       if ! install_kernel_image "${tempdir}/boot/vmlinuz"; then
-               rm rf "${tempdir}"
-               return 1
-       fi
-
-       # Create live ramdisk
-       if ! install_initramfs "${tempdir}/boot/initramfs.img"; then
-               rm -rf "${tempdir}"
-               return 1
-       fi
-
        # Create the live system image
-       if ! make_live_system_image "${tempdir}/live-os.img"; then
+       if ! make_live_system_image "${tempdir}/live-os.img" "kernel = ${kernel_release}"; then
                rm -rf "${tempdir}"
                return 1
        fi