博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ti processor sdk linux am335x evm /bin/setup-tftp.sh hacking
阅读量:6260 次
发布时间:2019-06-22

本文共 8113 字,大约阅读时间需要 27 分钟。

#!/bin/sh##      ti processor sdk linux am335x evm /bin/setup-tftp.sh hacking# 说明:#     本文主要对TI的sdk中的setup-tftp.sh脚本进行解读,是为了了解其工作机制。##                                      2016-4-16 深圳 南山平山村 曾剑锋# This distribution contains contributions or derivatives under copyright# as follows:## Copyright (c) 2010, Texas Instruments Incorporated# All rights reserved.## Redistribution and use in source and binary forms, with or without# modification, are permitted provided that the following conditions# are met:# - Redistributions of source code must retain the above copyright notice,#   this list of conditions and the following disclaimer.# - Redistributions in binary form must reproduce the above copyright#   notice, this list of conditions and the following disclaimer in the#   documentation and/or other materials provided with the distribution.# - Neither the name of Texas Instruments nor the names of its#   contributors may be used to endorse or promote products derived#   from this software without specific prior written permission.## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.# 获取当前工作路径,并执行common.sh,是为了使用里面的函数cwd=`dirname $0`. $cwd/common.sh# tftp配置文件路径tftpcfg=/etc/xinetd.d/tftp# tftp根目录路径tftprootdefault=/tftpboot# 创建tftpcfg文件,并将设定好的配置放入里面;tftp() {    echo "service tftp{protocol = udpport = 69socket_type = dgramwait = yesuser = nobodyserver = /usr/sbin/in.tftpdserver_args = $tftprootdisable = no}" | sudo tee $tftpcfg > /dev/null     check_status     echo     echo "$tftpcfg successfully created"}echo "--------------------------------------------------------------------------------"echo "Which directory do you want to be your tftp root directory?(if this directory does not exist it will be created for you)"# 采用默认的tftproot还是自定义路径,有这部分决定。read -p "[ $tftprootdefault ] " tftprootif [ ! -n "$tftproot" ]; then    tftproot=$tftprootdefaultfi## 1. 查看结果:#     Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ ls -al#     total 294792#     ......#     -rw-rw-r--  1 Qt   Qt          10 Aug 14  2015 .tftproot#     Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ cat .tftproot #     /tftpboot# 2. 由上面可知,确实生成了.tftproot文件,里面确实也是/tftpbootecho $tftproot > $cwd/../.tftprootecho "--------------------------------------------------------------------------------"echoecho "--------------------------------------------------------------------------------"echo "This step will set up the tftp server in the $tftproot directory."echo# 接下来需要设定tftp服务器,需要root权限。echo "Note! This command requires you to have administrator priviliges (sudo access) "echo "on your host."read -p "Press return to continue" REPLY# 查看目录是否存在,如果存在,那么不用创建,如果不存在,那么就创建。if [ -d $tftproot ]; then    echo    echo "$tftproot already exists, not creating.."else    sudo mkdir -p $tftproot    check_status    sudo chmod 777 $tftproot    check_status    sudo chown nobody $tftproot    check_statusfi## #platform# PLATFORM=am335x-evm# #defconfig# DEFCONFIG=singlecore-omap2plus_defconfig# #Architecture# ARCH=armv7-a# #u-boot machine# UBOOT_MACHINE=am335x_evm_config# #Points to the root of the TI SDK# export TI_SDK_PATH=/home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00# #root of the target file system for installing applications# DESTDIR=/home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00/targetNFS# #Points to the root of the Linux libraries and headers matching the# #demo file system.# export LINUX_DEVKIT_PATH=$(TI_SDK_PATH)/linux-devkit# #Cross compiler prefix# export CROSS_COMPILE=$(LINUX_DEVKIT_PATH)/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-# #Default CC value to be used when cross compiling.  This is so that the# #GNU Make default of "cc" is not used to point to the host compiler# export CC=$(CROSS_COMPILE)gcc# #Location of environment-setup file# export ENV_SETUP=$(LINUX_DEVKIT_PATH)/environment-setup# #The directory that points to the SDK kernel source tree# LINUXKERNEL_INSTALL_DIR=$(TI_SDK_PATH)/board-support/linux-3.14.26-g2489c02# CFLAGS= -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a8# SDK_PATH_TARGET=$(TI_SDK_PATH)/linux-devkit/sysroots/cortexa8t2hf-vfp-neon-linux-gnueabi/# MAKE_JOBS=4#platform=`cat $cwd/../Rules.make | grep -e "^PLATFORM=" | cut -d= -f2`kernelimage="zImage-""$platform"".bin"# 之前编译好的文件kernelimagesrc=`ls -1 $cwd/../board-support/prebuilt-images/$kernelimage`# 如果tftp根目录下存在了对应的内核文件if [ -f $tftproot/$kernelimage ]; then    echo    echo "$tftproot/$kernelimage already exists. The existing installed file can be renamed and saved under the new name."    # 由用户决定是使用哪种方式,重命名还是重写。    echo "(r) rename (o) overwrite (s) skip copy "    read -p "[r] " exists    case "$exists" in      s) echo "Skipping copy of $kernelimage, existing version will be used"         ;;      o) sudo cp $kernelimagesrc $tftproot         check_status         echo         echo "Successfully overwritten $kernelimage in tftp root directory $tftproot"         ;;      *) dte="`date +%m%d%Y`_`date +%H`.`date +%M`"         echo "New name for existing kernelimage: "         # 默认用kernelimage名加上日期来代表老版本的文件名         read -p "[ $kernelimage.$dte ]" newname         if [ ! -n "$newname" ]; then             newname="$kernelimage.$dte"         fi         sudo mv "$tftproot/$kernelimage" "$tftproot/$newname"         check_status         sudo cp $kernelimagesrc $tftproot         check_status         echo         echo "Successfully copied $kernelimage to tftp root directory $tftproot as $newname"         ;;    esacelse    # 当然如果文件本身就不存在,那么直接cp就行了。    sudo cp $kernelimagesrc $tftproot    check_status    echo    echo "Successfully copied $kernelimage to tftp root directory $tftproot"fidtbfiles=`cd $cwd/../board-support/prebuilt-images/;ls -1 *.dtb`prebuiltimagesdir=`cd $cwd/../board-support/prebuilt-images/ ; echo $PWD`# 这里跟前面的kernel操作差不多。for dtbfile in $dtbfilesdo    if [ -f $tftproot/$dtbfile ]; then        echo        echo "$tftproot/$dtbfile already exists. The existing installed file can be renamed and saved under the new name."        echo "(o) overwrite (s) skip copy "        read -p "[o] " exists        case "$exists" in          s) echo "Skipping copy of $dtbfile, existing version will be used"             ;;          *) sudo cp "$prebuiltimagesdir/$dtbfile" $tftproot             check_status             echo             echo "Successfully overwritten $$dtbfile in tftp root directory $tftproot"             ;;        esac    else        sudo cp "$prebuiltimagesdir/$dtbfile" $tftproot        check_status        echo        echo "Successfully copied $dtbfile to tftp root directory $tftproot"    fidoneecho# 如果tftpcfg文件已经存在,需要查看tftp配置中的tftp根目录是否在我们需要的位置,# 如果不在,那么还是需要另外配置。if [ -f $tftpcfg ]; then    echo "$tftpcfg already exists.."    #Use = instead of == for POSIX and dash shell compliance    if [ "`cat $tftpcfg | grep server_args | cut -d= -f2 | sed 's/^[ ]*//'`" \          = "$tftproot" ]; then        echo "$tftproot already exported for TFTP, skipping.."    else        echo "Copying old $tftpcfg to $tftpcfg.old"        sudo cp $tftpcfg $tftpcfg.old        check_status        tftp    fielse    # 如果tftpcfg文件不存在,那么就创建tftp配置文件。    tftpfiechoecho "Restarting tftp server"sudo /etc/init.d/xinetd stop        # stop tftp服务check_statussleep 1sudo /etc/init.d/xinetd start       # start tftp服务使tftpcfg有效。check_statusecho "--------------------------------------------------------------------------------"

 

转载地址:http://yzesa.baihongyu.com/

你可能感兴趣的文章
史上最难的一道Java面试题:分析篇
查看>>
HDFS常用命令(方便大家记忆版)
查看>>
kafka原理与实践(原创)
查看>>
如何在excel单元格中插入图片批注
查看>>
Android 基础动画之补间动画详解
查看>>
业界 | 全球最大生物识别数据库被判定合法
查看>>
Hanlp等七种优秀的开源中文分词库推荐
查看>>
常见移动设备的 CSS3 Media Query 整理(iPhone/iPad/Galaxy/HTC One etc.)
查看>>
redis第二步(事务和锁)
查看>>
rufus:一款制作linux U盘启动的神器
查看>>
[动态代理三部曲:中] - 从动态代理,看Class文件结构定义
查看>>
函数式编程与面向对象编程[5]:编程的本质
查看>>
[Spring实战系列](9)装配集合
查看>>
vue需注意的地方
查看>>
搞定计算机网络面试,看这篇就够了
查看>>
原生开发移动web单页面(step by step)6——history api应用
查看>>
【iOS 开发】Xcode9 自动签名更新设备列表
查看>>
[Elasticsearch]Elasticsearch+kibana+marvel安装
查看>>
《Kotlin 程序设计》第四章 Kotlin 语法基础
查看>>
开源堡垒机 Jumpserver v1.4.8 发布 , Bug 修复版本
查看>>