本節書摘來異步社區《樹莓派學習指南(基于Linux)》一書中的第1章,第1.4節,作者:【英】Peter Membrey ,【澳】David Hows ,更多章節內容可以訪問云棲社區“異步社區”公眾號查看
1.4 將Raspbian燒錄到SD卡
樹莓派學習指南(基于Linux)
將Raspbian燒錄到SD卡與簡單的文件復制稍有不同。我們下載的鏡像文件是一份完整的SD卡內容克隆。為了完成燒錄的工作,我們需要使用前面提到的一些工具。
注意 你所下載的SD卡鏡像文件被打包在一個zip壓縮包里。在Windows 7下,雙擊即可以文件夾的形式打開zip壓縮包。將SD卡鏡像文件復制到自己的文件夾下以備使用。在Mac OS X下,雙擊zip壓縮包后SD卡鏡像文件將會自動被解壓縮到“下載”(Downloads)目錄中。
使用Image Writer進行燒錄(Windows)
在Windows下推薦使用Image Writer這一工具進行燒錄,你可以在樹莓派下載頁上找到它的鏈接,我們需要的是如圖1-7所示的zip壓縮包。

將zip壓縮包解壓到任意文件夾,雙擊其中的Win32DiskImager,你會看到如圖1-8所示的警告信息。
1.單擊Extract All(提取所有文件),在彈出的對話框中記得勾選“Show Extracted Files When Complete”(完成時顯示提取的文件)。
2.單擊Extract(提取),稍等片刻后你就會看到解壓后的文件夾了。
3.雙擊Win32DiskImager程序,你會看到如圖1-8所示的警告信息。

4.這是由于Image Writer需要申請一些系統權限來實現諸如磁盤擦寫等操作,單擊Yes(是)繼續。
5.你有可能看到如圖1-9所示的出錯提示信息。別擔心,在我們的測試中,這并不影響正常使用。單擊OK繼續。

注意 Image Writer只會在程序啟動時嘗試檢測SD卡,所以我們必須在啟動程序前將SD連接到電腦上。否則,即便你再插入SD卡,程序也無法檢測到它。
6.在Device(驅動器)下拉菜單中選擇SD卡相應的盤符(比如G:)。如果下拉菜單是空的,可以嘗試關閉Image Writer后再重新打開。在選擇盤符時請盡量謹慎,萬一錯選成了相機的SD卡,你數年積累的照片可能會毀于一旦。
7.選擇正確的驅動器(不確定的話,再打開“我的電腦”檢查一次吧)和正確的磁盤鏡像文件,單擊Write(寫入)按鈕。燒錄需要幾分鐘時間,喝杯咖啡休息一下吧。圖1-10是運行中的Image Writer截圖,可以看到寫入的是寫作本書時最新的Raspbian。

8.燒錄完成后,將SD卡安裝到樹莓派上。
萬事俱備了,快翻到“首次啟動”部分開始折騰吧!
注意 細看圖1-10可以發現,我們燒錄的鏡像文件后綴為.img。很多初學者忘記將鏡像(.img)文件從zip壓縮包中解壓出來再燒錄。如果再啟動樹莓派時再次遭遇黑屏,不妨再檢查一下是否燒錄了正確的文件。
在Mac系統上使用dd命令
我們很想為Mac用戶介紹一種簡單的方法,把Raspbian鏡像寫入到SD卡上,但很可惜,實在沒法做到像在Windows系統上使用Disk Imager那么簡單。Mac系統上有Disk Utility工具,它很強大,卻無法處理我們的Raspbian鏡像文件。我們試圖將鏡像轉換成.dmg文件1,但還是不起作用。我們也嘗試在網絡上尋找一些工具來解決這個問題,但是最終我們發現,沒有工具能明顯地讓這件事變得簡單。
我們還是不得不使用命令行來解決問題。不過我們不準備在本章詳細地解釋將要執行的命令,后面的章節還會有介紹,所以先依葫蘆畫瓢吧。
打開終端(Terminal)
接下來的每個步驟,我們都會一邊介紹,一邊操作,最后會有一個完整的步驟列表。整個過程還是比較簡單的,步驟也不是很多。
第一步,我們在應用程序(Applications)的實用工具(Utilities)目錄中打開終端(Terminal)。打開終端后,我們需要使用sudo命令取得root用戶權限,相當于Windows系統的Administrator用戶。
由于直接操作底層設備是不安全的(比如,不能讓病毒直接把數據寫入硬盤),所以普通用戶無法執行相關的命令。而我們需要將Raspbian鏡像直接寫入SD卡,必須能夠直接操作硬件。root用戶對系統擁有完全的操作權限,所以我們可以使用root用戶將系統鏡像寫入SD卡。通過下面的命令來提升為root用戶。

這個命令讓我們可以在終端中得到root用戶權限的交互環境。你也可以通過sudo(不帶-i參數)直接以root用戶身份執行單條命令,但是這里我們需要執行多條,所以這樣做會方便一些。按下回車鍵后,sudo會詢問密碼(就是你登錄時的賬戶密碼),輸入正確后,你就得到了root用戶權限。
注意 得到root用戶權限后,我們可以在系統上執行任意操作。但是請記住,這時除了可以將樹莓派的系統鏡像寫入SD卡以外,我們也有可能會弄壞Mac系統。在Unix系統2中使用root用戶時,你需要清楚自己在做什么,因為此時系統幾乎沒有任何保護。執行命令時請一定小心,仔細檢查,確認沒有錯誤再按回車鍵。而且在執行完命令后,請立即退出終端,以防萬一。
使用終端寫入鏡像
OK,下面做什么?首先,我們遇到的第一個問題是確定SD卡對應的系統設備名稱。為了避免一不小心抹掉主硬盤上的數據,我們需要先確定一下主硬盤的設備名稱,防止誤操作。
請在你的Mac上拔出SD卡,運行以下mount命令。

你應該能看到類似上面的輸出,也有可能會有所不同。我們可以忽略devfs和map這幾行,因為這些掛載項是操作系統的一部分。我們需要記住的是第一行,可以看到/dev/disk0s2的掛載路徑是/。這是系統盤,也就是主硬盤,一定注意不能隨便寫入這個設備。也許,你還會看到其他一些條目,那可能是因為你還掛載了網絡驅動器或者移動硬盤。那你也應該把這些設備名稱都記錄下來,現在的掛載狀態就是系統的基本狀態,我們會和掛載了SD卡之后做對比。
接下來,在Mac上插入SD卡。你應該會在Finder邊欄的設備(DEVICES)下看到剛剛插入的SD卡,如圖1-11所示。

因為Mac會自動掛載插入的SD卡,所以我們可以直接回到終端再次執行mount命令,觀察一下發生了什么變化。

我們發現多了一個掛載的設備,在上面的例子中顯示的是disk2s2,還能看到該設備的掛載路徑是/Volumes/UNTITLED,這個設備正是接下來寫入系統鏡像的位置。
注意 BSD系統將磁盤劃分為多個分區(slice),這個例子里掛載的文件系統位于disk2s2,也就是說文件系統位于第二個磁盤(disk2)的第二個分區(s2)。通過這個路徑,可以讓用戶直接訪問指定的分區。不過我們需要的是將數據直接寫入設備,也就是磁盤,所以我們接下來將會對/dev/disk2進行操作。
在進行下面的操作之前,我們要先解決一個小問題。由于SD卡的文件系統被自動掛載了,我們無法直接向設備寫入數據,而如果我們在Finder中卸載文件系統,SD卡對應的設備也會被Mac系統推出,這樣的話我們還是無法直接操作設備。所以我們需要通過Mac系統的diskutil命令手工卸載文件系統,并在設備中保留SD卡。Mac系統也有UNIX標準的umount命令(這個命令在后面的章節會有詳細解釋),但是如果你想通過umount卸載SD卡,結果就是卸載失敗并提示設備正忙。diskutil可以避免這些問題,并成功地完成任務,所以我們通過執行下面的命令來卸載SD卡的文件系統。
至此,我們在超級用戶下得到了SD卡對應的設備名稱,并從系統上卸載了SD卡的文件系統,這樣我們就準備好向SD卡直接寫入數據了。
我們將會使用一個古老的命令dd,該命令用于從一個設備讀入數據,并寫入另一個指定的設備。該命令不會處理文件系統,也不會關心使用的設備是硬盤還是SD卡,而是直接在兩個設備上讀寫二進制數據。我們會在最后一章詳細介紹dd命令,這里我們只說明如何將系統鏡像寫入SD卡。
使用dd命令只需要知道兩個參數,讀取位置(if參數)和寫入位置(of參數)。我們之前已經知道了寫入位置是/dev/disk2,那么讀取位置呢?如果你按照本章前面的步驟一步步做了,那么樹莓派的系統鏡像文件應該已經躺在下載(Downloads)文件夾中了,這就是我們的讀取位置。首先,在終端中輸入:

之后在Finder中打開下載(Downloads)文件夾(或許你放在了其他文件夾中,請打開它),單擊并拖動鏡像文件到終端窗口。這樣鏡像文件的路徑就會自動輸入終端了,你應當會看到類似下面的顯示。

這樣我們就指定了讀取位置,我們還需要為dd指定寫入位置。在之前的操作中,我們已經得到了SD卡的設備名稱:/dev/disk2。我們還要加上bs=512這個參數,讓dd以較大的數據塊寫入SD卡(這樣可以讓寫入過程快一些,否則可能需要等上4個小時)。最終整個命令是這樣的:

按回車鍵執行命令,dd需要一些時間來完成整個操作(可能還是需要1、2個小時)。由于系統鏡像有2GB大,而SD卡的寫入速度并不是很快,所以我們的MacBook Pro也花了接近2個小時才完成整個鏡像的寫入。你可以出去逛一圈,回來之后應該能看到dd完成了寫入,終端回到了命令提示符狀態。
在Mac上寫入鏡像確實比在Windows系統上麻煩許多,不過仔細觀察一下這些命令,你會發現通過命令執行操作更簡單,更準確,第3章我們還會詳細介紹命令行的其他優點。
我們將前面所有的操作步驟整理了一下。如果對于之前的介紹還有什么問題,或者你還有什么不太明白的,可以參考下面的內容。

到這里,我們準備好了SD卡,讓我們來準備啟動樹莓派吧。