天天看點

NanoPi NEO Air内EMMC系統克隆至全新的SD卡

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檢視分區和扇區使用情況,如下:
    NanoPi NEO Air内EMMC系統克隆至全新的SD卡
  • 其中/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檔案

繼續閱讀