buildtar 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/bin/sh
  2. #
  3. # buildtar 0.0.4
  4. #
  5. # (C) 2004-2006 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
  6. #
  7. # This script is used to compile a tarball from the currently
  8. # prepared kernel. Based upon the builddeb script from
  9. # Wichert Akkerman <wichert@wiggy.net>.
  10. #
  11. set -e
  12. #
  13. # Some variables and settings used throughout the script
  14. #
  15. tmpdir="${objtree}/tar-install"
  16. tarball="${objtree}/linux-${KERNELRELEASE}.tar"
  17. #
  18. # Figure out how to compress, if requested at all
  19. #
  20. case "${1}" in
  21. tar-pkg)
  22. compress="cat"
  23. file_ext=""
  24. ;;
  25. targz-pkg)
  26. compress="gzip -c9"
  27. file_ext=".gz"
  28. ;;
  29. tarbz2-pkg)
  30. compress="bzip2 -c9"
  31. file_ext=".bz2"
  32. ;;
  33. *)
  34. echo "Unknown tarball target \"${1}\" requested, please add it to ${0}." >&2
  35. exit 1
  36. ;;
  37. esac
  38. #
  39. # Clean-up and re-create the temporary directory
  40. #
  41. rm -rf -- "${tmpdir}"
  42. mkdir -p -- "${tmpdir}/boot"
  43. #
  44. # Try to install modules
  45. #
  46. if grep -q '^CONFIG_MODULES=y' "${objtree}/.config"; then
  47. make ARCH="${ARCH}" O="${objtree}" KBUILD_SRC= INSTALL_MOD_PATH="${tmpdir}" modules_install
  48. fi
  49. #
  50. # Install basic kernel files
  51. #
  52. cp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}"
  53. cp -v -- "${objtree}/.config" "${tmpdir}/boot/config-${KERNELRELEASE}"
  54. cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
  55. #
  56. # Install arch-specific kernel image(s)
  57. #
  58. case "${ARCH}" in
  59. x86|i386|x86_64)
  60. [ -f "${objtree}/arch/x86/boot/bzImage" ] && cp -v -- "${objtree}/arch/x86/boot/bzImage" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
  61. ;;
  62. alpha)
  63. [ -f "${objtree}/arch/alpha/boot/vmlinux.gz" ] && cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
  64. ;;
  65. parisc*)
  66. [ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
  67. [ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}"
  68. ;;
  69. vax)
  70. [ -f "${objtree}/vmlinux.SYS" ] && cp -v -- "${objtree}/vmlinux.SYS" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}.SYS"
  71. [ -f "${objtree}/vmlinux.dsk" ] && cp -v -- "${objtree}/vmlinux.dsk" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}.dsk"
  72. ;;
  73. *)
  74. [ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-kbuild-${KERNELRELEASE}"
  75. echo "" >&2
  76. echo '** ** ** WARNING ** ** **' >&2
  77. echo "" >&2
  78. echo "Your architecture did not define any architecture-dependant files" >&2
  79. echo "to be placed into the tarball. Please add those to ${0} ..." >&2
  80. echo "" >&2
  81. sleep 5
  82. ;;
  83. esac
  84. #
  85. # Create the tarball
  86. #
  87. (
  88. cd "${tmpdir}"
  89. tar cf - . | ${compress} > "${tarball}${file_ext}"
  90. )
  91. echo "Tarball successfully created in ${tarball}${file_ext}"
  92. exit 0