openHABian ist kein Betriebssystem

sondern eine Scriptsammlung. Es gibt allerdings für den Raspberry Pi ein Image (Raspberry Pi OS lite), in dem openHABian bereits integriert ist.
Dies mag wie Korinthenkacken wirken, aber es hilft vielleicht, zu erkennen, dass es einfach keine Rolle spielt.

Mehr noch, hast Du in openHABian (bzw. im Menüsystem, also openhabian-config) eine Option, mosquitto als MQTT Broker einzurichten (neben diversen anderen Programmen, die andere Bussysteme - wenn man mqtt mal salopp als solches betrachten will - anbinden können).
openHABian bringt auch noch diverse andere Hilfsprogramme mit, so dass z.B. nano Highlighting für die openHAB Konfigurationsdateien beherrscht (halt so kleine Details, die einem niemals auffallen, bis man mal zufällig drüber stolpert...)
Da Du ohnehin zusätzlich zum Upgrade von openHAB 2.5.12 auf 3.4.1 auch noch von buster auf bullseye updaten solltest (ziemlich unbedingt) möchte ich tatsächlich eine Neuinstallation empfehlen.
Wenn Du den Raspberry Pi Imager nutzt, musst Du noch nicht mal das Image separat runterladen, es steht direkt im Imager als Option zur Verfügung (OS wählen -> Other specific-purpose OS -> Home assistants and home automation -> openHAB -> openHABian Pi OS lite 32 Bit)
openHABian kümmert sich beim Starten um ein Self-Update auf die letzte Version, genauso wie um ein Update des darunter liegenden Images auf den aktuellen Stand.
Fast unnötig, zu erwähnen: Eine neue SD-Karte ist kein Luxus.
Wenn Du das Image geschrieben hast, kannst Du übrigens das Backup mit in das Image packen (schau in der Doku nach...) dann wird die gesamte Konfiguration von openHAB sofort mit eingespielt.
Mosquitto musst Du anschließend noch nachinstallieren (über openhabian-config), aber sonst sollte dann schon mal alles am Platz sein.
Schau vorher, ob Du noch openHAB1 Bindings nutzt (zwingend mit Items über *.items Dateien, Schlüsselwort channel gibt es nicht, stattdessen Name des Bindings), die werden anschließend nicht mehr funktionieren, bis Du auf Things umgestellt hast.
Schau auch, ob es von 2.5.12 bis 3.4.1 irgendwelche breaking Changes gab, die Dich betreffen (also in Bezug auf Bindings)
Und wenn es dann zu den Rules kommt, gibt es zwei wichtige Punkte, das eine ist die implizite Variable
triggeringItem (ein Objekt vom Typ genericItem, also eine Entsprechung des Items selbst), welche in OH2 in jeder Rule zur Verfügung steht, die durch ein Item getriggert wurde (egal wie). In OH steht sie nur in Rules zur Verfügung, die durch
Member of getriggert wurde, in den anderen Item-getrigerten Rules steht nur
triggeringItemName zur Verfügung (das ist nur ein String Objekt, kein genericItem)
Der zweite Punkt ist Joda Time vs. JavaTime, letztlich musst Du nach now() suchen (und allem, was damit zu tun hat) und einige Anpassungen vornehmen. Statt
.withTimeAtStartOfDay musst Du z.B.
.with(LocalTime.MIDNIGHT) schreiben, statt
.getHourOfDay ist es
.getHour usw.