ARM40-A5应用——ARM40文件的拓荒部署示例(ARM40-reclaim-OTA)

ARM40-A5应用——ARM40文件的拓荒部署示例(ARM40-reclaim-OTA)

2018.10.9

  本文适合ARM40文件的半自动拓荒部署(即首次部署)。

一、ARM40文件拓荒部署的步骤

1.1、服务器端文件

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

/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20181009/MANAGER         #目录,存在管理文件
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20181009/RELEASE         #目录,存放下载到ARM40的文件
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20181009/MANAGER/update.sh                #脚本文件
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20181009/MANAGER/product-list/A5A1890001  #产品ID文件

1.2、ARM40上的操作

  (1)建立/opt/user/ota-rtchip.sh文件
  (2)执行/opt/user/ota-rtchip.sh A5A1890001 (A5A1890001为产品ID文件名)
  (3)reboot重启ARM40,检查并测试。。

二、服务器端文件

  服务端需要开启rsync服务,参考《ARM40-A5应用——使用rsync与Linux服务器的远程数据同步》。
  本示例中,服务器192.168.1.130上rsync的RDACE_IDC模块的地址为:
/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20181009
  含MANAGER和RELEASE两个目录。
在这里插入图片描述
  MANAGER目录中存放update.sh脚本和product-list目录。product-list目录中存放产品ID文件。
  RELEASE目录中存放需要下载到ARM40的文件,其中RELEASE/tmp目录下的文件,在ARM40上是临时文件,重新上电后不会存在。
  update.sh、A5A1880001、setby-meinfo.sh等文件的内容见附录。

三、 ARM40上的操作

  (1)建立/opt/user/ota-rtchip.sh文件
touch /opt/user/ota-rtchip.sh
chmod 755 /opt/user/ota-rtchip.sh
  其内容为:

#!/bin/sh
echo "hello ARM40_IDC"
[email protected]::RDACE_IDC

#先拷贝MANAGER/tmp中的存放的rsync和libpopt.so.0
scp -r [email protected]:/home/ARM40-A5/ARM40-A5-projects/noise_rdace/APP_20181009/MANAGER/tmp/* /tmp/
echo "123456" > /etc/rsync.passwd
chmod 0600 /etc/rsync.passwd

cp /tmp/rsync /usr/bin/
cp /tmp/libpopt.so.0 /usr/lib/

rsync -avz --timeout=60 --password-file=/etc/rsync.passwd $SERVER_IDC/MANAGER/update.sh /tmp/
chmod 755 /tmp/update.sh
/tmp/update.sh $1

  (2)执行 /opt/user/ota-rtchip.sh A5A1880001
  ota-rtchip.sh会将服务器上的update.sh脚本下载到ARM40的/tmp/update.sh,并运行该脚本。
  脚本update.sh会依次把 BATCH_FILES 中罗列的文件拷贝到ARM40相应的位置,并修改各文件的chmod。
  脚本update.sh的最后会执行setby-meinfo.sh $1,例如 setby-meinfo.sh A5A1880001,将A5A1880001指示的产品ID文件也rsync到ARM40。然后根据A5A1880001的内容,生成MAC地址、产品ID、holer-key等产品自身相关的信息。若更新时无此需要,则注释掉update.sh中的setby-meinfo.sh $1即可。
  脚本/opt/user/ota-rtchip.sh的执行示例(删去了部分rsync的log和setby-meinfo.sh的log):

root@ARM40:# /opt/user/ota-rtchip.sh A5A1880001
hello ARM40_IDC
receiving incremental file list
update.sh
hello ARM40
/etc/init.d/S40network OK
/etc/init.d/S41network OK
/opt/user/setby-meinfo.sh OK
batch_files OK

  (3) 需手工完成的部分

  • 1、增加armholer用户名
    adduser armholer    #passwd:armholer
      若此处的用户名、密码与/opt/rdace-manager/rdace.info中的不同,请修改rdace.info中的信息。
  • 2、免密登陆ARM40
      修改 /etc/inittab中的
    console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
    #console::respawn:-/bin/sh
      为:
    #console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
    console::respawn:-/bin/sh
  • 3、重启
    reboot

参考文章:

  ARM40-A5应用——使用rsync与Linux服务器的远程数据同步
  ARM40-A5应用——ARM40文件的自动远程更新(ARM40-auto-OTA)
  ARM40-A5应用——ARM40文件的半自动远程更新(ARM40-semiauto-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)服务器端脚本 update.sh 的内容如下:

#!/bin/sh
#update.sh
#/opt/user/ota-rtchip.sh A5A1880001  #download A5A1880001 to /opt/rdace-manager/rdace.info

echo "hello ARM40"
[email protected]::RDACE_IDC

cp_file_to_ARM40()
{
        rsync -avz --password-file=/etc/rsync.passwd $SERVER_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
        etc/ppp/ppp-csq
        usr/bin/holer
        etc/holer-key
        etc/ssh/sshd_config
        opt/user/date_update.sh
        opt/user/cron_user.sh
        opt/rdace-manager/rdace.info
        etc/network/if-public-network.sh
        etc/init.d/S40network
        etc/init.d/S41network
        etc/localtime
        etc/cron.arm40
        opt/rdace10/
        tmp/sqlite3.tar
        tmp/tslib.tar
        tmp/qte4.8.7.tar
        tmp/libstdc++.so.tar
        etc/pointercal
        etc/profile
        etc/profile.local
        tmp/setby-meinfo.sh"

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 /home/test ]; then
#    mkdir -p /home/test
#fi

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 755 /etc/ppp/ppp-csq
chmod 755 /usr/bin/holer
chmod 777 /etc/holer-key
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
chmod 755 /etc/init.d/S40network
chmod 755 /etc/init.d/S41network
chmod 664 /etc/localtime
chmod 777 /etc/cron.arm40
chmod 664 /etc/network/interfaces.eth0
chmod 664 /etc/network/interfaces.eth1
chmod 777 /opt/rdace-manager/rdace.info
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 /etc/pointercal
chmod 644 /etc/profile
chmod 755 /etc/profile.local

if [ -e /etc/init.d/S49ntp ]; then
        mv /etc/init.d/S49ntp /etc/init.d/K49ntp
fi

/tmp/setby-meinfo.sh $1

(2)A5A1880001的内容示例如下:

ME_ID=A5A1880001
ME_MASTER=EC5002
ETH0_IP=192.168.0.250
ETH0_MAC=C8:1B:5C:05:86:9C
ETH0_GATEWAY=192.168.0.1
ETH1_IP=192.168.6.6
ETH1_MAC=C8:1B:5C:05:86:9D
ETH1_GATEWAY=192.168.6.1
GPRS_ID=PPA1880001
GPRS_SIM=null
HOLER_KEY=cbf1bea217f9608fa4b1f3361ae
HOLER_ACCESS=armholer:armholer
HOLER_PORT=63301
[email protected]
HOLER_VALIDITY=2018.8.21:180
UPS_ID=UPA1880001
MFG_DATE=2018.8.21
MFG_COO=SHANGHAI
FIX_ADDR=SHANGHAI:JINSHAN

(3)setby-meinfo.sh的内容示例如下:

#!/bin/sh

echo "hello me.info"
[email protected]::RDACE_IDC
MEINFO=/opt/rdace-manager/rdace.info

# cp product-list/$1 to /opt/rdace-manager/rdace.info (on ARM40-A5)
cp_meinfo_to_ARM40()
{
        rsync -avz --password-file=/etc/rsync.passwd $SERVER_IDC/MANAGER/product-list/$1 $MEINFO
        if [ "$?" != "0" ]; then # rsync is not OK, game over
                return 1
        fi
        echo "$1 OK"
        return 0
}

cp_meinfo_to_ARM40 $1        #eg: A5A1880001

ETH0_MAC=`awk '/ETH0_MAC/ {print $1}' $MEINFO |cut -d '=' -f 2`
ETH0_IP=`awk '/ETH0_IP/ {print $1}' $MEINFO |cut -d '=' -f 2`
ETH0_GATEWAY=`awk '/ETH0_GATEWAY/ {print $1}' $MEINFO |cut -d '=' -f 2`

ETH1_MAC=`awk '/ETH1_MAC/ {print $1}' $MEINFO |cut -d '=' -f 2`
ETH1_IP=`awk '/ETH1_IP/ {print $1}' $MEINFO |cut -d '=' -f 2`
ETH1_GATEWAY=`awk '/ETH1_GATEWAY/ {print $1}' $MEINFO |cut -d '=' -f 2`

echo "# Configure eth0"         >  /etc/network/interfaces.eth0
echo "MACADDRESS=$ETH0_MAC"     >> /etc/network/interfaces.eth0
echo "IPADDRESS=$ETH0_IP"       >> /etc/network/interfaces.eth0
echo "NETMASK=255.255.255.0"    >> /etc/network/interfaces.eth0
echo "GATEWAY=$ETH0_GATEWAY"    >> /etc/network/interfaces.eth0

echo "# Configure eth1"         >  /etc/network/interfaces.eth1
echo "MACADDRESS=$ETH1_MAC"     >> /etc/network/interfaces.eth1
echo "IPADDRESS=$ETH1_IP"       >> /etc/network/interfaces.eth1
echo "NETMASK=255.255.255.0"    >> /etc/network/interfaces.eth1
echo "GATEWAY=$ETH1_GATEWAY"    >> /etc/network/interfaces.eth1

HOLER_KEY=`awk '/HOLER_KEY/ {print $1}' $MEINFO |cut -d '=' -f 2`
echo "$HOLER_KEY"               >  /etc/holer-key

chmod 664 /etc/network/interfaces.eth0
chmod 664 /etc/network/interfaces.eth1
chmod 777 /etc/holer-key
chmod 777 /opt/rdace-manager/rdace.info

echo "********************************"
cat /etc/network/interfaces.eth0
echo "********************************"
cat /etc/network/interfaces.eth1
echo "********************************"
cat $MEINFO

猜你喜欢

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