Use sysupgrade: this is default upgrading procedure but the least recommended option for x86 machines. Proceed to Sysupgrade for details.
Seach the forum and the internet, it is not difficult to find people asking what to do with x86 openwrt. I believe the reason people are asking is larglely cause by the above statement.
In particular, the wiki page gives no details about why this simpliest option of using sysupgrade is the least recommonded option.
Before someone jumps in, let's be clear that there is another universal option of upgrading x86 and non-x86 devices, and that is the Attended SysUpgrade (ASU) .
What many come to the forum to search for, and the topic of this post, is the more tranditional approach of flashing a common firmware, while checking the option of preserving configurations.
It is understandable that people who extensively modifed their x86 installations may have to think of more complicated approaches of upgrading, and potentially may need to find a way to automate their configuration.
But for the majority of users, whose configuration may mainly be about static IP leases and a couple of port forwards, I wonder whether it is correct to recommond the usual sysupgrade GUI interface? For all the experts out there, please comment.
I jump !
I use sysupgrade for x86 on a regular basis, and see no side effect or cons. That being said, it depends a lot of the use of the machine, the partition scheme, presence of extra partitions with data. There is no universal case on the matter like with conventional router.
This is also what I found. I just went from 19.07 to 21.02, then to 22.03. The only extra step was when reaching 21.02, I was asked for an automatic conversion of configuration format, and the automatic conversion seems to generate no issue.
Sure, if someone bothers to alter patitions, then extra steps are needed. But in my case, I am just leaving everthing untouched, because all I need are some static DHCP entries and port forwards.
Mine is virtualized. Essentiall many other things people try to put into openwrt, I have several VMs doing them. Thus my openwrt setup ends up being very simple.
I'm also using the device basically as a main routeur. A simple sysupgrade preserving settings is enough.
I would assume that an user using such device in a more advanced way must perfectly understand partition handling before doing anything. I tried a lot of things on a dummy device to gain experience.
Yeap. The wiki bothers me because the wording gives people the impression that sysupgrade is something terrible that most x86 users should avoid. Whereas it is perfectly fine for most x86 simple use cases, just like it is fine for most non-x86 simple use cases.
I even did a conversion from squashfs to ext4. squashfs x86 images should be in principle used just like non-x86 images. That is the reason I tried that, fearing that ext4 may suffer from weird issues with GUI image flash. I did a back up of the entire VM, then tried flashing a ext4 image over. Again things apear to be just fine.
Also, for people with extra partitions: unless the case and motherboard is too tiny, there is got to be space for a second disk or a USB stick. Wouldn't it be simpler to run openwrt from that second disk? Then the disk with the extra partitions can be left as it is (potentially unpluged) during the flashing of a new image from the GUI, then re-mounted afterwards.
It should be enough (but I use non efi). Use latest 23.05.0 of course.
For the very first install, plug the drive/stick/ssd to another computer, and perform a dd, or use win32_diskimager on windows. Than a simple sysupgrade will be enough for updating.
I dont remember if I ever tested a EFI image. For x86 installation, it is straightforward to use whatever OS of choice (Live OS on a CD, second PC, or a second disk with an OS on the same PC) and tool of choice to write the image (uncompressed from gz, of course) to the boot disk, then boot from that disk.
If you have two or more ethernet ports, it is a simple situation of using one for LAN and one for WAN. If only one port, vlan can be used in combination with a vlan capable switch (or any openwrt router).
Based on the feedback, here is what I can summarize:
Simple guide for upgrading x86 openwrt
For installations that do not invovle user-added paritions, 3 simple options:
Used one of the ext4 images for installation, did not change partitions: go ahead with sysupgrade with a new ext4 image using the GUI. Choose to preserve settings as needed.
Used one of the ext4 images for installation, enlarged root partition to fill boot drive: follow the instruction here to download a script that will automatically resize root partition during upgrade, run the script to generate/update the necessary files, go ahead with sysupgrade with a new ext4 image using the GUI. Choose to preserve settings as needed.
Used one of the ext4 images for installation, installed many packages for various need: consider using Attended Sysupgrade to retrieve a personalized image with your packages.
For those who used squashfs image for installation: keep using a new squash image or switch to a ext4 image, use the GUI to upgrade. The same script can be used to enlarge patition. Choose to preserve settings as needed.
And for people who has a need for additional partitions, one relatively less complex option is to place additional partitions on a sperate disk, without personalizing the partition of the boot disk. In this way, the sperate disk can be remounted after the upgrade, with upgrade performed using the GUI.
If I can add a point - when using an x86 router the inclination may be to persist more data as storage is almost always far larger on x86 than typical ARM/MIPS platforms. In these case I have tried to keep data in a second partition but came to the conclusion that using a 2nd physical disk for persistent data (say long running interface statistics) would make more sense and be easier to manage without requiring custom partitioning. Of course that means custom mounts but way less risky.