#!/bin/sh # # move the kernel out into a new device tarfile with system/boot set -ex echo "I: Moving kernel into device tarball" HERE="$(pwd)" TMPDIR="$(mktemp -d)" mkdir -p $TMPDIR/system/ mkdir -p $TMPDIR/assets/ # cp files, we can't simply use tar --transform as it changes the symlink target ( cd binary/boot/filesystem.dir cp -ar --parent lib/modules/ $TMPDIR/system/ cp -ar --parent lib/firmware/ $TMPDIR/system/ # new assets handling if [ -f boot/vmlinu?-*.signed ]; then kernel=boot/vmlinu?-*.signed else kernel=boot/vmlinu?-* fi initrd=boot/initrd.img-* cp -ar $initrd $TMPDIR/assets/ cp -ar $kernel $TMPDIR/assets/ cp -ar boot/abi-* boot/System.map-* $TMPDIR/assets/ dtbs=$(find lib/firmware -type d -name 'device-tree' -print0) if [ -n "$dtbs" ]; then mv "$dtbs" $TMPDIR/assets/dtbs fi # create hardware.yaml # this assumes armh == u-boot # and all others grub # common bits cat > $TMPDIR/hardware.yaml << EOF kernel: assets/$(basename $kernel) initrd: assets/$(basename $initrd) partition-layout: system-AB EOF # arch specific ones if [ "$ARCH" = "armhf" ]; then cat >> $TMPDIR/hardware.yaml << EOF dtbs: assets/dtbs bootloader: u-boot EOF else cat >> $TMPDIR/hardware.yaml << EOF bootloader: grub EOF fi ) # and tar it up ( cd $TMPDIR tar -c --sort=name -z -f $HERE/device.tar.gz system assets hardware.yaml ) rm -rf $TMPDIR # remove files from the root filesystem (cd binary/boot/filesystem.dir rm -f boot/vmlinu?-* rm -f boot/initrd.img-* rm -f boot/abi-* rm -f boot/System.map-* rm -f initrd.img rm -f vmlinu? rm -rf lib/modules rm -rf lib/firmware )