iT邦幫忙

2022 iThome 鐵人賽

DAY 9
2

前面提到現行 NVIDIA 出貨的 Jetson Nano 統一搭載 16GB eMMC,勢必讓不少人疑惑,我的手機容量都 128GB 了, Jetson Nano 的 16GB 豈不是放一兩部影片(當然是指 AI 推論使用的素材)就沒空間了嗎?今天就來跟大家說擴充儲存容量的方法!

空間不夠放東西嗎?買一間倉庫吧!(誤) (source: unsplash)
空間不夠放東西嗎?買一間倉庫吧!(誤) (source: unsplash)

儲存媒體的選擇

由於 reComputer Jetson Nano 內建的 16 GB eMMC 在安裝 ubuntu 18.04 LTS 和 NVIDIA JetPack 4.6 後,剩餘的可用空間大約是 2.5GB 左右,因此在學習或開發上勢必要使用額外的裝置擴增使用空間。今天將使用 USB 隨身碟進行可用空間的擴充,如果要用 SSD 也是相同的做法,不過須注意 SSD 僅能使用在 J1020 上, J1010 無法使用(M.2 KEY 不同)。為了方便使用不影響外觀,筆者選用小尺寸的 USB 隨身碟,型號為 SanDisk CZ430 64 GB 隨身碟:
Sandisk 64GB USB Drive

格式化隨身碟

新的 USB 隨身碟在未做任何設定前,僅能作為一般儲存裝置使用,因此需要先將 USB 隨身碟格式化成 GPT(GUID Partition Table) 格式,請依照下列步驟進行 USB 隨身碟的 GPT 格式化:

1. 將 USB 隨身碟放入 reComputer 的 USB 3.0 連接埠

https://www.circuspi.com/wp-content/uploads/2022/07/00-1.png

2. 點擊 Ubuntu 桌面左方的資料夾圖示,開啟資料夾視窗並確認 USB 隨身碟被正確掛載

https://www.circuspi.com/wp-content/uploads/2022/07/圖2_確認USB硬碟被掛載-1.png

3. 使用滑鼠點擊 Ubuntu 桌面左上角的 Ubuntu icon 圖示後,在搜尋欄輸入「disk」並選擇工具「Disks」。

https://www.circuspi.com/wp-content/uploads/2022/07/圖3_開啟磁碟管理工具.png

4. 在左側的設備選項中選擇 USB 隨身碟,並展開右上方的功能選項後,選擇【Format Disk】

https://www.circuspi.com/wp-content/uploads/2022/07/圖4_選擇USB隨身碟並開啟功能選項.png

5. 在 【Partitioning】選項中選擇選項 【Compatible with modern systems and hard disks > 2TB(GPT)】,操作步驟畫面如下。

https://www.circuspi.com/wp-content/uploads/2022/07/圖5_選擇-GPT-格式並進行格式化.png

6. 點選磁碟標籤下方的圖示【+】進行磁碟分割 ,操作步驟畫面如下。

https://www.circuspi.com/wp-content/uploads/2022/07/圖6_點選進行磁碟分割-1.png

7. 確認磁碟分割區的空間大小,並點擊右上方的按鍵【Next】

https://www.circuspi.com/wp-content/uploads/2022/07/圖7_確認磁碟分割區的大小.png

8. 請自由設定磁碟分割區的名稱與指定磁碟分割區的格式為【Internal disk for use with Linux systems only(Ext4)】後,點擊右上方的按鍵【Create】

https://www.circuspi.com/wp-content/uploads/2022/07/圖8_指定磁碟分割區的格式.jpg

前置準備

在 github 上有著開源專案「bootFromUSB」,可以使用版本控制器 git 將開源專案下載至系統中,利用快捷鍵 【ctrl】+【alt】+【T】開啟終端機視窗後,輸入指令進行下載:

git clone [https://github.com/jetsonhacks/bootFromUSB.git](https://github.com/jetsonhacks/bootFromUSB.git)

https://www.circuspi.com/wp-content/uploads/2022/07/圖9_下載開園專案.png

專案「bootFromUSB」中提及了使用 JetPack 4.5 以上的 Jetson Family 家族擁有指定開機裝置的特色,Jetson Nano 預先裝載至 eMMC 的系統為 ubuntu 18.04 與 NVIDIA Jetpack 4.6,因此可以經過設定後,讓 Jetson Nano 使用 USB 隨身碟開機,達成擴充儲存空間的功能。使用 USB 裝置開機的流程如下圖所示,Jetson Nano 上電時依然會載 eMMC 中的 Boot Loader 與 Kernel,後續則會存取 USB 作為 rootfs。

將 eMMC 磁碟內容備份至 USB 隨身碟

1. 確認 USB 隨身碟的硬體裝置代號

在終端機中輸入下列指令,確認 USB 隨身碟的硬體裝置代號:

 ls /dev/sd*

https://www.circuspi.com/wp-content/uploads/2022/07/圖11_搜尋磁碟代號-1.png

若 reComputer 僅放入一個 USB 隨身碟,使用指令將可以查詢到隨身碟代號, 代號「/dev/sda1」是指 USB 隨身碟的第一個磁碟分割區,若無法搜尋到請重新執行上方的步驟【硬體裝置需求】。

2. 執行腳本 copyRootToUSB.sh

請在終端機中輸入下列指令:$ ./bootFromUSB/copyRootToUSB.sh -p /dev/sda1

開始將 eMMC 磁碟內容備份至 USB 隨身碟。備份時間大約是 15分鐘左右,期間可以喝杯咖啡休息一下,舒緩一下過於僵硬的身體:)。

完成備份後的 USB 隨身碟在後續內容會以「備份隨身碟」稱呼。

https://www.circuspi.com/wp-content/uploads/2022/07/圖12_備份eMMC至USB.png

指定開機裝置

1. 新增磁碟辨別檔案 This_is_eMMC.txt

為了確認 Jetson Nano 是使用那一個裝置進行開機,可以在 eMMC 磁碟家目錄裡,藉由下方指令新增一個無任何內容的純文字檔案,此後若是使用 eMMC 磁碟開機時,便可以在相對應的位置看到此文件檔案。

touch ~/This_is_emmC.txt

https://lh4.googleusercontent.com/mcvaUO8-PQyCSdLfIyRbGFlZpH73BrPencba-OElHflteTiszWYTv3n0ljysm7t2oqu61B6qi-MbMsGPXWF_zLDY3udbqHUxNp7CFeBcdP4HqsihrL_-4L8wew0KQ4dRPtjuf_czbnLdBA1H42s

2. 編輯檔案 /boot/extlinux/extlinux.conf 以修改開機順序

為了避免發生編輯上的意外,請先使用下列指令,將原始檔案「extlinux_conf」備份:

sudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux_backup.conf

https://www.circuspi.com/wp-content/uploads/2022/07/圖14_備份extlinux_conf.png

下一步請輸入指令開始編輯檔案 /boot/extlinux/extlinux.conf:

sudo gedit /boot/extlinux/extlinux.conf

https://www.circuspi.com/wp-content/uploads/2022/07/圖15_編輯extlinux_conf.png

在標籤 LABEL 的內容中,可以找到屬性 APPEND,其中的參數 root 便是需要修改的地方,根據下列情況可以將參數 root 內容設為裝置代號或是備份隨身碟的 PARTUUID

2.1 讓 Jetson Nano 開機時能載入備份隨身碟

若是 Jetson Nano 開機時僅會放入先前備份的 USB 隨身碟,可以直接將參數 root 的內容修改為「root=/dev/sda1」

https://www.circuspi.com/wp-content/uploads/2022/07/圖16_修改參數root內容_裝置代號.png

2.2 開機時載入多個隨身碟

若是 reComputer 在開機時需要載入多個隨身碟,系統將會隨意指派這些 USB 隨身碟的代號,因此需要使用備份隨身碟獨特的 PARTUUID 當作開機裝置的參數,請輸入下列指令以使用腳本檔案 /bootFromUSB/partUUID.sh 查詢備份隨身碟的 PARTUUID:

$ ./bootFromUSB/partUUID.sh

https://ithelp.ithome.com.tw/upload/images/20220920/20152064Z91ywoZp77.png

根據查詢的備份隨身碟【PARTUUID】,將檔案 /boot/extlinux/extlinux.conf 中的標籤 LABEL 的屬性 APPEND 的參數 root 設為 「root=PARTUUID=【PARTUUID】」,以本篇查詢到的【PARTUUID】為範例,檔案 /boot/extlinux/extlinux.conf 內容將變為如下圖所示:

https://www.circuspi.com/wp-content/uploads/2022/07/圖17_修改參數root內容_PARTUUID.jpg

根據需求修改完檔案 /boot/extlinux/extlinux.conf 內容後,便可以重新啟動 reComputer ,確認是否以備份隨身碟開機成功。

重新啟動確認 Jetson Nano 的儲存媒體

因為先前已經在 eMMC 的 Home 目錄中新增了檔案 This_is_eMMC.txt,重新開機後若是正常的使用備份隨身碟開機,將不會在 Home 目錄中看到檔案 This_is_eMMC.txt,並且在查看磁碟空間時能夠發現可用空間變多了。

https://www.circuspi.com/wp-content/uploads/2022/07/圖18_查看備份隨身碟狀態-1.png

小結

由於 Jetson Nano 在開機時第一時間仍舊是讀取 eMMC 的開機資訊,並根據 eMMC 提供的內容將開機裝置導引至備份隨身碟,因此後續在 Jetson Nano 上的操作皆是針對備份隨身碟進行操作,可以先將此備份隨身碟使用備份軟體備份成 ISO 檔案,以利後續針對備份隨身碟的還原操作。另外,若是備份隨身碟在開機前並無放入 Jetson Nano 的 USB 連接埠,將會導致開機失敗喔!


上一篇
【Day 08】Jetson Nano 開機設定
下一篇
【Day 10】使用 SDK Manager 安裝與還原系統
系列文
就用 Jetson Nano 來實作 Edge AI 吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言