[Ubuntu][Shell]make_ubuntu_sd.sh注释解读

举报
futureflsl 发表于 2020/01/15 10:44:15 2020/01/15
【摘要】 华为云博客字数受到限制,完整注释请参看https://blog.csdn.net/FL1623863129/article/details/103984869# ########################Begin Executing####################################### ************************Check args***...

华为云博客字数受到限制,完整注释请参看https://blog.csdn.net/FL1623863129/article/details/103984869

# ########################Begin Executing######################################

# ************************Check args*******************************************

function main()

{

    # 检查输入的参数合不合法,4个就是对的不是4个就是错的

    if [[ $# -lt 4 ]];then

        echo "Failed: Number of parameter illegal! Usage: $0 <dev fullname> <img path> <iso fullname> <mini filename>"

        return 1;

    fi

    # 检查网卡IP和USB IP地址是不是有效的

    # ***************check network and usb card ip**********************************

    checkIps

    if [ $? -ne 0 ];then

        return 1

    fi

    # 检查SD卡

    # ************************umount dev_name***************************************

    checkSDCard

    if [ $? -ne 0 ];then

        return 1

    fi


    # ************************Extract ubuntufs**************************************

    # output:squashfs-root/

    #提取Ubunutu镜像里面的系统

    ubuntufsExtract

    if [ $? -ne 0 ];then

        return 1

    fi

    # end

    # 将/usr/bin/qemu-aarch64-static复制到/usr/bin/qemu-aarch64-static目录

    # ************************Check architecture************************************

    arch=$(uname -m)

    if [[ ${arch} =~ "x86" ]];then

         cp /usr/bin/qemu-aarch64-static ${LogPath}squashfs-root/usr/bin/

         if [ $? -ne 0 ];then

             echo "Failed: qemu-user-static or binfmt-support not found!"

             return 1;

         fi

         chmod 755 ${LogPath}squashfs-root/usr/bin/qemu-aarch64-static

    fi

    # end

    # 配置Ubuntu系统

    # ************************Configure ubuntu**************************************

    echo "Process: 1/4(Configure ubuntu filesystem)"

    configUbuntu

    if [ $? -ne 0 ];then

        return 1

    fi

    # end

    #格式化SD卡

    # ************************Format SDcard*****************************************

    echo "Process: 2/4(Format SDcard)"

    formatSDcard

    if [ $? -ne 0 ];then

        return 1

    fi

    # end


    # ************************Copy files to SD**************************************

    # 卸载TMPDIR_SD_MOUNT分区并删除里面的所有文件

    if [[ -d "${TMPDIR_SD_MOUNT}" ]];then

        umount ${TMPDIR_SD_MOUNT} 2>/dev/null

        rm -rf ${TMPDIR_SD_MOUNT}

    fi

    #创建TMPDIR_SD_MOUNT目录并挂载

    mkdir ${TMPDIR_SD_MOUNT}

    mount ${DEV_NAME}$p1 ${TMPDIR_SD_MOUNT} 2>/dev/null  # updated by aman

    # 卸载分区2,并删除分区2里面所有的文件

    if [[ -d "${TMPDIR_SD2_MOUNT}" ]];then

        umount ${TMPDIR_SD2_MOUNT} 2>/dev/null

        rm -rf ${TMPDIR_SD2_MOUNT}

    fi

    #创建TMPDIR_SD_MOUNT2目录并挂载

    mkdir ${TMPDIR_SD2_MOUNT}

    mount ${DEV_NAME}$p2 ${TMPDIR_SD2_MOUNT} 2>/dev/null  # updated by aman

    # 卸载分区3,并删除分区3里面所有的文件

    if [[ -d "${TMPDIR_SD3_MOUNT}" ]];then

        umount ${TMPDIR_SD3_MOUNT} 2>/dev/null

        rm -rf ${TMPDIR_SD3_MOUNT}

    fi

    #创建TMPDIR_SD_MOUNT3目录并挂载

    mkdir ${TMPDIR_SD3_MOUNT}

    mount ${DEV_NAME}$p3 ${TMPDIR_SD3_MOUNT} 2>/dev/null  # updated by aman


    echo "Process: 3/4(Copy filesystem and mini package to SDcard)"

    # 复制文件到SD卡里面去,具体怎么复制请看这个函数

    copyFilesToSDcard

    if [ $? -ne 0 ];then

        return 1

    fi

    # end


    echo "Process: 4/4(Make sysroot)"

    make_sysroot

    umount ${TMPDIR_SD_MOUNT} 2>/dev/null

    if [[ $? -ne 0 ]];then

        echo "Failed: Umount ${TMPDIR_SD_MOUNT} to SDcard failed!"

        return 1

    fi

    

    


    umount ${TMPDIR_SD2_MOUNT} 2>/dev/null

    if [[ $? -ne 0 ]];then

        echo "Failed: Umount ${TMPDIR_SD2_MOUNT} to SDcard failed!"

        return 1

    fi


    umount ${TMPDIR_SD3_MOUNT} 2>/dev/null

    if [[ $? -ne 0 ]];then

        echo "Failed: Umount ${TMPDIR_SD3_MOUNT} to SDcard failed!"

        return 1

    fi

    echo "Finished!"

    return 0

}

#进入脚本我们应该从这里看代码,上面全部是封装的函数,用来调用的

main $* #执行main函数

ret=$? #获取执行的结果

#clean files

filesClean #清理缓存的文件


#失败就向make_ubuntu_sd.result写个字符串Failed

if [[ ret -ne 0 ]];then

    echo "Failed" > ${LogPath}/make_ubuntu_sd.result

    exit 1

fi

#成功就向make_ubuntu_sd.sh写个字符串Success

echo "Success" > ${LogPath}/make_ubuntu_sd.result

exit 0

# end


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。