http://daydreamer.idv.tw/rewrite.php/read-28.html
原始出處
squashfs是眾多Live CD使用的檔案系統,Why?因為它那嚇死人的壓縮率,舉個例子,以筆者製做的root file system為例,壓縮過後的initial ram disk大小為1.3MB,但squashfs製做出來的file system image只有500多k,squashfs image居然只有compressed initial ram disk image一半的容量,這種節省儲存空間和記憶體空間的檔案系統,最適合在台灣用了,因為代工廠最需要的cost down,這種軟體技術做到了在小容量記憶體系統中放大檔案的可能性
可惜目前Linux-2.6.26還沒有支援squashfs,所以必需去patch kernel才能使用,首先至官方網站下載squashfs source and tool,目前最新的版本是3.4,解壓縮後,參照以下指令執行patch
- %cd /usr/src/linux-2.6.26
- %patch -p1 < location-of-squashfs/kernel-patches/linux-2.6.26/squashfs3.4-patch
然後編譯製作squafs file system image的工具
- %cd location-of-squashfs/squashfs3.4/squashfs-tools
- %make
會得到兩支執行檔mksquashfs和unsquashfs,mksquashfs是製做映像檔的工具,unsquashfs可解壓縮印像檔並查看內容,詳細的使用方法請參考squashfs-HOWTO
製做squashfs檔案系統的指令很簡單,用法大致如下
- %mksquashfs [source] [dest]
- %mksquashfs ./fs squashfs.root
kernel command line請修改為” mem=64M console=ttySAC0 initrd=0x32000000,2000000 root=/dev/ram0 rootfstype=squashfs”,這裡的範例是根據QT2410設定的,假設我們把squashfs image下載到板子上的0x32000000且其大小為2MB,rootfstype為squashfs,kernel開機完會mount /dev/ram0的squasfs image,可參考如下圖片
評比
有人比較各種檔案系統的壓縮率
如下
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