diff options
Diffstat (limited to 'target/squashfs')
-rw-r--r-- | target/squashfs/squashfs.patch | 36 | ||||
-rw-r--r-- | target/squashfs/squashfsroot.mk | 51 |
2 files changed, 87 insertions, 0 deletions
diff --git a/target/squashfs/squashfs.patch b/target/squashfs/squashfs.patch new file mode 100644 index 000000000..ea75a7f18 --- /dev/null +++ b/target/squashfs/squashfs.patch @@ -0,0 +1,36 @@ +This is a stupid little patch adding an option to change all uid/gid to +root/root in the generated filesystem. We really need to teach mksquashfs +about device tables though... + +--- squashfs1.3r3/squashfs-tools/mksquashfs.c-dist 2004-03-29 20:35:37.000000000 -0600 ++++ squashfs1.3r3/squashfs-tools/mksquashfs.c 2004-03-29 22:28:51.000000000 -0600 +@@ -136,6 +136,8 @@ + stotal_bytes, stotal_inode_bytes, stotal_directory_bytes, sinode_count, sfile_count, ssym_count, sdev_count, sdir_count, sdup_files; + int restore = 0; + ++unsigned int root_owned = 0; ++ + /*flag whether destination file is a block device */ + int block_device = 0; + +@@ -421,6 +423,11 @@ + return SQUASHFS_INVALID; + } + ++ if (root_owned) { ++ buf.st_uid = 0; ++ buf.st_gid = 0; ++ } ++ + base->mode = SQUASHFS_MODE(buf.st_mode); + base->uid = get_uid(&file_type, (squashfs_uid) buf.st_uid); + base->inode_type = file_type; +@@ -1268,6 +1275,8 @@ + root_name = argv[i]; + } else if(strcmp(argv[i], "-version") == 0) { + VERSION(); ++ } else if (strcmp(argv[i], "-root-owned") == 0) { ++ root_owned = TRUE; + } else { + ERROR("%s: invalid option\n\n", argv[0]); + printOptions: diff --git a/target/squashfs/squashfsroot.mk b/target/squashfs/squashfsroot.mk new file mode 100644 index 000000000..523d5e2a9 --- /dev/null +++ b/target/squashfs/squashfsroot.mk @@ -0,0 +1,51 @@ +############################################################# +# +# mksquashfs to build to target squashfs filesystems +# +############################################################# +SQUASHFS_DIR=$(BUILD_DIR)/squashfs1.3r3 +SQUASHFS_SOURCE=squashfs1.3r3.tar.gz +SQUASHFS_SITE=http://aleron.dl.sourceforge.net/sourceforge/squashfs + +$(DL_DIR)/$(SQUASHFS_SOURCE): + $(WGET) -P $(DL_DIR) $(SQUASHFS_SITE)/$(SQUASHFS_SOURCE) + +$(SQUASHFS_DIR): $(DL_DIR)/$(SQUASHFS_SOURCE) #$(SQUASHFS_PATCH) + zcat $(DL_DIR)/$(SQUASHFS_SOURCE) | tar -C $(BUILD_DIR) -xvf - + $(SOURCE_DIR)/patch-kernel.sh $(SQUASHFS_DIR) $(SOURCE_DIR) squashfs.patch + +$(SQUASHFS_DIR)/squashfs-tools/mksquashfs: $(SQUASHFS_DIR) + $(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools; + +squashfs: $(SQUASHFS_DIR)/squashfs-tools/mksquashfs + +squashfs-source: $(DL_DIR)/$(SQUASHFS_SOURCE) + +squashfs-clean: + -$(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools clean + +squashfs-dirclean: + rm -rf $(SQUASHFS_DIR) + +############################################################# +# +# Build the squashfs root filesystem image +# +############################################################# + +squashfsroot: squashfs + #-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true; + -@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true; + @rm -rf $(TARGET_DIR)/usr/man + @rm -rf $(TARGET_DIR)/usr/info + #$(SQUASHFS_DIR)/squashfs-tools/mksquashfs -q -D $(SOURCE_DIR)/device_table.txt $(TARGET_DIR) $(IMAGE) + $(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR) $(IMAGE) -noappend -root-owned + +squashfsroot-source: squashfs-source + +squashfsroot-clean: + -$(MAKE) -C $(SQUASHFS_DIR) clean + +squashfsroot-dirclean: + rm -rf $(SQUASHFS_DIR) + |