Openwrt squafs文件系统及sysupgrade升级探究
发布日期:2021-05-09 18:12:41 浏览次数:14 分类:精选文章

本文共 5143 字,大约阅读时间需要 17 分钟。

LINUX������������������sysupgrade���������������

���Linux������������������sysupgrade���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������sysupgrade���������������������������������������������������������������������


1. ������������

sysupgrade������������������OpenWrt���������������������������OpenWrt������MIPS������������������������qca9531������������������Openwrt-trunk 4.1.15���������������������������������������������������jffs2���squashFS������������������������������������������


2. ������������

���OpenWrt������������MIPS���������������������������������jffs2���squash���������������������������������������������������������������������sysupgrade���������������������

2.1 squash������������

squashFS���������������Linux������������������������������������������������������������������������������������2^64���������������������������������

  • ���������������������GPL���������������GZIP���LZMA���XZ������������������
  • ���������������������������2.6.34������������LZMA���2.6.38������XZ���������
  • ���������������������������������������������������������������������������

2.2 sysupgrade������

sysupgrade���OpenWrt���������������������������������������shell���������������������������������������������

#!/bin/sh
. /lib/functions.sh
. /lib/functions/system.sh
# ���������������������
RAMFS_COPY_BIN=""
RAMFS_COPY_DATA=""
export MTD_CONFIG_ARGS=
export INTERACTIVE=0
export VERBOSE=1
export SAVE_CONFIG=1
export SAVE_OVERLAY=0
export DELAY=
export CONF_IMAGE=
export CONF_BACKUP_LIST=0
export CONF_BACKUP=
export CONF_RESTORE=
export NEED_IMAGE=
export HELP=0
export FORCE=0
export TEST=0
# ������������
while [ -n "$1" ]; do
case "$1" in
-i) export INTERACTIVE=1 ;;
-d) export DELAY="$2"; shift ;;
-v) export VERBOSE=$((VERBOSE + 1)) ;;
-q) export VERBOSE=$((VERBOSE - 1)) ;;
-n) export SAVE_CONFIG=0 ;;
-c) export SAVE_OVERLAY=1 ;;
-b|--create-backup) export CONF_BACKUP="$2" NEED_IMAGE=1; shift ;;
-r|--restore-backup) export CONF_RESTORE="$2" NEED_IMAGE=1; shift ;;
-l|--list-backup) export CONF_BACKUP_LIST=1; break ;;
-f) export CONF_IMAGE="$2"; shift ;;
-F|--force) export FORCE=1 ;;
-T|--test) export TEST=1 ;;
-h|--help) export HELP=1; break ;;
*)
echo "Invalid option: $1"
exit 1
;;
esac
shift
done
# ������������������
export CONFFILES=/tmp/sysupgrade.conffiles
export CONF_TAR=/tmp/sysupgrade.tgz
export ARGV="$*"
export ARGC="$#"
# ���������������������������
if [ -z "$ARGV" -a -z "$NEED_IMAGE" -o $HELP -gt 0 ]; then
echo "Usage: $0 [...] "
exit 1
fi
# ������������������������������������
if [ -n "$CONF_BACKUP" ]; then
do_save_conffiles "$CONF_BACKUP"
exit $?
fi
# ���������������������������
if [ -n "$CONF_RESTORE" ]; then
if [ "$CONF_RESTORE" != "-" ]; then
if [ ! -f "$CONF_RESTORE" ]; then
echo "Backup archive '$CONF_RESTORE' not found."
exit 1
fi
fi
tar -C / -xvf "$CONF_RESTORE"
exit $?
fi
# ������������
type platform_check_image > /dev/null || {
echo "Firmware upgrade is not implemented for this platform."
exit 1
}
# ������������������
if [ $TEST -eq 1 ]; then
exit 0
fi
# ���������������������
run_hooks "" $sysupgrade_pre_upgrade
# ������������������
do_upgrade

3. ���������������������

sysupgrade���������������������������������������������������������������������������������������������

  • ���������������������������/proc/cpuinfo������machine������������������������������������
  • ���������������������MIPS_MACHINE������������machine������������������������������������
  • ���������������ar71xx_board_detect������������machine������������board_name���model���

  • 4. sysupgrade������������������

    ���������������������������sysupgrade������������������������������������

  • ���������������������������

    • ���target/linux/ar71xx/base-files/lib/ar71xx.sh������������ar71xx_board_detect���������������MIPS_MACHINE���������machine���������������������case���������������board_name���model���
  • ���������������������

    • ���target/linux/ar71xx/base-files/lib/upgrade/platform.sh������������platform_check_image���������������board_name���������������case���������������������������������������������������

  • 5. ������������������������

    sysupgrade������������������������������������������������������������

  • ���������������������������������������������������������������������������������
  • ���������������������������do_save_conffiles���������������������������������������������������������������������
  • ���������������������������������������������������������������������������������������������������
  • ������������������������force������������������������������������������������������

  • ������������������������������������������������sysupgrade���������OpenWrt������������������������������������������������������������������������Linux���������������������������������������������������������������������������������������������������������������������������

    上一篇:openwrt系统 sysupgrade 命令执行过程分析
    下一篇:openwrt开启Samba作为共享中心 win7如何访问linux samba服务器

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月07日 11时23分13秒