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