Root/
1 | |
2 | Cramfs - cram a filesystem onto a small ROM |
3 | |
4 | cramfs is designed to be simple and small, and to compress things well. |
5 | |
6 | It uses the zlib routines to compress a file one page at a time, and |
7 | allows random page access. The meta-data is not compressed, but is |
8 | expressed in a very terse representation to make it use much less |
9 | diskspace than traditional filesystems. |
10 | |
11 | You can't write to a cramfs filesystem (making it compressible and |
12 | compact also makes it _very_ hard to update on-the-fly), so you have to |
13 | create the disk image with the "mkcramfs" utility. |
14 | |
15 | |
16 | Usage Notes |
17 | ----------- |
18 | |
19 | File sizes are limited to less than 16MB. |
20 | |
21 | Maximum filesystem size is a little over 256MB. (The last file on the |
22 | filesystem is allowed to extend past 256MB.) |
23 | |
24 | Only the low 8 bits of gid are stored. The current version of |
25 | mkcramfs simply truncates to 8 bits, which is a potential security |
26 | issue. |
27 | |
28 | Hard links are supported, but hard linked files |
29 | will still have a link count of 1 in the cramfs image. |
30 | |
31 | Cramfs directories have no `.' or `..' entries. Directories (like |
32 | every other file on cramfs) always have a link count of 1. (There's |
33 | no need to use -noleaf in `find', btw.) |
34 | |
35 | No timestamps are stored in a cramfs, so these default to the epoch |
36 | (1970 GMT). Recently-accessed files may have updated timestamps, but |
37 | the update lasts only as long as the inode is cached in memory, after |
38 | which the timestamp reverts to 1970, i.e. moves backwards in time. |
39 | |
40 | Currently, cramfs must be written and read with architectures of the |
41 | same endianness, and can be read only by kernels with PAGE_CACHE_SIZE |
42 | == 4096. At least the latter of these is a bug, but it hasn't been |
43 | decided what the best fix is. For the moment if you have larger pages |
44 | you can just change the #define in mkcramfs.c, so long as you don't |
45 | mind the filesystem becoming unreadable to future kernels. |
46 | |
47 | |
48 | For /usr/share/magic |
49 | -------------------- |
50 | |
51 | 0 ulelong 0x28cd3d45 Linux cramfs offset 0 |
52 | >4 ulelong x size %d |
53 | >8 ulelong x flags 0x%x |
54 | >12 ulelong x future 0x%x |
55 | >16 string >\0 signature "%.16s" |
56 | >32 ulelong x fsid.crc 0x%x |
57 | >36 ulelong x fsid.edition %d |
58 | >40 ulelong x fsid.blocks %d |
59 | >44 ulelong x fsid.files %d |
60 | >48 string >\0 name "%.16s" |
61 | 512 ulelong 0x28cd3d45 Linux cramfs offset 512 |
62 | >516 ulelong x size %d |
63 | >520 ulelong x flags 0x%x |
64 | >524 ulelong x future 0x%x |
65 | >528 string >\0 signature "%.16s" |
66 | >544 ulelong x fsid.crc 0x%x |
67 | >548 ulelong x fsid.edition %d |
68 | >552 ulelong x fsid.blocks %d |
69 | >556 ulelong x fsid.files %d |
70 | >560 string >\0 name "%.16s" |
71 | |
72 | |
73 | Hacker Notes |
74 | ------------ |
75 | |
76 | See fs/cramfs/README for filesystem layout and implementation notes. |
77 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9