summaryrefslogtreecommitdiff
path: root/mk/image.mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk/image.mk')
-rw-r--r--mk/image.mk69
1 files changed, 69 insertions, 0 deletions
diff --git a/mk/image.mk b/mk/image.mk
new file mode 100644
index 000000000..4388dcaad
--- /dev/null
+++ b/mk/image.mk
@@ -0,0 +1,69 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+imageprepare: kernel-install image-prepare-post
+
+image-prepare-post:
+ rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \
+ dd if=$$rng bs=512 count=1 >>${TARGET_DIR}/etc/.rnd 2>/dev/null; \
+ chmod 600 ${TARGET_DIR}/etc/.rnd
+ # Sanity checks
+ @cd ${TARGET_DIR}; ls=; ln=; li=; x=1; md5sum $$(find . -type f) | \
+ sed -e "s/*//" | \
+ while read sum name; do \
+ inode=$$(ls -i "$$name"); \
+ echo "$$sum $${inode%% *} $$name"; \
+ done | sort | while read sum inode name; do \
+ if [[ $$sum = $$ls ]]; then \
+ [[ $$li = $$inode ]] && continue; \
+ case $$x in \
+ 1) echo 'WARNING: duplicate files found' \
+ 'in filesystem! Please fix them.' >&2; \
+ echo -n "> $$ln "; \
+ ;; \
+ 2) echo -n "> $$ln "; \
+ ;; \
+ 3) echo -n ' '; \
+ ;; \
+ esac; \
+ echo -n "$$name"; \
+ x=3; \
+ else \
+ case $$x in \
+ 3) echo; \
+ x=2; \
+ ;; \
+ esac; \
+ fi; \
+ ls=$$sum; \
+ ln=$$name; \
+ li=$$inode; \
+ done
+ chmod 4511 ${TARGET_DIR}/bin/busybox
+ chmod 1777 ${TARGET_DIR}/tmp
+
+INITRAMFS= ${DEVICE}-${ARCH}-${FS}
+ROOTFSSQUASHFS= ${DEVICE}-${ARCH}-${FS}.fimage
+ROOTFSTARBALL= ${DEVICE}-${ARCH}-${FS}.tar.gz
+
+${BIN_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR}
+ cd ${TARGET_DIR}; tar -cf - --owner=0 --group=0 . | gzip -n9 >$@
+
+${BIN_DIR}/${INITRAMFS}: ${TARGET_DIR}
+ cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \
+ cpio -R 0:0 --quiet -oC512 -Mdist -Hnewc | gzip -n9 >$@
+
+${BIN_DIR}/${ROOTFSSQUASHFS}: ${TARGET_DIR}
+ PATH='${TARGET_PATH}' \
+ mksquashfs ${TARGET_DIR} ${BUILD_DIR}/root.squashfs \
+ -nopad -noappend -root-owned -le $(MAKE_TRACE)
+ # padding of images is required
+ cat ${BIN_DIR}/${DEVICE}-${ARCH}-kernel ${BUILD_DIR}/root.squashfs > \
+ ${BUILD_DIR}/${ROOTFSSQUASHFS}
+ dd if=${BUILD_DIR}/${ROOTFSSQUASHFS} of=${BIN_DIR}/${ROOTFSSQUASHFS} \
+ bs=4063232 conv=sync $(MAKE_TRACE)
+
+imageclean:
+ rm -f $(BIN_DIR)/$(DEVICE)-*