Scenario
You are operating an OPNsense edge and just ran a major version upgrade. The following symptoms appear:
- A service that worked before the upgrade fails to start
- Service status in the GUI is “stopped” with no clear reason
- system log shows a config syntax error or missing dependency
Available evidence:
- system log: “config.xml validation failed for service unbound”
/var/log/<service>.logshows a Python or PHP error referencing a deprecated optionpkg infoshows the upgrade replaced the service binary and the old config is incompatible
Your task
Determine the cause, recover, document, and validate.
Investigation
The investigation follows the discipline taught in Part XLI:
- Form hypothesis, find evidence, test, validate.
- Use the available evidence above to bound the search.
- Reach one of the likely root causes.
Recovery procedure
(Do not reveal until you have reasoned through the problem.)
- Identify the failing component.
- Apply the remediation pathway.
- Validate with the verification step.
- Document the incident.
Remediation
- Inspect
/var/log/<service>.logand the system log for the exact error. 2. Identify the deprecated or renamed option in the new schema. 3. Apply the migration via the GUI (the migration wizard usually prompts), or edit/conf/config.xmlby hand to align with the new schema. 4. Restart the service and verify status.
Verification
Service starts cleanly; GUI status is “running”; functional test (DNS resolution, tunnel establishment) succeeds.
Rollback
Boot from the previous firmware via the boot menu and restore the pre-upgrade config.xml.
Prevention
Before any major upgrade, read the release notes for breaking changes. Test in a lab identical to production. Always have a known-good config.xml backup and a console/SSH session ready. If a service is mission-critical, roll forward on the new version within a maintenance window, do not let it linger.