cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

buildtar (4937B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0
      3
      4#
      5# buildtar 0.0.5
      6#
      7# (C) 2004-2006 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
      8#
      9# This script is used to compile a tarball from the currently
     10# prepared kernel. Based upon the builddeb script from
     11# Wichert Akkerman <wichert@wiggy.net>.
     12#
     13
     14set -e
     15
     16#
     17# Some variables and settings used throughout the script
     18#
     19tmpdir="${objtree}/tar-install"
     20tarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar"
     21
     22
     23#
     24# Figure out how to compress, if requested at all
     25#
     26case "${1}" in
     27	dir-pkg|tar-pkg)
     28		opts=
     29		;;
     30	targz-pkg)
     31		opts="-I ${KGZIP}"
     32		tarball=${tarball}.gz
     33		;;
     34	tarbz2-pkg)
     35		opts="-I ${KBZIP2}"
     36		tarball=${tarball}.bz2
     37		;;
     38	tarxz-pkg)
     39		opts="-I ${XZ}"
     40		tarball=${tarball}.xz
     41		;;
     42	tarzst-pkg)
     43		opts="-I ${ZSTD}"
     44		tarball=${tarball}.zst
     45		;;
     46	*)
     47		echo "Unknown tarball target \"${1}\" requested, please add it to ${0}." >&2
     48		exit 1
     49		;;
     50esac
     51
     52
     53#
     54# Clean-up and re-create the temporary directory
     55#
     56rm -rf -- "${tmpdir}"
     57mkdir -p -- "${tmpdir}/boot"
     58dirs=boot
     59
     60
     61#
     62# Try to install dtbs
     63#
     64if grep -q '^CONFIG_OF_EARLY_FLATTREE=y' include/config/auto.conf; then
     65	# Only some architectures with OF support have this target
     66	if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
     67		$MAKE ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_DTBS_PATH="${tmpdir}/boot/dtbs/${KERNELRELEASE}" dtbs_install
     68    fi
     69fi
     70
     71
     72#
     73# Try to install modules
     74#
     75if grep -q '^CONFIG_MODULES=y' include/config/auto.conf; then
     76	make ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_MOD_PATH="${tmpdir}" modules_install
     77	dirs="$dirs lib"
     78fi
     79
     80
     81#
     82# Install basic kernel files
     83#
     84cp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}"
     85cp -v -- "${KCONFIG_CONFIG}" "${tmpdir}/boot/config-${KERNELRELEASE}"
     86cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
     87
     88
     89#
     90# Install arch-specific kernel image(s)
     91#
     92case "${ARCH}" in
     93	x86|i386|x86_64)
     94		[ -f "${objtree}/arch/x86/boot/bzImage" ] && cp -v -- "${objtree}/arch/x86/boot/bzImage" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
     95		;;
     96	alpha)
     97		[ -f "${objtree}/arch/alpha/boot/vmlinux.gz" ] && cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
     98		;;
     99	parisc*)
    100		[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    101		[ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}"
    102		;;
    103	mips)
    104		if [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.bin" ]; then
    105			cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.bin" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
    106		elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" ]; then
    107			cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
    108		elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.srec" ]; then
    109			cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.srec" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
    110		elif [ -f "${objtree}/vmlinux.32" ]; then
    111			cp -v -- "${objtree}/vmlinux.32" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    112		elif [ -f "${objtree}/vmlinux.64" ]; then
    113			cp -v -- "${objtree}/vmlinux.64" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    114		elif [ -f "${objtree}/arch/mips/boot/vmlinux.bin" ]; then
    115			cp -v -- "${objtree}/arch/mips/boot/vmlinux.bin" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    116		elif [ -f "${objtree}/arch/mips/boot/vmlinux.ecoff" ]; then
    117			cp -v -- "${objtree}/arch/mips/boot/vmlinux.ecoff" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    118		elif [ -f "${objtree}/arch/mips/boot/vmlinux.srec" ]; then
    119			cp -v -- "${objtree}/arch/mips/boot/vmlinux.srec" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    120		elif [ -f "${objtree}/vmlinux" ]; then
    121			cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    122		fi
    123		;;
    124	arm64)
    125		for i in Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo ; do
    126			if [ -f "${objtree}/arch/arm64/boot/${i}" ] ; then
    127				cp -v -- "${objtree}/arch/arm64/boot/${i}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
    128				break
    129			fi
    130		done
    131		;;
    132	riscv)
    133		for i in Image.bz2 Image.gz Image; do
    134			if [ -f "${objtree}/arch/riscv/boot/${i}" ] ; then
    135				cp -v -- "${objtree}/arch/riscv/boot/${i}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
    136				break
    137			fi
    138		done
    139		;;
    140	*)
    141		[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-kbuild-${KERNELRELEASE}"
    142		echo "" >&2
    143		echo '** ** **  WARNING  ** ** **' >&2
    144		echo "" >&2
    145		echo "Your architecture did not define any architecture-dependent files" >&2
    146		echo "to be placed into the tarball. Please add those to ${0} ..." >&2
    147		echo "" >&2
    148		sleep 5
    149		;;
    150esac
    151
    152if [ "${1}" = dir-pkg ]; then
    153	echo "Kernel tree successfully created in $tmpdir"
    154	exit 0
    155fi
    156
    157#
    158# Create the tarball
    159#
    160if tar --owner=root --group=root --help >/dev/null 2>&1; then
    161	opts="$opts --owner=root --group=root"
    162fi
    163
    164tar cf $tarball -C $tmpdir $opts $dirs
    165
    166echo "Tarball successfully created in $tarball"
    167
    168exit 0