A chroot container is powerful on its own — but without an init system, every service must be started manually on each reboot. Charch OpenRC by tytydraco solves this by initializing the battle-tested OpenRC service manager inside your Arch Linux ChArch instance. SSH daemons, web servers, database engines — any service registered with OpenRC starts automatically and reliably every time Android boots, turning your device into a persistent, self-managing headless Linux server.
OpenRC on Android — Key Capabilities
A full dependency-based init system inside your Android-hosted Arch Linux container — services that start themselves, manage dependencies, and recover from failures.
Auto-Start Services on Boot
Register any service with rc-update add <service> default and it will launch automatically every time Android boots and the ChArch instance initializes — SSH, nginx, PostgreSQL, cron, and any other OpenRC-compatible daemon.
Dependency-Based Init
OpenRC resolves service startup order by declared dependencies — if nginx depends on network, OpenRC guarantees the network is up before nginx starts. No manual ordering or sleep hacks required in service scripts.
Full Service Control
Manage running services interactively with standard OpenRC commands — rc-service sshd start, rc-service nginx restart, rc-status for an overview of all services and their states. Familiar tooling for any Linux administrator.
Runlevel Management
OpenRC's classic runlevel model (default, sysinit, boot, shutdown) provides structured control over the container lifecycle. Services are grouped by runlevel to separate initialization stages from runtime daemons.
Lightweight — No systemd Overhead
OpenRC is implemented in C with minimal dependencies — no D-Bus, no cgroups v2 enforcement, no socket activation complexity. It boots faster and uses less RAM than systemd while offering far more service management features than a basic shell script approach.
Standard /etc/init.d Scripts
OpenRC uses the universal /etc/init.d/ service script format — the same format used by Alpine Linux, Gentoo, Void Linux, and Artix. Any existing OpenRC service script from the Arch or Alpine package repositories works out of the box.
How Charch OpenRC Integrates with Android
When installed alongside the base charch module, Charch OpenRC patches the ChArch rootfs startup sequence to invoke openrc during container initialization. On Android boot, Magisk's service framework triggers the charch boot script, which mounts the Arch Linux rootfs and then hands off control to OpenRC's init sequence.
OpenRC runs its sysinit → boot → default runlevel sequence inside the chroot, starting each registered service in dependency order. Because the chroot shares Android's Linux kernel directly, there is no virtualization boundary — services access the network stack, filesystem, and hardware interfaces at native kernel speed with zero translation overhead.
The result is a persistent Linux daemon environment running on your Android device: an SSH server always listening, a web server always ready, a database engine always accepting connections — all managed by the same OpenRC tooling you would use on any headless Linux server, accessible from any terminal on the same network.
Essential OpenRC Commands
Once inside the ChArch chroot, manage your services with these standard OpenRC commands:
Common Services to Auto-Start
rc-update add sshd
rc-update add nginx
rc-update add postgresql
rc-update add cronie
Init System Comparison
| Feature | systemd | dinit | OpenRC |
|---|---|---|---|
| Works in Android chroot | |||
| Dependency-based ordering | |||
| Runlevel support | |||
| Memory footprint | Heavy | Minimal | Light |
Standard /etc/init.d scripts |
|||
| Requires D-Bus / cgroups v2 | |||
| Ecosystem maturity | Very High | Growing | High |
Frequently Asked Questions
/etc/init.d scripts, without excessive overhead.
ptrace, which introduces a measurable performance penalty on every system call. Because Charch uses a native chroot, it shares Android's Linux kernel directly with zero translation overhead — delivering near-desktop execution speeds for both the init system and all running services.
.zip is currently not hosted on the GitHub repository's release page. The working build is archived and linked directly through the Magisk Repo Telegram channel to ensure users always access a verified, functional version.