create_sunxi_boot_files.sh 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #/bin/sh
  2. ######################
  3. # Sunxi compilation #
  4. ######################
  5. set -e
  6. show_usage() {
  7. cat <<EOF
  8. # NAME
  9. $(basename $0) -- Script to build sunxi kernel and boot files
  10. # OPTIONS
  11. -o offline mode (mandatory)
  12. -t olinux type (a10lime, a20lime, a20lime2, a20micro) (default: a20lime)
  13. EOF
  14. exit 1
  15. }
  16. while getopts ":ot:" opt; do
  17. case $opt in
  18. o)
  19. offline=$OPTARG
  20. ;;
  21. t)
  22. olinux=$OPTARG
  23. ;;
  24. \?)
  25. show_usage
  26. ;;
  27. esac
  28. done
  29. clone_or_pull (){
  30. project=$1
  31. repo=$2
  32. name=$(echo $project | sed 's/.git$//')
  33. if [ "$offline" ] ; then
  34. cd /olinux/sunxi/$name/ && make clean
  35. return 0
  36. fi
  37. if [ -d /olinux/sunxi/$name/ ] ; then
  38. cd /olinux/sunxi/$name/ && make clean && git pull --depth 1
  39. else
  40. git clone --depth 1 $repo/$project /olinux/sunxi/$name/
  41. fi
  42. }
  43. if [ "$olinux" = "a20lime2" ] ; then
  44. u_boot_config="A20-OLinuXino-Lime2_defconfig"
  45. sunxi_board_config="a20/a20-olinuxino_lime2.fex"
  46. kernel_defconfig="a20_defconfig"
  47. elif [ "$olinux" = "a20micro" ] ; then
  48. u_boot_config="A20-OLinuXino_MICRO_defconfig"
  49. sunxi_board_config="a20/a20-olinuxino_micro.fex"
  50. kernel_defconfig="a20_defconfig"
  51. elif [ "$olinux" = "a10lime" ] ; then
  52. u_boot_config="A10-OLinuXino-Lime_defconfig"
  53. sunxi_board_config="a10/a10-olinuxino-lime.fex"
  54. kernel_defconfig="a10_defconfig"
  55. else
  56. u_boot_config="A20-OLinuXino-Lime_defconfig"
  57. sunxi_board_config="a20/a20-olinuxino_lime.fex"
  58. kernel_defconfig="a20_defconfig"
  59. fi
  60. mkdir -p /olinux/sunxi/
  61. # Sunxi u-boot
  62. #clone_or_pull u-boot-sunxi
  63. clone_or_pull u-boot.git git://git.denx.de
  64. cd /olinux/sunxi/u-boot && make CROSS_COMPILE=arm-linux-gnueabihf $u_boot_config && make CROSS_COMPILE=arm-linux-gnueabihf-
  65. # Sunxi kernel
  66. clone_or_pull linux-sunxi.git https://github.com/linux-sunxi
  67. cp /olinux/$kernel_defconfig /olinux/sunxi/linux-sunxi/arch/arm/configs/.
  68. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm $kernel_defconfig
  69. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage
  70. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules
  71. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules_install
  72. # Sunxi board configs
  73. clone_or_pull sunxi-boards.git https://github.com/linux-sunxi
  74. # Sunxi tools
  75. clone_or_pull sunxi-tools.git https://github.com/linux-sunxi
  76. cd /olinux/sunxi/sunxi-tools/ && make
  77. cd /olinux/sunxi/ && rm -f script.bin && ./sunxi-tools/fex2bin sunxi-boards/sys_config/$sunxi_board_config script.bin
  78. cd /olinux/sunxi/ && chmod +x script.bin