π±2πΏ2π©1
Droidspaces
Let's run fully interactive systemd from TWRP πΏ @Droidspaces
well, networking isn't that hard.
all you have to do is, run the container inside twrp/recovery,
plug the ethernet,
container's systemd-networkd/dhcpd will handle everything.
out of the box !
all you have to do is, run the container inside twrp/recovery,
plug the ethernet,
container's systemd-networkd/dhcpd will handle everything.
out of the box !
π₯5π©1
GOT WIFI WORKING ON TWRP !! πΏ
Connection established Just purely based on Linux tools π₯³
Connection established Just purely based on Linux tools π₯³
π±7β‘2π2π₯2πΏ1
Any logo ideas for the App/Group PFP ?
I'm using a generic container icon for now, but it's not unique
I'm using a generic container icon for now, but it's not unique
π©1
Droidspaces
Any logo ideas for the App/Group PFP ? I'm using a generic container icon for now, but it's not unique
I guess something like this doesn't fit the topic...?
π1π©1
Droidspaces
I guess something like this doesn't fit the topic...?
how about putting him in the welcome screen?
β€4π©1
> 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
> 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
> 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β¦
just figured out we can directly mount the partition using the -i flag too !
β€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:
Full changelog and Downloads:
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v5.9.5
[Download directly from Telegram]
@Droidspaces
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
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
recovery_ramdisk/vendor/firmware, and wired it up via /sys/module/firmware_class/parameters/pathResult: 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
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β¦
LET'S PLAY DOOM ! πΏ
π₯5πΏ2π©1
This media is not supported in your browser
VIEW IN TELEGRAM
β€3π€―2π1π©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
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