Android lijkt Terminal-app te krijgen

Google werkt aan een Terminal-app voor Android, zo blijkt uit recente commits. De Terminal krijgt een virtuele machine met Debian en kan zo Linux-applicaties gaan draaien. Dat betreft onder meer Android Studio, de toepassing om Android-apps te ontwikkelen.

Het zal gaan om een instelling in de Ontwikkelaarsopties, meldt Android Authority. Op dit moment moet de virtuele machine nog apart geïnstalleerd worden, maar daarvoor komt vermoedelijk een geautomatiseerde manier.

Google heeft de app getest op de Pixel Tablet en Pixel 9 Pro XL, wat erop lijkt te wijzen dat de Terminal bruikbaar zal zijn op tablets en telefoons. De Terminal maakt gebruik van het Android Virtualization Framework en heeft een WebView om via een lokaal IP-adres de virtuele machine te laten zien. Er komt ondersteuning voor het bewaren van snapshots en tonen van graphics.

De Debian-VM maakt het mogelijk om Linux-apps op Android te draaien. Daarmee zou het voor het eerst mogelijk worden om Android-apps te ontwikkelen op Android via een officieel ondersteunde methode. Er bestaan al heel lang Terminal-apps voor Android van derden.

Door Arnoud Wokke

Redacteur Tweakers

14-10-2024 • 11:54

81

Reacties (81)

81
81
53
3
0
24
Wijzig sortering
Ik snap niet helemaal waarom dit dan in een VM met Debian moet zijn? Android is toch al een op Unix gebasseerd systeem?

Zoals ik het lees is het bericht meer dat Android native de mogelijkheid krijgt om een VM te draaien met Debian geinstalleerd een beetje zoals WSL2 op Windows, maar waarbij windows de kernel en alles totaal anders is snap ik dat zij het op deze manier doen, maar Android ligt in de basis al redelijk dicht tegen Linux aan en zou ik eerder dan denken dat ze gewoon een soort container zouden kunnen doen waarin je dan alles mag, maar wijzigingen dan wel beperken tot die container je dus dan via die container niks kan wijzigen in het host systeem ofzo. Maar waarom dit dan een VM moet zijn met compleet ander OS kan ik niet helemaal volgen omdat veel redenen waarom je dit bijv in Windows wel zou willen vanwege bestandssystem en noem maar op bij Android al niet van toepassing zijn.

Ok zag de term Termux hier vallen dus heb dat even opgezocht, maar eigenlijk gewoon inderdaad waarom niet gewoon precies wat Termux doet? Of is dit dan meer ook eigenlijk om meteen ook KDE etc te hebben zodat je direct alles kan doen wat al op Linux kan en er dus niet eerst een Android build hoeft te komen? Dan zit je volgens mij nog steeds met dat Linux op ARM volgens mij nog niet heel ver is. Althans de laatste keer dat ik hier naar keek omdat ik benieuwd was of ik ook Android met Linux kon vervangen op mijn Odin 2 mini leek het erop dat niet veel Linux distro's daadwerkelijk konden draaien op mobieltjes vanwege drivers etc. Maar dan krijg je dus in Android een VM eromheen zodat dit afgevangen wordt, maar dan blijf ik erbij dat het bericht meer de titel had moeten hebben Android krijgt ingebouwde VM voor het runnen van Linux en niet echt krijgt een terminal.

[Reactie gewijzigd door ro8in op 14 oktober 2024 13:20]

De Android kernel is vrij beperkt en heeft alle onnodige modules er uit gesloopt. Een volledige VM maakt het mogelijk om praktisch elke applicatie te draaien.
Verder ontbreek ongeveer alles gnu en wil je niet dat jouw distro de android omgevi g breekt.
Bedoel je
"...ontbreekt ongeveer alles dat GNU is..."
Of bedoel je
"...ontbreekt ongeveer alles nu..."
?
Verder ontbreekt alles van de 'standaard' gnu-tools, en wil je niet dat jouw distro je gsm omgeving breekt of onveilig maakt.
Android is niet hetzelfde als een Linux distributie. Het bevat lang niet alle componenten om dat te draaien.

Zaken als compilers, package management, development tools, een actuele en complete kernel, zullen ontbreken.
En die wil je ook niet in je Android kernel draaien continue.
De kernel die Android gebruikt is enorm beperkt zodat deze alleen gebruikt wat nodig is voor een smartphone. Het is eigenlijk een hele andere kernel. Het verschil is niet zo groot als tussen Windows en Linux, maar het verschil is wel groot genoeg.
De geboden unix-achtige omgeving kan natuurlijk om het even welke linux implementatie zijn. Het gebruik van debian is vooral logisch als je bedenkt dat die onder ChromeOS al beschikbaar is. ChromeOS is een op gentoo-linux gebaseerde omgeving gestript en voorzien van de Chrome browser. Daarbinnen zijn een aantal containers beschikbaar: 1 voor android applicaties en als je het netjes aan zet, ook 1 voor linux. De linux die daar in wordt aangeboden is zo veel mogelijk compatibel met debian.

Hoe de afscherming tussen het host-os en de gast is, zullen we zien. Volgens mij gaat het als container. De host kan heel goed in de gast zaken doen. De gast kan niet uit de container komen maar resources (cpu-cycles, werkgeheugen en zo) worden gewoon gebruikt naar noodzaak. Voor de schijfruimte zal net zoals onder ChromeOS creatief met partities en overlays worden geschakeld.

Elke vergelijking met wsl of iets met msWindows gaat mank. Daar moet veel te veel worden vertaald terwijl de kernel voor android en linux (en CHromeOS) praktisch gelijk is.
Android is toch al een op Unix gebasseerd systeem?
Nee, en dat is het nooit geweest. Het is gebaseerd op Linux, een stuk open source software dat geschreven is oa als reactie op de peperdure proprietary Unix licenses.
Het zijn 2¹ totaal verschillende projecten.

¹Ik noem Unix nou alsof het 1 project was, maar dat was nooit het geval. Je had allerlei smaken Unix, van Bell Labs System V Unix tot dingen als IBM AIX. En die smaken liepen veel verder uit elkaar dan bij hedendaagse ditlstros het geval is, waar je vaak een grote set aan packages in elke distro terug ziet komen bv de Linux kernel, de GNU binutils, KDE, Gnome, network-manager, systemd, etc.

[Reactie gewijzigd door Jeanpaul145 op 16 oktober 2024 02:08]

Is dit niet hetzelfde als bijvoorbeeld termux?
Zat ik zelf ook te denken, maar termux is geen VM met Linux.
Termux geeft je een terminal (command shell) die op de linux draait waar de rest van de telefoon
(Android) ook op draait. Dus als je het "ps -ef" commando draait zie je bijna alle processen die draaien op de telefoon.

Met deze nieuwe terminal app draai je een virtuele machine met Debian dus in deze app
"zie" je de rest van het systeem (Android) niet.
Als je "ps -ef" doet zie je dan alleen de processen die in die virtuele machine draaien.

Ander voorbeeld:
in termux kun je niet zomaar even iets installeren met apt dus:
apt install xyz
zal niet gaan werken.
In de nieuwe Debian VM gaat dat wel werken want het is gewoon Debian Linux en dus
gaat apt wel werken.

[Reactie gewijzigd door peterpv op 14 oktober 2024 13:37]

Nou, in mijn termux kan ik prima 'pkg install wget' typen om een wget package te installeren incl. alles wat daarbij nodig is. Dat is geen apt install, maar wel behoorlijk synoniem en zeker niet meer werk.

Ik stel dus dat je zeker wel gewoon even iets kan installeren.
Sterker nog, je kunt vanuit termux ook gewoon de proot install van bijvoorbeeld debian doen.

Maar ik begrijp dat dit dus een beetje een VM/Terminal hybride is? Beetje WSL achtig, dus wel gewoon een VM, maar met een normale terminal ingang ipv. VNC of Spice en zonder een netwerk stack met SSH server op te moeten zetten.
Dat zou wel aardig zijn.

(Al heb ik persoonlijk niet veel meer nodig dan een terminal met SSH client).

[Reactie gewijzigd door Verwijderd op 14 oktober 2024 15:02]

Wow dit is echt super cool, ik wist niet dat dit bestond.
Toch snap ik er geen snars van.
Userland is dus geen virtualisatie? Of wel?
Er zijn toch ook ARM distros van linux? of is dat juist de hele reden dat we nu virtualisatie willen en een terminal? Heeft het nog impact op de functionaliteit van Linux dat je op een ARM computertje werkt in plaats van op een X86 systeem?
En een virtual machine draaien op je android telefoon kon toch al met vmware? Of zie ik het nu verkeerd?
En een terminal downloaden kon ook al.
Wat is er dan nieuw?
Android draait op de linux kernel, en daar kun je dan ook linux programma's op draaien, bijv zoals Termux dat doet.

Echter is Android wel veel verder op slot gezet dan een standaard Linux distributie, en zijn bepaalde zaken standaard niet mogelijk met de aangepaste kernel in Android.

'proot' is een veelgebruikte techniek om niet-geimplementeerde zaken alsnog beschikbaar te maken via een 'shim'. Echter is het vaak geen volledige implementatie, soms erg traag en kunnen sommige beveiligingszaken helemaal niet worden geïmplementeerd. Met andere woorden: proot laat niet alle Linux software werken, en werkt vaak ook ondermaats.

Een VM kan deze problemen verhelpen door een volledige Linux kernel te draaien met alle features nodig voor Linux applicaties, zonder veel security impact op Android.
Userland maakt volgens mij nog steeds gebruik van proot(of misschien wanneer je een geroote telefoon hebt chroot voor betere performance), je zit in feite gewoon binnen de android sessie een standaard linux sessie te draaien, met alle beperkingen die je in userspace hebt.
Dit artikel zegt echer Debian-VM wat mij doet geloven dat dit een zelfstandige linux installatie is. Wel interessant, maar ik vraag me af of het resource-technisch heel werkbaar is op een telefoon. Ik heb nu met 't aanzwengelen van userland al vaak genoeg binnen 2 uur een lege accu...
Je zou de vm bijv. automatisch kunnen starten als een usb-c kabel met DP (monitor) en PD (voeding) is ingeplugd.

En user-mode linux in android is prima voor apps die daarvoor gecompileerd kunnen worden (bijv in de termux repo). Helaas zijn er meer dan genoeg apps die ofwel niet beschilbaar zijn, en dus of via proot moeten werken (wat een vreselijke hack is), of zelfs met proot niet werken (bijv. Docker).
Een VM zou dat moeten oplossen.

[Reactie gewijzigd door De Vliegmieren op 14 oktober 2024 12:55]

Hoppa, Samsung Dex erbij en het wordt nog eens leuk om een oude telefoon te gaan recyclen als een Raspberry Pi. Ook zonder Dex overigens. Dan is het gewoon een servertje voor PiHole / de hele *arr stack en maak je er zo een mediaspeler van. Maar nu de vraag: gaat dat ook werken? Kun je een telefoon als volwaardige Raspberry Pi gaan inzetten?

edit: uiteraard met USB-C dock voor HDMI, Ethernet en USB.

[Reactie gewijzigd door dehardstyler op 14 oktober 2024 12:04]

Kun je een telefoon als volwaardige Raspberry Pi gaan inzetten?
Een smartphone heeft te weinig GPIO-pinnen voor dat.
Ik heb nog nooit een GPIO pin gebruikt en ik heb hier elke Odroid of Raspberry pi die je kan bedenken liggen. ;)
Dus je gebruikt al die apparaten gedeeltelijk en niet "volwaardig". Dat staat dus los van de door jou gestelde vraag.

General-purpose computing kan je met veel apparaten. Dat maakt SBC's niet bijzonder.

[Reactie gewijzigd door The Zep Man op 14 oktober 2024 12:23]

Dat is meer je eigen spin die je eraan geeft. :P
Ik gebruik de GPIO pinnen niet, dus als wat ik stelde kan, is het voor mij een volwaardig alternatief, snap je?
GPIO pinnen heb je niet altijd nodig. USB connector of wifi verbinding is voor een hele hoop toepassingen van Pi's al genoeg
Als je GPIO wil dan kun je misschien (ik heb het niet geprobeerd) gebruik maken van een FTDI bordje. De FTDI chip is een USB naar GPIO/I2C/SPI omzetter. Is zeer geschikt om een normale PC van digitale IO te voorzien.
Aangezien dit gebruik maakt van de virtualisatiesoftware, zul je wel hardware moeten hebben die virtualisatie ondersteunt. Een oude Samsung-telefoon zal dat waarschijnlijk niet doen.

Je kunt via distros als postmarketOS alsnog een heel eind komen, maar het verschilt per model telefoon hoe goed dat werkt.
Oef, ja goed punt! Is dit in deze Pixels dan inderdaad iets nieuws? Hebben deze inderdaad virtualization extensions op de CPU? Ik vind op Wikipedia dat ARM een virtualization extension ondersteunt sinds de ARM Cortex A15 CPU uit 2010, maar dat zegt dan natuurlijk niet dat dit nu ook in elke Snapdragon zit, en als dat het geval is, dat het ook ondersteund wordt door bijvoorbeeld Samsung. Weet je hier meer over? :)
De laatste generaties Pixels (en misschien die ervoor? weet het niet zeker meer) hadden de hardware maar op Android-niveau werd er niet zoveel mee gedaan.

Om dit op te zetten moet er bepaalde firmware geïnitialiseerd te worden en moet de hardware beschikbaar zijn. ARM zit vol met optionele standaarden (zoals 32-bits support in aarch64, en thumb-support in veel gevallen).

Ik weet de details niet precies, maar ik geloof dat je bij Snapdragons de chip in een bepaalde modus (EL2) booten om virtualisatie te beheren; de meeste telefoons starten de Android-kernel in EL1 op, waarin de hypervisor-mogelijkheden al zijn afgeschermd. Voor EL2-boot heb je de nodige bootloadercode en eventueel speciale firmware voor nodig.

Er is voor sommige chips alternatieve firmware, maar online staan aardig wat verhalen van mensen waar bepaalde features (bijvoorbeeld PCIe devices) niet meer werken. Als de firmware crasht kun je niet meer in fastboot-modus komen (voor veel telefoons het laagste niveau dat custom ROMs ooit aan moeten raken) en zul je via de backup-herstelfunctie van Qualcomm de firmware moeten herstellen. Het is een beetje als het flashen van een alternatieve BIOS (niet echt, maar dat is het dichtste bij EDL dat ik kan bedenken).

Het probleem zit, zoals teleurstellend vaak, eerder aan de kant van de Qualcomm-software dan aan de hardwarekant. Helaas hoef je voor oude CPUs niet veel van Qualcomm te verwachten op dit gebied.

[Reactie gewijzigd door GertMenkel op 14 oktober 2024 20:07]

Dank voor je reactie! Interessant, dan zou deze push vanuit Google misschien kunnen helpen om dit bij andere fabrikanten ook een zetje te geven? En die gaan dan misschien ook iets doen met die extensions.
Ik hoop het wel. Met virtualisatie kun je een hele hoop cool spul doen. Sinds Android 13 is er bijvoorbeeld een API waarmee apps een optionele veiligheids-API kunnen gebruiken om data in afgesloten VM's te verwerken. Ik heb het nog niet gebruikt zien worden, maar het biedt een hoop kansen voor exploitpreventie!
Klinkt een beetje als QubesOS. Alles in een VM en geïsoleerd. Alleen dan dus alleen om de data te verwerken als ik je goed bedgrijp? Opzich logisch, want bijvoorbeeld QubesOS creëert een hoop overhead, ondanks dat het minimal Debian / Windows installaties zijn, zijn het wel meerdere Debian's en Windows'jes (Windoosjes?) die allemaal weer hun eigen overhead creëren.

Hopen dat dit snel gebruikt gaat worden. Het worden echt steeds meer volwaardige computers zo. :)
Hopla, een Home servertje met ingebouwde UPS :-D
HDMI is op zich niet nodig, gezien je dit wellicht headless wilt draaien voor PiHole oid - en gezien veel toestellen dit niet ondersteunen.

Recent bvb een Tablet Samsung A9+ gekocht met Samsung Dex, maar tot mijn verbazing geen video signaal over de USB-C.
Ja en nog een UPS ook indd. :+ Ik zou de batterij toch wel uit gaan schakelen denk ik, anders krijg je vrij snel een "spicy pillow" :+ : https://www.reddit.com/r/spicypillows/. En uiteraard precies als je op vakantie gaat... :')

Van in ieder geval Samsung weet ik dat je een batterij bypass kan doen, officieel is het bedoelt zodat je je telefoon kan "opladen" tijdens het gamen, maar je batterij blijft dan gewoon onaangeroerd en je telefoon trekt alleen stroom uit de muur, zodat je telefoon niet zo warm wordt en niet gaat onderklokken tijdens het gamen.

Dat van die A9+ wist ik niet, ik heb die ook en was in de veronderstelling dat ik Dex had. Zal eens testen ook.
De A9+ heeft DeX maar alleen op het eigen scherm. Niet via video out.

Het is inderdaad jammer maar volgens mij ondersteunt de gebruikte chipset ook geen USB-C alt mode die hiervoor nodig is.

Ik gebruik DeX heel veel op mijn S23, op het docking station op kantoor. Echt super.

[Reactie gewijzigd door Llopigat op 14 oktober 2024 12:53]

Ik wilde net weer reageren dat ik getest had, en inderdaad, alleen on device Dex. De tablet heeft ook maar een USB 2.0 connectie las ik net. Helaas, geen Dex op een monitor inderdaad. Dank voor de extra bevestiging! :)
Ik heb recent een tijd op DeX geleefd wegens stervende laptop. Mijn S22 bood met een truuk net de max resolutie van mijn 3440x1440 scherm.
Nu ik een mini PC gescoord heb gebruik ik DeX amper nog. Op de PC werkt met mooi, maar niet meer dan 1920x1080, echt jammer. Als ze gewoon eens 32:9 gingen ondersteunen zou het al zoveel beter zijn. Twee externe schermen zou waarschijnlijk voorkomen hebben dat ik de mini PC kocht.
Op de laatste telefoons schijnt DeX 4K te ondersteunen. Ultra wide weet ik echter niet.
Het is een emulator, volgens mij. Er gaat geen Debian release native op een telefoon draaien.
Het is een emulator, volgens mij.
De Terminal krijgt een virtuele machine met Debian en kan zo Linux-applicaties gaan draaien.
Een virtuele machine hoeft geen emulator te zijn, en het lijkt mij sterk dat hier sprake van zal zijn gezien de onnodige negatieve impact op prestaties.

[Reactie gewijzigd door The Zep Man op 14 oktober 2024 12:18]

Als het echt Debian is moet dat haast wel. Ik denk niet dat je van daaruit als root iets kan zien van de fysieke hardware. Welk platform is het? Ik verwacht amd64.
Als het echt Debian is moet dat haast wel. (...) Welk platform is het? Ik verwacht amd64.
Debian draait niet op ARM64 als architectuur?
Ik denk niet dat je van daaruit als root iets kan zien van de fysieke hardware
Je haalt wat zaken door elkaar. Code kan native op een CPU draaien zonder directe toegang tot de hardware. Het is de taak van een hypervisor om dit in goede banen te leiden. Dat gaat zonder emulatie.

[Reactie gewijzigd door The Zep Man op 14 oktober 2024 12:34]

Dat zou het kunnen zijn maar ik verwacht dat dit gewoon een emulator met x86 soft-model is om het enigzins compatible te houden met de gangbare Debian PC-releases Android gaat linux-programma's op UI-niveau toelaten.
Overigens, in het geval van die hypervisor ben ik wel benieuwd hoe ze dat dicht hebben gemaakt. Het eerste wat bij me op komt is dat ding uit elkaar trekken en heel Android laten vergeten. Open source, toch?

[Reactie gewijzigd door blorf op 14 oktober 2024 12:57]

Ik draai al jaren Debian-chroots op Android voor de gein, zo'n beetje ieder pakket dat in de Debian-repo's zit doet het prima op aarch64. Dat is inclusief Firefox, LibreOffice, en GParted.

Voor x64-software kun je met Box64 of Box86 nog een eind komen maar ik denk niet dat dat in de praktijk veel nodig zal zijn.
Daar heb je wel enige preparatie voor nodig om de grafische (X.org?) output van die programma's in je Android GUI te passen.
Wat zeggen uname -a en dmesg in zo'n chroot? En xrandr?
Valt wel mee, de X11 server die ik destijds gebruikte schaalde automatisch alle inhoud op. Het voordeel van X11 is dat het niet gekoppeld is aan de hardware zelf zoals op andere platformen, je kunt het net zo goed over het netwerk casten.

Andere GUI-oplossingen draaiden VNC-server waar je met een VNC-app mee kan verbinden, en modernere distros zouden dat met RDP ook moeten kunnen doen.
X11 niet gekoppeld aan de hardware? Je hebt nog steeds een graphics driver nodig. Ik denk ook niet dan een linux/ARM-executable er iets van snapt als het in een Android high-level GUI ergens output heen moet sturen. Je zit niet in een stdio-compatible UNIX-achtige omgeving die linux-programma's verwachten. Je hebt ook geen runlevels oid. Hoe ziet een C hello world programa eruit?
Als je het mij vraagt kan dit alleen maar met virtuele PC-hardware die allerlei system calls die een programma naar een niet aanwezige linux-kernel doet opvangt.

[Reactie gewijzigd door blorf op 15 oktober 2024 16:22]

Nee hoor, X11 is gemaakt om op een mainframe honderden kilometers van je huis te draaien. Je hebt iets nodig om de vensters te tonen, maar dat doet de X11 server (X11 is wat verwarrend vind ik, ik had het een client genoemd). Op het apparaat waar het programma draait heb je geen enkele desktop environment nodig.

Als je je firewall op je Linuxmachine opent en export DISPLAY=192.168.1.100:0.0 op je telefoon uitvoert en een cookiebestand overkopieert (voor de veiligheid), kun je in de terminal op je telefoon GUI-programma's starten en die verschijnen dan op je desktop/laptop.

Dit heb ik zelf een tijdje gedaan over SSH op een machine waar niet eens een grafische kaart in zat, alhoewel het met SSH via een geopende poort op localhost gaat, maar het kan ook direct op het netwerk of over het internet. Een tweede, losse app kan X11-server spelen op je telefoon, en een VM of chroot of andere machine kan zijn vensters naar die server toe sturen. Als app 1 op localhost:6000 bind en app 2 X11-verkeer naar localhost:6000 stuurt, heb je een grafische sessie.

Met Wayland gaat je dit niet zo makkelijk lukken, maar over X11 is dit triviaal. Je performance kan wel wat slechter uitvallen (omdat je geen hardware-acceleratie hebt). Verder zit je met het feit dat de hele sandbox vaak als 1 app wordt gezien (tenzij je er meerdere draait) en Android dus nog wel eens geheugen vrij wil geven door alles te killen.

Runlevels heb je ook niet echt nodig bij de meeste software. Ik weet niet at systemd doet voor het emuleren van ouderwetse runlevels, maar ik weet dat onder andere WSL het prima zonder runlevels doet.

[Reactie gewijzigd door GertMenkel op 15 oktober 2024 17:11]

Wat zegt xrandr? Die weet wat je grafische output is. Zal een verticaal scherm zijn met meer hoogte dan breeedte. Ben wel benieuwd naar de ondersteunde resoluties en refresh rates op mijn telefoon. :+
Waarom zegt ie trouwens niet iets als "another X server already running" als je je eigen chrooted X-server opstart? De Android GUI heeft je display al. Volgens mij heb je ook nog vol root nodig om daar een pixel op te krijgen,vanuit een ELF executable maar dat is een ander verhaal.

Wat misschien zou kunnen is een complete vm/emulator bij een Android X11-programma in compileren zodat het net lijkt dat er een onafhankelijk linux-programma draait.

[Reactie gewijzigd door blorf op 15 oktober 2024 18:07]

Zie hier, na het starten van xfce4: https://ibb.co/XZJrBP2

Resolutie is een setting van de app zelf. Heb deze gepakt: https://github.com/termux/termux-x11 maar je kunt alternatieven vinden.

Qua alternatieve servers is het een kwestie van een ander poortnummer kiezen om op te binden. Android heeft geen X11 (gebruikt een eigen GUI stack) dus je kunt gewoon poort 6000 (0.0) pakken, maar als die in gebruik is pak je :1 en export je je DISPLAY naar een nummertje hoger.

Aangezien Android Linux met ene sausje is, werken de meeste programma's in een chroot prima. Android draait prima ELF binaries, dat is tenslotte hoe de native kant van Android in elkaar zit. De grootste uitdaging zit hem in dependencies, maar met een Debian chroot heb je alles van libc tot libxml gewoon bij de hand dus kun je de aarch64 binaries van internet plukken.

Je kunt met apps als Winlator zelf gewoon Wine draaien als je liever PE's draait. Je hebt hele apps om dat allemaal voor je op te zetten, met als basis Debian of Ubuntu of een andere smaak. Soms zul je foutmeldingen krijgen (schijven partitioneren wordt hem niet) en bepaalde paden in /proc doen het niet, maar daar heb je het ook wel gehad eigenlijk.

[Reactie gewijzigd door GertMenkel op 15 oktober 2024 19:30]

De app zelf? Je laat een emulator zien. Linux-programma's zijn geen apps.
Hoezo emulator? Het is een X11-server. Zoeen als die Microsoft in Windows 11 heeft ingebouwd. Heeft niks met emulatie te maken.
Android zelf is de display-provider. Dit is een app die alle vereiste llinux-faciliteiten die een linux-programma verwacht nabootst. Wat denk je dat die "builtin display" is? Kijk eens naar de opslag, netwerk-interface en audio-device...
X11 kan Linux-programma's net zo goed tonen op Windows als op Linux. Het tonen van vensters is besturingssysteemonafhankelijk. Dat moet wel als je Linux-computer een terminal is voor je Sun-workstation zoals vroeger. Heel X11 bestond al voordat Linux het oppakte, daar is niets Linux-specifieks aan.

In tegenstelling tot Windows hebben Linux-programma's geen enkele displayadapter nodig om te kunnen draaien, ook niet GUI-applicaties. Xvnc rendert vensters naar een virtuele framebuffer die over VNC benaderd wordt en is 100% een Linux-applicatie.

De chroot is het gedeelte dat programma's draait. Dat draait binnen de sandbox van een normale Android-applicatie, alleen heeft deze ook een command line en kun je kiezen welke executables deze aanroept. Die kan ook gewoon bij de netwerkinterfaces (zoals andere apps met de nodige permissies) en de opslag (gesandboxed natuurlijk, zoals binnen Flatpak of Snap of Docker ook het geval is).

Die "builtin display" in mijn screenshot is de naam die de X11-server over de output rapporteert. Op de meeste computers en laptops zit de X11-server samengehackt met de kernel-drivers voor displays (gedeeltelijk de reden dat veel X11-developers aan Wayland begonnen zijn) en in die gevallen zie je meer, zoals ondersteunde resoluties. Dat is echter slechts een implementatiedetail; als jij Xvfb opstart kun je zelf kiezen wat de parameters die xrandr ziet, zijn.

Deze app is net als Windows 11 en VcXsrv en X.org een implementatie van een X11-server. Linux heeft geen inherente display-omgeving (zelfs de framebuffer in je bootscherm is een compileroptie).

Het tonen van X11-programma'sh doet niks met geluid of opslag, dat doen Pipewire/PulseAudio/ALSA en de programma's die de X11-server aansturen. De X11-server plaatst dingen op je scherm, of dat nu een Android-app is, X.org, of een van de vele alternatieve X11-servers.
Je hebt het alleen maar over forwarding, volgens mij. Dat kan met elk OS dat een X11-client draait. Hoe heet die Xorg server voor Android? Lijkt erop dat die X_, of hoe heet het binnendoor verbindt naar een vm. Dat wat dat virtuele beeldscherm denkt te hebben.

[Reactie gewijzigd door blorf op 16 oktober 2024 02:20]

Ik heb hier Termux-X11 gebruikt, maar je vindt er op internet nog wel meer. Voor het draaien van de applicaties zelf heb ik simpelweg Termux van F-Droid getrokken (de versie op Google Play is verouderd).

Het is geen VM. Het zijn gewoon binaries die binnen de Android-sandbox draaien. Een chroot opzetten is een kwestie van binaries downloaden en de nodige PATH etc. variables opzetten, je kunt dat redelijk eenvoudig voor elkaar krijgen met Andronix.

[Reactie gewijzigd door GertMenkel op 16 oktober 2024 10:15]

Een terminal-emulator die een minimale linux bevat om X-programma's weer te geven.
Debian heeft (verschillende) releases geschikt voor ARM. Per se AMD64 willen lijkt me meer een onnodige vorm van complexiteit (en bijbehorende traagheid) om werkend te krijgen op een ARM CPU.
Wat een onzin. Debian ondersteunt gewoon arm64 en je hebt geen emulatie nodig om de apps in de arm64 repository te gebruiken. Verreweg de meeste apps in Linux repositories zijn niet afhankelijk van een cpu arch, omdat ze als broncode worden geleverd. Elke target arch heeft zijn eigen toolchain om de pakketten te bouwen, dat is juist het grote voordeel van Linux.

Enkel specifieke software die handmatige optimisaties gebruikt (bijv. video decoders) hebben asm code voor een speciefieke cpu arch/instructieset.

[Reactie gewijzigd door De Vliegmieren op 14 oktober 2024 12:50]

Debian draait op (bijna) alles, maar ook prima onder arm64.
Grootste uitdaging zal het complexe filesystem van Android zijn. Er worden nogal wat laagjes in aangebracht om te zorgen dat apps van elkaar afgeschermd worden, je data los op een partitie komt die encrypted is, en de verschillende lagen van het besturingssysteem ook nog eens van elkaar gesplitst zijn in sommige gevallen.

Android is geen 'doorsnee' Linux, maar het is wel degelijk Linux.
Debian draait op (bijna) alles, maar ook prima onder arm64.
Grootste uitdaging zal het complexe filesystem van Android zijn.
Het is een virtual machine. Er wordt gewoon een enkel bestand gebruikt als eigen disk. Zo'n uitdaging is dat niet.
Is een VM niet per definitie een emulator? Het draait op geemuleerde hardware.

Edit: ik las de reacties eronder te laat...

[Reactie gewijzigd door its_Muppet op 14 oktober 2024 14:04]

De Terminal krijgt een virtuele machine met Debian en kan zo Linux-applicaties gaan draaien.
Klinkt alsof er echt een Debian VM draait die dus ook Linux applicaties kan gaan draaien. Als dat een KVM achtig iets is, dan kan dat bijzonder goed werken. Op x86 doet dat het in ieder geval prima met minimaal performance verlies, dan is het alleen even de vraag hoe dit zich vertaald naar een Android telefoon met ARM aan boord.
Android heeft met de nieuwe pKVM functionaliteit de optie om volwaardige VM's te draaien. Debian draait prima op arm, net als genoeg andere distro's
Wat is daar mee?
Zou wel 100x handiger zijn tov al die vendors die hun eigen "desktop experience" maken zoals samsung etc!
En het is ook echt niet zo vreemd om te denken dat je gewoon op je telefoon een volledige Ubuntu zou kunnen draaien, hoeft helemaal niet weer een andere verkapte versie van android applicaties te zijn die na 2 jaar al geen support meer hebben.
Wel jammer dat het een VM is, had liever een subsystem gezien die naast android draait met wat meer rechten om je eigen sources te builden.
En het is ook echt niet zo vreemd om te denken dat je gewoon op je telefoon een volledige Ubuntu zou kunnen draaien,
Sterker nog; Ubuntu Touch en de voorgangers bestaan al sinds 2013. Het komt niet echt van de grond, maar als je echt zou willen dan kan het. Het probleem is natuurlijk dat ons hele leven ingericht is op apps die op Android en iOS draaien. Bijvoorbeeld de DigiD app, of een bank app, is er niet voor te krijgen.
Met Anbox en Waydroid is het werkbaar te krijgen op een native linux telefoon, maar zeker met bank apps en digid is er een risico dat ze niet naar behoren werken. Ik zou in ieder geval niet verwachten dat dingen als NFC bruikbaar zijn.
Eens, voor veel mensen zijn telefoons niks meer dan portalen voor de appjes die ze gebruiken.
Ik begrijp het doel hier van niet helemaal, tenminste niet met de titel van dit artikel dat over een terminal gaat.

Als die terminal in een debian VM draait, dan is het toch helemaal geen terminal app voor android? Dan is het toch juist een debian VM voor android?

Of kan ik vanuit die terminal wel acties binnen Android uitvoeren zoals met andere terminal apps die nu al beschikbaar zijn voor Android?
Ik zou niet te strak naar de terminologie kijken, het is nog niet officieel. In de "volksmond" wordt ieder zwart scherm en iedere Linux-vm al snel een terminal genoemd. We weten niet of dit de officiele naam van de PR-afdeling is of de werktitel van de developers.

Ik denk dat het juist om isolatie gaat. Zodat je Linux software kan gebruiken zónder toegang te hebben tot het onderliggende Android OS. Linux en Android hebben hun security model anders uitgevoerd (ze gebruiken dezelfde onderdelen, Android is immers Linux, maar voegen ze anders samen). Android doet veel moeite om alle applicaties van elkaar te scheiden van en van de data van gebruiker. Een "pure" terminal (al dan niet met root-rechten) zou dat model breken en veel gebruikers zouden daar niet goed mee om gaan.

Een andere reden is waarschijnlijk dat de Android minder compleet is dan een "gewone" LInux. Er zijn enorme stukken uitgesloopt die je terug zou moeten zetten/herbouwen om alle Linux-software te laten werken. Dat zou een hoop werk zijn voor een (op dit moment) vrij kleine groep geinteresseerde gebruikers. Met een hele VM hoef je dat niet te doen en kun je alle aandacht richten op de interacties tussen de twee (bekende en geteste) systemen, in plaats van stukken van Linux en Android te moeten herschrijven/herintegreren.
Hoe moet ik dit nu zien? Ze draaien docker en daarin kan je met linux op je android telefoon aan de slag?
Een VM staat er, Android Virtualization Framework, geen container.
Android Studio op een telefoon draaien? Gaat het compileren niet een beetje lang duren op die manier?
Tot Android 1.0 of 1.5 was die altijd ingebakken. Goed om te zien dat het weer terug komt.
Ik heb al heel lang een terminal app (versie 1.0.70) en mijn telefoon zegt dat hij is ontwikkeld voor een oudere Android... maar ja, ik heb terminal op de telefoon ook al lang niet meer gebruikt.
Het nieuwe idee zal vast wel veel meer kunnen, maar de oude liet je wat file manipulaties doen en dergelijke, die met een unix shell voor "oudjes" soms handiger zijn dan grafische verkenners/finders.

Op dit item kan niet meer gereageerd worden.