meefik / linuxdeploy

Install and run GNU/Linux on Android
https://meefik.github.io/linuxdeploy
GNU General Public License v3.0
5.09k stars 680 forks source link

Path problem on Android 13 - Tiramisu - LineageOS 20 - Kernel 3.0 - Debian Stretch #1346

Open softwarecreations opened 1 year ago

softwarecreations commented 1 year ago

I've got an old device running a 3.0 Kernel. Running Android 13 - Tiramisu - LineageOS 20 Magisk 24.1 Root it working etc.

After uninstalling LinuxDeploy app and ensuring no directories left behind. I install LinuxDeploy app from Play Store.

I select Directory, sysv, Debian stretch (which worked previously on this device and kernel with older version of Android) I enable SSH. I install, installation completes successfully.

I try start the container, it says extra/ssh failed. So I go to the options, untick SSH. Stop / Start It says the container has started.

But now I can't access a terminal for it, so that I can manually install/configure SSH.

I found this old command on the internet

./data/data/ru.meefik.linuxdeploy/files/bin/linuxdeploy shell -u root

Weirdly if I run it on ADB, stuff starts happening, I see proc dev sys etc and then my ADB craps out (having ADB instability due to crap proprietary USB cable or PC's USB ports)

I can't run the above command in Terminal Emulator (as root) because /data/data/ru.meefik.linuxdeploy does not exist on my Android 13 - Tiramisu - LineageOS 20. If I run this as root

find / -name '*linuxdeploy*' 2>/dev/null

Then I can only find the ru.meefik.linuxdeploy (whatever) linuxdeploy/files/bin/linuxdeploy script at /data_mirror/data_ce/null/0

Anyway, so I edited the linuxdeploy/files/bin/linuxdeploy script with nano, it's trying to refer to /data/data/ru.meefik.linuxdeploy which might be the reason it's broken. I replaced that with some other path that actually leads to the path ending in linuxdeploy/files But then I couldn't run the script, because it couldn't find the sh listed in the shebang. And the problem with all of the files in linuxdeploy/files/bin is they're actually symlinks to /data/data blah blah directory that does not exist. At some point I tried changing the #! shebang for the linuxdeploy to the path shown by which sh. And then I was actually able to start the script and it gave a few lines out output but broke looking for /bin/su I tried adding a symlink in linuxdeploy/files/bin to the which su path. Also tried just copying the su file to linuxdeploy/files/bin Didn't work.

Then I tried in the LinuxDeploy app, going to Settings, then correcting the (obsolete?) /data/data/ path to the /data_mirror/data_ce/null/0 blah linuxdeploy blah /files path that I found. Then clicking Update Environment... hoping it might fix all of the symlinks in linuxdeploy/files/bin that point to /data/data/... but then the container would not start.

softwarecreations commented 1 year ago

I found this. I will try it soon. https://github.com/meefik/linuxdeploy/wiki/Install-on-external-storage-with-newer-versions-of-Android-(Storage-Access-Framework)

Newer versions of Android do not allow apps to access external SD card normally without using the built-in APIs. This can be overcome with the following adb command: adb shell cmd appops set ru.meefik.linuxdeploy android:legacy_storage allow

DesktopECHO commented 1 year ago

Debian 9 (Stretch) shipped with glibc 2.24

You need Kernel 3.2+ because it's a requirement for glibc 2.24

* The minimum Linux kernel version that this version of the GNU C Library
  can be used with is 3.2, except on i[4567]86 and x86_64