123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/bin/sh
- get_magic_word() {
- dd if=$1 bs=4 count=1 2>/dev/null | od -A n -N 4 -t x1 | tr -d ' '
- }
- get_post_padding_word() {
- local rootfs_length="$(stat -c%s "$1")"
- [ "$rootfs_length" -ge 4 ] || return
- rootfs_length=$((rootfs_length-4))
- # the JFFS2 end marker must be on a 4K boundary (often 64K or 256K)
- local unaligned_bytes=$((rootfs_length%4096))
- [ "$unaligned_bytes" = 0 ] || return
- # skip rootfs data except the potential EOF marker
- dd if="$1" bs=1 skip="$rootfs_length" 2>/dev/null | od -A n -N 4 -t x1 | tr -d ' '
- }
- get_fs_type() {
- local magic_word="$(get_magic_word "$1")"
- case "$magic_word" in
- "3118"*)
- echo "ubifs"
- ;;
- "68737173")
- local post_padding_word="$(get_post_padding_word "$1")"
- case "$post_padding_word" in
- "deadc0de")
- echo "squashfs-jffs2"
- ;;
- *)
- echo "squashfs"
- ;;
- esac
- ;;
- *)
- echo "unknown"
- ;;
- esac
- }
- round_up() {
- echo "$(((($1 + ($2 - 1))/ $2) * $2))"
- }
|