2007/04/17

[Linux] Squashfs 壓縮型的檔案系統

Fred說:
SquashFS是一個即時解壓縮的檔案系統,如同Cloop、CramFS一般。只是,SquashFS的壓縮比更高、速度更快,又不像CramFS有單一檔案大小或整體檔案系統大小的限制,在LiveCD的應用上非常有用。


最近找到他的網誌,裡面蠻多有趣的東西,所以開始一篇一篇(吃)看了起來,其實 2006 年 5 月的這篇文章引起了我的注意,因為有段時間沒注意 LiveCD 的技術了,想不到又多了這個 squashfs 可以拿來玩。

不過當然,實證是很重要的:
這裡有人寫了評比,我摘一小段下來:
5.1 Ubuntu liveCD compression results

ext3 uncompressed size 1.4 GB
ISO9660 uncompressed size 1.3 GB
Zisofs compressed size 589.81 MB
Cloop compressed size 471.89 MB
Squashfs2.0 compressed size 448.58 MB
Squashfs2.1 compressed size 448.58 MB

5.2 Damn Small Linux liveCD compression results

ext3 uncompressed size 126 MB
CRAMFS compressed size 52.19 MB
Squashfs2.0 compressed size 46.52 MB
Squashfs2.1 compressed size 46.52 MB


夭壽哦,給人家壓那種東西壓到剩原來的 30~40 % 大小耶。
且通常 LiveCD 上面這種空間非常要求的東西,有這個幫忙真是不賴。

不過這頁後面有一小段沒看懂....:
Yes, an intelligent algorithm decides that if the underlying compression
algorithm used produces no results, it just marks the block as
uncompressed and stores it as such. ZLIB does this if the block gets
bigger. LZMA might not; but higher level intrinsics (block headers)
could handle that easy (as you said).


study area 上面也有提到 :
現在要算squashfs + lzma 最棒了.
squashfs default use gzip, but you can try to patch it to use lzma,
of course you have to change mksquashfs to use lzma too.

siyou.


看起來是 lzma 最小了,不過不知道在「即時讀取」的時候會不會慢到?

--
順道提一下:

squashfs 在 去年的時候還沒進到 kernel 2.6 裡面,但是現在 Ubuntu 6.10 的 kernel 已經到了 2.6.17-50-generic ,所以就直接下 modprobe squashfs 就可以用了。

工具方面要另外安裝 "squashfs-tools"

FC 的部份也是一樣,在我的 FC5 (還沒打算更新到 FC6)上面
2.6.20-1.2307.fc5 已經有了,所以一樣裝上 squashfs-tools 就可以用了。

操作大致上是:
1. mksquashfs /home/anton/三國志/ dir.sqsh
把三國志(是陳壽寫的文言本啦)文檔壓成 dir.sqsh 檔

2. mount /home/anton/html dir.sqsh -o loop
用 loop device 掛載 dir.sqsh 上來。

這樣就可以了,夠簡單吧?

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...