当需要进行固件升级时,PC启动FileClient应用程序,作为TCP的Client端,提供发送升级文件的服务。Shell脚本文缓游件StartShell判断是否有固件需要升级,如果有更新现有固件后,启亏拆动更新后的固件,如果没有,启动现有扰空销固件。
升级过程无非就是把原来的文件替换掉了,只升级应用程序,那就把原应用程序替换掉呗。保证可靠升级那就要很多支持了,不仅是应用程贺闹序自身的问题了。
1,例如可以将老的程序重新命名一下,新程序升级失败了继续使用老的。
2,或者可以加一个标志文件,指示启动哪个应用程序,如果启动不了标志文禅庆罩件中的差枣,那就直接启动默认的老的应用程序。这样做升级中断电后也是没问题的。
ld和libc库必须同时升级,否则这两者不匹配会引起各种执行程序报错
一、先把新版本的 ld-2.xx.so、libc-2.xx.so 一起放入 /lib 目录,并注意赋予执行权限
二、删掉指向旧版高汪本的软链接 rm ld-linux-aarch64.so.1 libc.so.6
三、这时所有的命令都是不能用的。同时恢复ld-linux、libc的软链接指向新版本
LD_PRELOAD="/lib/libc-2.26.so /lib/ld-2.26.so" /bin/ln -s /lib/ld-2.26.so /lib/ld-linux-aarch64.so.1
LD_PRELOAD="/lib/libc-2.26.so /lib/ld-2.26.so"戚晌仔 /bin/ln -s /lib/libc-2.26.so /lib/libc.so.6
这时候,虽然谨销大部分busybox命令都可以执行了,但是像dropbear、dmesg这些部分功能还是不正常的,因为还有 libnss_dns、libnss_file、libpthread、libresolv、libdl、libanl、libcrypt、libm、libnsl、librt、libutil 这些库需要跟libc库同步升级
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)