ARM40-A5应用——ARM40文件的半自动远程更新(ARM40-SEMIAUTO-OTA)

ARM40-A5应用——ARM40文件的半自动远程更新(ARM40-SEMIAUTO-OTA)

2018.9.21

  在应用程序升级以后,希望ARM40能够从远程服务器下载并安装新版本的应用程序。
  本文提供一种应用程序的手动远程更新的参考方法。

一、半自动远程更新的步骤

1.1、准备服务器端文件

  服务器端涉及到的目录和文件如下:

/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20180917/rdace-manager   #目录,存在管理文件
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20180917/RELEASE         #目录,存放下载到ARM40的文件
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20180917/rdace-manager/rdace_update_manager.sh  #脚本文件
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20180917/rdace-manager/rdace_update.sh          #脚本文件

1.2、ARM40上的操作

  (1)首先将服务器上rdace_update_manager.sh文件下载到ARM40的临时文件夹中:
/tmp/rdace_update_manager.sh
  (2)执行/tmp/rdace_update_manager.sh,该程序会从服务器上下载 rdace_update.sh文件,然后运行该文件。
    rdace_update.sh将 “需要部署到ARM40的文件” 都rsync到ARM40的相应位置,并chmod各个文件。
  (3)最后reboot重启ARM40,检查并测试。
    详情见下文各部分。

二、准备服务器端文件

  本示例中,服务器47.98.140.167上rsync的RDACE_IDC模块的地址为:
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20180917
  含 RELEASE和rdace-manager两个目录。
  rdace-manager 目录中存放rdace_update_manager.sh和rdace_update.sh 脚本,内容见附(1)(2)。

2.1、rdace_update.sh

  脚本 rdace_update.sh依次把 BATCH_FILES 中罗列的文件拷贝到ARM40相应的位置,然后修改各文件的chmod。
  我们注释一下 BATCH_FILES 中的各文件:

BATCH_FILES="etc/ppp/peers/M26-gprs            #M26
        etc/ppp/peers/M26-chat-connect         #M26
        etc/ppp/peers/M26-chat-disconnect      #M26
        etc/ppp/ip-up                          #M26
        etc/ppp/pon-M26-auto.sh                #M26
        etc/ppp/ppp-off                        #M26
        usr/bin/holer              #holer
        etc/ssh/sshd_config        #holer
        opt/user/date_update.sh            #time
        opt/user/cron_user.sh              #cron
        etc/network/if-public-network.sh       #route
        opt/rdace10/                #APP
        tmp/sqlite3.tar             #QT
        tmp/tslib.tar               #QT
        tmp/qte4.8.7.tar            #QT
        tmp/libstdc++.so.tar        #QT
        etc/pointercal"         #触摸屏校准文件

2.2、rdace_update_manager.sh

  rdace_update_manager.sh 则负责从服务器拷贝rdace_update.sh到ARM40的/tmp文件夹,然后执行rdace_update.sh完成各文件的部署。

三、 ARM40上的操作

3.1、rdace_update_manager.sh 脚本

  将服务器上的 rdace_update_manager.sh 下载到ARM40-A5的/tmp/中:

rsync -avz    \
        --timeout=60    \
        --password-file=/etc/rsync.passwd    \
        [email protected]:/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20180917/rdace-manager/rdace_update_manager.sh    \
         /tmp/

  然后执行该脚本:
sh /tmp/rdace_update_manager.sh
  脚本 rdace_update_manager.sh 的执行示例(删去了部分rsync的log):

root@ARM40:/tmp# ./rdace_update_manager.sh 
hello RDACE_IDC
receiving incremental file list
rdace_update.sh
hello ARM40
/etc/ppp/peers/M26-gprs OK
/etc/ppp/peers/M26-chat-connect OK
/etc/ppp/peers/M26-chat-disconnect OK
/etc/ppp/ip-up OK
/etc/ppp/pon-M26-auto.sh OK
/etc/ppp/ppp-off OK
/usr/bin/holer OK
/etc/ssh/sshd_config OK
/opt/user/date_update.sh OK
/opt/user/cron_user.sh OK
/etc/network/if-public-network.sh OK
/etc/pointercal OK
batch_files OK

3.2、注意事项

  • 1、ARM40设备每台都有唯一的MAC地址,ID号等信息,这些信息更新后需逐一修改相关的信息。
  • 2、holer的HOLER_ACCESS_KEY,每台都不相同,需修改。
  • 3、更新后需reboot重启ARM40.

参考文章:

  ARM40-A5应用——使用rsync与Linux服务器的远程数据同步
  ARM40-A5应用——ARM40文件的自动远程更新(ARM40-AUTO-OTA)
  嵌入式Linux固件升级
  https://blog.csdn.net/jsfzdd/article/details/6158258
  Linux下远程升级脚本
  https://blog.csdn.net/sdvch/article/details/14109997
  Android应用增量更新 - Smart App Updates
  https://github.com/cundong/SmartAppUpdates
  荟聚计划:共商 共建 共享 Grant

附:

(1)脚本 rdace_update_manager.sh 的内容如下:

#!/bin/sh
echo "hello RDACE_IDC"
cd `dirname $0` #get pwd 
TMP_DIR=/tmp
[email protected]::RDACE_IDC
UPDATE_BATCH_SERVER=$SERVER_IDC/rdace-manager/rdace_update.sh #the batch script in server
UPDATE_BATCH_LOCAL=$TMP_DIR/rdace_update.sh #copy to ARM40
#copy the batch script file in server to ARM40                                                   
rsync -avz --timeout=60 --password-file=/etc/rsync.passwd $UPDATE_BATCH_SERVER $UPDATE_BATCH_LOCAL
if [ "$?" != "0" ]; then #if rsync return error, game over
        exit 1                                                                
fi
                                                                              
chmod 777 $UPDATE_BATCH_LOCAL                                                 
sh $UPDATE_BATCH_LOCAL #do the batch script file

(2)脚本rdace_update.sh 的内容如下:

#!/bin/sh
#rdace_update.sh
echo "hello ARM40"
cp_file_to_ARM40()
{
        rsync -a [email protected]::RDACE_IDC/RELEASE/$1 /$1
        if [ "$?" != "0" ]; then # rsync is not OK, game over
                return 1
        fi
        echo "/$1 OK"
        return 0
}
BATCH_FILES="etc/ppp/peers/M26-gprs
        etc/ppp/peers/M26-chat-connect
        etc/ppp/peers/M26-chat-disconnect
        etc/ppp/ip-up
        etc/ppp/pon-M26-auto.sh
        etc/ppp/ppp-off
        usr/bin/holer
        etc/ssh/sshd_config
        opt/user/date_update.sh
        opt/user/cron_user.sh
        etc/network/if-public-network.sh
        opt/rdace10/
        tmp/sqlite3.tar
        tmp/tslib.tar
        tmp/qte4.8.7.tar
        tmp/libstdc++.so.tar
        etc/pointercal"
batch_files()
{
        for batch in $BATCH_FILES
        do
                cp_file_to_ARM40 $batch
                if [ "$?" != "0" ]; then
                        return 1
                fi
        done
        echo "batch_files OK"
        return 0
}
if [ ! -d /opt/rdace-manager ]; then
    mkdir -p /opt/rdace-manager
fi
batch_files
chmod 755 /etc/ppp/peers/M26-gprs
chmod 755 /etc/ppp/peers/M26-chat-connect
chmod 755 /etc/ppp/peers/M26-chat-disconnect
chmod 755 /etc/ppp/ip-up
chmod 755 /etc/ppp/pon-M26-auto.sh
chmod 755 /etc/ppp/ppp-off
chmod 644 /etc/ssh/sshd_config
chmod 755 /opt/user/date_update.sh
chmod 755 /opt/user/cron_user.sh 
chmod 755 /etc/network/if-public-network.sh
tar xvf /tmp/sqlite3.tar -C /opt/
tar xvf /tmp/tslib.tar -C /opt/
tar xvf /tmp/qte4.8.7.tar -C /opt/
tar xvf /tmp/libstdc++.so.tar -C /lib/
chmod 644 /pointercal

猜你喜欢

转载自blog.csdn.net/vonchn/article/details/82810195
40