macOS Archive
One of the coolest things to come along in the 68K Mac homebrew community is the ROM Boot Disk concept. Classic Macs have an unusually large ROM that contains a fair bit of the Mac OS, which was true even in the G3 New World Mac era (it was just on disk), so it’s somewhat surprising that only one Mac officially could boot the Mac OS entirely from ROM, namely the Macintosh Classic (hold down Cmd-Option-X-O to boot from a hidden HFS volume with System 6.0.3). For many Macs that can take a ROM SIMM, you can embed a ROM volume in the Mac ROM that can even be mirrored to a RAM disk. You can even buy them pre-populated. How’s that for immutability?Well, it turns out Apple themselves were the first ones to implement a flashable Mac OS ROM volume in 1994, but hardly anyone noticed — because it was only ever used publicly in a minority subset of one of the most unusual of the Macintosh-derived systems, the Apple Interactive Television Box (a/k/a AITB or the Apple Set Top Box/STB). And that’s what we’re going to dig into — and reprogram! — today. I had never heard of this obscure Apple product, so I was like a kid in a candy store reading this. Great weekend material.
A year ago, we compiled a model list of Macs spanning over two decades, complete with their launch dates, discontinuation dates, and all the available information about the macOS updates each model received. We were trying to answer two questions: How long can Mac owners reasonably expect to receive software updates when they buy a new computer? And were Intel Macs being dropped more aggressively now that the Apple Silicon transition was in full swing? The answer to the second question was a tentative “yes,” and now that we know the official support list for macOS Sonoma, the trendline is clear. The only thing this article makes clear is that if Apple truly cared about its customers, it would post exactly how much longer each Mac is planned to be supported.
As some of us learned in the last week, it’s easy to uninstall a troublesome Rapid Security Response (RSR). Several naturally asked why that isn’t possible with a macOS update, pointing out that it was available and worryingly popular between High Sierra and Catalina 10.15.2, since when the ability has been lost. The answer is as straightforward as you’d expect: the updates themselves, as well as the update process, have become more complicated than they used to be, and rollback would be difficult to implement. As such, the advice for those unhappy with a new macOS version is as simple as it is disruptive: For those who decide that they want to roll back a macOS update on an Apple silicon Mac, by far the simplest procedure is to back the Mac up fully, put it into DFU mode, use Configurator 2 to restore the IPSW image for the previous version of macOS including its firmware, then to migrate the backup to that fresh boot disk. That also caters for all problems that may have arisen with the update. Apple always moves forwards, never backwards – even when you might want to.
The general trend of macOS releases over the past few years is that it has been moving closer and closer to the look and feel of iOS. The icons have become iOS icons, and their shape has become the iOS shape, and you can now use your iPhone as the Mac’s webcam, etc. etc. This occasionally comes at the expense of other functionality (ask me how I feel about the new Settings menu), but it is the direction that Apple has clearly been heading in since (arguably) Big Sur. Every so often, other splashy features are announced (Stage Manager, Universal Control, Quick Notes) that I write a lot about and then never end up using ever again. So, good news for Continuity fans: that’s basically what’s going on with Sonoma. Ventura looked a heck of a lot like iOS, and Sonoma looks even more like iOS. I turned my office’s Mac Studio on after installing the developer beta and thought, for a second, that I might be hallucinating my iPhone’s lockscreen. It’s remarkably reminiscent. It’s crazy how Microsoft always seems to be doing things about 10 years before everyone else catches on, for better or worse. I’m not a fan of the iOS look, and it looks whacky and childish to me when ported to the Mac – especially since macOS has also become almost Windows-like by having so many application frameworks, some from iOS, some from macOS, and some a weird combination of the two. It’s making macOS far messier and more inconsistent than it used to be, leaving the Linux desktop as the last bastion of people who value a dekstop-first, consistent interface. If you told me this 10-15 years ago, I’d have called you crazy, but we’re now living in a world where a GTK or QT desktop is far more consistent and focused on the desktop than Windows and macOS, which both feel lost in the woods at the moment.
macOS is fortunate to have access to the huge arsenal of standard Unix tools. There are also a good number of macOS-specific command-line utilities that provide unique macOS functionality. There’s some real cool stuff in here.
In this blog we’ll look at what it takes to construct an in-memory loader for Mach-O bundles within MacOS Ventura without using dyld. We’ll walk through the lower-level details of what makes up a Mach-O file, how dyld processes load commands to map areas into memory, and how we can emulate this to avoid writing payloads to disk. I also recommend reading this post alongside the code published here to fully understand the individual areas called out. In keeping with Apple’s migration to ARM architecture, this post will focus on the AARCH64 version of MacOS Ventura and XCode targeting macOS 12.0 and higher. With that said, let’s dig in. This is well beyond my pay grade, but I’m sure some of the more advanced macOS nerds among you will love this.
Apple today announced macOS Sonoma, the latest version of its Mac operating system. Launching this fall, macOS Sonoma includes several new features, including desktop widgets, Apple TV-like aerial screensavers, enhancements to apps like Messages and Safari, a new Game mode that prioritizes CPU and GPU performance for gaming, and more. Apple also showed off iOS 17, watchOS 10, and iPadOS 17. iOS 17 features personalized contact posters with photos, Memojis, and eye-catching typography that appear during calls and in the updated address book. A new Live Voicemail feature brings live-transcription in real-time, allowing old-school call screening. Users can now pick up the phone mid-voicemail and transcription is handled-on device. Developer betas will be available starting today, with the final releases expected in the Fall.
MacDock is like the Dock in modern macOS. To use it, simply launch the program. MacDock will be visible at the bottom of your screen. You will see your running applications on the list (limited to 7 applications). Clicking on any of them switches you to the app. I love little projects like these. Even today, they make using older systems just a little bit less alien.
While trying to fix my printer today, I discovered that a PDF copy of Satoshi Nakamoto’s Bitcoin whitepaper apparently shipped with every copy of macOS since Mojave in 2018. I’ve asked over a dozen Mac-using friends to confirm, and it was there for every one of them. The file is found in every version of macOS from Mojave (10.14.0) to the current version (Ventura), but isn’t in High Sierra (10.13) or earlier. A peculiar find indeed, considering the utter uselessness and wastefulness that is cryptocurrency.
A bit of background. When macOS Monterey was announced, Apple added an orange dot indicator that appears on top of everything whenever the microphone is in use. Kidding, it was quite a nice privacy addition actually. We could finally see in realtime when an app used the microphone, and what app that is. But this wasn’t something that everyone wanted. And so begins a detailed article about to hide the orange dot indicator. Can it be done without disabling System Integrity Protection?
While developing mirrord, which heavily relies on injecting itself into other people’s binaries, we ran into some challenges posed by macOS’s SIP (System Integrity Protection). This post details how we ultimately overcame these challenges, and we hope it can be of help to other people hoping to learn about SIP, as we’ve learned the hard way that there’s very little written about this subject on the internet. Potentially useful information for macOS developers.
One unfortunate fact of my life is that I have to deal with an obscure database whose macOS drivers require the addition of a directory to DYLD_LIBRARY_PATH for their Python driver to find them. To make matters worse, Apple’s CLI tools strip that variable away as part of macOS’s System Integrity Protection (SIP) before running a command. Given that DYLD_* environment variables are a known attack vector for Mac malware, that’s a good thing in general. However, sometimes one needs a workaround to get the job done. Some of this made sense to me.
Via Hackaday: We’re used to the so-called “Hackintoshes”, non-Apple hardware running MacOS. One we featured recently was even built into the case of a Nintendo Wii. But Dandu has gone one better than that, by running MacOS on an unmodified Wii, original Nintendo hardware (French, Google Translate link). How has this seemingly impossible task been achieved? Seasoned Mac enthusiasts will remember the days when Apple machines used PowerPC processors, and the Wii uses a PowerPC chip that’s a close cousin of those used in the Mac G3 series of computers. Since the Wii can run a Linux-based OS, it can therefore run Mac-on-Linux, providing in theory an environment in which it can host one of the PowerPC versions of MacOS. So it’s not really running MacOS 9.2.2 directly on the hardware, but it’s close enough. Impressive work.
I like to do some retro programming, but SheepShaver, the best Mac emulator out there, has a bug that makes copy and paste not function, so is kind of hard to use. I was recently made aware that there is a tool named mpw (lowercase) that emulates just enough of classic MacOS to run Apple’s MPW compiler suite’s command line tools on MacOS X. So I thought I’d give it a try and set that up. The audience for this is probably quite small, but information and tools like this are vital in keeping old platforms approachable for developers and enthusiasts.
TinyClock is a tiny true 5-arch universal Mac OS X single-binary GUI application. Single universal binary, that can be natively executed on every hardware platform Mac OS X was made for (32/64 bit, PowerPC/x86/AppleSilicon). Just fun.
FUSE-T is a kext-less implementation of FUSE for macOS that uses NFS v4 local server instead of a kernel extension. The main motivation for this project is to replace macfuse that implements its own kext to make fuse work. With each version of macOS it’s getting harder and harder to load kernel extensions. Apple strongly discourages it and, for this reason, software distributions that include macfuse are very difficult to install. With Apple locking down macOS more and more, developers have to resort to ingenious solutions to maintain the same level of functionality as before. This is an example of that.
In the last six months macOS malware protection has changed more than it did over the previous seven years. It has now gone fully pre-emptive, as active as many commercial anti-malware products, provided that your Mac is running Catalina or later. This article updates those I’ve previously written about Apple’s new tool in the war against malware, XProtect Remediator. Apple has been slowly building out its anti-malware and antivirus tools in macOS, and it has remained mostly quiet about it – understandable considering how bad tech press would have a field day with stories about Apple effectively turning macOS malware protection into a regular antivirus scanner.
Skirting the official macOS system requirements to run new versions of the software on old, unsupported Macs has a rich history. Tools like XPostFacto and LeopardAssist could help old PowerPC Macs run newer versions of Mac OS X, a tradition kept alive in the modern era by dosdude1’s patchers for Sierra, High Sierra, Mojave, and Catalina. For Big Sur and Monterey, the OpenCore Legacy Patcher (OCLP for short) is the best way to get new macOS versions running on old Macs. It’s an offshoot of the OpenCore Hackintosh bootloader, and it’s updated fairly frequently with new features and fixes and compatibility for newer macOS versions. The OCLP developers have admitted that macOS Ventura support will be tough, but they’ve made progress in some crucial areas that should keep some older Macs kicking for a little bit longer. I always love the dedication of these people trying to get macOS to run on hardware it was never intended to run on. It must be a small scene, actively fighting Apple every step along the way, but usually succeeding in the end. These are people giving older Macs a longer lease on life, and that’s only to be applauded.
The WWDC 2019 had a major impact on the UI toolkit landscape: while the venerable AppKit APIs remained available, Apple removed the old Carbon APIs and introduced 2 brand new frameworks: Mac Catalyst and SwiftUI. Apple sporadically mentioned some apps built with these new UI toolkits. In this article, I try to bring a better overview of Apple’s use of AppKit, Mac Catalyst and SwiftUI in the different versions of macOS, from macOS Mojave to macOS Ventura. Really great visualisation, and shows that the march to SwiftUI continues – however, I’m not entirely sure macOS users should be happy about that.
One of the coolest power-user Mac features of the Apple Silicon era is Apple’s Virtualization framework. Normally the purview of paid software like Parallels Desktop or VMWare Fusion, virtualization lets you run multiple operating systems on one Mac at the same time, which is useful for anyone who wants to run Linux on top of macOS, test an app they’re developing in different versions of macOS, or take a look at the latest macOS Ventura beta without risking their main install. Apple’s documentation and sample projects provide everything you need to get a simple VM up and running with no additional software required. Still, some independent developers have built simple, free apps on top of the Virtualization framework that provides a GUI for customizing settings and juggling multiple guest OSes. A very useful feature, especially for developers.