ISH: An Alpine Linux Shell on iOS
ish.app
ish.app
Text summary:
iSH - enable location services to run things in the background.
A couple youtube videos talking about having yet another device to do things like terminal access (via having a raspi over usb-c) or
UTM (virtual machine host) - which from my understanding requires a paid 99/yr developer profile to run.
So I wanted to make this work, I really wanted to be able to use it for light development so I could leave my notebook at home some/most days (depending on what I'm currently working on). But it doesn't stop with all the things in your collage. i(Pad)OS doesn't natively support my keyboard layout, so I was looking at getting a QMK-compatible keyboard so I could do all the remapping before the signal ever reaches the iPad. Only after sinking a non-trivial amount of time into researching that I realized how absurd this was.
A device so powerful and yet so limited by its software. I have since made my peace with the fact that my iPad is a glorified notepad and PDF viewer, but I wish it didn't have to be.
I have several servers set up that I can now easily access from my iPad (or anything with an internet connection and an SSH client). I have one "bastion" server that basically acts as a headless dev box with mosh and tmux set up. As long as I have internet, I can quickly access machines that are far more capable than any laptop I've owned.
Even when I inevitably do need my laptop for something, having this setup is great for continuity [1].
Of course, this is not a drop-in replacement for a proper desktop OS, especially if you aren't a heavy CLI user [2]. However, in a similar vein to "Linux is NOT Windows" [3], you can't expect a mobile experience to be significantly better without being significantly different.
Over the past couple years where I've been dabbling with it, I have made a couple of mentality shifts about how I want to use computers going forward. Even if I don't every use an iPad as my main/only physical device, I now happily carry around one of the 12" Macbooks since I don't need all the computing power on my person.
None of these ideas are particularly new, but I haven't seen many other people really taking it past "SSH into server, run command(s), exit".
[0]: A very well-made SSH client for iOS that supports mosh): https://blink.sh/ [1]: I can shut my laptop even if a large/long job is running since the job is running on a server. [2]: For some things, I've used VNC or other remote desktop type tools, but this experience also comes with heavy tradeoffs. YMMV. [3]: http://linux.oneandoneis2.org/LNW.htm
In a normal workweek I have tree days at the office with 9h of commute in total, all where I work (and get paid) on the train. Done this the last 5 years so the setup it starting to get solid on a variable 4G connection.
I use the Neo-layout [0] which has both a different layout for the letters, as well as using additional modifier keys, such as Caps Lock, to access extra "layers" which map more symbols. I like it very much, but it's so different from the more standard ones such as QWERTY, that I'm now significantly slower in the latter and loathe using it.
Not sure if it covers everything you need, but have you tried using the Alt/Option key for typing certain things? e.g. Alt+u and then o gives ö. Alt+s gives ß.
I'd rather carry an extra device that works the way I want it to rather than deal with either QWERTY or QWERTZ for extended periods of time.
It turns my Android devices into a powerful and versatile programming environment.
ISH looks great. If I was still using any iOS devices, I would give it a try.
I really wish iOS / iPadOS supported better software development environments and tools like ISH. Hopefully ISH does not get pulled by Apple App Store regulators.
https://www.reddit.com/r/SamsungDex/comments/f6oy5y/quest_fo...
It actually makes my Tab S6 somewhat useful for development.
If I were okay with other hardware, I could use a Surface, which requires no workarounds for almost all of my work scenarios. But I'd rather carry two devices than make that compromise, to be honest.
This is no longer true as of iOS 13.4. Apple fixed the signing bug that broke free profile signing.
Aside: why would you want to run it in the background? Just curious.
All those apps clearly state why they want the permissions.
On one hand, it’s exactly what I want on iOS in terms of a shell and Posix sandbox.
On the other, it forces x86 emulation on me that I don’t want. If ISH could just give me an aarch64 environment without QEMU at all I’d be in love.
Pythonista is probably the most prominent such app, with deep integration with iOS features and full access to every API (thanks to ctypes you can even dlopen private APIs and use them...shhh). But there are some new ones too, like Play.js (full node.js environment), Scriptable, and probably dozens of others that I haven’t tried.
It’s a bit of an interesting time. The real question will be whether Apple continues the slow path towards openness or whether they choose to go back to locking things down. I suspect their push to make the iPad more “pro” will inevitably force them towards the former.
Swift Playgrounds on iOS are very interesting and makes me wonder if XCode might someday live in iOS, with appropriate code sandboxing.
Apple has made iOS and macOS app development much simpler with SwiftUI, simple enough that I enjoy using it. I think Apple will jump through hoops in the coming years to make app development easier.
Chrome OS handles this quite gracefully by having container support baked in. You can just install whatever distro you need in the container and get rolling with it. It would make iPad Pro my perfect device (I’d replace my MBP in a heartbeat).
An iPad boots a (modified?) XNU kernel and can’t just “chroot” into a Linux-distro because the right kernel won’t be there to support the Linux userspace.
By now, iPhones, iPads and Apple Watches boot XNU proper (meaning their kernel is no longer compiled from a fork but from the proper XNU code base). It’s still a modified kernel in a broader sense: platform-and architecture-dependent modules, ifdefs, a different set of kernel modules, exclusive/missing system calls and other extraneous/missing features (e. g. no kext loading infrastructure).
It may have a significant amount of absolutely useful use-cases, but this one aspect is what’s going to make sure it never happens.
Edit: and who is going to provide those GNU Coreutils? Apple? No way.
* The shell runs as root as soon as you open it, why not a use less privileged user and sudo?
* There are getty processes running on tty[1-6] what is the purpose of this?
The broader question is that emulating a foreign chipset (especially one as complex as x86), in order to have a local terminal, is ridiculous. Why be so ridiculous?
The answer is that it has to be that way, due to Apple's restrictions on what is allowed to run, so iSH is a very clever hack on top of those restrictions, in order to get a "blessed" local unix environment on an iOS device.
2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps. Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.
app add gcc