Droidspaces
1.22K subscribers
243 photos
26 videos
31 files
105 links
Download Telegram
> Found an old phone.
> Cooked the kernel.
> Replaced the kernel in TWRP.
> Booted into TWRP.
> Pushed the Droidspaces binary and the Alpine rootfs to TWRP's /tmp.
> Booted into Alpine.
> Fired up parted.
> Nuked all the Android-related partitions like super, prism, optics, omr, userdata, etc.
> From the unallocated space, created a new userdata partition.
> Formatted it as ext4.
> Mounted the newly created, formatted partition.
> Moved Alpine to it.
> Booted again.
> This is it!

No Android, no bloat. Just booted Linux via Android recovery, with 13.44GB of free space, 0% used space, and 173MB used RAM out of 1.8GB πŸ—Ώ

Lemme hack init to auto-boot the Droidspaces container on boot lmao

@Droidspaces
πŸ”₯11πŸ†’6πŸ’©1😎1
Droidspaces v5.9.5 is here ! πŸ₯³

This release brings a significant step forward in portability and compatibility.

Droidspaces can now run on virtually anything, including Android recovery environments and ramfs-based systems, making it more flexible than ever before πŸ—Ώ

GKI kernel users will also be happy to hear that Droidspaces is now integratable on GKI kernels without breaking the GKI ABI :)


Hard-coded cgroup device and devtmpfs requirements have been removed entirely. The only kernel requirements now are PID Namespaces and IPC Namespaces. Documentation will be updated to reflect this change shortly.

πŸ—’ What's new in v5.9.5:

- Android recovery environment support
- Removed hard-coded cgroup device and devtmpfs checks, reducing kernel requirements to PID and IPC Namespaces on GKI
- Backend and app: added a new option to mirror GPU nodes, even without the hardware access module
- App: moved symlink creation to SymlinkInstaller with a settings toggle, resolving bootloops for OverlayFS meta module users
- Fix: added a 10-second stability delay after network readiness detection in boot scripts
- Mount: replaced host tool calls with pure-C loop device management
- Mount: enabled Btrfs rootfs image support and restricted support to known filesystem types
- Fixed host detection when running on aarch64 Linux environments such as Armbian
- Fixed logs not appearing in the terminal within internal_boot()


Full changelog and Downloads:

https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v5.9.5

[Download directly from Telegram]

@Droidspaces
πŸ”₯10πŸ’©1
I had an external WiFi adapter lying around. I enabled its driver in the kernel, recompiled it, placed the WiFi firmware in recovery_ramdisk/vendor/firmware, and wired it up via /sys/module/firmware_class/parameters/path

Result: Out-of-the-box wlan0, the moment it's plugged in..!

This phone has 2GB RAM, 16GB storage, and a Qualcomm SoC scoring ~150 (single-core) and ~450 (multi-core) on Geekbench.

Look at this htop screenshot - even this weak potato sits at 0% CPU idle! πŸ₯”

On Android, idle CPU usage hovers around 30–50% for absolutely nothing.

This is Alpine Linux, booted directly from a lightweight TWRP recovery environment, with full networking.

Most people see these phones as phones. I see them as Android slapped on top of an ARM64 development boardπŸ—Ώ

So I nuked Android and used that space for a lightweight Linux container instead.

@Droidspaces
❀6πŸ”₯5πŸ—Ώ4πŸ’©1
Droidspaces
[ Explanation ] @Droidspaces
Final update for the ~200MB RAM Galaxy A01 Droidspaces setup πŸ—Ώ

The key difficulty with this setup was that you had to hold the recovery key combination every time you wanted to enter TWRP, manually type Droidspaces CLI commands to start the container, and if the phone was plugged into a charger while powered off - it would bootloop forever since there's no Android left to show a charging animation.

Here's how I solved all of that:

- Flashed recovery.img directly to the boot partition, making the device boot straight into TWRP by default; no key combos needed

- Since flashing to the boot partition means Android's init now executes TWRP's init binary on charger detection, I patched TWRP's main init.rc to trigger a clean reboot whenever a charger is connected while the device is powered off, which boots straight into TWRP

- Wrote a simple init.rc service called "alpine" that automatically starts the Alpine Linux container right after the Droidspaces daemon is ready - meaning Alpine boots automatically as part of the TWRP boot sequence

- Wrote an OpenRC service that watches for the wlan0 interface, brings it up, connects to the WiFi network, and assigns an IP - running as a daemon forever, handling hotplug and reconnection automatically

Final result: a fully functional Raspberry Pi-like device that powers on the moment a charger is detected, auto-boots Linux, and fires up SSH, Tailscale, and WiFi - all with only ~200MB of RAM usage.

This is what I call a proper server πŸ—Ώ

[ Demonstration, init Script ]

@Droidspaces
πŸ”₯13❀6πŸ—Ώ2πŸ₯°1πŸ’©1
Do you want a "Privileged/F*ck Security" mode? Runs the container with zero restrictions: no seccomp, no cap drops, no masking, just execute init with maximum permissions. Perfect for recovery mode!
Anonymous Poll
25%
No
85%
Yes
😁6πŸ’©1
Droidspaces
🧱
Okay. new option..!

Testing:

https://t.me/DroidspacesCI/
❀4πŸ—Ώ3πŸ’©1
Guyss.. I have a good news πŸ‘€

regarding X11 :)
❀1πŸ”₯1πŸ’©1
Direct display output πŸ’€

Basically, another way to run Android on Linux 😌
πŸ’©1
Droidspaces
Direct display output πŸ’€ Basically, another way to run Android on Linux 😌
Proof of concept.

Booting Linux from Android recovery with direct display output. Works in stock recoveries, too.
🀯5❀1πŸ’©1
Droidspaces OS wen ? 😳
πŸ”₯13😱3😁1πŸ’©1
:)
πŸ”₯9πŸ’©1
Systemd + Droidspaces + Native display out

#PoC
πŸ”₯9πŸ‘Ž1πŸ’©1