image.mk 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #
  2. # Copyright (C) 2006 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. include $(INCLUDE_DIR)/prereq.mk
  8. include $(INCLUDE_DIR)/kernel.mk
  9. KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
  10. ifneq ($(CONFIG_BIG_ENDIAN),y)
  11. JFFS2OPTS := --pad --little-endian --squash
  12. SQUASHFS_OPTS := -le
  13. else
  14. JFFS2OPTS := --pad --big-endian --squash
  15. SQUASHFS_OPTS := -be
  16. endif
  17. define add_jffs2_mark
  18. echo -ne '\xde\xad\xc0\xde' >> $(1)
  19. endef
  20. # pad to 64k and add jffs2 end-of-filesystem mark
  21. # do this twice to make sure that this works with 128k blocksize as well
  22. define prepare_generic_squashfs
  23. dd if=$(1) of=$(KDIR)/tmpfile.1 bs=64k conv=sync
  24. $(call add_jffs2_mark,$(KDIR)/tmpfile.1)
  25. dd of=$(1) if=$(KDIR)/tmpfile.1 bs=64k conv=sync
  26. $(call add_jffs2_mark,$(1))
  27. endef
  28. ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
  29. ifeq ($(CONFIG_TARGET_ROOTFS_JFFS2),y)
  30. define Image/mkfs/jffs2
  31. rm -rf $(BUILD_DIR)/root/jffs
  32. $(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2OPTS) -e 0x10000 -o $(KDIR)/root.jffs2-64k -d $(BUILD_DIR)/root
  33. $(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2OPTS) -e 0x20000 -o $(KDIR)/root.jffs2-128k -d $(BUILD_DIR)/root
  34. # add End-of-Filesystem markers
  35. $(call add_jffs2_mark,$(KDIR)/root.jffs2-64k)
  36. $(call add_jffs2_mark,$(KDIR)/root.jffs2-128k)
  37. $(call Image/Build,jffs2-64k)
  38. $(call Image/Build,jffs2-128k)
  39. endef
  40. endif
  41. ifeq ($(CONFIG_TARGET_ROOTFS_SQUASHFS),y)
  42. define Image/mkfs/squashfs
  43. @mkdir -p $(BUILD_DIR)/root/jffs
  44. $(STAGING_DIR)/bin/mksquashfs-lzma $(BUILD_DIR)/root $(KDIR)/root.squashfs -nopad -noappend -root-owned $(SQUASHFS_OPTS)
  45. $(call Image/Build,squashfs)
  46. endef
  47. endif
  48. ifeq ($(CONFIG_TARGET_ROOTFS_TGZ),y)
  49. define Image/mkfs/tgz
  50. tar -zcf $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-rootfs.tgz --owner=root --group=root -C $(BUILD_DIR)/root/ .
  51. endef
  52. endif
  53. else
  54. define Image/BuildKernel
  55. cp $(KDIR)/vmlinux.elf $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinux.elf
  56. endef
  57. endif
  58. ifeq ($(CONFIG_TARGET_ROOTFS_EXT2FS),y)
  59. E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_FSPART)*1024)))
  60. define Image/mkfs/ext2
  61. $(STAGING_DIR)/bin/genext2fs -U -b $(E2SIZE) -I $(CONFIG_TARGET_ROOTFS_MAXINODE) -d $(BUILD_DIR)/root/ $(KDIR)/root.ext2
  62. $(call Image/Build,ext2)
  63. endef
  64. endif
  65. define Image/mkfs/prepare/default
  66. find $(BUILD_DIR)/root -type f -not -perm +0100 -not -name 'ssh_host*' | xargs chmod 0644
  67. find $(BUILD_DIR)/root -type f -perm +0100 | xargs chmod 0755
  68. find $(BUILD_DIR)/root -type d | xargs chmod 0755
  69. mkdir -p $(BUILD_DIR)/root/tmp
  70. chmod 0777 $(BUILD_DIR)/root/tmp
  71. endef
  72. define Image/mkfs/prepare
  73. $(call Image/mkfs/prepare/default)
  74. endef
  75. define BuildImage
  76. download:
  77. prepare:
  78. ifneq ($(IB),1)
  79. compile: compile-targets
  80. $(call Build/Compile)
  81. else
  82. compile:
  83. endif
  84. ifneq ($(IB),1)
  85. install: compile install-targets
  86. $(call Image/Prepare)
  87. $(call Image/mkfs/prepare)
  88. $(call Image/BuildKernel)
  89. $(call Image/mkfs/jffs2)
  90. $(call Image/mkfs/squashfs)
  91. $(call Image/mkfs/tgz)
  92. $(call Image/mkfs/ext2)
  93. else
  94. install: compile install-targets
  95. $(call Image/BuildKernel)
  96. $(call Image/mkfs/jffs2)
  97. $(call Image/mkfs/squashfs)
  98. $(call Image/mkfs/tgz)
  99. $(call Image/mkfs/ext2)
  100. endif
  101. ifneq ($(IB),1)
  102. clean: clean-targets
  103. $(call Build/Clean)
  104. else
  105. clean:
  106. endif
  107. compile-targets:
  108. install-targets:
  109. clean-targets:
  110. endef