Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
| docs:guide-user:advanced:sysupgrade_extras [2023/03/16 17:10] – fix expanding squashfs vgaetera | docs:guide-user:advanced:sysupgrade_extras [2023/12/01 01:36] – [Instructions] minimize write operations vgaetera | ||
|---|---|---|---|
| Line 10: | Line 10: | ||
| * Download the firmware image and verify its checksum. | * Download the firmware image and verify its checksum. | ||
| * Allow to force/skip upgrade matching the current release. | * Allow to force/skip upgrade matching the current release. | ||
| - | * Expand | + | * Save/ |
| ===== Options ===== | ===== Options ===== | ||
| ^ Option ^ Description ^ | ^ Option ^ Description ^ | ||
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| + | | '' | ||
| ===== Instructions ===== | ===== Instructions ===== | ||
| Line 26: | Line 27: | ||
| local SYSUP_CMD=" | local SYSUP_CMD=" | ||
| case " | case " | ||
| - | (-I) opkg save | + | (-A|-U) sysupgrade_proc " |
| - | sysupgrade_init | + | (-S) service_save |
| - | (-A) . / | + | (-R) service_restore |
| - | sysupgrade_auto | + | |
| - | (-U) local SYSUP_FORCE=" | + | |
| - | sysupgrade -A ;; | + | |
| (*) command sysupgrade " | (*) command sysupgrade " | ||
| esac | esac | ||
| } | } | ||
| - | sysupgrade_init() { | + | sysupgrade_proc() { |
| - | uci -q batch << EOI | + | . /etc/os-release |
| - | set opkg.init=' | + | |
| - | add_list opkg.init.ipkg=' | + | |
| - | add_list opkg.init.ipkg=' | + | |
| - | add_list opkg.init.ipkg=' | + | |
| - | commit opkg | + | |
| - | EOI | + | |
| - | } | + | |
| - | + | ||
| - | sysupgrade_auto() { | + | |
| local SYSUP_VER=" | local SYSUP_VER=" | ||
| local SYSUP_URL=" | local SYSUP_URL=" | ||
| local SYSUP_REV=" | local SYSUP_REV=" | ||
| - | if [ " | + | if [ " |
| - | || [ -n "${SYSUP_FORCE}" ] | + | || [ "${SYSUP_CMD}" = "-U" ] |
| - | then | + | then shift |
| local SYSUP_DEV=" | local SYSUP_DEV=" | ||
| local SYSUP_PROF=" | local SYSUP_PROF=" | ||
| Line 58: | Line 47: | ||
| local SYSUP_TYPE=" | local SYSUP_TYPE=" | ||
| local SYSUP_EFI=" | local SYSUP_EFI=" | ||
| - | local SYSUP_JSON=" | ||
| local SYSUP_IMG=" | local SYSUP_IMG=" | ||
| - | local SYSUP_HASH=" | + | sysupgrade |
| - | uclient-fetch -P /tmp "${SYSUP_URL}/ | + | |
| - | sha256sum -c << EOI | + | |
| - | ${SYSUP_HASH} | + | |
| - | EOI | + | |
| - | case "${SYSUP_IMG}" in | + | |
| - | (*.gz) gunzip -k /tmp/" | + | |
| - | esac | + | |
| - | sysupgrade -i /tmp/"${SYSUP_IMG%.gz}" | + | |
| fi | fi | ||
| } | } | ||
| sysupgrade_ver() { | sysupgrade_ver() { | ||
| - | case "${DISTRIB_RELEASE}" in | + | case "${VERSION_ID}" in |
| - | (SNAPSHOT) echo " | + | (snapshot) echo " |
| - | (*) uclient-fetch | + | (*) wget -O - \ |
| " | " | ||
| | jsonfilter -e " | | jsonfilter -e " | ||
| Line 84: | Line 64: | ||
| sysupgrade_url() { | sysupgrade_url() { | ||
| echo " | echo " | ||
| - | releases/ | + | releases/ |
| } | } | ||
| sysupgrade_rev() { | sysupgrade_rev() { | ||
| - | uclient-fetch | + | wget -O - " |
| } | } | ||
| Line 97: | Line 77: | ||
| sysupgrade_prof() { | sysupgrade_prof() { | ||
| - | case "${DISTRIB_TARGET}" in | + | case "${OPENWRT_BOARD}" in |
| - | (x86*) echo " | + | (x86/*) echo " |
| (*) echo " | (*) echo " | ||
| esac | esac | ||
| Line 109: | Line 89: | ||
| sysupgrade_type() { | sysupgrade_type() { | ||
| - | case "${DISTRIB_TARGET}" in | + | case "${OPENWRT_BOARD}" in |
| - | (x86*) echo " | + | (x86/*) echo " |
| (*) echo " | (*) echo " | ||
| esac | esac | ||
| Line 121: | Line 101: | ||
| } | } | ||
| - | sysupgrade_json() { | + | sysupgrade_img() { |
| - | uclient-fetch | + | wget -O - " |
| - | | jsonfilter -e " | + | | jsonfilter -e " |
| - | [' | + | [' |
| - | && | + | && |
| } | } | ||
| - | sysupgrade_img() { | + | service_save() { |
| - | jsonfilter -e "$[' | + | local SVC_NAME="$(ls / |
| - | ${SYSUP_JSON} | + | local SVC_STATE |
| + | for SVC_NAME in ${SVC_NAME} | ||
| + | do if command service " | ||
| + | then SVC_STATE=" | ||
| + | else SVC_STATE=" | ||
| + | fi | ||
| + | uci -q batch << EOI | ||
| + | set system.service=' | ||
| + | del_list system.service.enable=' | ||
| + | del_list system.service.disable=' | ||
| + | add_list system.service.' | ||
| EOI | EOI | ||
| + | done | ||
| + | uci commit system | ||
| } | } | ||
| - | sysupgrade_hash() { | + | service_restore() { |
| - | jsonfilter | + | local SVC_NAME |
| - | ${SYSUP_JSON} | + | local SVC_STATE=" |
| - | EOI | + | for SVC_STATE in ${SVC_STATE} |
| + | do SVC_NAME=" | ||
| + | for SVC_NAME in ${SVC_NAME} | ||
| + | do command service " | ||
| + | done | ||
| + | done | ||
| } | } | ||
| EOF | EOF | ||
| . / | . / | ||
| - | # Configure | + | # Configure |
| - | cat << " | + | cat << " |
| - | if [ ! -e /etc/root-resize ] \ | + | if [ ! -e /etc/service-restore ] |
| - | && lock -n / | + | |
| - | && [ -e /etc/opkg-restore-init ] | + | |
| then . / | then . / | ||
| - | BOOT=" | + | sysupgrade |
| - | PART=" | + | touch /etc/service-restore |
| - | DISK=" | + | |
| - | ROOT=" | + | |
| - | echo " | + | |
| - | parted -s " | + | |
| - | case " | + | |
| - | (ext4) LOOP=" | + | |
| - | losetup " | + | |
| - | (squashfs) LOOP=" | + | |
| - | | sed -n -e " | + | |
| - | OFFS=" | + | |
| - | LOOP=" | + | |
| - | losetup -o " | + | |
| - | esac | + | |
| - | resize2fs -f " | + | |
| - | touch /etc/root-resize | + | |
| - | lock -u / | + | |
| - | reboot | + | |
| fi | fi | ||
| exit 1 | exit 1 | ||
| EOF | EOF | ||
| cat << " | cat << " | ||
| - | / | + | / |
| EOF | EOF | ||
| </ | </ | ||
| Line 177: | Line 155: | ||
| ===== Examples ===== | ===== Examples ===== | ||
| <code bash> | <code bash> | ||
| - | # Automated Sysupgrade | + | # Automated |
| - | sysupgrade -I | + | sysupgrade -A -i |
| - | sysupgrade -A | + | |
| + | # Forced interactive Sysupgrade | ||
| + | sysupgrade -U -i | ||
| </ | </ | ||
| ===== Automated ===== | ===== Automated ===== | ||
| <code bash> | <code bash> | ||
| - | uclient-fetch -O sysupgrade-extras.sh " | + | wget -U "" |
| . ./ | . ./ | ||
| </ | </ | ||