LibC replacement support
We'll need to replace libc. Doing so is little bit complex, so we need some support to do that (static linking, special handling, journal, etc).
As it is currently unclear, what is enough to switch libc, here's what we may need to try:
- „Just“ reinstall all the packages in the system. We probably need to push new-enough updater into the 2.* generation and then start separate generation 3. The generation 3 would be linked with musl, while 2 would be with uclibc. The new version would know how to do „whole system reinstall“ when seen on libc package.
- Statically link the updater so it can start in an intermediate state. This might be needed when switching the updater. Or, it may be needed during a recovery, but as the init scripts wouldn't run at that time, it is unlikely that would help.
- Embed statically-linked busybox inside the opkg-trans binary and use that one to run commands, as an extension of the above.
- Thorough testing.
These are the tasks that would be needed to accomplish it:
- Depends on #14 (closed) (opkg-trans backend)
- Subtask turris/openwrt#9 (closed) (Turris packages with musl)
- Subtask #29 (closed) (Reinstall everything flag)
- Subtask #31 (closed) (Testing the migration)
- Subtask turris/openwrt#10 (closed) (static libraries for dependencies, maybe not needed
- Subtask #30 (closed) (static linking), maybe not needed
- Depends on #148 (closed) (Replace curl command with libcurl)
- Depends on #149 (closed) ( Integrate busybox to updater)