前言:略談各種開發闆常用的“系統鏡像”
樹莓派(Raspberry Pi)的使用者經常提出這樣一個問題
[注A]
:
為什麼不能把.img鏡像拷貝到SD卡中,而必須要用專門的刷卡軟體?
這個問題,我們從磁盤結構講起。磁盤内部所有的存儲區域,必然分為分區表和資料區域兩大塊。而資料區域按分區表分區後,每個分區還被檔案系統封裝和管理
[注B]
- 分區表占據磁盤最前端的少量存儲區,存儲了磁盤後邊廣大的資料區域如何分區的重要資訊。
- 資料區域按照分區表的規定,分割成互不影響的若幹個區域。
- 每個分區的内部,由檔案系統封裝并規定了檔案的存儲方法。讀寫檔案全部都在檔案系統這一層的限制下。
SD卡一般是全盤一個主分區的結構。但Raspberry Pi等Linux開發闆要求SD卡上有自定義的分區結構(一般是一個小FAT32一個大Ext4)。要求使用者自己分區這很麻煩(甚至不可能),是以系統分發往往采用磁盤鏡像檔案的方式。
磁盤鏡像檔案就是繞過上述所有的分層結構,直接從磁盤底層原始資料的第1個位元組開始一個一個讀取并制成.img檔案。這樣所備份的原始資料,自然也就包含了分區表、上層檔案系統等所有複雜的資訊。
安裝系統時,隻要用逆向的方法,仍然繞開磁盤的上層結構,把鏡像檔案的内容直接寫入磁盤底層,就能得到一塊和鏡像制作者完全一緻的SD卡。從這個意義上講,傳播.img檔案其實和直接轉借、傳遞、分享SD卡本身是完全等效的。
這個逆向的寫入操作就叫直接寫盤。如果隻把.img檔案拷貝到SD卡中,那隻是在檔案系統這一層折騰,而沒有修改磁盤前面的分區表部分,得到的卡必然和分發者的原樣不一緻。這就是這個新手問題的答案。

▲ 用圖檔說明直接寫盤與拷貝檔案的差別。
上:隻拷貝檔案得到的錯誤結果 中:直接寫盤對磁盤的影響 下:直接寫盤的結果(即鏡像作者期待的磁盤原樣)
警告:直接寫盤是一項系統特權操作,錯誤使用可能導緻意外抹除或覆寫磁盤資料。我們關心您的資料安全,确認了軟體有防止錯誤的必要技術手段,也在本文中提供如何安全使用的提示。但仍然必須聲明:軟體和本文的作者均不對使用本軟體可能産生的任何損害負責。
[注C]
專門針對USB存儲器的直接寫盤工具USB Image Tool
對于Raspberry Pi等開發闆,幾乎所有的新手教程都推薦使用Win32DiskImager作為系統安裝工具。但這個工具問題不少:
- 不支援中文目錄名(檔案或目錄有中文,會出現123錯誤)
- 隻使用盤符區分不同USB裝置,使用者需要自行核實,不友善。
- 浏覽檔案,記不住最後使用的目錄,找常用的檔案很麻煩。
- 不支援zip或gz格式的壓縮檔案。
- 必須先插好SD卡,再開軟體。
- 其它小問題:界面風格簡陋;MD5在XP下亂碼等
是以我一直推薦在Windows環境下使用USB Image Tool做USB裝置的直接寫盤。
使用與特色
通常使用
左側標明磁盤後,按
Restore
選擇一個磁盤鏡像寫卡。按
Backup
讀取卡的内容制作成磁盤鏡像檔案。
Restore
和
Backup
指令能夠記住上次使用的檔案夾位置。
如果是先開啟軟體再插入磁盤,可能磁盤不會立即顯示出來。這時請點選
Rescan
重新整理左側磁盤清單。
壓縮支援
讀卡和寫卡都支援zip和gzip壓縮的
.img
鏡像。注意
.imz
并非一個專門的格式,其實隻是僅含有一個
.img
的zip壓縮包。
USB Image Tool實際上也可以正确識别
.zip
的壓縮包。(雖然沒有提供這個選項。需要先選擇
All files (*.*)
以便能夠選中
.zip
檔案。)
收藏夾
USB Image Tool提供了
Favorites
标簽頁,可以收藏一些常用的鏡像檔案一鍵刷寫,無需尋找。
重置SD卡
Reset
功能,可以把磁盤的分區表部分全部寫成
0x00
。
這個功能用來把為樹莓派等系統重新分區過(在電腦上看到容量縮小成幾十MB)的卡恢複原狀。重置SD卡後,拔出并重新插入,Windows就會發現分區表被全部清空,而提示使用者格式化磁盤,恢複磁盤全部空間配置設定為一個FAT32分區的原始結構。
安全性保證
USB Image Tool的安全保證主要是兩點:
- 以裝置名稱差別磁盤而不是盤符。可以直接看到讀卡器、U盤的裝置名稱和磁盤容量。
- 預設隻顯示存儲卡和U盤,不顯示移動硬碟和本地磁盤。(
中提供選項突破這一點)Options
使用軟體提供的機制,簡單檢查就可以避免刷寫錯誤。
但我們仍然建議您:使用直接寫盤工具時,請最好保證計算機上隻連入了1個需要寫入的USB儲存設備。(防止資料災難,戒之慎之)
其他
- 中文檔案和路徑名稱沒有問題。
- 一個軟體視窗内,多個讀卡器就可以并行讀寫,互不幹擾,無需開多個視窗
- 自動請求管理者特權,不會出現軟體正常啟動但寫入時才提示權限不足
推薦給在Windows下開發Raspberry Pi等Linux開發闆的使用者使用。
對于Linux
Linux下使用dd指令或SUSE Image Writer圖形化工具直接寫盤。
遺憾
USB Image Tool是免費軟體(Freeware)而非開源軟體。會不會将來有人會促成作者将此軟體開源,或幹脆做出一個開源的等效工具呢?
項目首頁與下載下傳:
http://www.alexpage.de/usb-image-tool/注:Windows XP下運作需要 .net Framework 2.0
注解
其實是三個問題,另一個是“為什麼不能直接使用桌上型電腦的Linux作業系統安裝盤?”。這個問題的答案是:系統架構不同(台機=x86,開發闆=ARM/MIPS),造成位于系統最最底層的機器指令層都不通用,上層的就全都更不用說了。
[注A]
這是個簡略的說法。
[注B]
軟體的免責條款,由許可協定中的 AS IS條款 規定。文章的免責條款,由CC知識共享許可協定規定。
[注C]