Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
docs:guide-user:installation:generic.sysupgrade [2020/12/17 19:00] – [Upgrade installed packages] update vgaeteradocs:guide-user:installation:generic.sysupgrade [2023/01/18 10:38] – [Can you keep settings?] update link vgaetera
Line 1: Line 1:
 ====== Upgrading OpenWrt firmware using LuCI and CLI ====== ====== Upgrading OpenWrt firmware using LuCI and CLI ======
-  * Related pages+See also
-    * [[docs:techref:flash.layout|Flash Layout]]: provides background on how OpenWrt uses device storage space+    * [[docs:techref:flash.layout|OpenWrt flash Layout]]
     * [[docs:guide-user:installation:sysupgrade.cli|Upgrading OpenWrt firmware using CLI]]     * [[docs:guide-user:installation:sysupgrade.cli|Upgrading OpenWrt firmware using CLI]]
     * [[docs:guide-quick-start:sysupgrade.luci|Upgrading OpenWrt firmware using LuCI]]     * [[docs:guide-quick-start:sysupgrade.luci|Upgrading OpenWrt firmware using LuCI]]
 +    * [[docs:guide-quick-start:admingui_sysupgrade_keepsettings#upgrade_compatibility|Keep Settings and Upgrade Compatibility]]
 +    * [[docs:guide-user:installation:sysupgrade.packages|Saving/restoring user-installed packages]]
  
-An OpenWrt **upgrade** will replace the entire current OpenWrt installation with a new version. +===== How the OpenWrt upgrade works ===== 
-This includes the Linux kernel, the SquashFS partition and the JFFS2 partition. This is NOT the same as a first time installation.+An OpenWrt **sysupgrade** will replace the entire current OpenWrt installation with a new version. 
 +This includes the Linux kernel and SquashFS/ext4/ubifs/JFFS2/other OS partition/s. This is NOT the same as a first time installation (factory).
  
-The common upgrade paths below will automatically preserve much of the OpenWrt OS configuration by saving and then restoring configuration files in specific common locations (including ''/etc/config''). +Sysupgrade via LuCI or CLI works by optionally saving specified configuration files, **wiping the entire file system**, installing the new version of OpenWrt and then restoring back the saved configuration files.
-This will preserve things like OpenWrt network settings, Wi-Fi settings, the device hostname, and so on. +
- +
-The first part of the upgrade process is to prepare for the upgrade. +
-This includes documenting programs and settings that will need to be re-installed or restored after the upgrade, locating and downloading the correct OpenWrt upgrade image for your hardware. +
- +
-Next is the actual upgrade. +
-There are two common upgrade paths to actually perform the upgrade. +
-One uses the LuCI web interface "Flash new firmware image" command and one uses the command-line ''sysupgrade'' command. Both use the same '...sysupgrade.bin' upgrade file (more below). +
-You can use either approach. +
- +
-After the OS upgrade, there are usually some additional configuration steps required to re-install additional packages not part of the base OpenWrt install, to configure new OpenWrt functionality or to update configuration files to reflect new settings or updated packages. +
-Please see the section below with more details. +
- +
-===== Preparing for an OpenWrt upgrade ===== +
-==== How the OpenWrt OS upgrade works ==== +
-Both the LuCI and sysupgrade upgrade procedures work by saving specified configuration files, **wiping the entire file system**, installing the new version of OpenWrt and then restoring back the saved configuration files.+
 **This means that any parts of the file system that are not specifically saved will be lost.** **This means that any parts of the file system that are not specifically saved will be lost.**
  
Line 33: Line 20:
 Be sure to check any files you have added or customized from a default OpenWrt install to back up these items before an upgrade. Be sure to check any files you have added or customized from a default OpenWrt install to back up these items before an upgrade.
  
-See [[https://wiki.mbirth.de/know-how/software/openwrt/sysupgrade-with-extroot.html|this howto]] about extroot procedure.+See [[https://web.archive.org/web/20220919082336/https://blog.mbirth.de/archives/2014/05/26/openwrt-sysupgrade-with-extroot.html|this howto]] about extroot procedure.
  
-==== Identifying customizations ==== +For [[tag:dual_firmware|Dual Firmware Devices]] please consult your device page for additional information.
-=== Back up user-installed packages === +
-:!: Enable [[docs:guide-user:additional-software:opkg#extras|extra Opkg commands]] to be able to use the following commands.+
  
-<code bash> +By compiling your own custom image with an OpenWrt buildroot or generating with the imagebuilder, it is possible to remove the need to perform many of the steps above.
-opkg backup +
-</code>+
  
-This function uses the code from [[https://github.com/openwrt/openwrt/blob/master/package/base-files/files/sbin/sysupgrade#L240-L246|sysupgrade]].+===== Upgrade steps ===== 
 +==== 1. Prepare ==== 
 +The first part of the upgrade process is to prepare for the upgrade. 
 +  - Setup for data migration ( keep settings ) and additional sysupgrade.conf entries 
 +  - Export save installed package list manifest 
 +  Obtain verify new installation sysupgrade image (and current known good one to revert to)
  
-=== Other options === +This includes documenting programs and settings that will need to be re-installed or restored after the upgrade, locating and downloading the correct OpenWrt upgrade image for your hardware.
-== Opkgscript == +
-Copy [[https://github.com/richb-hanover/OpenWrtScripts/blob/master/opkgscript.sh|opkgscript]] to your router. +
-Ideally in a directory which will be preserved after flashing so you don't have to copy it again. +
-Make it executable:+
  
-<code bash> +When it is possible to 'keep settings' sysupgrade will automatically preserve much of the OpenWrt OS configuration by saving and then restoring configuration files in specific common locations (including ''/etc/config''). This will preserve things like OpenWrt network settings, Wi-Fi settings, the device hostname, and so on. Some data files and directories for additional services will need to be configured manually.
-chmod +x /path/to/the/opkgscript.sh +
-</code>+
  
-Create a snapshot of the installed packages:+==== 2. Upgrade ==== 
 +Next is the actual upgrade. The two common upgrade methods to perform the upgrade are: 
 +  * LuCI web interface System -> Backup / Flash Firmware -> "Flash new firmware image" 
 +  * Command-line using ''sysupgrade'' command over console or ssh
  
-<code bash> +Both use the same ''...sysupgrade.bin/img.gz'' file (more below).
-/path/to/the/opkgscript.sh -v write +
-</code>+
  
-By default the script will save the list in /etc/config/opkg.installedwhich is preserved over flashing. +==== 3Post Install ConfigurationSetup or Restore ==== 
-When you login back after the upgrade configure the internet connectivityrun and wait until it finished with the installation:+After the OS upgrade, there are usually some additional configuration steps required to; 
 +  * Re-install additional packages not part of the base OpenWrt install 
 +  * Configure new OpenWrt functionality or to 
 +  * Update configuration files to reflect new settings or updated packages
  
-<code bash> +Please see the section below with more details.
-/path/to/the/opkgscript.sh -v install +
-</code>+
  
-== This script is from forum member gsenna == +===== Preparing for upgrade ===== 
-and was originally posted in the forum discussion "Default packages attitude 12.09rc2 tplink 1043nd" at [[https://forum.openwrt.org/viewtopic.php?id=43480]]+==== Can you keep settings? ==== 
 +See also: 
 +[[docs:guide-quick-start:admingui_sysupgrade_keepsettings#upgrade_compatibility|Upgrade Compatibility]]
  
-<code bash> +Most of the time you can, jumping several versions, downgrading, if the release notes or upgrade message informs you it'not possible, then you will need to plan ahead of time and factor in the time and information required to re-apply some or most of your previous configuration manually.
-# Save the script +
-cat << "EOF" > /tmp/listuserpackages.sh +
-echo >&2 User-installed packages are the following: +
-sed -ne '/^Package:[[:blank:]]*/+
-    s/// +
-    h +
-+
-/user installed/ { +
-    g +
-    p +
-}' /usr/lib/opkg/status +
-EOF+
  
-# Run the script +  - It is worthwhile not keeping settings once every 12-16 months 
-chmod +x /tmp/listuserpackages.sh +  - Trying to get around the advice to start with new settings when needed can result in odd issues that can be difficult to troubleshoot
-/tmp/listuserpackages.sh +
-</code>+
  
-Note that the script may list several packages that are part of the default OpenWrt install and will have their changed configuration files automatically backed up and restored. +==== Will you need to revert? ==== 
-In addition, packages installed as dependences of other packages may show here. +A time may come when you attempt an upgrade and for whatever reason it is unsuccessfulContingency planning is a good skill for anything in IT.
-**It is only important to note the names of packages that you directly installed manually.** +
-Any dependencies of these packages will automatically be reinstalled when the primary package is reinstalled.+
  
-== An alternative script, that uses awk instead of sed/grep and is much shorter (provided by user valentijn): == +  - Have you made a backup of your current settings? (for restoration to same or earlier OS versions
-<code bash> +  Do you have copy of your current (pre-upgradeOS version if you need to re-install? (both factory and sysupgrade or even vendor firmware may be required) 
-# Save the script +  Do you have a spare device in case things go pear shaped or you need much more time than expected?
-cat << "EOF" > /tmp/listuserpackages.awk +
-#!/usr/bin/awk -+
-/^Package:/{PKG= $2} +
-/^Status: .*user installed/{print PKG} +
-EOF +
- +
-# Run the script +
-chmod +x /tmp/listuserpackages.awk +
-/tmp/listuserpackages.awk /usr/lib/opkg/status +
-</code> +
- +
-This script will only output list of user (and default) installed packages. +
- +
-== The alternative script below (by tboege) == +
-Shows every package installed after the rom was build (flash_time), if no packages are depending on it. +
-Packages, that are manually installed may be omitted, since one of the listed packages must depends of such a package, all manually installed packages will be installed, if the listed packages are installed: +
- +
-<code bash> +
-cat << "EOF" > /tmp/listuserpackages.awk +
-#!/usr/bin/awk -+
-BEGIN { +
-    ARGV[ARGC++] = "/usr/lib/opkg/status" +
-    cmd="opkg info busybox | grep '^Installed-Time: '" +
-    cmd | getline FLASH_TIME +
-    close(cmd) +
-    FLASH_TIME=substr(FLASH_TIME,17) +
-+
-/^Package:/{PKG= $2} +
-/^Installed-Time:/+
-    INSTALLED_TIME= $2 +
-    # Find all packages installed after FLASH_TIME +
-    if ( INSTALLED_TIME > FLASH_TIME ) { +
-        cmd="opkg whatdepends " PKG " | wc -l" +
-        cmd | getline WHATDEPENDS +
-        close(cmd) +
-        # If nothing depends on the package, it is installed by user +
-        if ( WHATDEPENDS == 3 ) print PKG +
-    } +
-+
-EOF +
- +
-# Run the script +
-chmod +x /tmp/listuserpackages.awk +
-/tmp/listuserpackages.awk +
-</code> +
- +
-=== List all packages associated with any user-modified file === +
-This is an alternative to the script above. +
-This command will list all packages related to any file in the whole file system that has changed from the default OpenWrt default version. +
- +
-Note that the script may list several packages that are part of the default OpenWrt install and will have their changed configuration files automatically backed up and restored. +
-In addition, packages installed as dependences of other packages may show here. +
-**It is only important to note the names of packages that you directly installed manually.** Any dependencies of these packages will automatically be reinstalled when the primary package is reinstalled. +
- +
-<code bash> +
-# OpenWrt 14.07 "Barrier Breaker" or earlier +
-find /overlay/ | while read -r FILE; do opkg search "${FILE#/overlay}"; done | sed -n -e "s/\s.*//p" | sort -u +
- +
-# OpenWrt 15.05 or later +
-find /overlay/upper/ | while read -r FILE; do opkg search "${FILE#/overlay/upper}"; done | sed -n -e "s/\s.*//p" | sort -u +
-</code>+
  
 ==== Configure your backup ==== ==== Configure your backup ====
-Follow: [[docs:guide-user:troubleshooting:backup_restore|Backup and restore]] +{{section>docs:guide-user:installation:sysupgrade.cli#back_up_openwrt_configuration&noheader&nofooter&noeditbutton}}
- +
-Based on the list of [[#identifying_customizations|user-installed packages]] customize your backup configuration to save the files not included in the default list. +
-Verify your backup configuration and ensure that all OpenWrt configurations and user data are going to be preserved. +
- +
-=== OpenWrt on x86 === +
-:!: For x86 systems there is no "sysupgrade" image, just be sure to use the new firmware image has the same family of filesystem (if the current firmware uses squashfs then the new will use squashfs as well and if the current has ext the new will use ext filesystem. +
-Note that an upgrade from ext2 [10.03.1] to ext4 [12.09] seems not working. +
-Tested 10.03.1 squashfs to 12.09 squashfs, working ; 10.03.1 squashfs to 12.09 ext4 failed; 10.03.1 ext2 to 12.09 ext4 failed)+
  
 ==== Downloading the OpenWrt upgrade image ==== ==== Downloading the OpenWrt upgrade image ====
 === Getting the right image === === Getting the right image ===
-In most cases, platforms that support sysupgrade, have a downloadable image labelled **"...-sysupgrade.bin"** ...+In most cases, platforms that support sysupgrade, have a downloadable image labelled **''...-sysupgrade.bin''** ...
  
   * Images labelled "factory" or otherwise are generally not intended to be installed via an existing OpenWrt web interface.   * Images labelled "factory" or otherwise are generally not intended to be installed via an existing OpenWrt web interface.
 +    * FIRMWARE SELECTOR [[https://firmware-selector.openwrt.org/]]
     * SEARCH USING MODEL: [[toh:views:toh_fwdownload|Table of Hardware: Firmware downloads]]     * SEARCH USING MODEL: [[toh:views:toh_fwdownload|Table of Hardware: Firmware downloads]]
     * OFFICIAL DOWNLOAD PAGE: [[https://downloads.openwrt.org/releases/]]     * OFFICIAL DOWNLOAD PAGE: [[https://downloads.openwrt.org/releases/]]
 +
 +=== OpenWrt on x86 ===
 +For x86 use the same image you used to install OpenWrt as a sysupgrade image as well. So if you installed OpenWrt x86-64 ''openwrt-version-number-x86-64-combined-ext4.img.gz'' you need to choose same image to do a sysupgrade if you installed Openwrt with ''openwrt-version-number-x86-64-combined-squashfs.img.gz'' you need that image to do a firmware upgrade.
  
 WARNING: Double check you have the exact model number and in some cases country... WARNING: Double check you have the exact model number and in some cases country...
Line 183: Line 88:
 If your are still unsure ask on the Forum. If your are still unsure ask on the Forum.
  
-=== For LuCI-based upgrades ===+NOTE: Keep a copy of images you use, you never know if you may need them again and that may be difficult if your internet is down! 
 + 
 +===== Upgrade procedure ===== 
 +==== For LuCI-based upgrades ===
 +See also: 
 +[[docs:guide-quick-start:sysupgrade.luci|Upgrading OpenWrt firmware using LuCI]] 
   * Download the desired upgrade file to your PC using a web browser   * Download the desired upgrade file to your PC using a web browser
   * Proceed to the LuCI upgrade procedure, below   * Proceed to the LuCI upgrade procedure, below
  
-=== For sysupgrade-based upgrades === +=== Web interface instructions === 
-  * Download the desired upgrade file to the local /tmp RAM drive on your OpenWrt system. The ''/tmp'' directory is stored in RAM (using [[wp>tmpfs]]), not in the permanent flash storage. +  - Navigate to **LuCI -> System -> Backup / Flash Firmware -> Actions: Flash new firmware image**.
- +
-<code bash> +
-# example downloading the OpenWrt 15.05 upgrade image for a TP-LINK TL-WR1043ND ver. 1.x router +
-cd /tmp +
-wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin +
- +
-# check the integrity of the image file +
-# via md5sums +
-wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/md5sums +
-# via sha256sums +
-wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/sha256sums +
-# the desired result is that the downloaded firmware filename is listed with "OK" afterwards +
-# via md5sums +
-md5sum -c md5sums 2> /dev/null | grep OK +
-# via sha256sums +
-sha256sum -c sha256sums 2> /dev/null | grep OK +
-</code> +
- +
-  * Proceed to the "Ensure desired configuration files will be saved" section, above +
- +
-== Troubleshooting: /tmp is too small to hold the downloaded file == +
-If your device's /tmp filesystem is not large enough to store the OpenWrt upgrade image, this section provides tips to temporarily free up RAM. +
- +
-First check memory usage with the ''free'' or ''top'' or ''cat /proc/meminfo'' commands; proceed if you have as much free RAM as the image is in size plus an some additional MiB of free memory. +
- +
-<code bash> +
-# free +
-             total         used         free       shared      buffers +
-Mem:         29540        18124        **11416**                 1248 +
--/+ buffers:              16876        12664 +
-Swap:            0            0            0 +
-</code> +
- +
-In this example there are precisely 11416 KiB of RAM unused. +
-All the rest 32768 - 11416 = 21352 KiB are used somehow and a portion of it can and will be made available by the kernel, if it be needed, the problem is, we do not know how much exactly that is. +
-Make sure //enough// is available. +
-Free space in /tmp also counts towards free memory. +
-Therefore with:  +
- +
-<code bash> +
-# free +
-Mem:         13388        12636          752            0         1292 +
-Swap:            0            0            0 +
-Total:       13388        12636          752 +
- +
-# df +
-Filesystem           1K-blocks      Used Available Use% Mounted on +
-/dev/root                 2304      2304         0 100% /rom +
-tmpfs                     6696        60      6636   1% /tmp +
-tmpfs                      512               512   0% /dev +
-/dev/mtdblock3             576       288       288  50% /overlay +
-mini_fo:/overlay          2304      2304         0 100% / +
-</code> +
- +
-One has actually 752+6636 KiB of free memory available. +
- +
-  * quickest and safest way to free up, some RAM is to delete the ''[[docs:guide-user:additional-software:opkg]]'' packages file: +
- +
-<code bash> +
-rm -r /tmp/opkg-lists/ +
-</code> +
- +
-  * drop caches: +
- +
-<code bash> +
-sync && echo 3 > /proc/sys/vm/drop_caches +
-</code> +
- +
-  * prevent wireless drivers to be loaded at next boot and then reboot: +
- +
-<code bash> +
-rm /etc/modules.d/*80211* +
-rm /etc/modules.d/*ath9k* +
-rm /etc/modules.d/b43* +
-reboot +
-</code> +
- +
-The wireless drivers, usually take up quite some amount of RAM and are not required (unless you are connected via wireless of course ;-)), so an easy way to free up some RAM is to delete the symlinks in ''etc/modules.d'' so these are not loaded into memory at the next reboot. +
- +
-===== OpenWrt Upgrade procedure ===== +
-==== Web interface ==== +
-  - Navigate to **[[http://openwrt.lan/|LuCI]] -> System -> Backup / Flash Firmware -> Actions: Flash new firmware image**.+
   - Click **Choose File** button to select firmware image.   - Click **Choose File** button to select firmware image.
   - Click **Flash image...** to upload firmware image.   - Click **Flash image...** to upload firmware image.
Line 276: Line 105:
   - Wait until the router comes back online.   - Wait until the router comes back online.
  
-==== Command-line interface ====+==== Command-line instructions ====
 OpenWrt provides [[docs:techref:sysupgrade|sysupgrade]] utility for firmware upgrade procedure. OpenWrt provides [[docs:techref:sysupgrade|sysupgrade]] utility for firmware upgrade procedure.
  
-[[docs:guide-quick-start:verify_firmware_checksum|Verify]] firmware image checksum. +  * See CLI instructions page below: 
-Verify the router has enough free RAM. +    * [[docs:guide-user:installation:sysupgrade.cli|Upgrading OpenWrt firmware using CLI]]
-Upload the firmware from local PC. +
-Flash the firmware.+
  
-<code bash> +=== For sysupgrade cli based upgrades === 
-# Check the free RAM  +  * Download the desired upgrade file to the local /tmp RAM drive on your OpenWrt systemThe ''/tmp'' directory is stored in RAM (using [[wp>tmpfs]]), not in the permanent flash storage.
-free +
- +
-# Upload firmware +
-scp firmware_image.bin root@openwrt.lan:/tmp +
- +
-# Flash firmware +
-sysupgrade -v /tmp/firmware_image.bin +
-</code> +
- +
-If sysupgrade is not available.+
  
 <code bash> <code bash>
-Flash firmware +example downloading the OpenWrt 15.05 upgrade image for a TP-LINK TL-WR1043ND ver. 1.x router 
-mtd -r write /tmp/firmware_image.bin firmware +cd /tmp 
-</code>+wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin
  
-If free RAM is limited.+# check the integrity of the image file via md5sums (older images) 
 +wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/md5sums 
 +md5sum -c md5sums 2> /dev/null | grep OK
  
-<code bash> +check the integrity of the image file via sha256sums 
-Upload and flash firmware +wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/sha256sums 
-cat firmware_image.bin | ssh root@openwrt.lan mtd write - firmware +sha256sum -c sha256sums 2/dev/null | grep OK
-</code>+
  
-  * The sysupgrade verbose-option should give some output similar to this. The list of configuration files saved will change depending on what packages you have installed and which files you have configured to be saved, as per above.+# the desired result is that the downloaded firmware filename is listed with "OK" afterwards
  
-<code> +#################################################### 
-Saving config files... +# Initiate sysupgrade with your desired options 
-etc/config/dhcp +# by default ( no -n ) settings are kept 
-etc/config/dropbear +#################################################### 
-etc/config/firewall +sysupgrade -v /tmp/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin
-etc/config/luci +
-etc/config/network +
-etc/config/snmpd +
-etc/config/system +
-etc/config/ubootenv +
-etc/config/ucitrack +
-etc/config/uhttpd +
-etc/config/wireless +
-etc/dropbear/authorized_keys +
-etc/dropbear/dropbear_dss_host_key +
-etc/dropbear/dropbear_rsa_host_key +
-etc/firewall.user +
-etc/group +
-etc/hosts +
-etc/inittab +
-etc/passwd +
-etc/profile +
-etc/rc.local +
-etc/shadow +
-etc/shells +
-etc/sudoers +
-etc/sudoers.d/custom +
-etc/sysctl.conf +
-etc/sysupgrade.conf +
-killall: watchdog: no process killed +
-Sending TERM to remaining processes ... ubusd askfirst logd logread netifd odhcpd snmpd uhttpd ntpd dnsmasq +
-Sending KILL to remaining processes ... askfirst +
-Switching to ramdisk... +
-Performing system upgrade... +
-Unlocking firmware ... +
- +
-Writing from <stdin> to firmware ...  [w] +
-Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found +
-Error fixing up TRX header +
-Upgrade completed +
-Rebooting system...+
 </code> </code>
  
-NoteThe "TRX header not found" and "Error fixing up TRX header" errors are not a problem as per OpenWrt developer jow's post at https://dev.openwrt.org/ticket/8623 +NOTEsee extras at end of page for low memory device workarounds
- +
-  * Wait until the router comes back online +
-  * After the automatic reboot, the system should come up the same configuration settings as before: the same network IP addresses, same SSH password, etc. +
-  * Proceed to the "Additional configuration after an OpenWrt upgrade" section, below +
- +
-=== Troubleshooting === +
-In case it does not help, try a [[wp>Booting#Hard_reboot|cold reset]] (= interrupt the electrical current to the device, wait a couple of seconds and then connect it again). +
-Be careful about ''/etc/opkg.conf'' as explained [[https://dev.openwrt.org/ticket/13309|here]]. +
-For unknown reasons such a cold reset has often been reported to be necessary after a sysupgrade. +
-This is very very bad in case you performed this remotely.+
  
-==== Extras ==== +===== Extras ===== 
-=== Verify the new OS version ===+==== Verify the new OS version ====
   * In LuCI, go to Status > Overview to verify you are running the new OpenWrt release   * In LuCI, go to Status > Overview to verify you are running the new OpenWrt release
   * In SSH, the login banner has the release information   * In SSH, the login banner has the release information
  
-=== Package upgrade warning ===+==== Upgrade installed packages ==== 
 +Follow: 
 +[[docs:guide-user:additional-software:opkg#upgrading_packages|Upgrading packages]] 
 After the initial update, it is good to check for any updated packages released after the base OS firmware image was built. After the initial update, it is good to check for any updated packages released after the base OS firmware image was built.
 Note that on a device with only 4MB of NVRAM, these updates may not fit – check free space first with ''df -h /'' and ensure there is at least 600KB or so free. Note that on a device with only 4MB of NVRAM, these updates may not fit – check free space first with ''df -h /'' and ensure there is at least 600KB or so free.
  
-{{page>meta:infobox:upgrade_packages_warning&noheader&nofooter&noeditbtn}}+==== Reinstall user-installed packages ==== 
 +See also: 
 +[[docs:guide-user:installation:sysupgrade.packages|Preserving packages]]
  
-=== Upgrade installed packages === +After a successful upgrade, you will need to reinstall all previously installed and saved packages.
-:!: Read the [[docs:guide-user:installation:generic.sysupgrade#package_upgrade_warning|package upgrade warning]] and enable [[docs:guide-user:additional-software:opkg#extras|extra Opkg commands]] to be able to use the following commands.+
  
-<code bash> +==== Configure user-installed packages ==== 
-# Update package lists +See also: 
-opkg update+[[docs:guide-user:installation:sysupgrade.cli#comparing_new_package_config_options|Comparing configurations]]
  
-# Show upgradable packages 
-opkg list-upgradable 
- 
-# Upgrade overlay packages 
-opkg allupgrade overlay 
- 
-# Upgrade all packages 
-opkg allupgrade 
- 
-# Verify no more packages can be upgraded 
-opkg list-upgradable 
-</code> 
- 
-=== Reinstall user-installed packages === 
-After a successful upgrade, you will need to reinstall all previously installed packages. 
-You made a list of these above. 
-Package configuration files should have been preserved due to steps above, but not the actual packages themselves. 
- 
-  * Restore pre-upgrade packages "automagically" 
- 
-:!: Enable [[docs:guide-user:additional-software:opkg#extras|extra Opkg commands]] to be able to use the following commands. 
- 
-If you have used ''sysupgrade -k'' you should be able to restore all packages: 
- 
-<code bash> 
-# Update package lists 
-opkg update 
- 
-# Import Opkg configuration from sysupgrade backup 
-opkg import 
- 
-# Restore packages from the overlay list 
-opkg restore 
- 
-# Restore packages from the rwm list on devices with no overlay 
-opkg restore rwm 
- 
-# Add packages to the custom list 
-uci add_list opkg.custom.pkg="-dnsmasq" 
-uci add_list opkg.custom.pkg="dnsmasq-full" 
-uci commit opkg 
- 
-# Restore packages from the custom list 
-opkg restore custom 
-</code> 
- 
-  * Install packages manually 
- 
-<code bash> 
-opkg update 
-opkg install snmpd-static 
-</code> 
- 
-=== Configure user-installed packages === 
 The new package installations will have installed new, default versions of package configuration files. The new package installations will have installed new, default versions of package configuration files.
-As your existing configuration files were already in place, opkg would have displayed a warning about this and saved the new configuration file versions under ...-opkg filenames.+If existing configuration files are in place, opkg displays a warning about this and saves the new configuration file versions under ''/etc/config/*-opkg'' filenames.
  
-The new package-provided configuration files should be compared with your older customized files to merge in any new options or changes of syntax in these files.+The new package-provided config files should be compared with your older customized files to merge in any new options or changes of syntax.
 The ''diff'' tool is helpful for this. The ''diff'' tool is helpful for this.
- 
-:!: Enable [[docs:guide-user:additional-software:opkg#extras|extra Opkg commands]] and [[docs:guide-user:base-system:uci#extras|extra UCI commands ]] to be able to use the following commands. 
- 
-<code bash> 
-# Install packages 
-opkg update 
-opkg install diffutils 
- 
-# Find new configurations 
-opkg newconf 
- 
-# Compare UCI configurations 
-uci diff snmpd 
- 
-# Merge needed changes to the current version 
-vi /etc/config/snmpd 
-rm /etc/config/snmpd-opkg 
- 
-# Or replace the current version with the new one 
-mv /etc/config/snmpd-opkg /etc/config/snmpd 
- 
-# Apply new configuration 
-/etc/init.d/snmpd restart 
-</code> 
- 
-===== Upgrade compatibility ===== 
-//**The following section only applies if image metadata is used for the upgrade process.**// 
- 
-We regularly encounter the situation that devices are subject to changes that will make them incompatible to previous versions. 
-This typically happens when the setup of a device has changed in a way so that the configuration cannot be migrated or filesystem changes won't allow sysupgrade. 
- 
-Since August 2020 (20.xx release), an additional mechanism will make sure that users are warned when upgrading between incompatible versions like that. 
- 
-The is achieved by a compatibility version number that is stored on the device and the images. 
-The compat-version is built from a major revision x and a minor revision y: **x.y** 
- 
-For all devices and image before the introduction, the default value "1.0" is assumed. 
-The value is assigned for individual devices, so it does not tell anything about the general revision of OpenWrt. 
- 
-If an incompatible change is introduced, one can increase either the minor version (1.0->1.1) or the major version (1.0->2.0). 
- 
-**Minor version increment:** 
- 
-This will still allow sysupgrade, but require to reset config (uncheck "Keep Settings", run sysupgrade with -n or SAVE_CONFIG=0). 
-If sysupgrade is called without, a corresponding message will be printed. 
-If sysupgrade is called and settings are reset, it will just pass, with supported devices being checked as usual. 
- 
-**Major version increment:** 
- 
-This is meant for potential (rare) cases where sysupgrade is not possible at all, because it would "break" the device. 
-In this case, a warning will be printed, and resetting config (''sysupgrade -n'') won't help. 
-You will need to research instructions on how to proceed. 
- 
-Typically, in addition to the increment of the compatibility version, developers will also specify a message which be printed with the warnings above and give a first hint about the problem. 
- 
-==== Forcing upgrade ==== 
-In any case, upgrade can still be forced (''sysupgrade -F'') as usual, but then you will obviously run into the very problem the mechanism tries to save you from. 
- 
-If you do that, please note that the compatibility version on the device is a property of the config, i.e. the value is stored in uci: ''system.@system[0].compat_version'' 
- 
-Consequently, as a forced update won't reset your config, it also won't bump your compat-version, and you will have to do that manually afterwards, e.g. 
- 
-<code bash> 
-uci set system.@system[0].compat_version="1.1" 
-uci commit system 
-</code> 
- 
-==== Backward compatibility ==== 
-As stated above, all devices and images without compat-version set will be treated as "1.0". 
- 
-However, the new compat-version-aware upgrade mechanism will only be available on devices flashed after that point. 
- 
-For older devices, the metadata in new images has been altered to provide a similar experience for incremented compat-version: 
- 
-On those devices, when upgrading into an "incompatible" image, incompatibility warnings and hint message will be printed. 
-However, upgrade has to be forced in all cases (''sysupgrade -F -n''). 
-Make sure to also reset config in addition to the "force" parameter, as otherwise you will end up as described in "Forcing upgrade" section above. 
-The only exception applies to early DSA-adopters, which can keep their config. 
-Details are found in "Forcing upgrade" section above. 
- 
-==== Implementation details ==== 
-//**This section is focussed on developers wanting to implement compat-version after introducing an incompatible change.**// 
- 
-Setup consists of two parts: 
- 
-=== Image metadata === 
-To set the version of an image, which is checked against the locally installed OpenWrt config version, the variables DEVICE_COMPAT_VERSION and DEVICE_COMPAT_MESSAGE may be added to a device definition: 
- 
-<code bash> 
-define Device/somedevice 
-  ... 
-  DEVICE_COMPAT_VERSION := 1.1 
-  DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA 
-endef 
-</code> 
- 
-The DEVICE_COMPAT_VERSION is mandatory for any value other than "1.0". 
-The DEVICE_COMPAT_MESSAGE is optional and should be used to provide a hint about the problem and/or possibly measures for the user. 
- 
-=== Device config === 
-Beyond the image metadata, the compat-version also needs to be available on the running device, so it can be compared against any images. 
- 
-Like for the LED/network setup, this will be achieved by a command "ucidef_set_compat_version" to set the compat_version in board.d files, e.g. 
- 
-<code bash> 
-    ucidef_set_compat_version "1.1" 
-</code> 
- 
-During //firstboot//, this will then add a string to /etc/board.json, which will be translated into uci system config. 
- 
-By this, the compat_version, being a version of the config, will also be exposed to the user. 
- 
-Therefore, the on-device compat-version is a property of the config, not of the installation. 
-Consequently, it will be affected by Backup/Restore, but can also be adjusted by the user if necessary. 
- 
-===== Legacy Notes ===== 
-Information herein that pertains to 17 or older releases and/or no longer generally advised. 
- 
-  * Forum post [[https://forum.openwrt.org/viewtopic.php?id=42739|Identify packages to be re-installed after system upgrade]] (contains a promising script by forum members mforkel and Rafciq that automates package re-installation) 
- 
-==== Legacy: LuCI flash_keep section of /etc/config/luci ==== 
-LuCI has a separate set of settings for configuration files to be preserved, however it appears to be obsolete since OpenWrt 14.07 and should be ignored. 
- 
-<code bash> 
-uci show luci.flash_keep 
-</code> 
  
  • Last modified: 2024/10/19 20:05
  • by efahlgren