Makefile 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. #
  3. # Copyright (C) 2009-2013 OpenWrt.org
  4. include $(TOPDIR)/rules.mk
  5. include $(INCLUDE_DIR)/image.mk
  6. KERNEL_LOADADDR:=0x8000
  7. # Some info about Ctera firmware:
  8. # 1. It's simple tar file (GNU standard), but it must have ".firm" suffix.
  9. # 2. It contains two images: kernel and romdisk. Both are required.
  10. # 3. Every image has header and trailer file.
  11. # 4. The struct of tar firmware is: header kernel trailer header romdisk trailer
  12. # 5. In header file are some strings used to describe image. It was decoded from
  13. # factory image.
  14. # 6. Version format in header file is restricted by Original FW.
  15. # 7. Trailer file contains MD5 sum string of header and image file.
  16. # 8. Firmware file must have <=24MB size.
  17. define Build/ctera-firmware
  18. mkdir -p [email protected]
  19. # Prepare header and trailer file for kernel
  20. echo "# CTera firmware information file" > [email protected]/header
  21. echo "image_type=kernel" >> [email protected]/header
  22. echo "arch=Kirkwood" >> [email protected]/header
  23. echo "board=Any" >> [email protected]/header
  24. echo "version=3.1.22.30669" >> [email protected]/header
  25. echo "kernel_cmd=console=ttyS0,115200 earlyprintk" >> [email protected]/header
  26. echo "date=$$(date $(if $(SOURCE_DATE_EPOCH),-d@$(SOURCE_DATE_EPOCH)))" \
  27. >> [email protected]/header
  28. cp $@ [email protected]/kernel
  29. echo "MD5=$$(cat [email protected]/header [email protected]/kernel | $(MKHASH) md5)" \
  30. > [email protected]/trailer
  31. tar $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
  32. -H gnu -C [email protected] -cf [email protected] header kernel trailer
  33. # Prepare header and trailer file for fake romdisk
  34. echo "# CTera firmware information file" > [email protected]/header
  35. echo "image_type=romdisk" >> [email protected]/header
  36. echo "initrd=yes" >> [email protected]/header
  37. echo "arch=Kirkwood" >> [email protected]/header
  38. echo "board=Any" >> [email protected]/header
  39. echo "version=3.1.22.30669" >> [email protected]/header
  40. echo "date=$$(date $(if $(SOURCE_DATE_EPOCH),-d@$(SOURCE_DATE_EPOCH)))" \
  41. >> [email protected]/header
  42. rm -f $@
  43. touch $@
  44. $(call Build/append-uImage-fakehdr, ramdisk)
  45. cp $@ [email protected]/romdisk
  46. echo "MD5=$$(cat [email protected]/header [email protected]/romdisk | $(MKHASH) md5)" \
  47. > [email protected]/trailer
  48. tar $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
  49. -H gnu -C [email protected] -rf [email protected] header romdisk trailer
  50. mv [email protected] $@
  51. rm -rf [email protected]
  52. endef
  53. define Device/kernel-size-migration
  54. DEVICE_COMPAT_VERSION := 2.0
  55. DEVICE_COMPAT_MESSAGE := Partition design has changed compared to \
  56. older versions (up to 21.02) due to kernel size restrictions. \
  57. Upgrade via sysupgrade mechanism is not possible, so new \
  58. installation via factory style image is required.
  59. endef
  60. define Device/Default
  61. PROFILES := Default
  62. DEVICE_DTS = kirkwood-$(lastword $(subst _, ,$(1)))
  63. KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
  64. KERNEL := kernel-bin | append-dtb | uImage none
  65. KERNEL_NAME := zImage
  66. KERNEL_SUFFIX := -uImage
  67. KERNEL_IN_UBI := 1
  68. PAGESIZE := 2048
  69. SUBPAGESIZE := 512
  70. BLOCKSIZE := 128k
  71. IMAGES := sysupgrade.bin factory.bin
  72. IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
  73. IMAGE/factory.bin := append-ubi
  74. endef
  75. define Device/checkpoint_l-50
  76. DEVICE_VENDOR := Check Point
  77. DEVICE_MODEL := L-50
  78. DEVICE_PACKAGES := kmod-ath9k kmod-gpio-button-hotplug kmod-mvsdio \
  79. kmod-rtc-s35390a kmod-usb-ledtrig-usbport wpad-basic-mbedtls
  80. IMAGES := sysupgrade.bin
  81. endef
  82. TARGET_DEVICES += checkpoint_l-50
  83. define Device/cisco_on100
  84. DEVICE_VENDOR := Cisco Systems
  85. DEVICE_MODEL := ON100
  86. KERNEL_SIZE := 5376k
  87. KERNEL_IN_UBI :=
  88. UBINIZE_OPTS := -E 5
  89. IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
  90. DEVICE_PACKAGES := kmod-mvsdio
  91. SUPPORTED_DEVICES += on100
  92. endef
  93. TARGET_DEVICES += cisco_on100
  94. define Device/cloudengines_pogoe02
  95. DEVICE_VENDOR := Cloud Engines
  96. DEVICE_MODEL := Pogoplug E02
  97. DEVICE_DTS := kirkwood-pogo_e02
  98. SUPPORTED_DEVICES += pogo_e02
  99. endef
  100. TARGET_DEVICES += cloudengines_pogoe02
  101. define Device/cloudengines_pogoplugv4
  102. DEVICE_VENDOR := Cloud Engines
  103. DEVICE_MODEL := Pogoplug V4
  104. DEVICE_DTS := kirkwood-pogoplug-series-4
  105. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-mvsdio kmod-usb3 \
  106. kmod-gpio-button-hotplug
  107. endef
  108. TARGET_DEVICES += cloudengines_pogoplugv4
  109. define Device/ctera_c200-v1
  110. DEVICE_VENDOR := Ctera
  111. DEVICE_MODEL := C200
  112. DEVICE_VARIANT := V1
  113. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-gpio-button-hotplug \
  114. kmod-hwmon-lm63 kmod-rtc-s35390a kmod-usb-ledtrig-usbport
  115. KERNEL := kernel-bin | append-dtb | uImage none | ctera-firmware
  116. KERNEL_IN_UBI :=
  117. KERNEL_SUFFIX := -factory.firm
  118. IMAGES := sysupgrade.bin
  119. endef
  120. TARGET_DEVICES += ctera_c200-v1
  121. define Device/endian_4i-edge-200
  122. DEVICE_VENDOR := Endian
  123. DEVICE_MODEL := 4i Edge 200
  124. DEVICE_ALT0_VENDOR := Endian
  125. DEVICE_ALT0_MODEL := UTM Mini Firewall
  126. DEVICE_PACKAGES := kmod-ath9k kmod-mvsdio wpad-basic-mbedtls
  127. KERNEL_SIZE := 4096k
  128. IMAGES := sysupgrade.bin
  129. endef
  130. TARGET_DEVICES += endian_4i-edge-200
  131. define Device/globalscale_sheevaplug
  132. DEVICE_VENDOR := Globalscale
  133. DEVICE_MODEL := Sheevaplug
  134. DEVICE_PACKAGES := kmod-mvsdio
  135. endef
  136. TARGET_DEVICES += globalscale_sheevaplug
  137. define Device/iom_iconnect-1.1
  138. DEVICE_VENDOR := Iomega
  139. DEVICE_MODEL := Iconnect
  140. DEVICE_DTS := kirkwood-iconnect
  141. SUPPORTED_DEVICES += iconnect
  142. endef
  143. TARGET_DEVICES += iom_iconnect-1.1
  144. define Device/iom_ix2-200
  145. DEVICE_VENDOR := Iomega
  146. DEVICE_MODEL := StorCenter ix2-200
  147. DEVICE_DTS := kirkwood-iomega_ix2_200
  148. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
  149. kmod-gpio-button-hotplug kmod-hwmon-lm63
  150. PAGESIZE := 512
  151. SUBPAGESIZE := 256
  152. BLOCKSIZE := 16k
  153. KERNEL_SIZE := 3072k
  154. KERNEL_IN_UBI :=
  155. UBINIZE_OPTS := -E 5
  156. IMAGE_SIZE := 31744k
  157. IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
  158. check-size
  159. endef
  160. TARGET_DEVICES += iom_ix2-200
  161. define Device/iptime_nas1
  162. DEVICE_VENDOR := ipTIME
  163. DEVICE_MODEL := NAS1
  164. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
  165. kmod-gpio-button-hotplug kmod-gpio-pca953x kmod-hwmon-drivetemp \
  166. kmod-hwmon-gpiofan kmod-usb-ledtrig-usbport -uboot-envtools
  167. KERNEL := $$(KERNEL) | iptime-naspkg nas1
  168. BLOCKSIZE := 256k
  169. IMAGE_SIZE := 15872k
  170. IMAGES := sysupgrade.bin
  171. IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
  172. check-size | append-metadata
  173. endef
  174. TARGET_DEVICES += iptime_nas1
  175. define Device/linksys
  176. DEVICE_VENDOR := Linksys
  177. DEVICE_PACKAGES := kmod-mwl8k wpad-basic-mbedtls kmod-gpio-button-hotplug
  178. KERNEL_IN_UBI :=
  179. UBINIZE_OPTS := -E 5
  180. IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
  181. endef
  182. define Device/linksys_e4200-v2
  183. $(Device/linksys)
  184. $(Device/kernel-size-migration)
  185. DEVICE_MODEL := E4200
  186. DEVICE_VARIANT := v2
  187. KERNEL_SIZE := 3072k
  188. SUPPORTED_DEVICES += linksys,viper linksys-viper
  189. endef
  190. TARGET_DEVICES += linksys_e4200-v2
  191. define Device/linksys_ea3500
  192. $(Device/linksys)
  193. $(Device/kernel-size-migration)
  194. DEVICE_MODEL := EA3500
  195. PAGESIZE := 512
  196. SUBPAGESIZE := 256
  197. BLOCKSIZE := 16k
  198. KERNEL_SIZE := 3072k
  199. SUPPORTED_DEVICES += linksys,audi linksys-audi
  200. endef
  201. TARGET_DEVICES += linksys_ea3500
  202. define Device/linksys_ea4500
  203. $(Device/linksys)
  204. $(Device/kernel-size-migration)
  205. DEVICE_MODEL := EA4500
  206. KERNEL_SIZE := 3072k
  207. SUPPORTED_DEVICES += linksys,viper linksys-viper
  208. endef
  209. TARGET_DEVICES += linksys_ea4500
  210. define Device/netgear_readynas-duo-v2
  211. DEVICE_VENDOR := NETGEAR
  212. DEVICE_MODEL := ReadyNAS Duo
  213. DEVICE_VARIANT := v2
  214. DEVICE_DTS := kirkwood-netgear_readynas_duo_v2
  215. KERNEL_IN_UBI :=
  216. IMAGES := sysupgrade.bin
  217. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
  218. kmod-gpio-button-hotplug kmod-hwmon-g762 kmod-rtc-rs5c372a kmod-usb3
  219. endef
  220. TARGET_DEVICES += netgear_readynas-duo-v2
  221. define Device/raidsonic_ib-nas62x0
  222. DEVICE_VENDOR := RaidSonic
  223. DEVICE_MODEL := ICY BOX IB-NAS62x0
  224. DEVICE_DTS := kirkwood-ib62x0
  225. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4
  226. SUPPORTED_DEVICES += ib62x0
  227. endef
  228. TARGET_DEVICES += raidsonic_ib-nas62x0
  229. define Device/seagate_blackarmor-nas220
  230. DEVICE_VENDOR := Seagate
  231. DEVICE_MODEL := Blackarmor NAS220
  232. DEVICE_PACKAGES := kmod-hwmon-adt7475 kmod-fs-ext4 kmod-ata-marvell-sata \
  233. mdadm kmod-gpio-button-hotplug
  234. PAGESIZE := 512
  235. SUBPAGESIZE := 256
  236. BLOCKSIZE := 16k
  237. UBINIZE_OPTS := -e 1
  238. endef
  239. TARGET_DEVICES += seagate_blackarmor-nas220
  240. define Device/seagate_dockstar
  241. DEVICE_VENDOR := Seagate
  242. DEVICE_MODEL := FreeAgent Dockstar
  243. SUPPORTED_DEVICES += dockstar
  244. endef
  245. TARGET_DEVICES += seagate_dockstar
  246. define Device/seagate_goflexnet
  247. DEVICE_VENDOR := Seagate
  248. DEVICE_MODEL := GoFlexNet
  249. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4
  250. SUPPORTED_DEVICES += goflexnet
  251. endef
  252. TARGET_DEVICES += seagate_goflexnet
  253. define Device/seagate_goflexhome
  254. DEVICE_VENDOR := Seagate
  255. DEVICE_MODEL := GoFlexHome
  256. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4
  257. SUPPORTED_DEVICES += goflexhome
  258. endef
  259. TARGET_DEVICES += seagate_goflexhome
  260. define Device/zyxel_nsa310b
  261. DEVICE_VENDOR := ZyXEL
  262. DEVICE_MODEL := NSA310b
  263. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-r8169 kmod-fs-ext4 \
  264. kmod-gpio-button-hotplug kmod-hwmon-lm85
  265. SUPPORTED_DEVICES += nsa310b
  266. endef
  267. TARGET_DEVICES += zyxel_nsa310b
  268. define Device/zyxel_nsa310s
  269. DEVICE_VENDOR := ZyXEL
  270. DEVICE_MODEL := NSA310S
  271. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-gpio-button-hotplug
  272. endef
  273. TARGET_DEVICES += zyxel_nsa310s
  274. define Device/zyxel_nsa325
  275. DEVICE_VENDOR := ZyXEL
  276. DEVICE_MODEL := NSA325
  277. DEVICE_VARIANT := v1/v2
  278. DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
  279. kmod-gpio-button-hotplug kmod-rtc-pcf8563 kmod-usb3
  280. SUPPORTED_DEVICES += nsa325
  281. endef
  282. TARGET_DEVICES += zyxel_nsa325
  283. $(eval $(call BuildImage))