Running NetBSD on emulated hardware

About NetBSD on emulators

Software emulators


About NetBSD on emulators

Introduction

If you are developer of embedded applications, or if you need to demonstrate or test your software on hardware platform that is not available for some reason, you definitively need a software emulator. Sometimes emulator becomes even an ultimate solutions allowing to run whole computer networks on the single machine. At last, you may want to see (just for fun) how have performed such dinosaurs as old good PDPs and VAXes.

This document is intended to describe where to find deserving equivalents of various hardware in order to set up and running NetBSD Operating System.

How to setup NetBSD on an emulator

An answer to this question mainly depends on which emulator you use. Very often an emulator's home site contains all information you may need to setup a guest operating system, including NetBSD. Please refer to the section called “Software emulators” for details.

NetBSD ports and emulators matrix

In the table below Yes means complete support of latest NetBSD release available (or referred in parentheses). Untested state means that it should be possible to use NetBSD on this particular platforms, but this was not confirmed yet. Almost refers to cases, when some troubles were found during testing. Please see also footnotes for details.

Ports \ Emulators bochs gxemul pearpc qemu simh simics ski tme giano xm6i
algor   Yes                
amd64 Untested     Yes   Yes        
arc   Yes   Almost[a]            
cats   Yes                
cobalt   Yes                
dreamcast   Yes[b]                
emips                 Yes  
evbarm   Yes[c]   Yes            
evbmips   Yes[d]                
hpcmips   Yes                
i386 Yes     Yes            
ia64             Experimental[e]      
landisk   Yes                
macppc   Yes Almost[f] Yes[g]            
netwinder   Yes                
pmax   Yes                
pmppc   Yes                
prep   Yes[h]   Untested            
sgimips   Yes                
sparc       Yes       Yes    
sparc64       Yes       Yes    
sun2               Yes    
sun3               Yes    
vax         Yes       Yes  
x68k                   Yes

[a] NetBSD/arc 5.0.2 on qemu gets panic on heavy SCSI disk load.

[b] Ramdisk kernel or a Live CD required. root-on-NFS is not possible yet.

[c] Latest working version is NetBSD 2.1; problem is in GXemul's ARM emulation.

[d] gxemul emulates Malta.

[e] Used as platform for NetBSD/ia64 port development.

[f] Crashes while booting.

[g] Qemu 5.2.0nb5, 2GB memory, default CPU.

[h] Latest working version is NetBSD 2.1; NetBSD 3.x failed with disk controller problems.


Software emulators

Bochs

The program bochs is a highly portable open source x86 PC emulator written in C++, and runs on most popular platforms. It includes emulation of the Intel x86 CPU, common IO devices, and a custom BIOS. Currently, bochs can be compiled to emulate a 386, 486, Pentium, Pentium PRO or AMD64 CPU.

Packaged as emulators/bochs.

GXemul

GXemul is a machine emulator. The initial goal was to write a simple 64-bit MIPS emulator for running multiprocessor experiments with a microkernel, but the emulator can be used for many other things. While some simulators only simulate a CPU, GXemul also simulates other hardware components, making it possible to use the emulator to run unmodified operating systems, such as NetBSD, OpenBSD, or Linux.

Packaged as emulators/gxemul.

QEMU

QEMU is a FAST! processor emulator using dynamic translation to achieve good emulation speed, QEMU has two operating modes:

  • Full system emulation. In this mode, QEMU emulates a full system (for example a PC), including a processor and various peripherals. It can be used to launch different Operating Systems without rebooting the PC or to debug system code.
  • User mode emulation (Linux host only). In this mode, QEMU can launch Linux processes compiled for one CPU on another CPU. It can be used to launch the Wine Windows API emulator or to ease cross-compilation and cross-debugging.

Packaged as emulators/qemu.

PearPC

PearPC is an architecture-independent PowerPC platform emulator capable of running most PowerPC operating systems.

Packaged as emulators/pearpc.

SIMH

SIMH is Bob Supnik's historical computer simulator, including: altair altairz80 eclipse gri h316 hp2100 i1401 i1620 ibm1130 id16 id32 nova pdp1 pdp10 pdp11 pdp15 pdp4 pdp7 pdp8 pdp9 s3 sds vax. See NetBSD SIMH HOW-TO for instructions on how to install NetBSD/vax on simh.

Packaged as emulators/simh.

Ski

Ski is an HP-proprietary instruction-set simulator for the IA-64 (Itanium Processor Family, IPF) architecture and is intended primarily for application- and kernel-level software development.

Packaged as emulators/ski.

The Machine Emulator

The Machine Emulator, or tme, is a program that provides a general-purpose framework for computer emulation. The first machine that tme could emulate was the Sun 2/120, one of the first widely available Sun workstations. Currently, it includes support for Sun 3/150, SPARCstation 2 and Ultra 1 as well. Note arthur's ILVSUN3 page has various useful information about TME.

Packaged as emulators/tme.

Wind River Simics simulator

Software developers writing code for non-desktop systems often face a problem: on what do they run their code to test and debug it? Simics Developer makes it possible to run any electronic system on the developer's desktop machine. This is true for small embedded systems, million dollar enterprise servers or complex clustered multiprocessor systems.

Commercial product.

Microsoft Giano

Giano is a full-system simulator capable of simulating an arbitrary system. The hardware configuration simulated by Giano is specified using PlatformXML. The default installation comes with a number of demonstration configurations, including systems based on eMIPS and VAX. See How to install NetBSD/emips-current to Microsoft Giano wiki for instructions of NetBSD/emips on Giano.

Source and binaries are available for non-commericial use. Giano requires a Windows-based host.

XM6i

XM6i is a cross platform X68000/X68030 emulator. XM6i is based on X68000 emulator XM6, but XM6i also supports MC68030 MMU and it's developed to run NetBSD/x68k on it. See instructions in NetBSD/x68k on XM6i ver 0.41 page (in Japanese) for more details.

Currently Microsoft Windows, NetBSD/i386 and NetBSD/amd64 6.1 (that also require pkgsrc wxGTK28), Mac OS X 10.6 and 10.7, and CentOS 6.3/x86_64 binaries are available.