#!/bin/sh

#
# ti processor sdk linux am335x evm /bin/setup-tftp.sh hacking
# 说明:
# 本文主要对TI的sdk中的setup-tftp.sh脚本进行解读,是为了了解其工作机制。
#
# -- 深圳 南山平山村 曾剑锋 # This distribution contains contributions or derivatives under copyright
# as follows:
#
# Copyright (c) , 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 $`
. $cwd/common.sh # tftp配置文件路径
tftpcfg=/etc/xinetd.d/tftp
# tftp根目录路径
tftprootdefault=/tftpboot # 创建tftpcfg文件,并将设定好的配置放入里面;
tftp() {
echo "
service tftp
{
protocol = udp
port =
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = $tftproot
disable = 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 ] " tftproot if [ ! -n "$tftproot" ]; then
tftproot=$tftprootdefault
fi
#
# . 查看结果:
# Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ ls -al
# total
# ......
# -rw-rw-r-- Qt Qt Aug .tftproot
# Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ cat .tftproot
# /tftpboot
# . 由上面可知,确实生成了.tftproot文件,里面确实也是/tftpboot
echo $tftproot > $cwd/../.tftproot
echo "--------------------------------------------------------------------------------" echo
echo "--------------------------------------------------------------------------------"
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 $tftproot
check_status
sudo chown nobody $tftproot
check_status
fi #
# #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.-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=
#
platform=`cat $cwd/../Rules.make | grep -e "^PLATFORM=" | cut -d= -f2`
kernelimage="zImage-""$platform"".bin"
# 之前编译好的文件
kernelimagesrc=`ls - $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"
;;
esac
else
# 当然如果文件本身就不存在,那么直接cp就行了。
sudo cp $kernelimagesrc $tftproot
check_status
echo
echo "Successfully copied $kernelimage to tftp root directory $tftproot"
fi dtbfiles=`cd $cwd/../board-support/prebuilt-images/;ls - *.dtb`
prebuiltimagesdir=`cd $cwd/../board-support/prebuilt-images/ ; echo $PWD` # 这里跟前面的kernel操作差不多。
for dtbfile in $dtbfiles
do
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"
fi
done echo
# 如果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
fi
else
# 如果tftpcfg文件不存在,那么就创建tftp配置文件。
tftp
fi echo
echo "Restarting tftp server"
sudo /etc/init.d/xinetd stop # stop tftp服务
check_status
sleep
sudo /etc/init.d/xinetd start # start tftp服务使tftpcfg有效。
check_status
echo "--------------------------------------------------------------------------------"

ti processor sdk linux am335x evm /bin/setup-tftp.sh hacking的更多相关文章

  1. ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking # 说明: # 本文主要对T ...

  2. ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking # 说明: # 本文主要对TI的sdk中 ...

  3. ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking # 说明: # 本文主要对TI的sdk中的s ...

  4. ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking # 说明: # 本文主要对TI的s ...

  5. ti processor sdk linux am335x evm /bin/commom.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/commom.sh hacking # 说明: # 本文主要对TI的sdk中的common.s ...

  6. ti processor sdk linux am335x evm /bin/setup-host-check.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-host-check.sh hacking # 说明: # 本文主要对TI的sdk ...

  7. ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking # 说明: # 本文主要对TI的sdk中 ...

  8. ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...

  9. ti processor sdk linux am335x evm setup.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm setup.sh hacking # 说明: # 本文主要对TI的sdk中的setup.sh脚本进行解读 ...

随机推荐

  1. 【POJ】【2420】A Star not a Tree?

    模拟退火 Orz HZWER 这题的题意是在二维平面内找一点,使得这点到给定的n个点的距离和最小……0.0 模拟退火算法请戳这里 //POJ 2420 #include<ctime> #i ...

  2. Recommender Systems移动互联网个性化游戏推荐

    对于在线商店,主要关心两方面:1. 提升转化率(将不消费的用户转变为消费用户):2. 提升消费额(已经花钱的人,花更多的强). 对比了6种方法:1. 协同过滤:2. slope one:3. 基于内容 ...

  3. [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++

    http://www.geeksforgeeks.org/extern-c-in-c/ C++函数重载(function overloading),但是C++编译器是如何区分不同的函数的呢?----是 ...

  4. JS内存管理测试

    打开调试器,切换到timer,点击左下角的record按钮开始,切换到memory视图,在文档中点击鼠标左右键,看股价走势图 function Allocate(kbs){ this.mem = ne ...

  5. 如何用 OneAPM 优化你的 Node.js 应用?

    本文主要讲解如何使用 OneAPM 提供的信息从内存.CPU 使用.响应速度等方面优化 Node.js 应用.适用于定位于刚刚使用 Node.js 开发后台的读者.本文系 OneAPM 用户投稿,本网 ...

  6. String.IsNullOrEmpty()和String.IsNullOrWhiteSpace()

    转自:http://hi.baidu.com/saclrpqmttbntyq/item/4592fc72c5a19e5c0d0a07eb 由于总用 String.IsNullOrEmpty( s ) ...

  7. struts2-2.3.4.1的struts-default.xml源码

    <?xml version="1.0" encoding="UTF-8" ?> <!-- /* * $Id: struts-default.x ...

  8. java使用Apache POI操作excel文件

    官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...

  9. 【Linux高频命令专题(11)】cp

    概述 cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是 ...

  10. ActiveMQ使用教程

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...