-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deblobbify, replacing the system folder with several other components #72
base: master
Are you sure you want to change the base?
Conversation
PoC dependencies that would hypothetically be very helpful and idiomatic for termux/termux-docker#72
Nobody said it is not acceptable. I think nobody tried it. |
system
folder with several other components
system
folder with several other componentsb8bb468
to
0fd0f02
Compare
…st): 9.0.0-r76 PoC dependencies that would hypothetically be very helpful and idiomatic for termux/termux-docker#72
5169f1f
to
3b99512
Compare
…st): 9.0.0-r76 Dependencies for termux/termux-docker#72
baf1842
to
892023d
Compare
I am not sure exactly what exact scenario you are talking about here, or what error it is you were seeing at the time, if you mean a scenario with a But just in case knowing this helps you, there is a way to emulate an ARM processor on an x86 device that is very high in emulation accuracy and behaves almost identically to how real ARM devices behave. When carefully configured, I have never seen Since there are very few good guides on the subject, and almost all other guides skip mentioning lots of necessary steps, leaving everything unexplained and causing most people to feel like |
I will just link this. |
e2fabec
to
b5465ba
Compare
I experimented with some local tests based on and while it can inherently avoid several of the issues described in that thread, such as the GIR hanging problem, the problems with any other binaries hanging, and the very unfortunately, it cannot overcome the slowness problem that licy183 explained. Additionally, the higher emulation accuracy of I think the only efficient possible future plan on this topic, is to make use of termux-docker, or licy183's tur-avd, or another minimal android container, combined both with the new GitHub ARM runners and with the termux-packages I am already testing the GitHub ARM runner in this PR and it works for example here,
I have tested locally that |
b5465ba
to
70d77c2
Compare
70d77c2
to
2dd3f4f
Compare
I have managed to encounter a test case where:
That seems to support the assumption that the long-preexisting How to reproduce the negative effect of
|
About libandroid-stub. Currently we package |
I mean in this case we will be able to ship |
I am not sure, because I think I do not have one of the devices that (i assume) has a If I can find a device or contact someone who owns such a device that contains a
Samsung Galaxy M52 |
Solution to:
system
directory may be removed from the repo... #60Summary of changes:
system
folder and replaces it with a scriptgenerate.sh
that can regenerate the entiresystem
folder.system
folder, is regenerated using purely a Termux bootstrap.zip
, and.deb
files that can be built using thetermux-packages
build and CD system, then retrieved from thetermux.dev
package host.$TERM
that is set to a value of "xterm
" for theclear
command to have convenient compatibility with most terminal emulators, and this has also been tested with Kitty and TTY.com.termux
" into a single instance for slightly more convenient use with custom bootstraps.docker.io/termux/termux-docker:aarch64
image not working onaarch64
devices that happen to have an esoteric "Cortex-A34"-type or similar processor due to the elimination of this 32-bit ARM binary blob, which Cortex-A34-like processors (including those in Apple Silicon devices) do not have hardware support for executing, unlike "Cortex-A72"-like processors.su
to log in as thesystem
user withinentrypoint.sh
.mksh
andbash
alone to implementsh
, instead of Busybox'ssh
.iputils
based on the source code of AOSP 9.0.0 to implement/system/bin/ping
and/system/bin/ping6
.termux-packages
root/dnsmasq
to implementdnsmasq
, which works after some adjustments to its invocations.libandroid-stub
, which is described in multiple places as intended specifically for use with termux-docker.ffmpeg
work inside termux-docker, fixing this error:linker: CANNOT LINK EXECUTABLE "ffmpeg": library "libandroid.so" not found
build.sh
libandroid-stub
should be preinstalled in termux-dockerlibandroid-stub
should not be installed for users of normal devices is because it can somehow conflict with their existing/system/lib64/libandroid.so
file in some situations. termux-docker does not have/system/lib64/libandroid.so
, so it makes sense thatlibandroid-stub
probably has only beneficial effects on termux-docker and no negative effects./system/etc/ld.config.28.txt
without replacing it with anything, since it does not appear to be necessary for anything in any test so far, but it could be easily re-added if it turns out that there is something that needs it.ld.config.28.txt
is probably only necessary on ROMs that have a/vendor
folder and stuff inside ("VNDK"), termux-docker does not have a/vendor
folder or support anything related to that so, for now it seems unnecessarypersonality()
system call permissions issue, a custom build of Docker, which is not required on all ARM devices, but which might be required sometimes, and is required on myarmv7l
device that the--privileged
and--security-opt
arguments both failed to work on.latest
tag tox86_64
instead ofi686
.entrypoint_root.sh
andentrypoint.sh
to have more similar guard clause structure to each other, for readability.Tested both locally and in GitHub Actions:
aarch64
: workingx86_64
: workingarm
: working, but in some (not all) cases, the custom build of Docker with modifiedpersonality()
system call permissions is required. It is unknown how to predict whether a device will require that or not, but it is suspected it might have something to do with the host kernel, which is a factor whose properties it is understood tend to vary dramatically between different ARM devices.i686
: workingThe "temporary" things like thedone:temporary-package-storage
folder and the blobs inside are only necessary for testing while this is not mergedThe large amount of changes to the internal components of termux-docker could introduce unpredictable bugs or unexpected behavior that is not present with the current official termux-docker. For that reason, I hope to learn all of the current intended use cases that termux-docker is officially supposed to be used for, so that I can test my implementation with them and add additional software or fixes if needed.
Known Unique Limitations:
-c
argument oftoybox
-su
is currently non-functional. For the current featureset of termux-docker, both before and after this PR, that does not seem to be a major priority because termux-docker currently only supports theroot
user via theentrypoint_root.sh
and not viasu
ortsu
from within the defaultentrypoint.sh
, i.e. mosttermux-packages
root-packages
cannot currently be conveniently tested using termux-docker anyway. If "proper simulation of a rooted device", so to speak, is desirable in the future, to facilitate more convenient testing ofroot-packages
, if ever necessary, that could be investigated and handled by a different issue+PR at a later date.