Cromfs: Compressed ROM filesystem for Linux (user-space) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. Purpose
Cromfs is a compressed read-only filesystem for Linux.
It uses the LZMA compression algorithm from 7-zip,
and a powerful block merging mechanism, that is especially efficient
with gigabytes of large files having lots of redundancy.
The primary design goal of cromfs is compression power.
It is much slower than its peers, and uses more RAM.
If all you care about is "powerful compression"
and "random file access", then you will be happy with cromfs.
The creation of cromfs was inspired
from Squashfs
and Cramfs.
The downloading section is at the bottom of this page. 2. News
See the ChangeLog.
3. Overview
4. Limitations
5. Development status
Development status: Stable. (Really: progressive.) (Fully functional release exists, but is updated from time to time.) Cromfs has been in beta stage for over a year, during which time very little bugs have been reported, and no known bugs remain at this time. It does not make sense to keep it as "beta" indefinitely, but since there is never going to be a "final" version — new versions may always be released — it is now labeled as "progressive". In practice, the author trusts it works as advertised, but as per GPL policy, there is NO WARRANTY whatsoever. The entire risk to the quality and performance of the program suite is with you. #include "GNU gdb/show warranty" 6. Comparing to other filesystems
This is all very biased probably, hypothetical,
and by no means a scientific study, but here goes:
Legend: Good,
Bad,
Partial
Note: If you notice that this table contains wrong information, please contact me telling what it is and I will change it. Note: cromfs now saves the uid and gid in the filesystem. However, when the uid is 0 (root), the cromfs-driver returns the uid of the user who mounted the filesystem, instead of root. Similarly for gid. This is both for backward compatibility and for security.If you mount as root, this behavior has no effect. 6.1. Compression tests
Note: I use the -e and -r options in all of these mkcromfs tests
to avoid unnecessary decompression+recompression steps, in order
to speed up the filesystem generation. This has no effect in
compression ratio. In this table, k equals 1024 bytes (210) and M equals 1048576 bytes (220). Note: Again, these tests have not been peer-verified so it is not a real scientific study. But I attest that these are the results I got.
7-zip packs all the files together as one stream. The maximum dictionary size in 32-bit mode is 256 MB. (Note: The default for "maximum compression" is 32 MB.) When 256 MB of data has been packed and more data comes in, similarities between the first megabytes of data and the latest data are not utilized. For example, Mega Man and Rockman are two almost identical versions of the same image, but because there's more than 400 MB of files in between of those when they are processed in alphabetical order, 7-zip does not see that they are similar, and will compress each one separately. 6.2. Speed tests
Speed testing hasn't been done yet. It is difficult to test the speed,
because it depends on factors such as cache (with compressed filesystems,
decompression consumes CPU power but usually only needs to be done once)
and block size (bigger blocks need more time to decompress).
However, in the general case, it is quite safe to assume
that mkcromfs is the slowest of all. The same goes
for resource testing (RAM).
cromfs-driver requires an amount of RAM proportional to a few factors.
It can be approximated with this formula:
Max_RAM_usage = FBLOCK_CACHE_MAX_SIZE × fblock_size + READDIR_CACHE_MAX_SIZE × 60k + 8 × num_blocks
Where
7. Getting started
8. Tips8.0.1. To improve compression
To improve the compression, try these tips:
8.0.2. To improve mkcromfs speed
To improve the filesystem generation speed, try these tips:
8.0.3. To control the memory usage
To control the memory usage, use these tips:
8.0.4. To control the filesystem speed
To control the filesystem speed, use these tips:
8.0.5. Using cromfs with automount
Since version 1.3.0, you can use cromfs in conjunction with the
automount (autofs) feature present in Linux kernel. This allows
you to mount cromfs volumes automatically on demand, and umount
them when they are not used, conserving free memory.
This line in your autofs file (such as auto.misc) will do the trick (assuming the path you want is "books", and your volume is located at "/home/myself/books.cromfs"):
books -fstype=fuse,ro,allow_other :/usr/local/bin/cromfs-driver\#/home/myself/books.cromfs 9. Understanding the concepts
Skip over this section if you don't think yourself as technically inclined. cromfs workings are explained in a nutshell here. 9.0.1. Inode
Every object in a filesystem (from user's side) is an "inode".
This includes at least symlinks, directories, files, fifos and device entries.
The inode contains the file attributes and its contents, but not its name.
(The name is contained in a directory listing, along with the reference to the inode.)
This is the traditional way in *nix systems.
When a file is "hardlinked" into multiple locations in the filesystem,
the inode is not copied. The inode number just is listed in multiple
directories. A symlink however, is an entirely new inode unrelated to the file it points to. The file attributes and the file contents are stored separately. In cromfs, the inode contains an array of block numbers, which are necessary in finding the actual contents of the file. 9.0.2. Block
The contents of every file (denoted by the inode) are divided into "blocks".
The size of this block is controlled by the --bsize commandline parameter.
For example, if your file is 10000 bytes in size, and your bsize is 4000,
the file contains three blocks: 4000 + 4000 + 2000 bytes.
The inode contains thus three block numbers,
which refer to entries in the block table.
Only regular files, symlinks and directories have "contents" that need
storing. Device entries for example, do not have associated contents. The contents of a directory is a list of file names and inode numbers. Every time mkcromfs stores a new block, a new block number is generated to denote that particular block (this number is stored in the inode), and a new data locator is stored to describe where the block is found (the locator is stored in the block table). If mkcromfs reused a previously generated data locator, only the block number needs to be stored. 9.0.3. Fblock
Fblock is a storage unit in a cromfs filesystem.
It is the physical container of block data for multiple files. When mkcromfs creates a new filesystem, it splits each file into blocks (see above), and for each of those blocks, it determines which fblock they go to. The maximum fblock size is mandated by the --fsize commandline parameter. Each fblock is compressed separately, so a few big fblocks compresses better than many small fblocks. Cromfs automatically creates as many fblocks as is needed to store the contents of the entire filesystem being created. A fblock is merely a storage. Regardless of the sizes of the blocks and fblocks, the fblock may contain any number of blocks, from 1 to upwards (no upper limit). It is beneficial for blocks to overlap, and this is an important source of the power of cromfs. The working principle behind fblocks is: What is the shortest string that can contain all these substrings? 9.0.4. Block number and block table
The filesystem contains a structure called "blktab" (block table),
which is a list of data locators.
This list is indexed by a block number. Each locator describes, where to find the particular block denoted by this block number. At the end of the filesystem creation process, the blktab is compressed and becomes "blkdata" before being written into the filesystem. (These names are only useful when referencing the filesystem format documentation; they are not found in the filesystem itself. 9.0.5. Data locator
A data locator tells cromfs, where to find the contents of this particular block.
It is composed of an fblock number and an offset
into that fblock.
These locators are stored in the global
block table, as explained above.
Multiple files may be sharing same data locators, and multiple data
locators may be pointing to same, partially overlapping data.
9.0.6. Block indexing (mkcromfs only)
When mkcromfs stores blocks, it remembers where it stored them, so that
if it later finds an identical block in another file (or the same file),
it won't need to search fblocks again to find a best placement. The index is a map of block hashes to data locators and block numbers. The --autoindexperiod (-A) setting can be used to extend this mechanism, that in addition to the blocks it has already encoded, it will memorize more locations in those fblocks — create "just in case" data locators for future use but not actually save them in the block table, unless they're utilized later. This helps compression when the number of fblocks searched (--bruteforcelimit) is low compared to the number of fblocks generated, at the cost of memory consumed by mkcromfs, and has also potential to make mkcromfs faster (but also slower). 9.0.7. Random compress period (mkcromfs only)
When mkcromfs runs, it generates a temporary file for each fblock of the
resulting filesystem. If your resulting filesystem is large, those fblocks
will take even more of space, a lot anyway. To save disk space, mkcromfs compresses those fblocks when they are not accessed. However, if it needs to access them again (to search the contents for a match), it will need to decompress them first. This compressing+decompressing may consume lots of time. It does not help the size of the resulting filesystem; it only saves some temporary disk space. If you are not concerned about temporary disk space, you should give the --randomcompressperiod option a large number (such as 10000) to prevent it from needlessly decompressing+compressing the fblocks over and over again. This will improve the speed of mkcromfs. The --decompresslookups option is related. If you use the --randomcompressperiod option, you should also enable --decompresslookups. By the way, the temporary files are written into wherever your TEMP environment variable points to. TMP is also recognized. 9.0.8. Where are the inodes stored then?
All the inodes of the filesystem are also stored in a file, together.
That file is packed like any one other file, split into blocks and
scattered into fblocks. That data locator list of that file, is stored
in a special inode called "inotab", but it is not seen in any
directory. The "inotab" has its own place in the cromfs file.
10. Using cromfs in bootdisks and tiny Linux distributions
Cromfs can be used in bootdisks and tiny Linux distributions only
by starting the cromfs-driver from a ramdisk (initrd), and then
pivot_rooting into the mounted filesystem (but not before the
filesystem has been initialized; there is a delay of a few seconds).
Theoretical requirements to use cromfs in the root filesystem:
11. Other applications of cromfs
The compression algorithm in cromfs can be used to determine how similar
some files are to each others.
This is an example output of the following command:
$ unmkcromfs --simgraph fs.cromfs '*.qh' > result.xmlfrom a sample filesystem: <?xml version="1.0" encoding="UTF-8"?> <simgraph> <volume> <total_size>64016101</total_size> <num_inodes>7</num_inodes> <num_files>307</num_files> </volume> <inodes> <inode id="5595"><file>45/qb5/ir/basewc.qh</file></inode> <inode id="5775"><file>45/qb5/ir/edit.qh</file></inode> <inode id="5990"><file>45/qb5/ir/help.qh</file></inode> <inode id="6220"><file>45/qb5/ir/oemwc.qh</file></inode> <inode id="6426"><file>45/qb5/ir/qbasic.qh</file></inode> <inode id="18833"><file>c6ers/newcmds/toolib/doc/contents.qh</file></inode> <inode id="19457"><file>c6ers/newcmds/toolib/doc/index.qh</file></inode> </inodes> <matches> <match inode1="5595" inode2="5990"><bytes>396082</bytes><ratio>0.5565442944</ratio></match> <match inode1="5595" inode2="6220"><bytes>456491</bytes><ratio>0.6414264256</ratio></match> <match inode1="5990" inode2="6220"><bytes>480031</bytes><ratio>0.6732618693</ratio></match> </matches> </simgraph>It reads a cromfs volume generated earlier, and outputs statistics of it. Such statistics can be useful in refining further compression, or just finding useful information regarding the redundancy of the data set. It follows this DTD: <!ENTITY % INTEGER "#PCDATA"> <!ENTITY % REAL "#PCDATA"> <!ENTITY % int "CDATA"> <!ELEMENT simgraph (volume, inodes, matches)> <!ELEMENT volume (total_size, num_inodes, num_files)> <!ELEMENT total_size (%INTEGER;)> <!ELEMENT num_inodes (%INTEGER;)> <!ELEMENT num_files (%INTEGER;)> <!ELEMENT inodes (inode*)> <!ELEMENT inode (file+)> <!ATTLIST inode id %int; #REQUIRED> <!ELEMENT file (#PCDATA)> <!ELEMENT matches (match*)> <!ELEMENT match (bytes, ratio)> <!ATTLIST match inode1 %int; #REQUIRED> <!ATTLIST match inode2 %int; #REQUIRED> <!ELEMENT bytes (%INTEGER;)> <!ELEMENT ratio (%REAL;)>Once you have generated the file system, running the --simgraph query is relatively a cheap operation (but still O(n2) for the number of files); it involves analyzing the structures created by mkcromfs, and does not require any search on the actual file contents. However, it can only report as fine-grained similarity information as were the options in the generation of the filesystem (level of compression). 12. Copying and contributing
cromfs has been written by Joel Yliluoma, a.k.a.
Bisqwit, and is distributed under the terms of the General Public License version 3 (GPL3). The LZMA code from the LZMA SDK is in public domain. The LZO code from liblzo2.03 embedded within is licensed under GPL version 2 or later. Patches and other related material can be submitted to the author by e-mail at:ioJoelr Yligluom0za <bi0lsqwieXzt@ik3mni.fi> The author also wishes to hear if you use cromfs, and for what you use it and what you think of it. You can discuss CROMFS at Freenode, on #cromfs. 12.1. Contribution wishes
The author wishes for the following things to be done
to this package.
13. Requirements
14. Links15. DownloadingDownloading help
The most recent source code (bleeding edge) for cromfs can also be downloaded by cloning the Git repository by:
Date (Y-md-Hi) acc Size Name 2014-0108-0536 r-- 608053 cromfs-1.5.10.2.tar.bz2 2014-0108-0536 r-- 646550 cromfs-1.5.10.2.tar.gz 2012-0411-0733 r-- 607756 cromfs-1.5.10.1.tar.bz2 2012-0411-0733 r-- 646215 cromfs-1.5.10.1.tar.gz 2011-0729-1121 r-- 607599 cromfs-1.5.10.tar.bz2 2011-0729-1121 r-- 645952 cromfs-1.5.10.tar.gz 2010-1221-1417 r-- 609519 cromfs-1.5.9.1.tar.bz2 2010-1221-1417 r-- 648135 cromfs-1.5.9.1.tar.gz 2009-1217-0844 r-- 609458 cromfs-1.5.9.tar.bz2 2009-1217-0844 r-- 647770 cromfs-1.5.9.tar.gz 2009-0731-1505 r-- 608866 cromfs-1.5.8.9.tar.bz2 2009-0731-1505 r-- 647501 cromfs-1.5.8.9.tar.gz 2009-0721-1241 r-- 608740 cromfs-1.5.8.8.tar.bz2 2009-0721-1241 r-- 647473 cromfs-1.5.8.8.tar.gz 2009-0427-0800 r-- 609078 cromfs-1.5.8.7.tar.bz2 2009-0427-0800 r-- 647300 cromfs-1.5.8.7.tar.gz 2009-0326-0717 r-- 608802 cromfs-1.5.8.6.tar.bz2 2009-0326-0717 r-- 647196 cromfs-1.5.8.6.tar.gz 2009-0323-1435 r-- 607965 cromfs-1.5.8.5.tar.bz2 2009-0323-1435 r-- 646899 cromfs-1.5.8.5.tar.gz 2009-0323-1437 r-- 601663 cromfs-1.5.8.4.tar.bz2 2009-0323-1436 r-- 639679 cromfs-1.5.8.4.tar.gz 2009-0314-1228 r-- 602037 cromfs-1.5.8.3.tar.bz2 2009-0314-1228 r-- 639570 cromfs-1.5.8.3.tar.gz 2009-0314-1104 r-- 602065 cromfs-1.5.8.2.tar.bz2 2009-0314-1104 r-- 640296 cromfs-1.5.8.2.tar.gz 2009-0314-0955 r-- 602123 cromfs-1.5.8.1.tar.bz2 2009-0314-0955 r-- 639685 cromfs-1.5.8.1.tar.gz 2009-0313-0924 r-- 601754 cromfs-1.5.8.tar.bz2 2009-0313-0924 r-- 639275 cromfs-1.5.8.tar.gz 2009-0201-2256 r-- 531325 cromfs-1.5.7.tar.bz2 2009-0201-2256 r-- 558083 cromfs-1.5.7.tar.gz 2008-1216-2020 r-- 499828 cromfs-1.5.6.2.tar.bz2 2008-1216-2019 r-- 517925 cromfs-1.5.6.2.tar.gz 2008-1216-1425 r-- 499297 cromfs-1.5.6.1.tar.bz2 2008-1216-1425 r-- 517344 cromfs-1.5.6.1.tar.gz 2008-1216-1418 r-- 499299 cromfs-1.5.6.tar.bz2 2008-1216-1418 r-- 517328 cromfs-1.5.6.tar.gz 2008-1213-2310 r-- 495140 cromfs-1.5.5.4.tar.bz2 2008-1213-2310 r-- 513442 cromfs-1.5.5.4.tar.gz 2008-1213-1336 r-- 495104 cromfs-1.5.5.3.tar.bz2 2008-1213-1336 r-- 513446 cromfs-1.5.5.3.tar.gz 2008-1213-0919 r-- 494870 cromfs-1.5.5.2.tar.bz2 2008-1213-0919 r-- 513129 cromfs-1.5.5.2.tar.gz 2008-1209-1254 r-- 492220 cromfs-1.5.5.1.tar.bz2 2008-1209-1254 r-- 510252 cromfs-1.5.5.1.tar.gz 2008-1208-1359 r-- 491494 cromfs-1.5.5.tar.bz2 2008-1208-1359 r-- 509284 cromfs-1.5.5.tar.gz 2008-1208-0758 r-- 501688 cromfs-1.5.4.2.tar.bz2 2008-1208-0758 r-- 525163 cromfs-1.5.4.2.tar.gz 2008-1124-0750 r-- 497141 cromfs-1.5.4.1.tar.bz2 2007-1014-2212 r-- 519072 cromfs-1.5.4.tar.gz 2007-1220-1437 r-- 29776 patch-cromfs-1.5.3.2-1.5.4.bz2 2007-1220-1437 r-- 33459 patch-cromfs-1.5.3.2-1.5.4.gz 2007-1220-1437 r-- 34511 patch-cromfs-1.5.3-1.5.4.bz2 2007-1220-1437 r-- 38779 patch-cromfs-1.5.3-1.5.4.gz 2007-0904-1343 r-- 485305 cromfs-1.5.3.2.tar.bz2 2007-0904-1343 r-- 516952 cromfs-1.5.3.2.tar.gz 2007-0904-1343 r-- 8873 patch-cromfs-1.5.3.1-1.5.3.2.bz2 2007-0904-1343 r-- 8503 patch-cromfs-1.5.3.1-1.5.3.2.gz 2007-0831-2103 r-- 484632 cromfs-1.5.3.1.tar.bz2 2007-0831-2103 r-- 515833 cromfs-1.5.3.1.tar.gz 2007-0831-2103 r-- 4104 patch-cromfs-1.5.3-1.5.3.1.bz2 2007-0831-2103 r-- 3607 patch-cromfs-1.5.3-1.5.3.1.gz 2007-0829-1901 r-- 483393 cromfs-1.5.3.tar.bz2 2007-0829-1901 r-- 513776 cromfs-1.5.3.tar.gz 2007-0829-1901 r-- 44430 patch-cromfs-1.5.2-1.5.3.bz2 2007-0829-1901 r-- 50206 patch-cromfs-1.5.2-1.5.3.gz 2007-0817-0705 r-- 486472 cromfs-1.5.2.tar.bz2 2007-0817-0705 r-- 516889 cromfs-1.5.2.tar.gz 2007-0817-0705 r-- 9146 patch-cromfs-1.5.1-1.5.2.bz2 2007-0817-0705 r-- 9001 patch-cromfs-1.5.1-1.5.2.gz 2007-0813-1622 r-- 485958 cromfs-1.5.1.tar.bz2 2007-0813-1622 r-- 515559 cromfs-1.5.1.tar.gz 2007-0813-1622 r-- 19038 patch-cromfs-1.5.0-1.5.1.bz2 2007-0813-1622 r-- 20536 patch-cromfs-1.5.0-1.5.1.gz 2007-0729-2016 r-- 482571 cromfs-1.5.0.tar.bz2 2007-0729-2016 r-- 512623 cromfs-1.5.0.tar.gz 2007-0729-2016 r-- 90809 patch-cromfs-1.4.1-1.5.0.bz2 2007-0729-2016 r-- 127932 patch-cromfs-1.4.1-1.5.0.gz 2007-0715-0050 r-- 458771 cromfs-1.4.1.tar.bz2 2007-0715-0050 r-- 486564 cromfs-1.4.1.tar.gz 2007-0715-0050 r-- 132253 patch-cromfs-1.4.0-1.4.1.bz2 2007-0715-0050 r-- 197145 patch-cromfs-1.4.0-1.4.1.gz 2007-0713-2110 r-- 446317 cromfs-1.4.0.tar.bz2 2007-0713-2110 r-- 473850 cromfs-1.4.0.tar.gz 2007-0713-2110 r-- 103390 patch-cromfs-1.3.0-1.4.0.bz2 2007-0713-2110 r-- 137352 patch-cromfs-1.3.0-1.4.0.gz 2007-0630-1717 r-- 417746 cromfs-1.3.0.tar.bz2 2007-0630-1717 r-- 444519 cromfs-1.3.0.tar.gz 2007-0630-1717 r-- 31191 patch-cromfs-1.2.5-1.3.0.bz2 2007-0630-1717 r-- 34755 patch-cromfs-1.2.5-1.3.0.gz 2007-0214-1332 r-- 407660 cromfs-1.2.5.tar.bz2 2007-0214-1332 r-- 432049 cromfs-1.2.5.tar.gz 2007-0214-1332 r-- 309728 patch-cromfs-1.2.4.5-1.2.5.bz2 2007-0214-1332 r-- 306968 patch-cromfs-1.2.4.5-1.2.5.gz 2007-0214-1332 r-- 324788 patch-cromfs-1.2.4-1.2.5.bz2 2007-0214-1332 r-- 331183 patch-cromfs-1.2.4-1.2.5.gz 2007-0212-1400 r-- 138210 cromfs-1.2.4.5.tar.bz2 2007-0212-1400 r-- 170720 cromfs-1.2.4.5.tar.gz 2007-0212-1400 r-- 8886 patch-cromfs-1.2.4.4-1.2.4.5.bz2 2007-0212-1400 r-- 7644 patch-cromfs-1.2.4.4-1.2.4.5.gz 2007-0127-0105 r-- 135354 cromfs-1.2.4.4.tar.bz2 2007-0127-0105 r-- 7006 patch-cromfs-1.2.4.3-1.2.4.4.bz2 2007-0126-1020 r-- 134486 cromfs-1.2.4.3.tar.bz2 2007-0126-1020 r-- 3025 patch-cromfs-1.2.4.2-1.2.4.3.bz2 2007-0111-0806 r-- 133931 cromfs-1.2.4.2.tar.bz2 2007-0111-0806 r-- 3396 patch-cromfs-1.2.4.1-1.2.4.2.bz2 2006-1205-1235 r-- 133860 cromfs-1.2.4.1.tar.bz2 2006-1205-1235 r-- 5723 patch-cromfs-1.2.4-1.2.4.1.bz2 2006-1204-1645 r-- 132924 cromfs-1.2.4.tar.bz2 2006-1204-1645 r-- 11771 patch-cromfs-1.2.3-1.2.4.bz2 2006-0831-1728 r-- 127894 cromfs-1.2.3.tar.bz2 2006-0831-1728 r-- 4871 patch-cromfs-1.2.2-1.2.3.bz2 2006-0823-1144 r-- 127087 cromfs-1.2.2.tar.bz2 2006-0823-1144 r-- 3252 patch-cromfs-1.2.1-1.2.2.bz2 2006-0809-1148 r-- 126659 cromfs-1.2.1.tar.bz2 2006-0809-1148 r-- 9672 patch-cromfs-1.2.0-1.2.1.bz2 2006-0612-0756 r-- 125628 cromfs-1.2.0.tar.bz2 2006-0612-0756 r-- 22629 patch-cromfs-1.1.7-1.2.0.bz2 2006-0605-1112 r-- 120064 cromfs-1.1.7.tar.bz2 2006-0605-1112 r-- 12686 patch-cromfs-1.1.6.1-1.1.7.bz2 2006-0605-1112 r-- 17457 patch-cromfs-1.1.6-1.1.7.bz2 2006-0604-2058 r-- 118414 cromfs-1.1.6.1.tar.bz2 2006-0604-2058 r-- 10020 patch-cromfs-1.1.6-1.1.6.1.bz2 2006-0604-0222 r-- 116451 cromfs-1.1.6.tar.bz2 2006-0604-0222 r-- 18575 patch-cromfs-1.1.5-1.1.6.bz2 2006-0603-1538 r-- 114056 cromfs-1.1.5.tar.bz2 2006-0603-1538 r-- 7808 patch-cromfs-1.1.4.3-1.1.5.bz2 2006-0603-1538 r-- 38568 patch-cromfs-1.1.4-1.1.5.bz2 2006-0531-2118 r-- 113242 cromfs-1.1.4.3.tar.bz2 2006-0531-2118 r-- 27213 patch-cromfs-1.1.4.2-1.1.4.3.bz2 2006-0522-1146 r-- 88166 cromfs-1.1.4.2.tar.bz2 2006-0522-1146 r-- 8090 patch-cromfs-1.1.4.1-1.1.4.2.bz2 2006-0521-2340 r-- 87138 cromfs-1.1.4.1.tar.bz2 2006-0521-2340 r-- 5613 patch-cromfs-1.1.4-1.1.4.1.bz2 2006-0521-1352 r-- 86597 cromfs-1.1.4.tar.bz2 2006-0521-1352 r-- 16222 patch-cromfs-1.1.3.1-1.1.4.bz2 2006-0521-1352 r-- 17317 patch-cromfs-1.1.3-1.1.4.bz2 2006-0518-1041 r-- 82859 cromfs-1.1.3.1.tar.bz2 2006-0518-1041 r-- 10110 patch-cromfs-1.1.3-1.1.3.1.bz2 2006-0517-1424 r-- 81120 cromfs-1.1.3.tar.bz2 2006-0517-1424 r-- 12567 patch-cromfs-1.1.2.3-1.1.3.bz2 2006-0517-1424 r-- 22044 patch-cromfs-1.1.2-1.1.3.bz2 2006-0516-2125 r-- 81029 cromfs-1.1.2.3.tar.bz2 2006-0516-2125 r-- 8218 patch-cromfs-1.1.2.2-1.1.2.3.bz2 2006-0515-1326 r-- 78767 cromfs-1.1.2.2.tar.bz2 2006-0515-1326 r-- 8072 patch-cromfs-1.1.2.1-1.1.2.2.bz2 2006-0515-0833 r-- 78219 cromfs-1.1.2.1.tar.bz2 2006-0515-0833 r-- 6621 patch-cromfs-1.1.2-1.1.2.1.bz2 2006-0515-0054 r-- 77801 cromfs-1.1.2.tar.bz2 2006-0515-0054 r-- 10590 patch-cromfs-1.1.1-1.1.2.bz2 2006-0514-2158 r-- 76576 cromfs-1.1.1.tar.bz2 2006-0514-2158 r-- 8703 patch-cromfs-1.1.0.2-1.1.1.bz2 2006-0514-2158 r-- 11511 patch-cromfs-1.1.0-1.1.1.bz2 2006-0514-1554 r-- 75585 cromfs-1.1.0.2.tar.bz2 2006-0514-1554 r-- 4727 patch-cromfs-1.1.0.1-1.1.0.2.bz2 2006-0514-1442 r-- 74978 cromfs-1.1.0.1.tar.bz2 2006-0514-1442 r-- 3306 patch-cromfs-1.1.0-1.1.0.1.bz2 2006-0514-0252 r-- 74930 cromfs-1.1.0.tar.bz2 2006-0514-0252 r-- 16084 patch-cromfs-1.0.6-1.1.0.bz2 2006-0512-1207 r-- 71269 cromfs-1.0.6.tar.bz2 2006-0512-1207 r-- 6088 patch-cromfs-1.0.5.1-1.0.6.bz2 2006-0512-1207 r-- 6292 patch-cromfs-1.0.5-1.0.6.bz2 2006-0512-0950 r-- 70040 cromfs-1.0.5.1.tar.bz2 2006-0512-0950 r-- 2160 patch-cromfs-1.0.5-1.0.5.1.bz2 2006-0511-2134 r-- 69996 cromfs-1.0.5.tar.bz2 2006-0511-2134 r-- 6525 patch-cromfs-1.0.4-1.0.5.bz2 2006-0511-2005 r-- 69545 cromfs-1.0.4.tar.bz2 2006-0511-2005 r-- 6477 patch-cromfs-1.0.3-1.0.4.bz2 2006-0511-1914 r-- 68724 cromfs-1.0.3.tar.bz2 2006-0511-1914 r-- 5640 patch-cromfs-1.0.2-1.0.3.bz2 2006-0511-1248 r-- 68156 cromfs-1.0.2.tar.bz2 2006-0511-1248 r-- 15307 patch-cromfs-1.0.1-1.0.2.bz2 2006-0510-2235 r-- 64646 cromfs-1.0.1.tar.bz2 2006-0510-2235 r-- 9948 patch-cromfs-1.0.0-1.0.1.bz2 2006-0510-2041 r-- 67115 cromfs-1.0.0.tar.bz2← Back to the source directory index at Bisqwit's homepage | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Last updated: Tue, 11 Aug 2015 15:27:39 +0000 |