Skip to content

Commit b888419

Browse files
authored
Merge pull request #1048 from kernelkit/fix-downgrade-documentation
Fix downgrade documentation
2 parents a6889fa + 9c3e951 commit b888419

File tree

2 files changed

+91
-18
lines changed

2 files changed

+91
-18
lines changed

doc/boot.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ bootloader's validation procedure, user configuration is kept to a
6363
minimum. Two settings are available:
6464

6565
- **Boot order**: Since Infix maintains two copies of its software image,
66-
and as some bootloaders support netbooting, the order in which boot
66+
and as some bootloaders support [netbooting][2], the order in which boot
6767
sources are considered can be configured. To select the active
6868
source, use [RAUC][]:
6969

@@ -352,3 +352,5 @@ If `var` is not available, Infix will still persist `/var/lib` using
352352
[^1]: See [Upgrading procedures and boot
353353
order](system.md#upgrade-procedures-and-boot-order) for
354354
information on upgrading via CLI.
355+
356+
[2]: netboot.md

doc/system.md

Lines changed: 88 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -357,25 +357,45 @@ booted from one partition, an `upgrade` will apply to the other
357357

358358
1. Download and unpack the release to install. Make the image *pkg*
359359
bundle available at some URL[^10]
360-
2. Assume the unit has booted the `primary` image. Then running the
360+
2. (Optional) Backup the startup configuration
361+
3. Assume the unit has booted the `primary` image. Then running the
361362
`upgrade` command installs a new image on the `secondary`
362363
partition
363-
3. As part of a successful upgrade, the boot-order is implictly
364+
4. As part of a successful upgrade, the boot-order is implictly
364365
changed to boot the newly installed image
365-
4. Reboot the unit
366-
5. The unit now runs the new image. To upgrade the remaining partition
366+
5. Reboot the unit
367+
6. The unit now runs the new image. To upgrade the remaining partition
367368
(`primary`), run the same upgrade command again, and (optionally)
368369
reboot to verify the upgrade
369370

370371
> [!CAUTION]
371-
> During boot, the unit may [migrate](#configuration-migration) the
372-
> startup configuration for any syntax changes. It is therefore
373-
> important that you make sure to upgrade the other partition as well
374-
> after reboot, of course after having verified your setup.
372+
> During boot (step 5), the unit may
373+
> [migrate](#configuration-migration) the startup configuration for
374+
> any syntax changes. It is therefore important that you make sure to
375+
> upgrade the other partition as well after reboot, of course after
376+
> having verified your setup.
375377
376-
The CLI example below shows steps 2-4.
378+
The CLI example below shows steps 2-5.
377379

378-
Upgrade: here the image *pkg bundle* was made available via TFTP.
380+
*Backup startup configuration:* It is recommended to backup the
381+
startup configuration before performing an upgrade. The backup is
382+
useful if the upgrade fails, and makes a later
383+
[downgrade](#downgrading-infix) smoother to conduct.
384+
385+
```
386+
admin@example:/> dir /cfg
387+
/cfg directory
388+
backup/ ssl/ startup-config.cfg
389+
390+
admin@example:/> copy /cfg/startup-config.cfg /cfg/v25.01.0-startup-config.cfg
391+
admin@example:/> dir /cfg
392+
/cfg directory
393+
backup/ ssl/ startup-config.cfg v25.01.0-startup-config.cfg
394+
395+
admin@example:/>
396+
```
397+
398+
*Upgrade:* Here the image *pkg bundle* was made available via TFTP.
379399

380400
```
381401
admin@example:/> upgrade tftp://198.18.117.1/infix-aarch64-25.03.1.pkg
@@ -393,7 +413,7 @@ Installing `tftp://198.18.117.1/infix-aarch64-25.03.1.pkg` succeeded
393413
admin@example:/>
394414
```
395415

396-
Reboot: The unit will boot on the other partition, with the newly
416+
*Reboot:* The unit will boot on the other partition, with the newly
397417
installed image. The `Loading startup-config` step conducts migration
398418
of startup configuration if applicable.
399419

@@ -435,7 +455,7 @@ As shown, the *boot order* has been updated, so that *secondary* is
435455
now the preferred boot source.
436456

437457
To upgrade the remaining partition (`primary`), run the `upgrade URL`
438-
command again, and reboot.
458+
command again, and (optionally) reboot.
439459

440460
### Configuration Migration
441461

@@ -519,8 +539,25 @@ with the unit in *failure config*.
519539

520540
*Find the backup configuration file:*
521541

522-
Assume you have a backup startup config for the version to downgrade
523-
to (here Infix v25.01.0, config `version 1.4`).
542+
Assume you have a backup startup config for the Infix version to
543+
downgrade to (here Infix v25.01.0, config `version 1.4`).
544+
545+
The preferred approach is to use a startup configuration backed up
546+
when running Infix v25.01.0 on the unit. See the section on [upgrading
547+
Infix](#upgrading-infix) above for more information. In the example
548+
below, there is a backup file available named
549+
*v25.01.0-startup-config.cfg*
550+
551+
```
552+
admin@example:/> dir /cfg
553+
/cfg directory
554+
backup/ ssl/ startup-config.cfg v25.01.0-startup-config.cfg
555+
556+
admin@example:/>
557+
```
558+
559+
The alternative is to use a startup config implicitly backed up by the
560+
system as part of [configuration migration](#configuration-migration).
524561

525562
```
526563
admin@example:/> dir /cfg/backup/
@@ -530,6 +567,23 @@ startup-config-1.4.cfg
530567
admin@example:/>
531568
```
532569

570+
> [!CAUTION] Using a backup configuration file stored when the unit
571+
> was running the old version (e.g., v25.01.0-startup-config.cfg) is
572+
> preferred. Although backup files stored due to configuration
573+
> migration (e.g., startup-config-1.4.cfg) usually works too if the
574+
> configuration file version (`1.4`) matches, there are
575+
> situations when the system may fail to apply it as described below.
576+
577+
The *configuration file version* (`1.4`) is only incremented when
578+
changes in YANG configuration syntax mandates it to handle
579+
*upgrading*. Say the next Infix version includes a new feature
580+
setting, it can still have version `1.4`, as upgrading to it would not
581+
need migration. If a user then enables the new feature setting, the
582+
new configuration will no longer be compatible with the previous *Infix
583+
version*. A downgrade after enabling new features risks ending up with
584+
the unit in *failure config*.
585+
586+
533587
*Use `upgrade` command to downgrade:*
534588

535589
```
@@ -548,6 +602,19 @@ admin@example:/>
548602

549603
*Apply the backup configuration file:*
550604

605+
It is recommended to use a backup configuration file for the Infix version to
606+
downgrade to, if there is one available.
607+
608+
```
609+
admin@example:/> copy /cfg/v25.01.0-startup-config.cfg /cfg/startup-config.cfg
610+
Overwrite existing file /cfg/startup-config.cfg (y/N)? y
611+
admin@example:/>
612+
```
613+
614+
An alternative is to use a backup file stored when the system
615+
conducted a [configuration migration](#configuration-migration). See
616+
the *caution* note above.
617+
551618
```
552619
admin@example:/> copy /cfg/backup/startup-config-1.4.cfg /cfg/startup-config.cfg
553620
Overwrite existing file /cfg/startup-config.cfg (y/N)? y
@@ -556,8 +623,7 @@ admin@example:/>
556623

557624
*Reboot:*
558625

559-
The unit will come up with the applied backup configuration instead of
560-
failure config.
626+
The unit will come up with the applied backup configuration.
561627

562628
```
563629
admin@example:/> reboot
@@ -575,6 +641,9 @@ admin@example:/> reboot
575641
Infix -- a Network Operating System v25.01.0 (ttyS0)
576642
example login:
577643
```
644+
> [!NOTE]
645+
> If the unit despite these measures ends up in *failure config*, see
646+
> the next section for more information on how to recover.
578647
579648
#### Downgrading without applying a backup startup configuration
580649

@@ -680,11 +749,13 @@ Continued configuration is done as with any unit after factory reset.
680749
[3]: https://www.rfc-editor.org/rfc/rfc8341
681750
[4]: https://chrony-project.org/doc/4.6.1/chronyc.html
682751
[5]: https://github.com/kernelkit/infix/blob/main/src/confd/yang/confd/infix-system-software.yang
683-
[6]: boot.md#system-configuration
752+
[6]: netboot.md
684753
[7]: introduction.md#system-boot
685754
[8]: management.md#console-port
686755
[^9]: In failure config, Infix puts all Ethernet ports as individual
687756
interfaces. With direct access, one can connect with e.g., SSH,
688757
using link local IPv6 addresses. This as an alternative to
689758
connecting via a console port.
690759
[^10]: Set up an FTP/TFTP/SFTP or HTTP/HTTPS server on the same LAN.
760+
761+
[11]: scripting.md#-backup-configuration-using-sysrepocfg-and-scp

0 commit comments

Comments
 (0)