教程:如何用bpi-migrate创建你自己的镜像

修改了bpi-migrate 新增了-c,–config option 可以用選擇不同板子配置
也可以用來單純化 BPI-BOOT 與BPI-ROOT 所安裝的檔案

升級後 /usr/bin/bpi-migrate v1.3.0(github)

bpi-migrate -v 會有-c,–config的介紹

使用上 可以 bpi-migrate -c bpi-m2p.conf -r root.tgz
這樣可以做出 只有M2+ 的boot檔案跟 kernel module

bpi-m2p.conf 放在github 上 會自動下載到本地目錄並使用

也可以搭配使用如
bpi-migrate -c bpi-m2p.conf -c busybox.conf
這樣就可以做出 一個最精簡的busybox image 給M2+使用
所需要的檔案都在github上 如果本地目錄沒有 工具會自動從github下載 無須事先下載
包含busybox root檔案 已經放在 guthub上
https://github.com/BPI-SINOVOIP/BPI-files/raw/master/rootfs/busybox-1.24.2-root.tgz

https://github.com/BPI-SINOVOIP/BPI-files/raw/master/others/for-bpi-tools/conf/board/bpi-m2p.conf

bpi-m2p.conf

BPILICENSE="GPLv2 or any later version"
BPICONF="bpi-m2p.conf"
BPICONFVERSION="v1.0.0"
BPIBOARD=“bpi-m2p”

BPI SD partition layout: SIZE=7456 (MB) for eMMC/SD

0:100MB: RAW DATA: unallocated area, no label,

(0-100MB) a. bootloader like u-boot

b. boot logo

c. env

d. android kernel

1:256MB: FAT: label BPI-BOOT,

(100MB-356MB) a. uEnv.txt / boot.scr

b. kernel & initrd

c. script.bin / dtb

2: ~END: EXT4: label BPI-ROOT,

(356MB~END) for rootfs like ubuntu / debian …

0. 100MB: UBOOTIMGGZ

#RAWSIZE=100 #can not change
#UBOOTIMGGZ=BPI_M3_720P.img.gz
#BPI-M2U
#UBOOTIMGGZ=BPI_M2U_720P.img.gz
#BPI-M2
#UBOOTIMGGZ=BPI_M2_720P.img.gz
#BPI-M2P
UBOOTIMGGZ=BPI_M2P_720P.img.gz

1. BPI-BOOT: BOOTFILE

#BOOTSIZE defaut 256, empty for default
BOOTSIZE=""

#BOOTFILES=“BPI-BOOT.tgz”
#BPI-M2U
#BOOTFILES=“BPI-BOOT-bpi-m2u.tgz”
#BPI-M2
#BOOTFILES=“BPI-BOOT-bpi-m2.tgz”
#BPI-M2P
BOOTFILES=“BPI-BOOT-bpi-m2p.tgz”

2.1 BPI-ROOT: ROOTFILE for base

#SD SIZE defaut 7456, empty for default, BPI-ROOT SIZE = 7456 - 100 - 256 = 7100
SIZE="“
ROOTFILE=”"

2.2 BPI-ROOT: BPIFILES for addon

BPIFILES=“bpi-tools.tgz
3.3.0-BPI-M2-Kernel.tgz
3.4.39-BPI-M2P-Kernel.tgz
3.4.39-BPI-M3-Kernel.tgz
3.4.112-sun8i.tgz
3.4.112-sun7i.tgz
3.10.101-pine64-bpi-m64.tgz
rpi-kernel.tgz
4.6.5-300.fc24.armv7hl.tgz
3.10.65-BPI-M2U-Kernel.tgz
libvdpau_sunxi.tgz
bt.tgz
camera.tgz
brcm.tgz”

#BPI-M2P only
BPIFILES=“bpi-tools.tgz
3.4.39-BPI-M2P-Kernel.tgz
libvdpau_sunxi.tgz
bt.tgz
camera.tgz
brcm.tgz”
#END

https://github.com/BPI-SINOVOIP/BPI-files/raw/master/others/for-bpi-tools/conf/os/busybox.conf

busybox.conf

BPILICENSE="GPLv2 or any later version"
BPICONF="busybox.conf"
BPICONFVERSION=“v1.0.0”

busybox only

SIZE="128"
BOOTSIZE="16"
BPIFILES="bpi-tools.tgz"
ROOTURL="https://github.com/BPI-SINOVOIP/BPI-files/raw/master/rootfs/busybox-1.24.2-root.tgz"
ROOTFILE="busybox-1.24.2-root.tgz"
IMGFILE=“busybox-1.24.2-${BPIBOARD}.img”
#END

未來會新增其他的配置來做不同的鏡像

============================================================
建議使用的方式
sudo su
bpi-migrate -c bpi-m2p.conf -c busybox.conf

先試作確認環境可以編譯出 busybox-1.24.2-bpi-m2p.img

cp -a busybox.conf edu.conf
然後修改edu.conf

edu.conf

BPILICENSE="GPLv2 or any later version"
BPICONF="edu.conf"
BPICONFVERSION=“v1.0.0”

edu only

SIZE=“7456” <== 依據rootfs需要改動
BOOTSIZE=“16” <== 預設是256但是因為已經簡化沒放別的檔案 只放kernel 可依據需求修改.
#BPIFILES=“bpi-tools.tgz” <== 可以採用bpi-m2p.conf的預設就好, 這個是為了展示busybox最精簡狀態所以連kernel modules都沒安裝
ROOTURL=“http://opensource.ntpc.edu.tw/edu-root.tgz” <== 如果網路上有放一份, 就可以直接網路下載
ROOTFILE="edu-root.tgz"
IMGFILE=“2016-10-10-edu-${BPIBOARD}.img”
#END

bpi-migrate -c bpi-m2p.conf -c edu.conf
這樣如果本地沒有edu-root.tgz 就會自動去 $ROOTURL定義的去下載到本地
然後做成 2016-10-10-edu-bpi-m2p.img
自己再 zip 2016-10-10-edu-bpi-m2p.img.zip 2016-10-10-edu-bpi-m2p.img
就可以做成2016-10-10-edu-bpi-m2p.img.zip 讓別人下載使用

由於bpi-tools先前基於google drive服務, 現在已經轉移至github上

可以使用以下方式獲取更新後的工具:

  1. git clone https://github.com/BPI-SINOVOIP/bpi-tools.git
  2. wget https://github.com/BPI-SINOVOIP/BPI-files/raw/master/SD/BPI-ROOT/bpi-tools.tgz

目前工具裡的相關檔案改從github獲取

詳細可以查看
https://github.com/BPI-SINOVOIP/bpi-tools/commits/master
https://github.com/BPI-SINOVOIP/BPI-files/commits/master

未來可以使用工具本身的升級功能
bpi-tools -u -U
bpi-migrate -u -G

而由於bpi-get 受限於google drive 部份功能不再支援 未來將會變更功能…

root@bpi-iot-ros-ai:/tmp/a# bpi-tools -v
F_VERSION=yes

bpi files:
/usr/bin/bpi-tools v1.2.0(github)
/usr/bin/bpi-bootsel v1.0.5
/usr/bin/bpi-copy v1.0.10a
/usr/bin/bpi-get v1.0.3(github)
/usr/bin/bpi-migrate v1.2.2c(github)
/usr/bin/bpi-hw v1.2.8

受影響的 bpi-tools bpi-migrate bpi-get
因為只是變更BPIURL連結 所以版號維持 只增加github字樣以提醒