-
Notifications
You must be signed in to change notification settings - Fork 87
deblobbify, replacing the system folder with several other components #72
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
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 |
3ca152c to
1e39090
Compare
|
It has been a while and |
d5a0fba to
320765e
Compare
7ec9e71 to
a566624
Compare
d860fcb to
7dc0a17
Compare
7dc0a17 to
05e5d3d
Compare
04953bb to
521f13d
Compare
|
I am upgrading my use of 32-bit ARM termux-docker from Debian 12 to Debian 13, but in this PR I had already implemented it for Debian 12, which some people might still have, so it seems best not to squash the bump into other commits. This makes it easier for someone to get the Debian 12 version if they need. |
Some BSD-based operating systems support Linux Docker images by implementing a `docker` command that has a backend powered by virtualization and an internal virtualized Linux kernel. The result is that all code running inside the container is only exposed to a Linux kernel and is unaware of BSD, but all code running outside the container is directly exposed to the BSD-based environment BSD-based operating systems used to develop this: - MacOS - FreeBSD - OpenBSD It's often hard to find where exactly the `gtar`, `gar`, and `bash`-version-4+ commands are on BSD-based operating systems, so if you see errors related to those, try to find and install the dependencies for your OS and then add them to `$PATH`.
521f13d to
390d673
Compare
Solution to:
systemdirectory may be removed from the repo... #60Summary of changes:
systemfolder and replaces it with a scriptgenerate.shthat can regenerate the entiresystemfolder.systemfolder, is regenerated using purely a Termux bootstrap.zip, and.debfiles that can be built using thetermux-packagesbuild and CD system, then retrieved from thetermux.devpackage host.$TERMthat is set to a value of "xterm" for theclearcommand 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:aarch64image not working onaarch64devices 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.suto log in as thesystemuser withinentrypoint.sh.mkshandbashalone to implementsh, instead of Busybox'ssh.iputilsbased on the source code of AOSP 9.0.0 to implement/system/bin/pingand/system/bin/ping6.termux-packagesroot/dnsmasqto 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.ffmpegwork inside termux-docker, fixing this error:linker: CANNOT LINK EXECUTABLE "ffmpeg": library "libandroid.so" not foundbuild.shlibandroid-stubshould be preinstalled in termux-docker/system/etc/ld.config.28.txtwithout 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.txtis probably only necessary on ROMs that have a/vendorfolder and stuff inside ("VNDK"), termux-docker does not have a/vendorfolder 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 myarmv7ldevice that the--privilegedand--security-optarguments both failed to work on.latesttag tox86_64instead ofi686.entrypoint_root.shandentrypoint.shto 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-storagefolder 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:
-cargument oftoybox-suis 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 therootuser via theentrypoint_root.shand not viasuortsufrom within the defaultentrypoint.sh, i.e. mosttermux-packagesroot-packagescannot 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.