Intro

For a long time I’ve wanted to build a NeXTSTEP virtual machine—but it’s always been a hassle to get it working fully.
Over the years I’ve tried just about everything: QEMU, 86Box, VMware Workstation, Parallels, and multiple versions of VirtualBox. Every attempt ended the same way: partial success, bad drivers and no usable network stack.

Recently I stumbled across some solid public file collections and decided to give it another shot.
This time, after the usual ritual of false starts and head scratching, I eventually managed to assemble a clean, stable VirtualBox 7 for Linux build of OpenStep 4.2 Patch 4.
It runs beautifully on my MacBook Pro running Ubuntu, and honestly—it’s a great little pet VM for any Mac admin or developer who wants to better understand the NeXT Step DNA and foundations present in the modern macOS world.

Background https://en.wikipedia.org/wiki/NeXT

You see, OpenStep is the most recent version of the NeXT operating system. It was a shiny but niche workstation OS that Apple later used as the foundation for Mac OS X, and by extension macOS and iOS. It established a lot of what we still take for granted today: the CMU Mach kernel, the BSD subsystem, the .app bundle format, an object-oriented OS, Display PostScript, the Services menu, the Dock, and familiar utilities like Fonts, TextEdit, and Terminal.

If you know macOS—or the Darwin command-line environment—you’ll feel strangely at home here.

The first web server running on a NeXT Cube
The first web server running on a NeXT Cube.
Coolcaesar, CC BY-SA 3.0 (link), via Wikimedia Commons.

So yes — it’s a time capsule, but also a surprisingly fun little Unix obstacle course. You’ll end up debugging, porting, and re-learning core Unix skills — just without the modern safety nets. Working inside NeXT feels like stepping back into the late-90s: SunOS, Solaris, HP-UX — but cleaner, tighter, and more consistent. And its development environment was nothing short of revolutionary. With Objective-C and Interface Builder, developers could craft powerful, polished apps in record time — long before “rapid application development” became a buzzword.


Getting Started

If you want to skip the setup and get straight to exploring, I’ve published a clean, patched, and fully functional OpenStep 4.2 VirtualBox OVA on Archive.org.

Most images floating around the web have missing patches, broken networking, or minimal configurations.
This one includes everything I wished those did — a stable, period-accurate system ready to explore, customize, and build on.


📦 Download: OpenStep 4.2 VirtualBox OVA (Archive.org)

You can login as either user (me or root) with the password, ‘password’. To change that, see Set password later in the Post-Install steps.


README

I don’t recommend running this on VirtualBox for Windows.

I tested extensively on Windows 10 and 11 with VirtualBox 6.1.32 (the last version with the old NDIS bridge code) and 7.2.4 (the current release as of writing). I even went as far as dedicating a physical Ethernet adapter to VirtualBox, stripped it of every binding except IPv4, and disabled all offload features—no joy. Performance was sluggish, and networking would drop or stall without reason.

On Linux, though, it’s a dream. The VM is fast, stable, and the bridged adapter seems to work well.
I run mine on Ubuntu 22.04 LTS with VirtualBox 7.0.16, and it feels nearly native.

Unfortunately, VirtualBox on Apple Silicon (M1/M2/M3) cannot virtualize x86 or x86-64 guest operating systems — it only supports ARM-based VMs. So while OpenStep runs beautifully on Intel-based Macs with older versions of VirtualBox, it isn’t currently possible to run it on Apple Silicon hardware. Yes that sucks.

NOTE My deprecated Intel Macs are all running Linux. You can check out my article Breathing New Life Into Vintage Macs for the details.


What’s in the OVA appliance

On first boot, you’ll find the following features. The only steps you should have to do is to change the password and review the network settings (/etc/hostconfig and /etc/resolv.conf) for your environment. I built around bridge mode so NAT and Host-Only will be a little different. See Post-Install Steps for more info.

Web browsing in extreme danger mode! Check out theoldnet.com
A particularly nice quality-of-life port is vim

The OVA appliance contains the following goodies:

  • Developer Tools
  • OS42MachUserPatch4
  • Doom, OmniWeb, WordPerfect, Concurrence, Diagram, ParaSheet, WetPaint, numerous small games and apps.
  • CUBX Windows 5.0 for OpenStep (X11R6 with Xterm and all the usual x11 apps)
  • fortune mod 9708 with all available fortune dat files and a few custom ones of my own (grumble, deep-thoughts, rules, oblique, rickmorty)
  • replacement for broken native bsd grep
  • fileutils and textutils installed to /usr/local/bin
  • w3c-httpd. latest version of the original web server ready to serve ~/public_html
  • replacement termcap and sane /etc/termcap to fix display issues
  • vim 5.3 installed with nice .vimrc that fixes issues and provides a very capable editor
  • various fixes and polish and about 700mb of free disk space to experiment with
  • tcsh and bash shells with bash set as shell for root and me users. decent .bashrc and .bash_profile to make it nice to use

All in all I have found it to be a fun, old school Unix sandbox and pet VM.


Building Your Own

If you’d rather build from scratch, I found this to be a clear tutorial that walks through the basic process:

here is the Youtube link

The two big rules are:

  1. Use EIDE/ATAPI for your disks (don’t use SATA or SCSI).
  2. Install Patch 4 immediately after first boot—it adds the modern drivers and fixes (Y2K) that make the system stable.

Choosing the VESA VBE display driver during setup gives you a working color desktop up to 1600 × 1200 and smooth window redraws.

(next section will cover the detailed VirtualBox configuration and installation walkthrough, with screenshots of each key step)


VirtualBox settings

The following settings are proven to work although 16mb for video is unused. I believe the VESA VBE modes max out at 8mb but the VM doesn’t complain if you give it a little extra.

The overview of settings for the nextcube VM
128-256mb RAM, 1 cpu only, PIIX3 chipset, Ps/2 Mouse and I/O APIC.
You should remove the floppy and network from boot order after install to speed up boot.
Make sure to use VBoxVGA and no 3d acceleration. Scaling helps on high res host screens
PIIX3 and Use Host I/O Cache for the hard drive. Keep vdi hdd files to 2gb or less for compatibility.
Do not use ssd
Critical. For Bridged Adapter, make sure to choose PCnet-PCII (Am79C970A) and Promiscuous mode
Finally make sure to disable USB or you will get Virtual Box errors about the mouse on boot.

🧩 Install Process

Once your VM is configured, attach the Install floppy and the User CD, then boot the system; follow the on-screen prompts until you’re asked for the driver floppy — insert it when prompted.

When choosing devices for the hard disk and CD-ROM, press 7 twice to reveal additional options.
Select Option 5: EIDE/ATAPI, which is the correct choice for modern emulated hardware.

You want to choose option 5 Primary/Secondary(Dual) EIDE and ATAPI Device Controllers (v4.01)
for both the hard drive and cdrom. It will prompt you twice to do this.

Continue through the installer — there are few non-default choices, and everything is shown clearly in the tutorial video linked above.

After the base install completes and the system reboots, you’ll be prompted once more to insert the driver disk before the GUI portion of setup continues.

From there, NeXTSTEP will copy files to the hard drive — this step takes a while, so be patient.
When it finishes, you’ll be asked to select your keyboard layout and language to complete setup.


I’ve gone through this process many times while preparing this guide — it’s straightforward once you know the key steps.
The video walkthrough covers everything visually, but if you prefer a written version with screenshots, check out the excellent 🔗 Build Your Own NeXT with a Virtual Machine (PDF).


Don't worry, you'll be playing Doom in no time! Still a blast.

Post-Install steps

At this point, you should have a basic install of OpenStep on your virtual hard drive. To finish what I would consider to be required steps for usability, you’ll want to do the following. I would suggest making liberal use of snapshots in VirtualBox as you progress through this process. It’s easy to mess up if you aren’t paying attention.

Install OpenStep Mach Patch 4

The first thing you should do after installation and initial setup is to install OS42MachUserPatch4.pkg.

🔗 DOWNLOAD fsck.technology
📝 RELEASE NOTES OS42Patch4ReleaseNotes.pdf.

Already installed this one. Good!

This patch includes:

  • Updated kernel and device drivers
  • Support for VESA VBE video (which allows color and higher resolutions on modern emulators and hardware)
  • Enhanced EIDE/SATA disk support
  • Fixes for network and TCP/IP stack issues
  • Updated system libraries and runtime components
  • Y2K handling fixes

Set Display Driver (VESA VBE)

After installing OS42MachUserPatch4, you can launch /NextAdmin/Configure.app, navigate to Display and choose the VESA VBE driver. This will allow you to set a variety of higher resolutions up to 1600x1200/32 in color! Definitely do this

Configure.app -> Display -> Vesa VBE driver configured.

Set password for me and root to enable LoginWindow

OpenStep uses NetInfo to manage user accounts, not the traditional /etc/passwd files found on most Unix systems.
To set passwords safely and ensure LoginWindow works correctly:

Make sure to change password here and not with passwd
  1. Log in as root.
    (If the system logs in automatically as me, open a terminal and run su - to switch to root.)

  2. Launch User Manager:
    Open /NextAdmin/UserManager.app.

  3. Open the user record:

    • From the User menu, choose Open.
    • In the dialog, navigate to /users/me.
    • To set the root password, open /users/root instead.
  4. Set the password:

    • Click in the Password field and enter your new password.
    • Choose User → Save from the menu.
    • You’ll be prompted to re-enter it for confirmation.
  5. Repeat for both me and root users.

After saving both accounts, reboot or log out — the LoginWindow should now appear at startup.

💡 Tip: Avoid using the passwd command.
It updates /etc/passwd but doesn’t synchronize with NetInfo, which can break authentication.
Always use UserManager.app or the following command instead:

su
niutil -createprop . /users/username passwd "newpassword"
You should now see a login window instead of being logged in automatically as `me`

Configure Networking

You’ll need to edit /etc/hostconfig. Here is the one I use in nextcube, the VirtualBox OVA Appliance.

[ me@nextcube ]:~ $  cat /etc/hostconfig
#
# /etc/hostconfig
#
# This file sets up shell variables used by the various rc scripts to
# configure the host.  Edit this file instead of rc.boot.
#
# Warning:  This is sourced by /bin/sh.  Make sure there are no spaces
#           on either side of the "=".
#
# There are some special keywords used by rc.boot and the programs it
# calls:
#
#       -AUTOMATIC-     Configure automatically
#       -YES-           Turn a feature on
#       -NO-            Leave a feature off or do not configure
#

HOSTNAME=nextcube
INETADDR=192.168.1.50
ROUTER=192.168.1.1
IPNETMASK=255.255.255.0
IPBROADCAST=-AUTOMATIC-
NETMASTER=-YES-
YPDOMAIN=-NO-
TIME=-AUTOMATIC-

You will then need to edit /etc/resolv.conf. Mine looks like this:

OpenStep needs /etc/resolv.conf to resolve domain names to IP addresses. This file tells the system which DNS servers to query and what domain to use for hostname lookups.

Create or edit /etc/resolv.conf as root:

domain darkstar.home
nameserver 192.168.1.1
  • domain: Your local network domain (often your home network name or LAN domain)
  • nameserver: The IP address of your DNS server (typically your router/gateway)

You can add multiple nameserver lines if you have backup DNS servers. The system will try them in order if the first one doesn’t respond.

Without this file configured, you won’t be able to browse websites by name in OmniWeb or use any network tools that require DNS—everything would need to be accessed by IP address directly.


Annoying Floppy Issue

Out of the box, due to a quirk of virtualization, you will see a popup every boot like this

Rogue floppy bug

Once I had finished installing floppies I removed the floppy controller from VirtualBox which effectively suppresses the message. It is extremely easy to add it back if you need a floppy by shutting down the VM, adding a Floppy controller and booting again. I recommend this step for quality-of-life.

To remove, go to the VM Settings and under storage highlight the floppy controller and click the little remove icon. Adding it back is easy as well just do it when the VM is powered down

Easy peasy

NetInfo Parent issue

One annoying configuration issue I encountered without clear documentation was with netinfod searching for a parent on boot. As configured during install, netinfod will broadcast for a NetInfo parent regardless of whether NETMASTER=-YES- is set in /etc/hostconfig or not.

This causes long timeouts and requires user intervention to press c to continue booting

The fix is:

  • Make sure that root (andme) have a password set
  • Log in as root
  • Open /NextAdmin/NetinfoManager.app
  • Navigate to /machines/broadcasthost and double-click on broadcasthost to edit
  • Highlight the serves property then from the menu select Edit and Delete
  • Save by selecting Directory from the menu and Save
  • Reboot and the message should no longer appear.

Upcoming articles to finish building the OVA appliance.

We still need to install the developer tools, get a better shell, get a better editor and replace the broken awk with a gnu version, install fileutils and textutils, vim, X11R6, and build some sensible dotfiles. Stay tuned! Coming shortly.

The appliance includes CUBX Windows, an X11R6 client system with xterm and familiar x11 apps

🎥 Video & Download

This was the tutorial I followed that worked the best. Make sure to grab the zip file. Otherwise you can find the install images and patches from the links in the next section.

💾 Archives & File Resources

🔍 Additional Resources

Conclusion

If you’ve followed along, you now have a complete OpenStep 4.2 environment running on modern hardware—networking, color video, and development tools included. It’s a fully functional UNIX system from another era, and yet, it still integrates cleanly into a modern lab network.

Make sure to check out Part 2 where we’ll complete the build by adding developer tools, a modern shell environment, improved editors, GNU utilities, and X11 - transforming this into a genuinely usable Unix workstation.

I’d love to hear feedback. Email me at feedback@adminjitsu.com