您尚未登录。

楼主 #1 2020-05-11 23:02:36

小智跑腿
会员
注册时间: 2020-04-26
已发帖子: 78
积分: 78

感谢@晕哥, 传一个小智X3卡片电脑和开发板的TF卡镜像一键打包脚本,V3s/F1C100s也可以用

我参考的是 @晕哥的打包脚本: 分享全志主线u-boot/linux 打包 TF/SD/SDNAND 镜像脚本


本站下载打包脚本和二进制文件: x3pack_20200511.tgz

这是经过pack.sh打包后的TF卡镜像文件: x3-smallwit-card-taurus.7z



pack.sh 脚本:

#!/bin/bash

_UBOOT_SIZE=1

###第一个分区(FAT)大小,单位MiB##
_P1_SIZE=16

###TF卡镜像文件名称###
_IMG_FILE='x3-smallwit-card-taurus.img'

###TF卡镜像文件大小, 单位MiB###
_IMG_SIZE=120

temp_root_dir=$PWD

_UBOOT_FILE="${temp_root_dir}/data/u-boot-sunxi-with-spl.bin"
_SPLASH_BMP_FILE="${temp_root_dir}/data/splash.bmp"
_BOOT_SCR_FILE="${temp_root_dir}/data/boot.scr"
_KERNEL_IMAGE_FILE="${temp_root_dir}/data/zImage"
_DTB_FILE="${temp_root_dir}/data/sun8i-x3-smallwit-card-taurus.dtb"
_ROOTFS_TGZ_FILE="${temp_root_dir}/data/rootfs.tar"

        ###初始化镜像文件###
        dd if=/dev/zero of=$_IMG_FILE bs=1M count=$_IMG_SIZE

        ###判断镜像文件是否初始化成功###
        if [ $? -ne 0 ]
        then
                echo  "getting error in creating dd img!"
                exit
        fi


        ###获取一个循环设备###
        _LOOP_DEV=$(sudo losetup -f)
        #echo ${_LOOP_DEV}



        ##再次判断此设备是否存在###
        if [ -z $_LOOP_DEV ]
        then
                echo  "can not find a loop device!"
                exit
        fi

        ###把镜像文件和循环设备关联###
        sudo losetup $_LOOP_DEV $_IMG_FILE
        if [ $? -ne 0 ]
        then
                echo  "dd img --> $_LOOP_DEV error!"
                sudo losetup -d $_LOOP_DEV >/dev/null 2>&1 && exit
        fi
        echo  "--->creating partitions for tf image ..."
        #blockdev --rereadpt $_LOOP_DEV >/dev/null 2>&1
        # size only can be integer



###分区###
cat <<EOT |sudo  sfdisk ${_IMG_FILE}
${_UBOOT_SIZE}M,${_P1_SIZE}M,c
,,L
EOT


###格式化###
        sleep 2
        sudo partx -u $_LOOP_DEV
        sudo mkfs.vfat ${_LOOP_DEV}p1 ||exit
        sudo mkfs.ext4 ${_LOOP_DEV}p2 ||exit
        if [ $? -ne 0 ]
        then
                echo  "error in creating partitions"
                sudo losetup -d $_LOOP_DEV >/dev/null 2>&1 && exit
                #sudo partprobe $_LOOP_DEV >/dev/null 2>&1 && exit
        fi

        ###u-boot写到TF卡8K偏移处###
        #pack uboot
        echo  "--->writing u-boot-sunxi-with-spl to $_LOOP_DEV"
        # sudo dd if=/dev/zero of=$_LOOP_DEV bs=1K seek=1 count=1023  # clear except mbr
        sudo dd if=$_UBOOT_FILE of=$_LOOP_DEV bs=1024 seek=8
        if [ $? -ne 0 ]
        then
                echo  "writing u-boot error!"
                sudo losetup -d $_LOOP_DEV >/dev/null 2>&1 && exit
                #sudo partprobe $_LOOP_DEV >/dev/null 2>&1 && exit
        fi



        ###新建 p1,p2 目录,并挂载TF卡两个分区###
        sudo sync
        mkdir -p ${temp_root_dir}/output/p1 >/dev/null 2>&1
        mkdir -p ${temp_root_dir}/output/p2 > /dev/null 2>&1
        sudo mount ${_LOOP_DEV}p1 ${temp_root_dir}/output/p1
        sudo mount ${_LOOP_DEV}p2 ${temp_root_dir}/output/p2
        echo  "--->copy boot and rootfs files..."
        sudo rm -rf  ${temp_root_dir}/output/p1/* && sudo rm -rf ${temp_root_dir}/output/p2/*


        ###复制zImage, dtb, boot.scr, splash.bmp 等文件到第一分区 ###
        sudo cp ${_KERNEL_IMAGE_FILE} ${temp_root_dir}/output/p1/zImage &&\
        sudo cp ${_DTB_FILE} ${temp_root_dir}/output/p1/ &&\
        sudo cp ${_BOOT_SCR_FILE} ${temp_root_dir}/output/p1/ &&\
        sudo cp ${_SPLASH_BMP_FILE} ${temp_root_dir}/output/p1/ &&\
        echo "--->p1 done~"

        ###解压 rootfs.tgz 到第二分区###
        sudo tar xvf ${_ROOTFS_TGZ_FILE} -C ${temp_root_dir}/output/p2/ &&\
        echo "--->p2 done~"



        ###同步, 等待, 卸载, 退出###
        sudo sync
        sleep 2
        sudo umount ${temp_root_dir}/output/p1 ${temp_root_dir}/output/p2  && sudo losetup -d $_LOOP_DEV
        if [ $? -ne 0 ]
        then
                echo  "umount or losetup -d error!!"
                exit
        fi

离线

楼主 #2 2020-05-11 23:03:50

小智跑腿
会员
注册时间: 2020-04-26
已发帖子: 78
积分: 78

Re: 感谢@晕哥, 传一个小智X3卡片电脑和开发板的TF卡镜像一键打包脚本,V3s/F1C100s也可以用

对了, 这个 pack.sh 脚本不能在 ubuntu 14.04 运行, 可以在 ubuntu 18.04 运行, 其他版本未测.


文件系统用的是 @晕哥 荔枝派Zero V3s开发板入坑记录 (TF/SD卡启动)(主线Linux,主线u-boot)的 这是我编译好的uboot, linux&dtb, rootfs: V3s_TFCard.7z

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn