The confusion surrounding upgrading x86 openwrt

As of 2023.10.29, the wiki page on x86 openwrt states the following about upgrading:

  1. 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.

3 Likes

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.

1 Like

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.

And on top of that, wiki option 3 and option 4 are both rewriting their root partitions. I can't see how they are useful in any way for those who didn't have extra partitions.

For someone who only enlarges the root partition, a sysupgrade flash is perfectly fine when coupled with a subsequent manual partition resize.

1 Like

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.

1 Like

I have just read again the wiki, it's terrible. Informations seem totaly outdated. A rewrite is indeed needed.

With most procedures in this section, we must either connect the drive on a secondary PC running Linux, or boot the router with a Linux Live CD/USB such as Finnix.

1 Like

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.

1 Like

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.

2 Likes

I am also in the process of testing a x86 router for the first time and I would agree that the wiki is not easy to understand if that is your first attempt at OpenWrt.

Another thing I find confusing is the link to uefi in the beginning, am I supposed to use that or is it just for general info or is the efi image all I need?

But I have made a little tribute to the wiki and made a link to intel-microcode that was missing.

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).

No need for manual partition resize if you are using the script from https://openwrt.org/docs/guide-user/advanced/expand_root The partition will be resized as part of the upgrade!

3 Likes

Non UEFI bios hasn’t been around for a long time now. The USB boot also needs to be EFI or it won’t even be seen by bios at boot.

Brilliant! It seems that this script will fill the drive?

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:

  1. 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.

  2. 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.

  3. 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.

1 Like

The partition resizing script supports both ext4 and squashfs image types. I usually use it with the squashfs image.

@RaylynnKnight Thanks. That is cool.

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.

5 Likes

Added. Thanks for the suggestion.