platform.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. PART_NAME=firmware
  2. REQUIRE_IMAGE_METADATA=1
  3. RAMFS_COPY_BIN='fw_printenv fw_setenv'
  4. RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
  5. platform_check_image() {
  6. case "$(board_name)" in
  7. asus,rt-ac58u)
  8. CI_UBIPART="UBI_DEV"
  9. local ubidev=$(nand_find_ubi $CI_UBIPART)
  10. local asus_root=$(nand_find_volume $ubidev jffs2)
  11. [ -n "$asus_root" ] || return 0
  12. cat << EOF
  13. jffs2 partition is still present.
  14. There's probably no space left
  15. to install the filesystem.
  16. You need to delete the jffs2 partition first:
  17. # ubirmvol /dev/ubi0 --name=jffs2
  18. Once this is done. Retry.
  19. EOF
  20. return 1
  21. ;;
  22. esac
  23. return 0;
  24. }
  25. askey_do_upgrade() {
  26. local tar_file="$1"
  27. local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
  28. board_dir=${board_dir%/}
  29. tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
  30. nand_do_upgrade "$1"
  31. }
  32. zyxel_do_upgrade() {
  33. local tar_file="$1"
  34. local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
  35. board_dir=${board_dir%/}
  36. tar Oxf $tar_file ${board_dir}/kernel | mtd write - kernel
  37. if [ -n "$UPGRADE_BACKUP" ]; then
  38. tar Oxf $tar_file ${board_dir}/root | mtd -j "$UPGRADE_BACKUP" write - rootfs
  39. else
  40. tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
  41. fi
  42. }
  43. platform_do_upgrade_mikrotik_nand() {
  44. local fw_mtd=$(find_mtd_part kernel)
  45. fw_mtd="${fw_mtd/block/}"
  46. [ -n "$fw_mtd" ] || return
  47. local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$')
  48. board_dir=${board_dir%/}
  49. [ -n "$board_dir" ] || return
  50. local kernel_len=$(tar xf "$1" ${board_dir}/kernel -O | wc -c)
  51. [ -n "$kernel_len" ] || return
  52. tar xf "$1" ${board_dir}/kernel -O | ubiformat "$fw_mtd" -y -S $kernel_len -f -
  53. CI_KERNPART="none"
  54. nand_do_upgrade "$1"
  55. }
  56. platform_do_upgrade() {
  57. case "$(board_name)" in
  58. 8dev,jalapeno |\
  59. aruba,ap-303 |\
  60. aruba,ap-303h |\
  61. aruba,ap-365 |\
  62. avm,fritzbox-7530 |\
  63. avm,fritzrepeater-1200 |\
  64. avm,fritzrepeater-3000 |\
  65. buffalo,wtr-m2133hp |\
  66. cilab,meshpoint-one |\
  67. edgecore,ecw5211 |\
  68. edgecore,oap100 |\
  69. engenius,eap2200 |\
  70. glinet,gl-ap1300 |\
  71. luma,wrtq-329acn |\
  72. mobipromo,cm520-79f |\
  73. netgear,wac510 |\
  74. p2w,r619ac-64m |\
  75. p2w,r619ac-128m |\
  76. qxwlan,e2600ac-c2)
  77. nand_do_upgrade "$1"
  78. ;;
  79. alfa-network,ap120c-ac)
  80. part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
  81. if [ "$part" = "rootfs1" ]; then
  82. fw_setenv active 2 || exit 1
  83. CI_UBIPART="rootfs2"
  84. else
  85. fw_setenv active 1 || exit 1
  86. CI_UBIPART="rootfs1"
  87. fi
  88. nand_do_upgrade "$1"
  89. ;;
  90. asus,map-ac2200)
  91. CI_KERNPART="linux"
  92. nand_do_upgrade "$1"
  93. ;;
  94. asus,rt-ac58u)
  95. CI_UBIPART="UBI_DEV"
  96. CI_KERNPART="linux"
  97. nand_do_upgrade "$1"
  98. ;;
  99. cellc,rtl30vw)
  100. CI_UBIPART="ubifs"
  101. askey_do_upgrade "$1"
  102. ;;
  103. compex,wpj419)
  104. nand_do_upgrade "$1"
  105. ;;
  106. linksys,ea6350v3 |\
  107. linksys,ea8300 |\
  108. linksys,mr8300)
  109. platform_do_upgrade_linksys "$1"
  110. ;;
  111. meraki,mr33)
  112. CI_KERNPART="part.safe"
  113. nand_do_upgrade "$1"
  114. ;;
  115. mikrotik,hap-ac2|\
  116. mikrotik,lhgg-60ad|\
  117. mikrotik,sxtsq-5-ac)
  118. [ "$(rootfs_type)" = "tmpfs" ] && mtd erase firmware
  119. default_do_upgrade "$1"
  120. ;;
  121. mikrotik,hap-ac3)
  122. platform_do_upgrade_mikrotik_nand "$1"
  123. ;;
  124. netgear,rbr50 |\
  125. netgear,rbs50 |\
  126. netgear,srr60 |\
  127. netgear,srs60)
  128. platform_do_upgrade_netgear_orbi_upgrade "$1"
  129. ;;
  130. openmesh,a42 |\
  131. openmesh,a62 |\
  132. plasmacloud,pa1200 |\
  133. plasmacloud,pa2200)
  134. PART_NAME="inactive"
  135. platform_do_upgrade_dualboot_datachk "$1"
  136. ;;
  137. teltonika,rutx10)
  138. CI_UBIPART="rootfs"
  139. nand_do_upgrade "$1"
  140. ;;
  141. zyxel,nbg6617)
  142. zyxel_do_upgrade "$1"
  143. ;;
  144. *)
  145. default_do_upgrade "$1"
  146. ;;
  147. esac
  148. }