安裝 OS 到 SBC 的 eMMC

要把 Armbian 裝到主板上的 eMMC 有兩種方式,一個是先用 sdcard 開機,另外把 img file 放入隨身碟,插入後再 dd 進去,步驟比較多但比較完整。

另一個方式一樣先透過 sdcard 開機後,使用內建功能把 sdcard 裡的資料全部搬到 eMMC,好處是原來在 sdcard 裡的系統設定都會完整搬過去,缺點是可能會有檔案缺失。就讓我們來看看這兩個方法分別怎麼做吧!

方法一:用 sdcard 開機後,自行 dd 系統

如果在 mac 系統下,先使用這個指令確定記憶卡所在位置

diskutil list

假設是 /dev/disk3,我們使用下面指令將 img 寫入 sdcard。在 mac 下使用 r 開頭的裝置寫入速度會快很多。

dd if=<os_img_path> of=/dev/rdisk3 bs=1M

接著使用記憶卡開機,並將含有 img 檔案的隨身碟插入 SBC,使用這個指令確定 eMMC 和隨身碟位置

lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    1  57.3G  0 disk 
└─sda1         8:1    1  57.3G  0 part 
mmcblk0      179:0    0  14.9G  0 disk 
└─mmcblk0p1  179:1    0  14.7G  0 part /
mmcblk2      179:8    0   7.3G  0 disk 
└─mmcblk2p1  179:9    0   7.2G  0 part 
mmcblk2boot0 179:16   0     4M  1 disk 
mmcblk2boot1 179:24   0     4M  1 disk 
zram0        254:0    0    50M  0 disk /var/log
zram1        254:1    0 499.8M  0 disk [SWAP]

從這個範例可以看到隨身碟會掛在 /dev/sda,內建的 eMMC 則在 /dev/mmcblk2,記憶卡則在 /dev/mmcblk0。我們先將隨身碟掛上去。

sudo mkdir /mnt/usbdrive
sudo mount /dev/sda1 usbdrive

緊接著就是 dd。使用 status=progress 可以在 console 上顯示進度。

cd /mnt/usbdrive
dd if=<os_img_path> of=/dev/mmcblk2 bs=1M status=progress

完成後重開機,同時拔掉記憶卡和隨身碟,就可以用內建的 eMMC 開機了!

方法二:用 sdcard 開機後,使用 armbian 內建功能搬移

首先依序進入 sudo armbian-config > System > Install > Boot from eMMC

安裝 OS 到 SBC 的 eMMC
選擇 system
安裝 OS 到 SBC 的 eMMC
選擇 install
安裝 OS 到 SBC 的 eMMC
選擇 boot from eMMC

點同意後,選擇 ext4,等待搬移跑完。過程中可能會跳幾次錯誤訊息,主要是因為系統還開著,某些檔案會被佔用,導致搬移時會跳錯誤。

安裝 OS 到 SBC 的 eMMC
點 yes
安裝 OS 到 SBC 的 eMMC
選擇 ext4
安裝 OS 到 SBC 的 eMMC
等待格式化
安裝 OS 到 SBC 的 eMMC
等待搬移資料

結束後重開機,拔掉記憶卡即可。

我實測結果大部分正常,但可能會遇到一些奇怪的問題,比如說網路初始化異常,或是系統可能會無預警的當機。這可能是搬移的過程中部分檔案失敗導致,因此我還是建議使用方法一,乾淨的安裝最穩定!

就是這麼簡單!趕快試試吧!

延伸閱讀:
Banana Pi 好燙!加個風扇吧!
Raspberry Pi 當機自救!為他開啟 Watchdog 吧!

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。