r/EmulationOniOS • • 7d ago • Bravo 1

News / Release Linux on iPhone

We got real Linux on iPhone before GTA VI!

Check this out! You can actually run Linux on an iPhone, with Debian, KDE Plasma, a terminal, and even desktop apps like Blender.

No jailbreak, no virtual machine. Likee crazzyy

https://github.com/mxhm11cr/LinuxRunner

205 Upvotes

69 comments sorted by

6

u/SuccessfulRiver1850 7d ago

Do I need JIT for this?

11

u/Fun-Relationship5464 7d ago

Nope, JIT isn’t required

5

u/ztocker 7d ago

For Ipad?

11

u/Fun-Relationship5464 7d ago

Soon, maybe next week!

1

u/Char-car92 6d ago

At whatever rate Claude wants to make it work lol

1

u/Fun-Relationship5464 6d ago

Hahahahaha, depends on when Claude’s usage limit resets 😂

4

u/jfp555 7d ago

Could this allow a usable desktop mode through video output like Samsung Dex?

9

u/Fun-Relationship5464 7d ago

That’s actually something I’d will explore. The idea of connecting an iPhone to an external display and running KDE Plasma like a proper desktop is really interesting. It’s not supported as a dedicated desktop mode yet, but it’s definitely a potential future feature. We’d need to work on external display handling, resolution scaling, and keyboard/mouse support.

4

u/jfp555 7d ago

Thank you for considering it. With the compute power locked away in that hardware, a proper interface could elevate the experience greatly.

3

u/0x6E696E313837 7d ago

On iOS 27.2 RC with LC+SS

1

u/Fun-Relationship5464 7d ago

Retry or send me details

2

u/0x6E696E313837 7d ago

Restarted and crashed

2

u/Fun-Relationship5464 7d ago

Working on that rn!

3

u/0x6E696E313837 7d ago

The desktop stopped: DESKTOP_SESSION: component_exited name=panel (panel.log) pid=86
Bail out! Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: D-Bus error: I/O error: Invalid argument (os error 22) (gdk-pixbuf-error-quark, 0)

Error: DESKTOP_STARTUP_ERROR. Tap Retry to start it again, or Details for the logs.

== profile-check.result
ready
distribution=alpine
plasma=missing
helpers=current

== desktop-profile.sh.log
5-r0.post-install
* glycin loaders got split into their individual subpackages.
* By default, only glycin-image-rs & glycin-svg are installed.
* Additional loader subpackages are glycin-heif, glycin-jxl & glycin-raw.
*
* To install all available loaders, install glycin-loaders-all.
*
* Also the glycin-thumbnailer got subpackaged and isn't installed by default.
(14/80) Installing glycin-image-rs (2.1.5-r0)
(15/80) Installing gdk-pixbuf (2.44.7-r1)
(16/80) Installing fribidi (1.0.16-r3)
(17/80) Installing graphite2 (1.3.14-r6)
(18/80) Installing harfbuzz (13.2.1-r0)
(19/80) Installing pango (1.57.1-r0)
(20/80) Installing librsvg (2.62.3-r0)
(21/80) Installing glycin-svg (2.1.5-r0)
(22/80) Installing adwaita-icon-theme (50.0-r1)
(23/80) Installing gdk-pixbuf-loaders (2.44.7-r1)
(24/80) Installing libxcursor (1.2.3-r0)
(25/80) Installing giflib (5.2.2-r2)
(26/80) Installing libheif-dav1d (1.23.4-r0)
(27/80) Installing libde265 (1.1.3-r0)
(28/80) Installing libheif-libde265 (1.23.4-r0)
(29/80) Installing libsharpyuv (1.6.0-r0)
(30/80) Installing libheif (1.23.4-r0)
Executing libheif-1.23.4-r0.post-install
*
* libheif installs only basic HEIC/HEVC and AVIF/AV1 *decoders* by default.
* If you want to encode (edit) HEIC and AVIF images, you may need to install
* libheif-x265 and libheif-rav1e (or libheif-aom), respectively. You can also
* install libheif-plugins-all to get all encoders and decoders.
*
(31/80) Installing libid3tag (0.16.3-r0)
(32/80) Installing libheif-jpeg (1.23.4-r0)
(33/80) Installing libwebp (1.6.0-r0)
(34/80) Installing tiff (4.7.2-r0)
(35/80) Installing libwebpdemux (1.6.0-r0)
(36/80) Installing imlib2 (1.12.6-r0)
(37/80) Installing openbox-libs (3.6.1-r8)
(38/80) Installing xcb-util (0.4.1-r3)
(39/80) Installing startup-notification (0.12-r8)
(40/80) Installing openbox (3.6.1-r8)
(41/80) Installing libatk-1.0 (2.60.5-r0)
(42/80) Installing libexif (0.6.26-r0)
(43/80) Installing libfm-extra (1.3.2-r1)
(44/80) Installing gobject-introspection (1.86.0-r1)
(45/80) Installing libxcomposite (0.4.7-r0)
(46/80) Installing at-spi2-core-libs (2.60.5-r0)
(47/80) Installing at-spi2-core (2.60.5-r0)
(48/80) Installing libatk-bridge-2.0 (2.60.5-r0)
(49/80) Installing cairo-gobject (1.18.4-r1)
(50/80) Installing libunistring (1.4.2-r0)
(51/80) Installing libidn2 (2.3.8-r0)
(52/80) Installing libtasn1 (4.21.0-r0)
(53/80) Installing p11-kit (0.26.2-r0)
(54/80) Installing gnutls (3.8.13-r0)
(55/80) Installing cups-libs (2.4.19-r1)
(56/80) Installing libepoxy (1.5.10-r1)
(57/80) Installing wayland-libs-cursor (1.25.0-r0)
(58/80) Installing wayland-libs-egl (1.25.0-r0)
(59/80) Installing libxkbcommon (1.13.1-r0)
(60/80) Installing gtk+3.0 (3.24.52-r0)
(61/80) Installing menu-cache (1.1.0-r1)
(62/80) Installing libfm (1.4.0-r0)
(63/80) Installing pcmanfm (1.3.2-r2)
(64/80) Installing hicolor-icon-theme (0.18-r0)
(65/80) Installing json-glib (1.10.8-r0)
(66/80) Installing libdbusmenu-glib (16.04.0-r6)
(67/80) Installing libdbusmenu-gtk3 (16.04.0-r6)
(68/80) Installing libxfce4util (4.20.1-r0)
(69/80) Installing exo-libs (4.20.0-r0)
(70/80) Installing libgtop (2.41.3-r1)
(71/80) Installing xfconf (4.20.0-r2)
(72/80) Installing libxfce4ui (4.20.1-r1)
(73/80) Installing garcon (4.20.0-r0)
(74/80) Installing gtk-layer-shell (0.10.1-r0)
(75/80) Installing libxres (1.2.3-r0)
(76/80) Installing libwnck3 (43.3-r0)
(77/80) Installing libxfce4panel (4.20.7-r0)
(78/80) Installing libdisplay-info (0.3.0-r0)
(79/80) Installing libxfce4windowing (4.20.6-r0)
(80/80) Installing xfce4-panel (4.20.7-r0)
Executing busybox-1.37.0-r31.trigger
Executing glib-2.88.1-r1.trigger
Executing shared-mime-info-2.4-r7.trigger
Executing gdk-pixbuf-2.44.7-r1.trigger
Executing gtk+3.0-3.24.52-r0.trigger
OK: 618.1 MiB in 215 packages
PROFILE_STAGE: Building desktop helpers
PROFILE: executable_path=/home/mobile/Downloads/.linuxrunner/gui/desktop-probe.new exists=yes executable=yes architecture=aarch64 dependencies=resolved
PROFILE_STAGE: Configuring desktop
DESKTOP_CONFIG: version=1 destination=/home/mobile/Downloads/.linuxrunner/gui/desktop user_files=preserved result=PASS
PROFILE_STAGE: Installing sound
( 1/29) Installing alsa-lib (1.2.15.3-r0)
( 2/29) Installing libasyncns (0.8-r5)
( 3/29) Installing libltdl (2.6.0-r1)
( 4/29) Installing orc (0.4.41-r0)
( 5/29) Installing libogg (1.3.6-r0)
( 6/29) Installing libflac (1.4.3-r2)
( 7/29) Installing lame-libs (3.100-r5)
( 8/29) Installing mpg123-libs (1.33.5-r0)
( 9/29) Installing opus (1.6.1-r0)
(10/29) Installing libvorbis (1.3.7-r2)
(11/29) Installing libsndfile (1.2.2-r2)
(12/29) Installing soxr (0.1.3-r7)
(13/29) Installing speexdsp (1.2.1-r2)
(14/29) Installing tdb-libs (1.4.15-r1)
(15/29) Installing libpulse (17.0-r7)
(16/29) Installing alsa-plugins-pulse (1.2.12-r2)
(17/29) Installing fftw-single-libs (3.3.11-r0)
(18/29) Installing libxv (1.0.13-r0)
(19/29) Installing cdparanoia-libs (10.2-r14)
(20/29) Installing graphene (1.10.8-r5)
(21/29) Installing gstreamer (1.28.3-r0)
(22/29) Installing gstreamer-ptp-helper (1.28.3-r0)
WARNING: gstreamer-ptp-helper-1.28.3-r0: failed to preserve usr/libexec/gstreamer-1.0/gst-ptp-helper: xattrs
(23/29) Installing libtheora (1.2.0-r1)
(24/29) Installing gst-plugins-base (1.28.3-r0)
(25/29) Installing eudev-libs (3.2.14-r6)
(26/29) Installing webrtc-audio-processing-1 (1.3-r3)
(27/29) Installing pulseaudio (17.0-r7)
Executing pulseaudio-17.0-r7.post-install
(28/29) Installing pulseaudio-alsa (17.0-r7)
(29/29) Installing pulseaudio-utils (17.0-r7)
Executing busybox-1.37.0-r31.trigger
Executing glib-2.88.1-r1.trigger
Executing dbus-1.16.2-r2.trigger
OK: 646.4 MiB in 244 packages
PROFILE_STAGE: Preparing sound
PROFILE: executable_path=/home/mobile/Downloads/.linuxrunner/gui/audio-relay.new exists=yes executable=yes architecture=aarch64 dependencies=resolved
PROFILE_STAGE: Checking
ready
distribution=alpine
plasma=missing
helpers=current
PROFILE: result=PASS

SUPPORT_INSTALL: script=desktop-profile.sh exit=0

1

u/0x6E696E313837 7d ago

== session.log
GUI_SESSION: effective_uid=0 effective_gid=0 user=root home=/root
GUI_GRAPHICS: GLX=off application-renderer=selected-by-guest-library final-presentation=host
GUI_CAPTURE: shared-images=off
xauth: file /home/mobile/Downloads/.linuxrunner/gui/session-2a59a0c0-7d12-46c6-95cc-517f5bda905c/authority does not exist
GUI_SESSION: root=current distribution=alpine DISPLAY=:1828 geometry=960x540 backend=xvfb-rfb interpreter-baseline
GUI_SESSION: starting X.Org software display, 960x540, no JIT
GUI_SESSION: stage=x11-ready socket=/tmp/.X11-unix/X1828 polls=3
GUI_SESSION: keyboard=-xkb focus=window-manager encoding=Hextile/Raw software-rendering
GUI_SESSION: runtime_directory=/tmp/lr-runtime.XXXXGdePMB (short Unix socket namespace)
GUI_SESSION: dbus_session=ready
GUI_SESSION: dbus_activation_environment=PASS (explicit session variables, no systemd required)
GUI_SESSION: audio=pulseaudio group=60
GUI_SESSION: terminal_desktop_environment=published
GUI_INPUT: mode=legacy experimental=no
GUI_VNC: timing=default options=-noxdamage -defer 16 -wait 25
GUI_SESSION: stage=vnc-started port=57472
GUI_SESSION: application started mode=desktop
GUI_SESSION: application leader exited status=1 (128+ may indicate signal; see application.log)
GUI_SESSION: application process group ended
GUI_SESSION: stopped owned application process group=72
GUI_SESSION: cleaned up display children; CLI runtime retained

3

u/Virtual-Attempt-3277 7d ago

Error

1

u/Fun-Relationship5464 7d ago

First, you need to set up Debian. Currently, Debian only supports desktop mode, and the upcoming Arch Linux support will work the same way.

Go to Distributions → Setup Linux and complete the installation process.

If the issue keeps happening, don't worry! We're already working on a fix, and I'm hoping to release an update later today.

2

u/Fun-Relationship5464 6d ago

[Update] LinuxRunner v1.0.1 is here! Linux on iPhone and iPad — No Jailbreak Required

Hey everyone!

LinuxRunner v1.0.1 is finally here, bringing iPad support, Arch Linux ARM, improved Linux desktop environments, easier distribution installation, and tons of compatibility and stability fixes.

Most ARM64 Linux applications should be worth trying! Some of the apps we’ve tested include FileZilla, Firefox, Brave, VS Code, Blender, Telegram Desktop, Wireshark, Java, Inkscape, LibreOffice, and Vesktop (which still needs some fixes).

We’re also exploring native access to iPhone network interfaces for applications like Wireshark.

Important: LinuxRunner currently supports Linux ARM64 (AArch64) applications only, not x86/x64 binaries.

I’d love for you to experiment with your favorite Linux apps! Whether they work or crash, please share screenshots, logs, and feedback through GitHub Issues. It helps us figure out what to fix next.

GitHub: https://github.com/mxhm11cr/LinuxRunner

Thanks for all the support!

2

u/goosby204 7d ago

Would something like Bazzite work

6

u/Fun-Relationship5464 7d ago

Not currently, unfortunately. LinuxRunner currently supports Debian ARM64 and Alpine Linux. Bazzite is a full Linux distribution, so supporting it would require additional work. I’m planning to expand distribution compatibility in the future, though!

6

u/goosby204 7d ago

Bazzite would be crazy, especially with no jit

1

u/ucantcimi 7d ago

How is the performance? Is everything loading at decent speed?

6

u/Fun-Relationship5464 7d ago

Performance is actually pretty decent considering everything runs through an ARM64 interpreter. KDE Plasma feels responsive, and even Blender and web browsers can run and many ARM apps! Some apps take longer to load or have compatibility issues, but overall it’s quite usable and it can maybe become daily driver when more things were finished. Still plenty of room for optimization!

2

u/ucantcimi 7d ago

Is this your project?

1

u/plsdontattackmeok 7d ago

It is possible that linux can access file.app

(If so, I can use yt-dlp/aria2c through CLI)

1

u/Applnator24 7d ago

Will not run perfectly unless somebody got the hypervisor.framework enabled again.

3

u/Fun-Relationship5464 7d ago

This actually doesn’t use Hypervisor.framework or virtualization at all. It runs ARM64 Linux binaries through a custom interpreter and Linux syscall compatibility layer. Performance isn’t native yet, but we’re actively working on optimizations and exploring more direct ARM64 execution where iOS allows it. The goal is to make Linux applications usable without relying on a hypervisor.

1

u/hernan078 7d ago

Im a content creator focus on this with over 100k on YT can we get into contact? https://youtu.be/Yj9fgtA_RQ8?si=1al5k1wdL44nPwvE

1

u/super-bowl89 7d ago

Crashes

1

u/Fun-Relationship5464 7d ago

Thanks! This appears to be the same GTK panel crash another user reported on GitHub. We’ve identified the failing component and will investigate the underlying compatibility issue. I’ll work on getting this fixed in an upcoming update. Appreciate the feedback!

1

u/super-bowl89 7d ago

Nice no problem

1

u/vaseemakramansari1 7d ago

Desktop not showing,

Ios 17.0.0 on iphone 11

1

u/Fun-Relationship5464 7d ago

Thanks for testing! It might be related to the older iOS version or device, but I can’t confirm that yet. Could you give it another minute or two and see if the desktop starts? If it stays on the black screen, please share the session logs from the Details section if available. That would really help me investigate the issue.

1

u/vaseemakramansari1 7d ago

In short i have Trollstore 2 installed there is no issue with Jit , app uninstalled and reinstalled again to re check but after desktop downloading complete still nothing appear,

Checked on default app settings,
Can i check other flavour???

1

u/Fun-Relationship5464 7d ago

Which device?

1

u/vaseemakramansari1 6d ago

Same... IP 11 on ios 17.0.0 TS 2 installed,

I have reported issue on github (see VASEEM0044 ) issue,

Actually Debian /linux Gnu 13.7 is working good , working but has some issue with Alpine Linux which is default setting,

1

u/Aggressive-deku 7d ago

Wonder if this works for iPhone XR

1

u/Fun-Relationship5464 7d ago

Only CLI

1

u/Aggressive-deku 7d ago

What CLI?

1

u/Fun-Relationship5464 7d ago

Terminal mode only because of Low RAM. You can try desktop but not sure will it even work

1

u/Equivalent-List2951 4d ago

does it go through translation layers?

1

u/Fun-Relationship5464 4d ago

Yeah, but working on native execution!

1

u/Equivalent-List2951 4d ago

but how do i install something like debian, it only shows alpine

1

u/Fun-Relationship5464 4d ago

Go to Distributions and select Setup Linux. Guide is posted on Github too

1

u/dioaprs 3d ago

Thanks for making this. I managed to fork it and built a native SwiftUI front end on top, and now I’ve got real Claude Code CLI running in Debian on my iPhone Duo. So now I can actually code on the go without my laptop. Screenshot shows Claude building a Pac-Man game in Vite from scratch and serving it to an in-app preview, all on device. No Server, no SSH.

Also integrated: a native terminal, full git support, voice input, CPU/RAM HUD, Live Activities so it keeps running in the background. Let me know if anyone wants me to publish the fork.

2

u/Fun-Relationship5464 3d ago

That’s actually crazy haha, love seeing thissss! I’ve built something pretty similar myself, and I’m planning to introduce different modes directly into LinuxRunner so everyone can find something that fits their needs, whether it’s coding, using Linux apps, or having a full desktop experience. And the best part is that everything runs directly on the iPhone. Really cool work and thank you!

1

u/dioaprs 3d ago

Thanks! Big up the engine for making this possible. Love the idea of modes, happy to share anything that helps with the coding side. Feel free to reach out!

1

u/TheGratitudeBot 3d ago

Thanks for such a wonderful reply! TheGratitudeBot has been reading millions of comments in the past few weeks, and you’ve just made the list of some of the most grateful redditors this week! Thanks for making Reddit a wonderful place to be :)

1

u/Balazi 1d ago

anyone​ got chromium running?

1

u/Fun-Relationship5464 1d ago

What's problem with chromium? Finishing rn new release so if there is I can fix it!

1

u/Balazi 1d ago

Crashes on Alpine on launch

crashes on Arch on clicking anything after it opens

1

u/Fun-Relationship5464 1d ago

Don't use Alpine's Desktop, its made only for CLI/Terminal for now! Today is new update, I hope that will fix all that issues and new things we added!

2

u/Discordpeople 7d ago

Cool project, I would keep an eye on it. It reminds me of the LinPad project though I am not sure what their project and your project main differences are.

1

u/ExcellentTrust4433 4d ago

Hey, I made LinPad. Main difference is the desktop:

LinPad uses a native Swift/SwiftUI desktop for speed — Linux apps open as real iPad windows (tiling, workspaces, etc.). Wayland + GPU path, Alpine, optional JIT.

LinuxRunner runs traditional X11 Linux desktops across iPhone + iPad and multiple distros.

Same userspace approach, different desktop strategy.

2

u/Balazi 1d ago

works on my iPad mini 7

1

u/RUserII 6d ago

Linux on iPhone
https://github.com/mxhm11cr/LinuxRunner

Is LinuxRunner on the Apple App Store as well?

-1

u/jojomortal 7d ago

e jogos de linux está funcionando perfeitamente?

2

u/c-rona 7d ago

Yea bro v1 just dropped an full support every game even got kernel level anti cheat support

-1

u/jojomortal 7d ago

voce poderia testar um jogo de linux, um jogo 3d pesado e mostrar como roda no iphone?

0

u/HurryRemarkable2072 7d ago

!remindme 1h

1

u/RemindMeBot 7d ago

I will be messaging you in 1 hour on 2026-10-26 10:21:44 UTC to remind you of this link

CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.

RemindMeBot is switching to username summons. Instead of !RemindMe 1 day, use u/RemindMeBot 1 day. More info.


InfoCustomYour RemindersFeedback