本節書摘來異步社群《樹莓派學習指南(基于linux)》一書中的第1章,第1.4節,作者:【英】peter membrey ,【澳】david hows ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
樹莓派學習指南(基于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使用者身份執行單條指令,但是這裡我們需要執行多條,是以這樣做會友善一些。按下Enter鍵後,sudo會詢問密碼(就是你登入時的賬戶密碼),輸入正确後,你就得到了root使用者權限。
注意 得到root使用者權限後,我們可以在系統上執行任意操作。但是請記住,這時除了可以将樹莓派的系統鏡像寫入sd卡以外,我們也有可能會弄壞mac系統。在unix系統2中使用root使用者時,你需要清楚自己在做什麼,因為此時系統幾乎沒有任何保護。執行指令時請一定小心,仔細檢查,确認沒有錯誤再按Enter鍵。而且在執行完指令後,請立即退出終端,以防萬一。
使用終端寫入鏡像
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個小時)。最終整個指令是這樣的:
按Enter鍵執行指令,dd需要一些時間來完成整個操作(可能還是需要1、2個小時)。由于系統鏡像有2gb大,而sd卡的寫入速度并不是很快,是以我們的macbook pro也花了接近2個小時才完成整個鏡像的寫入。你可以出去逛一圈,回來之後應該能看到dd完成了寫入,終端回到了指令提示符狀态。
在mac上寫入鏡像确實比在windows系統上麻煩許多,不過仔細觀察一下這些指令,你會發現通過指令執行操作更簡單,更準确,第3章我們還會詳細介紹指令行的其他優點。
我們将前面所有的操作步驟整理了一下。如果對于之前的介紹還有什麼問題,或者你還有什麼不太明白的,可以參考下面的内容。
到這裡,我們準備好了sd卡,讓我們來準備啟動樹莓派吧。