有些情況,我們會想要把 BeagleBone Black(BBB) 內建 eMMC 的資料讀取出來備份,甚至是寫入到另一塊 BBB 中。可以透過以下幾個簡單的步驟可以完成這件事。
備份 eMMC
準備一張至少 4GB 大小的 MicroSD,並建立 FAT32 分割區。若是用可讓 BBB 開機的 micro SD 也行。下載 beagleboneblack-save-emmc.zip 或是也可由本站分流下載。將下載的檔案接壓縮後,全部丟到 micro SD 當中,並使用此 micro SD 開機(按壓住 S2 按鍵然後再送電),就會自動地將 eMMC 備份到 micro SD 當中,名為 BBB-eMMC-$RANDOM.img.gz 的檔案,其中 $RANDOM 是個隨機數值。
檔案概述
這個壓縮檔包含了預先編譯的幾個檔案:MLO, uboot, uImage(kernel), uEnv.txt, dtbs, 與一個 autorun.sh script。主要的重點在於 autorun 的個 scrupt
#!/bin/sh echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger #un-comment the following line to perform a backup #此為備份 eMMC 用 dd if=/dev/mmcblk1 bs=16M | gzip -c > /mnt/BBB-eMMC-$RANDOM.img.gz #un-comment the following 6 lines to perform a restore (be sure to replace XXXXX with your image name) #此為還原 eMMC 用 #gunzip -c /mnt/BBB-eMMC-XXXXX.img.gz | dd of=/dev/mmcblk1 bs=16M #UUID=$(/sbin/blkid -c /dev/null -s UUID -o value /dev/mmcblk1p2) #mkdir -p /mnt #mount /dev/mmcblk1p2 /mnt #sed -i "s/^uuid=.*\$/uuid=$UUID/" /mnt/boot/uEnv.txt #umount /mnt sync echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger
還原 eMMC
使用相同的 micro SD,將前述的 autorun.sh 中還原 eMMC 部分的 script 取消註解,並註解掉備份的指令。同時修改
gunzip -c /mnt/BBB-eMMC-XXXXX.img.gz | dd of=/dev/mmcblk1 bs=16M
其中 XXXXX 為當初備份的實際亂數名稱。
一樣將 micro SD 插入 BBB 按壓 S2 按鍵不放並且送電,就會將當初備份的 eMMC 完整還原回去了!
Reference