注意:只有下列目录重启后不会还原,其它目录重启后自动还原,尽量不要往其它目录写入数据。
a) /home/novasky/app
b) /home/novasky/app-backup
c) /home/novasky/data
d) /home/novasky/config
1.系统启动:
系统启动脚本调用链如下:
a) /etc/rc.local
b) nohup /home/novasky/system/scripts/start.sh >/dev/null 2>&1 &
c) /home/novasky/app/scripts/start.sh
2.空间规划:
a) /dev/mmcblk0p1
系统分区,该分区以只读模式挂载到/ro目录
b) /dev/mmcblk0p2
配置分区,该分区挂载到/home/novasky/config目录,其文件系统类型kvfs,这是一个掉电安全的文件系统,保证增删改查的原子性,用于存储运行时可能修改的重要数据。使用df指令查看文件系统信息如下:
kvfs-K90V500000 356 4 352 2% /home/novasky/config
其中K90代表文件路径最长90个字符,V500000代表文件大小最大为500000,356代表最多存储356个文件,4代表已经存储4个文件。
c) /dev/mmcblk0p3、/dev/mmcblk0p4
应用分区,用于存储业务软件、算法软件等,互为主备。
Ø 主应用分区通过/home/novasky/config/system/app-block-device指定。
Ø 主应用分区挂载到/home/novasky/app
Ø 备份应用分区挂载到/home/novasky/app-backup
Ø 通过调用switch-app-to-backup指令,将主业务分区切换为当前挂载到/home/novasky/app-backup的那个分区,重启后生效。
d) /dev/mmcblk0p5
数据分区,用于存储日志文件等不重要的数据,系统启动时会检测并修复该分区,如果有异常并且尝试修复失败,会格式化该分区。
3.系统分区
系统分区几个脚本(/home/novasky/system/scripts):
a) feed_dog.sh 喂狗程序,自动运行。
b) start.sh 启动脚本,由rc.local调用。
c) switch-app-to-backup 切换主备应用软件分区。
d) watchdog-start 开启看门狗。
e) watchdog-stop 关闭看门狗。
其中switch-app-to-backup、watchdog-start、watchdog-stop可直接在命令行执行。
4.应用分区
这是一个应用分区的模板,供参考。
应用分区路径:/home/novasky/app,里面包含下面几个目录:
scripts 应用分区启动脚本
a) 启动应用层:由scripts/start.sh启动应用层,先做一个IP等初始化配置、再启动FOD雷达算法软件、再启动FOD业务软件
b) 设备配置:由scripts/config_device.py根据
/home/novasky/config/app/device/device_config.json对设备进行IP等配置。
5.客户端转服务端
a) 设备中运行客户端转服务端的程序,参数如下:
tcp-cs-convert-linux-arm64 c2s -lsaddr 127.0.0.1:60003 -rsaddr 0.0.0.0:60005
b) 客户端配置为连接TCP服务127.0.0.1:60003。
c) 平台端配置为连接TCP服务 DEVICE-IP:60005
6.服务端转客户端
a) 平台端软件如果只能做服务端,可以使用服务端转客户端程序来连接作为服务端的设备,该程序运行一次即可。
b) 服务端转客户端程序运行参数:
tcp-cs-convert.exe s2c –rsaddr DEVICE-IP:60005 -lsaddr 平台端IP:PORT
c) 软件下载:
ftp://192.168.51.200:50021
用户名:novasky_platform
密码:000000
路径:/软件版本发布/公用软件模块/tcp-cs-convert/v1.0
7.备份与恢复
a) 查找使用emmc的进程号
sudo fuser -mv /home/novasky/app
sudo fuser -mv /home/novasky/app-backup
sudo fuser -mv /home/novasky/config
sudo fuser -mv /home/novasky/data
b) 使用kill -sigkill终止这些进程
c) 执行umount
sudo umount -R /home/novasky/app
sudo umount -R /home/novasky/app-backup
sudo umount -R /home/novasky/config
sudo umount -R /home/novasky/data
d) 执行备份或者恢复前,应确保mount | grep mmc的结果如下:
/dev/mmcblk0p1 on /ro type ext4 (ro,relatime,data=ordered)
只有/dev/mmcblk0p1被挂载,且挂载为只读模式。
e) 备份指令:
dd if=/dev/mmcblk0 bs=100M status=progress | ssh novasky@IP-OF-UBUNTU-PC 'cat >PATH-OF-BACKUP.IMG'
f) 恢复指令:
ssh novasky@IP-OF-UBUNTU-PC 'cat PATH-OF-BACKUP.IMG' | dd of=/dev/mmcblk0 bs=100M status=progress
8.裸板烧录:
a) cd /home/novasky/xavier_nx
b) 解压烧录工具: sudo tar xvzfpm xavier_nx_emmc_ddr8g.tar.gz
c) Xavier NX的USB Device接口接电脑、网口接ubuntu电脑。
d) 电脑IP配置为192.168.3.XXX,确保ping不通192.168.3.120,这个IP是被烧录的设备使用的IP,避免IP冲突。
e) Xavier NX进入USB烧录模式,电脑上lsusb结果如下: Bus 001 Device 063: ID 0955:7e19 NVidia Corp.
f) cd /home/novasky/xavier_nx/xavier_nx_emmc_ddr8g
g) sudo ./recover-xavier-nx-by-nc.sh 镜像文件路径 注意:如果是rar或者tar**.gz后缀的文件,需要解压后使用**
h) 等待大概3分钟,出现下列信息: Reset the board to boot from internal eMMC.
i) 等待大概20秒,出现下列信息,说明在传输镜像文件到模块: xxxx bytes (xxx MB, xxx MiB) copied, xx.xxx s, xx.x MB/s
j) 等待大概6分钟,出现下列信息,说明烧录完成。 echo SUCCESS: update $SHPATH/emmc-imgs/emmc-all.img to emmc
9.更新根文件系统的文件
直接更新根文件系统,系统重启后会恢复为原来的状态,更改将被丢弃。正确步骤如下:
a) sudo su
b) mount -o remount,rw /ro
c) cd /ro
d) 修改/ro目录下的内容
e) cd /
f) mount -o remount,ro /ro 如果执行失败,跳过该步骤
g) sync 必须执行sync