Optional migration from Turris OS 3.x for advanced users

ok. So resume. these are the commands
opkg-cl update
opkg-cl install tos3to4
updater-supervisor -d

then wait.

then switch-branch hbs

then wait…

and if all goes out, reboot?

yes i made it just like you said

Ok, here is how this nOOb did it.
i tried again, factory reset, update to 3.17, load my config, and go. No go. In the end Omnia was not connecting to Or internet, or LAN. ( all lights burning)

Ok, again factory reset. Then update to 3.17. run pkgupdate afterwards, and first get this error

INFO:Detected existing journal. Trying to recover it.
line not found
line not found
line not found
line not found
DIE:
[string “backend”]:1195: [string “backend”]:1186: Failed to lock the lock file /var/lock/opkg.lock: Resource temporarily unavailable
Aborted

Install something in Foris, ( pakon or something ) and the updater goes again. This takes time.
Then wait till the updater arrows are gone, then run pkgupdate agin, till no error.

ok, so i now run a standard 3.17. Do not load your/mine own config.

Run the tos 3 to 4, and bob’s your uncle, 5.0 is running. fast, quick, i only have to config everyting again. But hey! It;s running!

do not forget to switch-branch hbs , otherwise things might get hairy again.

Everything works smoothly for me on Omnia. Update to 5.0 finished after 5-10 minutes, I’m on hbk branch after update. Everything seems to be working except lxc containers. I had to update lxc config files manually. Thank you!

1 Like

Hmm :frowning:
it didn’t go well:

root@omnia:/# pkgupdate 
INFO:Target Turris OS: 5.0.0
WARN:Syntax "Script('script-name', 'uri', { extra })" is deprecated and will be removed.
WARN:Package wpad is in cyclic dependency. It might fail its post-install script.
WARN:Package hostapd is in cyclic dependency. It might fail its post-install script.
WARN:Requested package luci-i18n-rainbow-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-rainbow-cs that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-cs that is missing, ignoring as requested.
WARN:Requested package vixie-cron that is missing, ignoring as requested.
WARN:Requested package ucollect-meta that is missing, ignoring as requested.
WARN:Requested package nikola that is missing, ignoring as requested.
line not found
line not found
line not found
line not found
line not found
line not found
ERROR:
inconsistent: Package knot-host requires package knot-libs that is not available.
root@omnia:/# 
root@omnia:/# opkg-cl update
...
Downloading https://repo.turris.cz/omnia/packages//base/Packages.gz

Error loading shared library libssl.so.1.0.0: No such file or directory (needed by /usr/bin/curl)

Error loading shared library libcrypto.so.1.0.0: No such file or directory (needed by /usr/bin/curl)

*** Failed to download the package list from https://repo.turris.cz/omnia/packages//base/Packages.gz
...
Collected errors:
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//base/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_base: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//hardware/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_hardware: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//lucics/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_lucics: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//management/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_management: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//node/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_node: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//openwisp/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_openwisp: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//packages/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_packages: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//php/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_php: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//printing/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_printing: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//routing/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_routing: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//sidn/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_sidn: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//telephony/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_telephony: No such file or directory.
 * opkg_download: Failed to download https://repo.turris.cz/omnia/packages//turrispackages/Packages.gz, curl returned 127.
 * file_move: Failed to rename /tmp/opkg-iLfiep/Packages.gz to /var/opkg-lists/omnia_turrispackages: No such file or directory.

New ssh session is not available as well (because of libssl)

Is a known bug (for quite some time) Automatic package bumping should be package wide (#41) · Issues · Turris / Turris OS / Turris Build · GitLab, only solution is to forgo that package until the bug gets sorted (backlog label indicates that it likely will not be any time soon).

OK, but now what?
I did somehow work again sshd, curl by copying needed libraries using nc but at this moment I have no idea how to finish this attempt of upgrade to 5.0.
At this moment I have:

root@omnia:/# updater-supervisor -d
Updater disabled.

there should be a snapshot been generated at the beginning of the process. Might make sense to rollback to it first, reboot and start afresh with the upgrade process.

  1. uninstall knot-host so pkgupdate can finish proper, unless there is more of such (e.g. knot-dig suffers the same fate)
  2. strange that crypto libraries are absent on your node… but you seem to have that covered now

see how it goes from there

Now it took a bit longer. With:

Updater selhal: 

inconsistent: Requested package vixie-cron that is not available.

Some progress then. remove that package too prior progressing (any further). there is substitute for it in 5.x

root@omnia:~# opkg remove vixie-cron
Package suricata version 4.0.0-22 has no valid architecture, ignoring.
No packages removed.
root@omnia:~# pkgupdate 
INFO:Target Turris OS: 5.0.0
WARN:Package wpad is in cyclic dependency. It might fail its post-install script.
WARN:Package hostapd is in cyclic dependency. It might fail its post-install script.
WARN:Requested package luci-i18n-rainbow-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-rainbow-cs that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-cs that is missing, ignoring as requested.
line not found
line not found
line not found
line not found
line not found
ERROR:
inconsistent: Requested package vixie-cron that is not available.

According to TO3 migration I removed from opkg-auto.lua lines:

Install("vixie-cron")
Install("ucollect-meta")
Install("nikola")

a then I was able to:

root@omnia:~# pkgupdate
INFO:Target Turris OS: 5.0.0
WARN:Package wpad is in cyclic dependency. It might fail its post-install script.
WARN:Package hostapd is in cyclic dependency. It might fail its post-install script.
WARN:Requested package luci-i18n-rainbow-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-rainbow-cs that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-cs that is missing, ignoring as requested.
INFO:Queue removal of tos3to4
INFO:Queue removal of fix-samba-migrate-to-samba4
Press return to continue, CTRL+C to abort

INFO:Downloading packages
INFO:Executing preupdate hook: 05_schnapps.sh
Snapshot number 203 created
INFO:Unpacking download packages
INFO:Checking for file collisions between packages
INFO:Running pre-install and pre-rm scripts and merging packages to root file system
INFO:Running prerm of tos3to4
INFO:Running prerm of fix-samba-migrate-to-samba4
INFO:Removing packages and leftover files
INFO:Running post-install and post-rm scripts
INFO:Cleaning up control files
INFO:Executing postupdate hook: 20_update_alternatives.sh
INFO:Executing postupdate hook: 95_schnapps.sh
Snapshot number 204 created
INFO:Executing postupdate hook: 99_approvals_cleanup

hope I didn’t make (much) wrong.

LXC containers’s configs didn’t changed, I had to do manually.

Well, that was a bust.

I tried the instructions at https://docs.turris.cz/geek/tos3_migration/ :

opkg-cl update
opkg-cl install tos3to4
updater-supervisor -d

Nothing showed up on the terminal, the router seemed to be going along as if nothing happned, then at some point I tried creating a new ssh session and couldn’t, though it was still routing packets to the internet.

I poked around for troubleshooting tips in this thread and tried getting the update state:

root@gateway:/etc# cat /tmp/update-state/state
failure

I also had a number of notifications but those seemed normal for the update except for the last one:


This resulted in log files as follows:

...
updater[23208]: transaction.lua:252 (fun): Cleaning up control files
updater[23208]: repository.lua.lua:43 (Globals): Target Turris OS: 5.0.0
updater[23208]: requests.lua:406 (Globals): Syntax "Script('script-name', 'uri', { extra })" is deprecated and will be removed.
updater[23208]: src/pkgupdate/main.c:154 (main): 
[string "postprocess"]:46: Unable to finish URI (file:///usr/share/updater/localrepo/auto/Packages): Unable to open local file for reading
updater[23208]: src/lib/logging.c:204 (log_subproc_open): Executing postupdate hook: 05_schnapps.sh
updater[23208]: src/lib/logging.c:204 (log_subproc_open): Executing postupdate hook: 99_approvals_cleanup
updater-supervisor: pkgupdate exited with: 1
updater-supervisor: Notifier failed

I can provide more logs if anyone likes, but I didn’t want to spam the forum.

I also couldn’t immediately recover using the two LED schnapps rollback method. It reset and seemed to go on it’s merry way, but I was unable to ping the router from a statically set address and the DHCP server didn’t seem to be handing out IPs. I ended up doing the three LED factory reset, then was able to get a DHCP address. I then did the two LED schnapps rollback and that was successful.

Does the migration script also change the medkit snapshot to 5.0?

the only thing after the update that does not look standard to me is this :

xx@xx:~# pkgupdate
INFO:Target Turris OS: 5.0.0
WARN:Package wpad is in cyclic dependency. It might fail its post-install script.
WARN:Package hostapd is in cyclic dependency. It might fail its post-install script.
WARN:Requested package luci-i18n-rainbow-en that is missing, ignoring as requested.
WARN:Requested package luci-i18n-sqm-en that is missing, ignoring as requested.

This is common and already explained in forum.

@don_mums can you please send diagnostics to support? I have no idea directly from this what is happening in your case. Also please state if router reports Turris OS 5.0.0 or 3.x release on login. I think that it might not even start migrating because of some updater configuration you have in /etc/updater/conf.d.

Outside of topic of migration but possibly yes. Those are incremental size against other snapshots (well previous one). If update was just minimal change then it can be such small as just few seconds before there was pre-update snapshot that contains most of the changes.

This is commonly the case and is this time as well but just to clarify: updater-ng is able to trigger immediate reboot and it was used multiple times in Turris OS 3.x to prevent breakage od swconfig (that piece of software was commonly getting incompatible with running version of kernel driver and caused broken network effectively).

Was that because you had multiple interfaces or was that just because it wasn’t migrated? The script you are linking is executed as part of migration process so I am interested in why it might fail or wasn’t executed correctly.

@kmarty I am sorry to hear that. I know where is the problem and I missed this. The cause is that migration halts in the middle because updater is not sure what to do next when he can’t resolve dependencies for clearly required file knot-host so it lets it on user but problem is that in that time new version of updater is installed and with that all of its dependencies (libc, ssl and so on) and that breaks rest of the system. I would suggest you to do rollback to 3.x and remove knot-host before attempting migration again. I am going to add warning about knot-host in to migration guide and think about how to prevent this.

@jklaas can I ask you if you (re)moved or moved /usr/share/updater/localrepo/auto before update? Also are you sure that you started with Turris OS 3.11.17? This looks like either old version of localrepo was installed in system or that during execution localrepo repository was (re)moved but not fully. This repository is added by /usr/share/updater/localrepo/localrepo.lua if you remove that path you should remove lua script as well.

No.

Already did it, thanks goes to @anon82920800 (I’ve been so perplexed I totally forgot there’s chance to rollback).
Anyway, thank you for your reaction.
Maybe it is bad idea, but what about statically linked updater for these critical transitions? (Ignore it if it is really stupid)

LXC: Same situation as @_te has. Three single network containers, none of them converted. Maybe I am wrong, but it seems it is not part of “tos3to4” package and moreover I see some issue here

@kmarty

Was that because you had multiple interfaces or was that just because it wasn’t migrated? The script you are linking is executed as part of migration process so I am interested in why it might fail or wasn’t executed correctly.

I did not have multiple interfaces. The configurations I had were 1:1 as described in the MR.