技術討論區 > Embedded 討論版

[分享] 壓縮檔案系統 (三)

(1/2) > >>

thyme:
「cramfs」

這篇是重點,也是最後一篇,這系列只能談到這兒了。
有沒有想過,為什麼一定要解開之後才能讀呢?不解直接讀,可行否?
是的,可以的,但檔案系統不同,有個檔案系統很符合--cramfs ,

--- 代碼: ---
# mkdir /tmp/tmp_root
# copy你所要的檔案到 /tmp/tmp_root
# mkcramfs /tmp/tmp_root.img /tmp/tmp_root
# mount -t cramfs -o loop /tmp/tmp_root.img /mnt/tmp

--- 程式碼結尾 ---

你會發覺,/mnt/tmp 和 /tmp/tmp_root 的內容是相同的,用 du 去查,
大小也差不多,但是,/tmp/tmp_root.img 的大小卻小很多,而且
也不用另外解開才能讀,不會另外再佔一個非壓縮的空間唷!
說明一下,mkcramfs 主要目的就是做一個壓縮的檔案系統,它做法是
直接把一個目錄轉成一個檔案系統,你可以直接做用 mount 的方式來
掛載,就如同前面的 iso9660 、 ext2 的使用方式。放入嵌入式系統
時,也不用另外再把有限的記憶體割一塊來放檔案系統了。另外,
你或許要重編 kernel 才可支援 cramfs。

這有什麼限制?當然有,最大限制就是,它是一個唯讀的,你對它寫
入是無效的,由於要即時解壓縮,效能上也會差一點點,但不會影響
很大。

那有沒有像 Windows 一樣的,可以對某些檔案、目錄壓縮,也可以
即時寫入的?有的,要 patch C library 及 Kernel。那怎麼用?很抱
歉,你問錯人了,我不會。


OK,結束,下課!

longlife:
敢問 thyme 兄這系列文章能否收集於敝人的部落格上?

duan:

--- 引述: "thyme" ---
是的,可以的,但檔案系統不同,有個檔案系統很符合--cramfs

--- 引用結尾 ---


如果沒記錯, 印像中 cramfs 是有容量限制的. 而且不只是總容量
有限制, 裡面包含的單一檔案大小也有限制, 否則壓出來的會有
問題.

所以 cramfs 多半應用在 embedded system 裡面.

不知道有沒有記錯, 有錯請指正, 謝謝   :)

thyme:

--- 引述: "longlife" ---敢問 thyme 兄這系列文章能否收集於敝人的部落格上?
--- 引用結尾 ---


沒問題,自由轉載,註明出處即可。

thyme:

--- 引述: "duan" ---
--- 引述: "thyme" ---
是的,可以的,但檔案系統不同,有個檔案系統很符合--cramfs

--- 引用結尾 ---


如果沒記錯, 印像中 cramfs 是有容量限制的. 而且不只是總容量
有限制, 裡面包含的單一檔案大小也有限制, 否則壓出來的會有
問題.

所以 cramfs 多半應用在 embedded system 裡面.

不知道有沒有記錯, 有錯請指正, 謝謝   :)
--- 引用結尾 ---


沒錯,單一檔案大小有限制,忘記是多少,也許是 8MB,要看看文件了,
當初包 JVM 時,有個檔是 24MB ,害我 debug 了好幾天,
至於總容量,目前壓出來都是少於 128MB,也都沒問題。

導覽

[0] 文章列表

[#] 下頁

前往完整版本