只读文件系统
在有些項目中,我們不希望系統的文件的被修改,如路由器的系統文件等等.我們就需要使用只讀文件系統來保護我們的系統文件不被修改.
常見的只讀文件系統有:cramfs文件系統和squashfs文件系統(cramfs文件系統的繼任者)
一、cramfs文件系統: http://sourceforge.net/projects/cramfs/
1. compressed ROM filesystem
主要用于嵌入式Linux系統中,簡單與空間高效
2. 特性:
支持最大分區:272MB (256MB + 16MB)
支持最大文件:16MB
壓縮格式: Zlib,壓縮比一般可以達到1:2,每頁單獨進行壓縮處理 ————> 支持隨機讀取
動態解壓:訪問數據時實時解壓訪問到的頁到內存,節省內存空間
使用透明:解壓縮以及解壓縮之后的內存中數據存放位置都是由cramfs文件系統本身進行維護,對外部使用透明
二、squashfs文件系統: cramfs的替代
1. http://www.squashfs.org
為通用只讀文件系統等設計
2. 特性:
支持最大分區: 16EB
支持最大文件: 2TB
支持多種壓縮格式:GZIP LZMA/LZMA2(XZ) LZO
三,cramfs文件系統的制作
1,安裝制作工具
sudo apt-get install cramfsprogs
安裝成功以后會有2個命令
mkcramfs:創建文件系統鏡像
cramfsck:對文件系統鏡像的一些操作
2,制作文件系統
mkcramfs 選項(可以沒有) 目錄名 鏡像名稱
cramfsck 鏡像名 :驗證是否正確
cramfsck -x 鏡像名:解壓該鏡像
四,squashfs文件系統制作
1,制作工具的安裝
sudo apt-get install squashfs-tools
mksquashfs:制作鏡像
unsquashfs:對鏡像的一些操作
2,制作文件系統
mksquashfs source1 source2 ... dest [options] [-e list of exclude dirs/files]
主要選項:
-comp <comp> 指定壓縮算法:gzip (default)/lzo/xz
-b <block_size> 設置塊大小,單位 Bytes,默認 131072 bytes (1MB)
-no-exports 不支持NFS文件系統導出
-no-sparse 不檢測稀疏文件
-no-xattrs 不存儲擴展文件屬性(XATTR)
-xattrs 存儲擴展文件屬性(default)
-noI 不壓縮Inode節點表
-noD 不壓縮數據塊
-noF 不壓縮片段塊
-noX 不壓縮擴展文件屬性
-no-fragments 不使用片段管理
-always-use-fragments 對比塊大小大的文件也是用片段塊
-no-duplicates 不對文件重復進行檢查
-all-root 修改所有的文件擁有者為root
-force-uid uid 設置所有文件的uid為指定的uid
-force-gid gid 設置所有文件的gid為指定的gid
-nopad 不對文件系統進行4K字節對齊
-keep-as-directory 如果指定的源中有目錄,在文件系統中創建根目錄包含該目錄,而不是包含目錄內容
mksquashfs 目錄名 鏡像名 -no-exports -no-xattrs -all-root
內容提取:
unsquashfs [options] filesystem [directories or files to extract]
主要選項:
-d[est] <pathname> 解壓到指定目錄,默認為"squashfs-root"
-n[o-progress] 不顯示進度條
-no[-xattrs] 不提取xattr屬性,默認提取
-l[s] 列出文件系統內容,不進行解壓縮提取
因為有些文件涉及到了管理員權限,所以建議使用管理員權限來制作和解壓文件系統鏡像以避免一些權限錯誤.
總結
- 上一篇: 项目结构二三事
- 下一篇: regedit.exe是什么