mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-25 12:04:46 +08:00
7848ea7902
A lot of 64-bit systems supported by Linux/MIPS have boot firmware or bootloaders that only understand 32-bit ELF files, and as such, the vmlinux.32 target exists to support these systems. Therefore, it'd be nice if the tar-pkg target recognised this, and included the right version when packaging up a binary of the kernel. This updates buildtar to support MIPS targets. MIPS may use 'vmlinux' or 'vmlinux.32' depending on the target system. This uses 'vmlinux.32' in preference to 'vmlinux' where present (although I should check which is newer), including either file as /boot/vmlinux-${version}. Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/1673/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
140 lines
4.1 KiB
Bash
140 lines
4.1 KiB
Bash
#!/bin/sh
|
|
|
|
#
|
|
# buildtar 0.0.4
|
|
#
|
|
# (C) 2004-2006 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
|
|
#
|
|
# This script is used to compile a tarball from the currently
|
|
# prepared kernel. Based upon the builddeb script from
|
|
# Wichert Akkerman <wichert@wiggy.net>.
|
|
#
|
|
|
|
set -e
|
|
|
|
#
|
|
# Some variables and settings used throughout the script
|
|
#
|
|
tmpdir="${objtree}/tar-install"
|
|
tarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar"
|
|
|
|
|
|
#
|
|
# Figure out how to compress, if requested at all
|
|
#
|
|
case "${1}" in
|
|
tar-pkg)
|
|
compress="cat"
|
|
file_ext=""
|
|
;;
|
|
targz-pkg)
|
|
compress="gzip"
|
|
file_ext=".gz"
|
|
;;
|
|
tarbz2-pkg)
|
|
compress="bzip2"
|
|
file_ext=".bz2"
|
|
;;
|
|
tarxz-pkg)
|
|
compress="xz"
|
|
file_ext=".xz"
|
|
;;
|
|
*)
|
|
echo "Unknown tarball target \"${1}\" requested, please add it to ${0}." >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
#
|
|
# Clean-up and re-create the temporary directory
|
|
#
|
|
rm -rf -- "${tmpdir}"
|
|
mkdir -p -- "${tmpdir}/boot"
|
|
|
|
|
|
#
|
|
# Try to install modules
|
|
#
|
|
if grep -q '^CONFIG_MODULES=y' "${objtree}/.config"; then
|
|
make ARCH="${ARCH}" O="${objtree}" KBUILD_SRC= INSTALL_MOD_PATH="${tmpdir}" modules_install
|
|
fi
|
|
|
|
|
|
#
|
|
# Install basic kernel files
|
|
#
|
|
cp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}"
|
|
cp -v -- "${objtree}/.config" "${tmpdir}/boot/config-${KERNELRELEASE}"
|
|
cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
|
|
|
|
#
|
|
# Install arch-specific kernel image(s)
|
|
#
|
|
case "${ARCH}" in
|
|
x86|i386|x86_64)
|
|
[ -f "${objtree}/arch/x86/boot/bzImage" ] && cp -v -- "${objtree}/arch/x86/boot/bzImage" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
|
|
;;
|
|
alpha)
|
|
[ -f "${objtree}/arch/alpha/boot/vmlinux.gz" ] && cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
|
|
;;
|
|
parisc*)
|
|
[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
[ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}"
|
|
;;
|
|
vax)
|
|
[ -f "${objtree}/vmlinux.SYS" ] && cp -v -- "${objtree}/vmlinux.SYS" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}.SYS"
|
|
[ -f "${objtree}/vmlinux.dsk" ] && cp -v -- "${objtree}/vmlinux.dsk" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}.dsk"
|
|
;;
|
|
mips)
|
|
if [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.bin" ]; then
|
|
cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.bin" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" ]; then
|
|
cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.srec" ]; then
|
|
cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.srec" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/vmlinux.32" ]; then
|
|
cp -v -- "${objtree}/vmlinux.32" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/vmlinux.64" ]; then
|
|
cp -v -- "${objtree}/vmlinux.64" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/arch/mips/boot/vmlinux.bin" ]; then
|
|
cp -v -- "${objtree}/arch/mips/boot/vmlinux.bin" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/arch/mips/boot/vmlinux.ecoff" ]; then
|
|
cp -v -- "${objtree}/arch/mips/boot/vmlinux.ecoff" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/arch/mips/boot/vmlinux.srec" ]; then
|
|
cp -v -- "${objtree}/arch/mips/boot/vmlinux.srec" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
elif [ -f "${objtree}/vmlinux" ]; then
|
|
cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
|
|
fi
|
|
;;
|
|
*)
|
|
[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-kbuild-${KERNELRELEASE}"
|
|
echo "" >&2
|
|
echo '** ** ** WARNING ** ** **' >&2
|
|
echo "" >&2
|
|
echo "Your architecture did not define any architecture-dependent files" >&2
|
|
echo "to be placed into the tarball. Please add those to ${0} ..." >&2
|
|
echo "" >&2
|
|
sleep 5
|
|
;;
|
|
esac
|
|
|
|
|
|
#
|
|
# Create the tarball
|
|
#
|
|
(
|
|
cd "${tmpdir}"
|
|
opts=
|
|
if tar --owner=root --group=root --help >/dev/null 2>&1; then
|
|
opts="--owner=root --group=root"
|
|
fi
|
|
tar cf - boot/* lib/* $opts | ${compress} > "${tarball}${file_ext}"
|
|
)
|
|
|
|
echo "Tarball successfully created in ${tarball}${file_ext}"
|
|
|
|
exit 0
|
|
|