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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking # 说明: # 本文主要对TI的sdk中的setup-targetfs-nfs.sh脚本进行解读,是为了了解 # 其工作机制。
#!/bin/sh

#
#   ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking
# 说明:
#     本文主要对TI的sdk中的setup-targetfs-nfs.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.

cwd=`dirname $0`
. $cwd/common.sh

#
# #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

# TI_SDK_PATH=/home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00
SDKinstall=`grep TI_SDK_PATH= $cwd/../Rules.make | cut -d= -f2`
# dstdefault=/home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00/targetNFS
dstdefault=$SDKinstall/targetNFS


echo "--------------------------------------------------------------------------------"
# 配置NFS目录
echo "In which directory do you want to install the target filesystem?(if this directory does not exist it will be created)"
read -p "[ $dstdefault ] " dst

if [ ! -n "$dst" ]; then
    dst=$dstdefault
fi
echo "--------------------------------------------------------------------------------"

echo
echo "--------------------------------------------------------------------------------"
echo "This step will extract the target filesystem to $dst"
echo
# 需要root权限
echo "Note! This command requires you to have administrator priviliges (sudo access) "
echo "on your host."
read -p "Press return to continue" REPLY

extract_fs() {
    # 文件系统的tar包位置
    fstar=`ls -1 $cwd/../filesystem/??sdk*rootfs*.tar.gz`
    me=`whoami`                     # 获取用户名
    sudo mkdir -p $1                # 创建指定目录
    check_status
    sudo tar xzf $fstar -C $1       # 将文件系统解压到指定的目录
    check_status
    sudo chown $me:$me $1           # 改变指定目录的用户和群组
    check_status
    sudo chown -R $me:$me $1/home $1/usr $1/etc $1/lib $1/boot  # 改变指定目录下的属性
    check_status

    # Opt isn't a standard Linux directory. First make sure it exist.
    if [ -d $1/opt ];
    then
            sudo chown -R $me:$me $1/opt
            check_status
    fi

    echo
    # 显示提取文件成功
    echo "Successfully extracted `basename $fstar` to $1"
}

# 检查目录是否存在,根据是否存在做对应的事:备份、拷贝等。
if [ -d $dst ]; then
    echo "$dst already exists"
    echo "(r) rename existing filesystem (o) overwrite existing filesystem (s) skip filesystem extraction"
    read -p "[r] " exists
    case "$exists" in
      s) echo "Skipping filesystem extraction"
         echo "WARNING! Keeping the previous filesystem may cause compatibility problems if you are upgrading the SDK"
         ;;
      o) sudo rm -rf $dst
         echo "Old $dst removed"
         extract_fs $dst
         ;;
      *) dte="`date +%m%d%Y`_`date +%H`.`date +%M`"
         echo "Path for old filesystem:"
         read -p "[ $dst.$dte ]" old
         if [ ! -n "$old" ]; then
             old="$dst.$dte"
         fi
         sudo mv $dst $old
         check_status
         echo
         echo "Successfully moved old $dst to $old"
         extract_fs $dst
         ;;
    esac
else
    extract_fs $dst
fi
# 1. 查看
#     Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ ls -al
#     total 294792
#     -rwxr-xr-x  1 Qt   Qt        1260 Aug 14  2015 Rules.make
#     -rwxr-xr-x  1 Qt   Qt        4188 Apr 11  2015 setup.sh
#     -rw-rw-r--  1 Qt   Qt          77 Aug 14  2015 .gdbinit
#     -rw-rw-r--  1 Qt   Qt          65 Aug 14  2015 .targetfs
#     drwxr-xr-x 19 root root      4096 Aug 14  2015 targetNFS
#     Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ cat .targetfs 
#     /home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00/targetNFS
#     Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ 
#     Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00$ cat .gdbinit 
#     set sysroot /home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00/targetNFS
# 2. 如上可知,.targetfs确实生成了。
echo $dst > $cwd/../.targetfs
echo "set sysroot $dst" > $cwd/../.gdbinit
echo "--------------------------------------------------------------------------------"

# platform=am335x-evm
platform=`grep PLATFORM= $cwd/../Rules.make | cut -d= -f2`
echo
echo "--------------------------------------------------------------------------------"
echo "This step will set up the SDK to install binaries in to:"
echo "    $dst/home/root/$platform"
echo
echo "The files will be available from /home/root/$platform on the target."
echo
echo "This setting can be changed later by editing Rules.make and changing the"
echo "EXEC_DIR or DESTDIR variable (depending on your SDK)."
echo
read -p "Press return to continue" REPLY

sed -i "s=EXEC_DIR\=.*$=EXEC_DIR\=$dst/home/root/$platform=g" $cwd/../Rules.make
check_status

#  DESTDIR=/home/Qt/ti-processor-sdk-linux-am335x-evm-01.00.00.00/targetNFS
sed -i "s=DESTDIR\=.*$=DESTDIR\=$dst=g" $cwd/../Rules.make
check_status

echo "Rules.make edited successfully.."
echo "--------------------------------------------------------------------------------"

echo
echo "--------------------------------------------------------------------------------"
echo "This step will export your target filesystem for NFS access."
echo
echo "Note! This command requires you to have administrator priviliges (sudo access) "
echo "on your host."
read -p "Press return to continue" REPLY

# 检查NFS的路径是否已经设置了,如果设置了,那么就调过,如果没有设置,那么重新设置。
grep $dst /etc/exports > /dev/null
if [ "$?" -eq "0" ]; then
    echo "$dst already NFS exported, skipping.."
else
    sudo chmod 666 /etc/exports
    check_status
    sudo echo "$dst *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)" >> /etc/exports
    check_status
    sudo chmod 644 /etc/exports
    check_status
fi

echo
sudo /etc/init.d/nfs-kernel-server stop     # 关闭nfs服务器
check_status
sleep 1
sudo /etc/init.d/nfs-kernel-server start    # 打开nfs服务为,是配置有效
check_status
echo "--------------------------------------------------------------------------------"

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
12
分享
相关文章
|
10月前
|
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
210 0
【Linux】新唐NUC977挂载NFS实现网络文件传输
【Linux】新唐NUC977挂载NFS实现网络文件传输
106 0
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
551 0
【Linux】文件服务NFS(Network File System)
【Linux】文件服务NFS(Network File System)
210 0
Linux系统安装NFS服务器
NFS是一种网络文件系统,英文全称Network File System,通过NFS可以让不同的主机系统之间共享文件或目录。通过NFS,用户可以直接在本地NFS客户端读写NFS服务端上的文件,是非常好的共享存储工具。本篇文章将介绍如何在CentOS7上安装NFS服务器,包括服务端和客户端安装两部分。
171 0
|
3月前
|
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
305 7
|
7月前
|
内核实验(四):Qemu调试Linux内核,实现NFS挂载
本文介绍了在Qemu虚拟机中配置NFS挂载的过程,包括服务端的NFS服务器安装、配置和启动,客户端的DHCP脚本添加和开机脚本修改,以及在Qemu中挂载NFS、测试连通性和解决挂载失败的方法。
408 0
内核实验(四):Qemu调试Linux内核,实现NFS挂载
在Linux中,如何配置NFS共享?
在Linux中,如何配置NFS共享?
在Linux中,如何使用NFS和Samba共享文件和目录?
在Linux中,如何使用NFS和Samba共享文件和目录?
Linux 多种方式实现文件共享(三)NFS 6
【8月更文挑战第6天】NFS 即网络文件系统,是一种使用于分布式文件系统的协议,NFS 功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据
115 13

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    11
  • 2
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    14
  • 3
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
    21
  • 4
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    6
  • 5
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
    8
  • 6
    linux root登陆,密码正确但,错误提示su: Authentication failure
    39
  • 7
    linux syscall和int 80的区别
    12
  • 8
    【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
    18
  • 9
    Linux 操作系统
    5
  • 10
    Linux中的System V通信标准--共享内存、消息队列以及信号量
    5
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等