NanoPi NEO Air内EMMC系統克隆至全新的SD卡
-
- 前言
- 準備工作
- 克隆EMMC内系統
-
- 克隆系統到SD卡
- 克隆系統到檔案
- 總結
- 問題求助
前言
- NanoPi NEO Air wiki中提供了各種系統固件基于friendlycore系統,在開發過程中我們往往需要往系統中安裝各種需要的庫、工具及執行檔案,在這裡希望能夠打包成一個鏡像友善燒寫至其他NanoPi NEO Air的闆子。
準備工作
- 按照wiki使用win32diskimager将nanopi-neo-air_eflasher_friendlycore-xenial_4.14_armhf_YYYYMMDD.img.zip燒寫至SD卡
- 将SD卡插入闆端重新開機,通過eflasher指令燒寫至EMMC
- 斷電拔卡重新開機可以看到系統到正常啟動,現在可以在系統中一頓操作安裝各種需要的功能…
克隆EMMC内系統
克隆系統到SD卡
- 将剛才制作好的SD卡格式化,插入電腦,用fdisk -l檢視分區。例如/dev/sdc為SD卡分區(直接格式化主分區不用管sdc1\sdc2),記得先解除安裝
sudo mkfs.vfat -I /dev/sdc
- SD卡插到闆子上電,用fdisk -l -u檢視分區和扇區使用情況,如下:
-
其中/dev/mmcblk0boot0、/dev/mmcblk0boot1、/dev/mmcblk0p1和/dev/mmcblk0p2為EMMC的擴充分區,BL1和BL2分别在/dev/mmcblk0boot0和/dev/mmcblk0boot1,核心存放在/dev/mmcblk0p1,rootfs存放在/dev/mmcblk0p2。Linux中提供了dd指令,那該如何使用dd克隆資料到SD卡呢,是否需要給SD建立同樣的分區?答案是不需要,dd指令是按位元組拷貝資料的,不需關注分區表,無所謂grub,還是ext4,btrfs,FAT32,對于dd來說隻是資料。下面進行全盤拷貝
dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=512 count=[fdisk指令中最大的end數+1]
其中/dev/mmcblk0主分區,/dev/mmcblk1為SD卡主分區,扇區大小512,有圖可以知道count = 15269887+1
dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=512 count=15269888
克隆系統到檔案
- 考慮到内部EMMC存儲空間有限,現将SD卡挂載到/media目錄
- dd if=/dev/mmcblk0 of=/media/nanopi_neo_air.img bs=512 count=[fdisk指令中最大的end數+1]
-
接下來就可以用win32diskimager工具,或者dd燒寫到其他的SD卡
ps: 當然你也可以制作單個分區的檔案,如/dev/mmcblk0p2,打包根檔案系統
dd if=/dev/mmcblk0p2 of=/media/rootfs.img bs=512 count=15138816
總結
- 此方法完全是系統全盤拷貝,需要拷貝的資料過大,最好是利用busybox制作根檔案系統,打包前添加自己想要的部分
問題求助
- 全志原廠Linux-3.4 BSP編譯生成的檔案如何打包成刷機固件(ROM)
- 嘗試網址方法裡busybox建構自己的檔案系統,然後打包刷機包,發現NanoPi NEO Air的闆載wifi無法工作,不知各位有沒有知道還需要加載哪些子產品或者有沒有制作NanoPi NEO Air根檔案系統的相關介紹
- 如何從開發闆中提取friendlycore的根檔案系統及配合BSP生成的uboot、kernel打包自己刷機包img檔案