GXemul - Documentation (0.6.1) (original) (raw)
The emulation, however, is not necessarily complete enough to support previously untested guest operating. In many cases, the emulated devices have been implemented "on demand" as required by a specific guest operating system, and trying to run another operating system (or even a different version of a supported one) will trigger new things that are not yet implemented in the emulator. This page lists specific versions that are known to work. What this usually means is:
Printing "Hello world" is considered trivial, whereas e.g. building GXemul itself inside the emulated guest operating system is considered non-trivial. As this takes quite some time, this is not always done.
Although it is possible to let a guest OS access real hardware, such as harddisks, it is much more flexible and attractive to simulate harddisks using files residing in the host's filesystem. See this section for details about how to use disk images.
While these files may look large (several GBs is common for hard disks), on Unix-like file systems, files may contain holes, which means that the disk image files do not actually use up all that space from the start, but rather grows only as data is written to it. To the guest operating system, the harddisk image looks and acts like a real disk.
In addition to the "working" guest operating systems listed on this page, there is a page about unsupported modes or guest operating systems, which you may find interesting. These are either mode that are not-yet-working, or modes that did work at some point in time but are now broken.
The version numbers of the various operating systems were the latest versions that worked satisfactory with GXemul at the time this page was updated; if new versions have been released since then, they could work too, but there is no guarantee. New versions of guest operating systems may trigger previously untriggered bugs in the emulator, or they may make use of devices in the machine that the emulator simply doesn't have yet.
Some operating systems are listed with a version number _less_than what was available at the time of this GXemul release (e.g. NetBSD/prep). The reasons for this is usually one of the following:
NetBSD/pmax was the first guest OS that could beinstalledonto a disk image in GXemul. The device emulation of the DECstation 5000/200 is reasonably complete; it should be enough to emulate a networked X-windows-capable workstation.
To install NetBSD/pmax onto a harddisk image in the emulator, follow these instructions:
(NetBSD 8.0 can also be installed, but for some reason, the Xorg server is missing after installation, so 7.1.2 is preferred if you want to use X.)
If you do not want to use the graphical framebuffer during the install, you can skip the -X command line option. Remember to enter xterm instead of vt100 when asked about your terminal type, if you do this.
You can also add -Y 2 to the command line options, if you feel that the default framebuffer window is too large.
When the installation has finished, the following command should start NetBSD from the harddisk image:
Remove -X if you only want a serial console.
If you selected to install xdm, you may not be able to login as root unless you also set a root password.
It is possible to install and run NetBSD/arcon an emulated Acer PICA-61 in the emulator.
To install NetBSD/arc from a CDROM image onto an emulated harddisk image, follow these instructions:
You can now use the generic NetBSD/arc kernel to boot from the harddisk image, using the following command:
Known issue: The clock may be running too fast inside the emulated machine.
It is possible to install NetBSD/hpcmips onto a disk image, on an an emulated MobilePro 770 or 800. (MobilePro 780 and 880 might work too, but I don't test those for every release of the emulator. They have unaligned framebuffers, and run a bit slower.)
These instructions show an example of how to install NetBSD/hpcmips on an emulated MobilePro 770:
(While it is possible to install and run NetBSD/hpcmips without the -Xcommand line option (i.e. using serial console), NetBSD 4.0.1's default/etc/ttys file after a full install did not have/dev/console enabled, so you needed to edit /etc/ttysbefore you reboot after the install, to be able to log in. Whether this has changed after 4.0.1, I don't know.)
If everything worked, NetBSD should now be installed on the disk image. Use the following command line to boot the emulated hpcmips machine:
When you have logged in as root, you can use startx to start X Windows, but there is no mouse support yet so only keyboard input is available. This makes it a bit akward to use X.
Known issues: The clock may go too fast inside the emulator.
NetBSD/evbmips can run in GXemul on an emulated Malta evaluation board, with a 5Kc (MIPS64) or 4Kc (MIPS32) processor. 5Kc is the default.
One way to install the NetBSD/evbmips distribution onto a disk image is to install the files using another (emulated) machine.
The following instructions will let you install NetBSD/evbmips onto a disk image, from an emulated DECstation 3MAX machine:
NOTE: To select a 4Kc (MIPS32) CPU instead of the default 5Kc (MIPS64) CPU, add -C 4Kc to the command line. There are at least two things that differ:
The installation instructions above create a filesystem_without_ a disklabel, so there is only one ffs partition and no swap. You will need to enter the following things when booting with the generic kernel:
The clock is probably wrong (showing the year 2118 instead of 2018), and it goes too fast inside the emulator. If it hangs during boot-up, before the login prompt has appeared, type CTRL-C in the xterm window.
NetBSD/algor can run in GXemul on an emulated Algorithmics P5064 evaluation board.
One way to install the NetBSD/algor distribution onto a disk image is to install the files using another (emulated) machine.
The following instructions will let you install NetBSD/algor onto a disk image, from an emulated DECstation 3MAX machine:
The installation instructions above create a filesystem_without_ a disklabel, so there is only one ffs partition and no swap. You will need to enter the following things when booting with the generic kernel:
NetBSD/sgimips can run in GXemul on an emulated SGI O2 (also known as IP32). The SCSI controller is not emulated yet, so NetBSD needs to boot with root-on-NFS:
You might want to log in as root on the server machine, and run tcpdump -lnvv or similar, to see that what the client machine actually does on the network.
It should now be possible to boot NetBSD/sgimips using the NetBSD/pmax nfs server, using the following commands: (NOTE! Execute these two commands in separate xterms!)
_**gxemul @configserver**_
_**gxemul @configclient**_
If/when asked for "root device:" etc. on the client machine, enter the following values:
_root device: **mec0**_
_dump device: **(leave blank)**_
_file system (default generic): **(leave blank)**_
_.._
_init path (default /sbin/init): **(leave blank)**_
_Enter pathname of shell or RETURN for /bin/sh: **(leave blank)**_
_Terminal type? [unknown] **xterm**_
_.._
_# **exit** (to leave the single-user shell)_
Note: Netbooting like this is very slow, so you need a lot of patience.
### NetBSD/cats:
It is possible to install and runNetBSD/cats in GXemul.
To install NetBSD/cats onto a disk image, follow these instructions:
1. Create an empty harddisk image, which will be the root disk that you will install NetBSD/cats onto: dd if=/dev/zero of=nbsdcats.img bs=1024 count=1 seek=3000000 2. Download the NetBSD/cats ISO image and the generic and install kernels: ftp://ftp.netbsd.org/pub/NetBSD/iso/5.0/catscd-5.0.iso ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0/cats/binary/kernel/netbsd.aout-GENERIC.gz ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0/cats/binary/kernel/netbsd.aout-INSTALL.gz 3. Start the installation like this: gxemul -XEcats -d nbsdcats.img -d catscd-5.0.iso netbsd.aout-INSTALL.gz and proceed like you would do if you were installing NetBSD on a real CATS from CDROM.
Note that there are long delays during bootup.
Alternatively, to install from FTP, you can skip downloading the ISO, and start the install without -d catscd-5.0.iso. Suitable network settings are IP 10.0.0.1, gateway/default route 10.0.0.254, netmask 255.0.0.0, nameserver 10.0.0.254.
If everything worked, NetBSD should now be installed on the disk image. Use the following command line to boot the emulated CATS machine:
_**gxemul -XEcats -d nbsdcats.img netbsd.aout-GENERIC.gz**_
### NetBSD/evbarm:
NetBSD/evbarm can run in GXemul on an emulated IQ80321 evaluation board.
It is tricky to install, because there is (as far as I know) no INSTALL kernel. One way to install the NetBSD/evbarm distribution onto a disk image is to install the files using another (emulated) machine.
The following instructions will let you install NetBSD/evbarm onto a disk image, from an emulated CATS machine:
1. Download a NetBSD/cats 3.1 ramdisk kernel: wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/cats/binary/kernel/netbsd.aout-INSTALL.gz 2. Create an empty harddisk image, which will be the disk image that you will install NetBSD/evbarm onto: dd if=/dev/zero of=nbsdiq80321.img bs=1024 count=1 seek=999000 3. Download an IQ80321 kernel with wdc support, and the 2.1 ISO image: ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.1/evbarm/binary/kernel/netbsd-wd0-IQ80321.gz ftp://ftp.netbsd.org/pub/NetBSD/iso/2.1/evbarmcd.iso 4. Now let's extract the files from the CD-ROM image onto the IQ80321's disk image. Start the CATS machine using the following command line: gxemul -XEcats -d nbsdiq80321.img -d evbarmcd.iso netbsd.aout-INSTALL.gz Exit from the installer, and execute the following commands as root: | | disklabel -I -i wd0 (enter suitable commands, e.g. a, 4.2BSD, 1c, 750M, b, swap, a, 200M, P, W, y, Q) newfs /dev/wd0a; mount /dev/wd0a /mnt2; cd /mnt2 mount /dev/cd0a /mnt; sh for a in /mnt/*/binary/sets/[bcegmt]*.tgz; do echo a;tarzxfpa; tar zxfp a;tarzxfpa; done exit cd dev; sh ./MAKEDEV all; cd ../etc echo rc_configured=YES >> rc.conf echo "/dev/wd0a / ffs rw 1 1" > fstab echo "/dev/wd0b none swap sw 0 0" >> fstab cd /; umount /mnt; umount /mnt2; sync; halt | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
You should now be able to boot NetBSD/evbarm using this command:
_**gxemul -x -E iq80321 -d nbsdiq80321.img netbsd-wd0-IQ80321.gz**_
### NetBSD/netwinder:
It is possible to run NetBSD/netwinderin GXemul.
There is no INSTALL ramdisk kernel, so one way to install the NetBSD/netwinder distribution onto a disk image is to install the files using another (emulated) machine. The following instructions will let you install the NetBSD/netwinder distribution onto a disk image, from an emulated DECstation 3MAX machine:
1. Download a NetBSD/pmax (DECstation) install RAMDISK kernel: ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/pmax/binary/kernel/netbsd-INSTALL.gz 2. Create an empty harddisk image, which will be the disk image that you will install NetBSD onto: dd if=/dev/zero of=nbsdnetwinder.img bs=1024 count=1 seek=999000 3. Download the generic kernel and the 3.1 ISO image: ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/netwinder/binary/kernel/netbsd-GENERIC.gz ftp://ftp.netbsd.org/pub/NetBSD/iso/3.1/netwindercd-3.1.iso 4. Start the emulated DECstation machine like this: gxemul -e 3max -d nbsdnetwinder.img -d netwindercd-3.1.iso netbsd-INSTALL.gz 5. At the Terminal type? [rcons] prompt, type CTRL-Bto simulate a CTRL-C sent to NetBSD/pmax. Then execute the following commands: | | newfs /dev/sd0c mount /dev/cd0c /mnt mkdir /mnt2; mount /dev/sd0c /mnt2 cd /mnt2; sh for a in /mnt/*/binary/sets/*.tgz; do echo a;tarzxfpa; tar zxfp a;tarzxfpa; done exit cd dev; sh ./MAKEDEV all; cd ../etc echo rc_configured=YES >> rc.conf echo "/dev/wd0c / ffs rw 1 1" > fstab cd /; umount /mnt; umount /mnt2; halt | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
NetBSD/netwinder is now installed on the disk image. The following command line can be used to start NetBSD/netwinder:
_**gxemul -X -E netwinder -d nbsdnetwinder.img netbsd-GENERIC.gz**_
This will result in a 1024x768 framebuffer. Add -Y2 to the command line if you want to scale it down to 512x384.
Note: The installation instructions above create a filesystemwithout a disklabel, so there is only one ffs partition and no swap. You will need to enter the following things when booting with the generic kernel:
_root device (default wd0a): **wd0c**_
_dump device (default wd0b): (just press enter)_
_file system (default generic): (just press enter)_
_init path (default /sbin/init): (just press enter)_
Known bugs/problems:
* There is a long delay when starting up NetBSD/netwinder (several seconds even on a very fast host machine), so you need to be patient. * There is a minor bug in the keyboard device, so you need to press a key (any key) before typing wd0c. * When halting/rebooting NetBSD/netwinder, the emulator prints a message saying something about an internal error. This doesn't matter; ignore the message.
### NetBSD/prep:
It is possible to install and run NetBSD/prep 2.1 in GXemul on an emulated IBM 6050 (PowerPC) machine. (Newer versions of NetBSD/prep use the wdc controller in a way which isn't implemented in GXemul yet, or there are bugs in GXemul's PowerPC CPU emulation.)
To install NetBSD/prep onto a disk image, follow these instructions:
1. Create an empty harddisk image, which will be the root disk that you will install NetBSD/prep onto: dd if=/dev/zero of=nbsdprep.img bs=1024 count=1 seek=1000000 2. Download the NetBSD/prep 2.1 ISO image and the generic kernel: ftp://ftp.netbsd.org/pub/NetBSD/iso/2.1/prepcd.iso ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.1/prep/binary/kernel/netbsd-GENERIC.gz 3. Start the installation like this: gxemul -X -e ibm6050 -d nbsdprep.img -d rdb:prepcd.iso -j prep/binary/kernel/netbsd-INSTALL.gz 4. Installation is a bit unsmooth, possibly due to bugs in GXemul, possibly due to bugs in NetBSD itself; others have been having problems on real hardware: http://mail-index.NetBSD.org/port-prep/2005/11/25/0004.html. Creating an MBR slice and a disklabel with sysinst bugs out, so some things have to be done manually: At "(I)nstall, (S)hell, or (H)alt", chooses. # fdisk -u wd0 Do you want to change our idea of what BIOS thinks? [n] (just press ENTER) Which partition do you want to change?: [none] 0 sysid: ... (just press ENTER) start: ... 1cyl size: ... (just press ENTER) Which partition do you want to change?: [none] (press ENTER) Should we write new partition table? [n] y # disklabel -I -i wd0 partition> a Filesystem type [?] [unused]: 4.2BSD Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 1c Partition size ('$' for all remaining) [0c, 0s, 0M]: 900M partition> b Filesystem type [?] [unused]: swap Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: a Partition size ('$' for all remaining) [0c, 0s, 0M]: $ partition> W Label disk [n]? y partition> Q # newfs wd0a # sysinst Choose to install onto wd0. Choose "a: Edit the MBR partition table" when presented with that option. Choose the 'a' partition/slice, set the 'e' ("active") and 'f' ("install") fields to Yes, and then choose "x: Partition table OK". Choose "b: Use existing partition sizes" in the next menu. Select partition 'a' and press ENTER. Set field 'k' (mount point) to '/'. Get out of the partitioner by selecting "x: Partition sizes ok" twice. At "Write outside MBR partition? [n]:", just pressENTER. Install from CD-ROM, device wd1c.
If everything worked, NetBSD should now be installed on the disk image. Use the following command line to boot the emulated machine:
_**gxemul -X -e ibm6050 -d nbsdprep.img netbsd-GENERIC.gz**_
When asked which the root device is, type wd0 and just press ENTER to select the default values for dump device, file system type, and init path.
### NetBSD/macppc:
It is possible to install and run NetBSD/macppc in GXemul on an emulated generic PowerPC machine. No specific Machintosh model is emulated, but it is enough to for NetBSD to recognize it.
To install NetBSD/macppc onto a disk image, follow these instructions:
1. Create an empty harddisk image, which will be the root disk that you will install NetBSD/macppc onto: dd if=/dev/zero of=nbsdmacppc.img bs=1024 count=1 seek=3000000 2. Download the NetBSD/macppc 4.0.1 ISO image and a generic kernel: ftp://ftp.netbsd.org/pub/NetBSD/iso/4.0.1/macppccd-4.0.1.iso ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-4.0.1/macppc/binary/kernel/netbsd-GENERIC.MP.gz 3. Start the installation like this: gxemul -x -e g4 -d nbsdmacppc.img -d b:macppccd-4.0.1.iso -j macppc/binary/kernel/netbsd-INSTALL and continue as you would do when installing NetBSD on a real machine.
If everything worked, NetBSD/macppc should now be installed on the disk image.
Use the following command line to boot the emulated machine:
_**gxemul -x -e g4 -d nbsdmacppc.img netbsd-GENERIC.MP.gz**_
If asked about root device, enter wd0.
### NetBSD/pmppc:
NetBSD/pmppc can run in GXemul on an emulated Artesyn PM/PPC board. Currently, no SCSI or other disk controller is emulated for this machine type, but it is possible to run NetBSD with root-on-nfs.
These setup steps will let you run NetBSD/pmppc with root-on-nfs:
1. First of all, the "nfs server" machine must be set up. This needs to have a 750 MB /tftpboot partition.Install NetBSD/pmax 3.1 from CDROM. (Don't forget to add the extra partition!) 2. Configure the nfs server machine to act as an nfs server. Start up the emulated DECstation: gxemul -e 3max -d nbsdpmax.img and enter the following commands as root inside the emulator: | | echo hostname=server >> /etc/rc.conf echo ifconfig_le0=\"inet 10.0.0.2\" >> /etc/rc.conf echo nameserver 10.0.0.254 >> /etc/resolv.conf echo 10.0.0.254 > /etc/mygate echo /tftpboot -maproot=root 10.0.0.1 > /etc/exports echo rpcbind=YES >> /etc/rc.conf echo nfs_server=YES >> /etc/rc.conf echo mountd=YES >> /etc/rc.conf echo bootparamd=YES >> /etc/rc.conf printf "client root=10.0.0.2:/tftpboot \\\n swap=10.0.0.2:/tftpboot/swap\n" > /etc/bootparams echo "bootps dgram udp wait root /usr/sbin/bootpd bootpd -d 4 -h 10.0.0.2" >> /etc/inetd.conf cat >> /etc/bootptab client:\ :ht=ether:\ :ha=102030000010:\ :sm=255.0.0.0:\ :lg=10.0.0.254:\ :ip=10.0.0.1:\ :rp=/tftpboot: (press CTRL-D) echo "10:20:30:00:00:10 client" > /etc/ethers echo 10.0.0.1 client > /etc/hosts reboot | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 3. Download the NetBSD/pmppc CD-ROM iso image, and the GENERIC kernel: ftp://ftp.netbsd.org/pub/NetBSD/iso/3.1/pmppccd-3.1.iso ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-3.1/pmppc/binary/kernel/netbsd-PMPPC.gz 4. Start the DECstation emulation again: gxemul -e 3max -d nbsdpmax.img -d pmppccd-3.1.iso and extract the files from the PM/PPC CD-ROM image to the DECstation disk image: | | cd /tftpboot; mount /dev/cd0a /mnt for a in /mnt/*/binary/sets/[bcemt]*; do echo a;tarzxfpa; tar zxfp a;tarzxfpa; done echo 10.0.0.2:/tftpboot / nfs rw 0 0 > /tftpboot/etc/fstab echo rc_configured=YES >> /tftpboot/etc/rc.conf echo 10.0.0.254 >> /tftpboot/etc/mygate echo nameserver 10.0.0.254 >> /tftpboot/etc/resolv.conf echo rc_configured=YES >> /tftpboot/etc/rc.conf dd if=/dev/zero of=swap bs=1024 count=65536 cd /tftpboot/dev; sh MAKEDEV all cd /; umount /mnt; halt | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 5. Create a configuration file called config_client: | | ! Configuration file for running NetBSD/pmppc diskless with ! a NetBSD/pmax machine as the nfs server. net( add_remote("localhost:12444") ! the server local_port(12445) ! the client ) machine( name("client machine") serial_nr(1) type("pmppc") load("netbsd-PMPPC.gz") ) | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ... and another configuration file for the server,config_server: | | net( local_port(12444) ! the server add_remote("localhost:12445") ! the client ) machine( name("nfs server") serial_nr(2) type("dec") subtype("5000/200") disk("nbsd_pmax.img") ) | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
It should now be possible to boot NetBSD/pmppc using the NetBSD/pmax nfs server, using the following commands: (NOTE! Execute these two commands in separate xterms!)
_**gxemul @configserver**_
_**gxemul @configclient**_
You might want to log in as root on the server machine, and run tcpdump -lnvv or similar, to see that what the client machine actually does on the network.
When asked for "root device:" etc. on the client machine, enter the following values:
_root device: **tlp0**_
_dump device: **(leave blank)**_
_file system (default generic): **(leave blank)**_
_.._
_init path (default /sbin/init): **(leave blank)**_
### NetBSD/landisk:
NetBSD/landisk can run in GXemul.
The NetBSD/landisk distribution does not include any INSTALL kernel, so it must be installed using another (emulated) machine.
The following instructions will let you install NetBSD/landisk onto a disk image, using an emulated CATS machine:
1. Download a NetBSD/cats install kernel: ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-4.0.1/cats/binary/kernel/netbsd.aout-INSTALL.gz 2. Create an empty harddisk image, which will be the disk image that you will install NetBSD/landisk onto: dd if=/dev/zero of=nbsdlandisk.img bs=1024 count=1 seek=900000 3. Download NetBSD/landisk and make an iso image of it: wget -np -l 0 -r ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/landisk cp ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/landisk/binary/kernel/netbsd-GENERIC.gz . mkisofs -U -o landisk.iso ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1 4. Start the emulated CATS machine like this: gxemul -XEcats -d nbsdlandisk.img -d landisk.iso netbsd.aout-INSTALL.gz 5. Exit the installer, then execute the following commands: | | disklabel -i -I wd0 (for example 'a', '4.2BSD', '1c', '700M', 'b', 'swap', '701M', '$', 'P', 'W', 'y', and 'Q') newfs /dev/wd0a mount /dev/cd0c /mnt mkdir /mnt2; mount /dev/wd0a /mnt2 cd /mnt2; sh ls -R /mnt for a in /mnt/*/binary/sets/[bcekmt]*.tgz; do ls -R /mnt > /dev/null; echo a;tarzxfpa; tar zxfp a;tarzxfpa; done exit cd dev; sh ./MAKEDEV all; cd ../etc echo rc_configured=YES >> rc.conf echo "/dev/wd0a / ffs rw 1 1" > fstab echo "/dev/wd0b none swap sw 0 0" >> fstab cd /; umount /mnt; umount /mnt2; halt | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
NOTE: For some reason, reading the iso image created by mkisofs does not work as expected. The "ls -R /mnt" commands included above seem to make it work. (Yes, this is a serious bug, but I am not sure how to diagnose it.)
You should now be able to boot NetBSD/landisk using this command:
_**gxemul -x -E landisk -d nbsdlandisk.img netbsd-GENERIC.gz**_
### NetBSD/dreamcast:
Moved here.
### OpenBSD/pmax:
Installing OpenBSD/pmax is a bit harder than installing NetBSD/pmax. You should first read the section above on how to install NetBSD/pmax, before continuing here. If you have never installed OpenBSD on any architecture, then you need a great deal of patience to do this. If, on the other hand you are used to installing OpenBSD, then this should be no problem for you.
OpenBSD/pmax died at release 2.8 of OpenBSD, so you should be aware of the fact that this will not give you an up-to-date OpenBSD system.
Following these instructions might work. If not, then use common sense and imagination to modify them as you see fit.
1. Create an empty harddisk image, which will be the root disk that OpenBSD installs itself onto: dd if=/dev/zero of=obsdpmax.img bs=1 count=512 seek=900000000 2. Download the entire pmax directory from the ftp server: (approx. 99 MB) wget -r ftp://ftp.se.openbsd.org/pub/OpenBSD/2.8/pmax/ 3. Execute the following commands: | | mv ftp.se.openbsd.org/pub/OpenBSD/2.8/pmax/simpleroot28.fs.gz . gunzip simpleroot28.fs.gz chmod +w simpleroot28.fs <--- make sure |_ _| ------------------------------------------------------------------------------------------------------------------------------------------------ |_ _4. You now need to make an ISO image of the entire directory you downloaded. (I recommend using mkisofs for that purpose. If you don't already have mkisofs installed on your system, you need to install it in order to do this.)_ _mkisofs -o openbsdpmax2.8.iso ftp.se.openbsd.org/pub/OpenBSD/2.8/pmax**_ rm -rf ftp.se.openbsd.org (this directory is not needed anymore) 5. Start the emulator with all three (!) disk images: gxemul -e 3max -d obsdpmax.img -d b:simpleroot28.fs -j bsd -d c:openbsdpmax2.8.iso (If you add -X, you will run with the graphical framebuffer. This is REALLY slow because the console has to scroll a lot during the install. I don't recommend it.) 6. Go on with the installation as you would do if you were installing on a real machine. If you are not used to the OpenBSD installer, then this will most likely be a very uncomfortable experience. Some important things to keep in mind are: * rz0 is the rootdisk you wish to install onto. * rz1 is the simpleroot image. * rz2 is the CDROM containing the "install sets". * When asked for the "root device?", enter rz1. * At "Enter pathname of shell or RETURN for sh:", press enter. * At the # prompt, do the following: fsck /dev/rz1a (and mark the filesystem as clean) mount /dev/rz1a / mkdir /kern mkdir /mnt2 mount -t kernfs kern kern ./install and proceed with the install. Good luck. :-) * Answer "y" when asked if you wish to configure the network. (See the section about installing NetBSD/pmax for suitable network settings.) * Install from "c" (cdrom), choose "rz2" as the cdrom device, and "/" as the directory containing the install sets. 7. For some unknown reason, the install script does not set the root password! The first time you boot up OpenBSD after the install, you need to go into single user mode and run passwd root to set the root password, or you will not be able to log in at all! gxemul -e 3max -d obsdpmax.img -d 2c:openbsdpmax2.8.iso -j bsd -o '-s' While you are at it, you might want to extract the X11 install sets as well, as the installer seems to ignore them too. (Perhaps due to a bug in the installer, perhaps because of the way I used mkisofs.) Execute the following commands in the emulator: _| | fsck /dev/rz0a mount / passwd root cd /; mount -t cd9660 /dev/rz2c /mnt; sh for a in /mnt/[xX]*; do tar zxvf $a; done ln -s /usr/X11R6/bin/Xcfbpmax /usr/X11R6/bin/X ln -s /dev/fb0 /dev/mouse **echo /usr/X11R6/lib >> /etc/ld.so.conf ldconfig sync halt | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
NOTE: It is also possible to install via ftp instead of using a CDROM image. This is not much less awkward, you still need the simpleroot filesystem image, and you still have to manually add the X11 install sets and set the root password, and so on.
Once you have completed the installation procedure, the following command will let you boot from the new rootdisk image:
_**gxemul -e 3max -X -o '-aN' -d obsdpmax.img -j bsd**_
(Normally, you would be asked about which root device to use (rz0), but using -o '-aN' supresses that.)
When asked for which terminal type to use, when logging in as root, enter rcons if you are using the graphical framebuffer,vt100 for text-mode. Use startx to start X windows.
### OpenBSD/cats:
It is possible to install and runOpenBSD/catsin GXemul. Unfortunately, "The OpenBSD/cats port was discontinued after the 4.0 release" according tohttp://www.openbsd.org/cats.html, so from a security perspective it is not up to date, but it is still possible to run for experimental purposes.
To install OpenBSD/cats onto an emulated harddisk image, follow these instructions:
1. Create an empty harddisk image, which will be the root disk that OpenBSD installs itself onto: dd if=/dev/zero of=obsdcats.img bs=1024 count=1 seek=1900000 2. Download the entire cats directory from the ftp server: wget -np -l 0 -r https://ftp.nluug.nl/OpenBSD/4.0/cats/ cp ftp.nluug.nl/OpenBSD/4.0/cats/bsd . cp ftp.nluug.nl/OpenBSD/4.0/cats/bsd.rd . (Replace ftp.se.openbsd.org with a server closer to you, for increased download speed.) 3. You now need to make an ISO image of the entire directory you downloaded. (I recommend using mkisofs for that purpose. If you don't already have mkisofs installed on your system, you need to install it in order to do this.) mkisofs -allow-lowercase -o openbsdcats4.0.iso ftp.nluug.nl/OpenBSD/ rm -rf ftp.nluug.nl (this directory is not needed anymore) 4. Start the emulator using this command line: gxemul -XEcats -d obsdcats.img -d openbsdcats4.0.iso bsd.rd and proceed like you would do if you were installing OpenBSD on a real CATS. (Install onto wd0, don't configure the network, install from CD.)
(Although it is possible to configure the network, IPv4 address 10.0.0.1, netmask 255.0.0.0, gateway/default route 10.0.0.254, and nameserver 10.0.0.254, the userland NAT-like networking layer is not stable enough yet to support a full install via ftp.)
NOTE: Make sure that you sync and rebootcorrectly once the installation is finished, or the /dev nodes may not have been written correctly to disk.
Once the install has finished, the following command should let you boot from the harddisk image:
_**gxemul -XEcats -d obsdcats.img bsd**_
### OpenBSD/landisk:
It is possible to install and runOpenBSD/landisk 6.3 in GXemul.
To install OpenBSD/landisk onto an emulated harddisk image, follow these instructions:
1. Create an empty harddisk image, which will be the root disk that OpenBSD installs itself onto: dd if=/dev/zero of=obsdlandisk.img bs=1024 count=1 seek=3500000 2. Download the Landisk RAMDISK kernel, the regular kernel, and the files needed to produce a working .iso from the ftp server, and create the .iso using the mkisofs tool (may be part of the cdrtools package): wget http://ftp.openbsd.org/pub/OpenBSD/6.3/landisk/base63.tgz http://ftp.openbsd.org/pub/OpenBSD/6.3/landisk/comp63.tgz http://ftp.openbsd.org/pub/OpenBSD/6.3/landisk/man63.tgz http://ftp.openbsd.org/pub/OpenBSD/6.3/landisk/bsd http://ftp.openbsd.org/pub/OpenBSD/6.3/landisk/bsd.rd mkisofs -J -o openbsdlandisk.iso base63.tgz comp63.tgz man63.tgz (The installer will complain about missing INSTALL.landisk and SHA256.sig files, but it seems to work anyway.) 3. Start the emulator using this command line (note the d: prefix): gxemul -E landisk -d obsdlandisk.img -d d:openbsdlandisk.iso bsd.rd and proceed like you would do if you were installing OpenBSD on a real landisk. The following hints are useful to get you through the installation: * Terminal type = xterm * Do not configure the network. (The Realtek NIC found in the Landisk machine is not implemented yet in the emulator.) * root disk = wd0 (the disk to install onto), use the whole disk for OpenBSD * Accept the auto-layout (one big root partition (a) and a small swap partition (b). c is the entire disk). * Location of sets = disk, is the disk partition already mounted = no, disk containing the install media = wd1 * Pathname to the sets = / Ignore the warning about missing 'bsd' file by the installer, we are supplying the bsd kernel file directly on the GXemul command line.
Once the install has finished, the following command should let you boot from the disk image:
_**gxemul -E landisk -d obsdlandisk.img bsd**_
Note: Generating ssh keys on the first bootup is extremely time consuming.
As with most emulation modes in GXemul, the NIC in this machine is not emulated yet. If you want to transfer files to/from the emulated landisk machine, see this chapter in the documentation.
### OpenBSD/mvme88k:
It is possible to run OpenBSD/mvme88kon an emulated Motorola MVME187 machine in the emulator.
To install OpenBSD/mvme88k onto an emulated harddisk image, follow these instructions:
1. Create an empty harddisk image, which will be the root disk that OpenBSD installs itself onto: dd if=/dev/zero of=obsdmvme88k.img bs=1024 count=1 seek=1900000 2. Download the entire mvme88k directory from the ftp server: wget -np -l 0 -r ftp://ftp.se.openbsd.org/pub/OpenBSD/4.5/mvme88k/ 3. You now need to make an ISO image of the entire directory you downloaded. (I recommend using mkisofs for that purpose. If you don't already have mkisofs installed on your system, you need to install it in order to do this.) mkisofs -o openbsdmvme88k4.5.iso -U ftp.se.openbsd.org/pub/OpenBSD/ 4. Copy away the kernel, we'll need it later. But remove the rest of the downloaded tree. cp ftp.se.openbsd.org/pub/OpenBSD/4.5/mvme88k/bsd . rm -rf ftp.se.openbsd.org 5. Start the emulator using this command line: gxemul -e mvme187old -d obsdmvme88k.img -d b:openbsdmvme88k4.5.iso -j 4.5/mvme88k/bsd.rd and proceed like you would do if you were installing OpenBSD on a real MVME187. There is a problem with finding the filesystem on the CDROM, since there is no disklabel [and/or because the emulator perhaps does not simulate CDROM TOCs well enough], but it's possible to mount the filesystem using manual intervention. Here is an example (from 4.4) of what an install can look like: (user input in blue italic) CPU0 is associated to 2 MC88200 CMMUs Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2008 OpenBSD. All rights reserved. http://www.OpenBSD.org OpenBSD 4.4 (RAMDISK) #19: Sun Aug 10 21:03:44 GMT 2008 root@arzon.gentiane.org:/usr/src/sys/arch/mvme88k/compile/RAMDISK real mem = 67108864 (64MB) avail mem = 56791040 (54MB) mainbus0 at root: Motorola MVME187, 33MHz cpu0: M88100 rev 0x3, 2 CMMU cpu0: M88200 (16K) rev 0x9, full Icache, M88200 (16K) rev 0x9, full Dcache pcctwo0 at mainbus0 addr 0xfff00000: rev 0 nvram0 at pcctwo0 offset 0xc0000: MK48T08 cl0 at pcctwo0 offset 0x45000 ipl 3: console osiop0 at pcctwo0 offset 0x47000 ipl 2: NCR53C710 rev 2, 66MHz scsibus0 at osiop0: 8 targets, initiator 7 osiop0: target 0 ignored sync request osiop0: target 0 now using 8 bit asynch xfers sd0 at scsibus0 targ 0 lun 0: <gxemul, 0="" obsdmvme88k.im,=""> SCSI2 0/direct fixed sd0: 1855MB, 1855 cyl, 16 head, 128 sec, 512 bytes/sec, 3800003 sec total osiop0: target 1 ignored sync request osiop0: target 1 now using 8 bit asynch xfers cd0 at scsibus0 targ 1 lun 0: <gxemul, 0="" openbsdmvme88k,=""> SCSI2 5/cdrom removable vme0 at pcctwo0 offset 0x40000 vme0: using BUG parameters vme0: vme to cpu irq level 1:1 vmes0 at vme0 rd0: fixed, 4096 blocks boot device: root on rd0a swap on rd0b dump on rd0b WARNING: clock gained 138 days -- CHECK AND RESET THE DATE! erase ^?, werase ^W, kill ^U, intr ^C, status ^T (I)nstall, (U)pgrade or (S)hell? i Welcome to the OpenBSD/mvme88k 4.4 install program. This program will help you install OpenBSD. At any prompt except password prompts you can escape to a shell by typing '!'. Default answers are shown in []'s and are selected by pressing RETURN. At any time you can exit this program by pressing Control-C, but exiting during an install can leave your system in an inconsistent state. Terminal type? [vt100] xterm IS YOUR DATA BACKED UP? As with anything that modifies disk contents, this program can cause SIGNIFICANT data loss. It is often helpful to have the installation notes handy. For complex disk configurations, relevant disk hardware manuals and a calculator are useful. Proceed with install? [no] yes Cool! Let's get to it. You will now initialize the disk(s) that OpenBSD will use. To enable all available security features you should configure the disk(s) to allow the creation of separate filesystems for /, /tmp, /var, /usr, and /home. Available disks are: sd0. Which one is the root disk? (or 'done') [sd0] sd0 osiop0: target 0 ignored sync request osiop0: target 0 now using 8 bit asynch xfers Initial label editor (enter '?' for help at any prompt) > a a offset: [0] 63 size: [3799940] 3500000 FS type: [4.2BSD] mount point: [none] / > a b offset: [3500063] size: [299940] FS type: [swap] > w > q No label changes. No more disks to initialize. OpenBSD filesystems: sd0a / The next step DESTROYS all existing data on these partitions! Are you really sure that you're ready to proceed? [no] yes /dev/rsd0a: 1709.0MB in 3500000 sectors of 512 bytes 9 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/sd0a on /mnt type ffs (rw, asynchronous, local, ctime=Thu Jan 1 16:29:57 2009) System hostname? (short form, e.g. 'foo') test Configure the network? [yes] no Password for root account? (will not echo) Password for root account? (again) Let's install the sets! Location of sets? (cd disk ftp http nfs or 'done') [cd] disk Is the disk partition already mounted? [no] !mount -t cd9660 /dev/cd0c /mnt2 osiop0: target 1 ignored sync request osiop0: target 1 now using 8 bit asynch xfers Is the disk partition already mounted? [no] yes Pathname to the sets? (or 'done') [4.4/mvme88k] /mnt2/4.4/mvme88k Select sets by entering a set name, a file name pattern or 'all'. De-select sets by prepending a '-' to the set name, file name pattern or 'all'. Selected sets are labelled '[X]'. [X] bsd [X] bsd.rd [ ] bsd.mp [X] base44.tgz [X] etc44.tgz [X] misc44.tgz [X] comp44.tgz [X] man44.tgz [X] game44.tgz [ ] xbase44.tgz [ ] xetc44.tgz [ ] xshare44.tgz [ ] xfont44.tgz [ ] xserv44.tgz Set name? (or 'done') [bsd.mp] done Ready to install sets? [yes] yes Getting bsd ... 100% |**************************************************| 2329 KB 01:21 Getting bsd.rd ... 100% |**************************************************| 3150 KB 01:48 Getting base44.tgz ... 100% |**************************************************| 87686 KB 11:56 Getting etc44.tgz ... 100% |**************************************************| 629 KB 00:14 Getting misc44.tgz ... 100% |**************************************************| 2866 KB 00:37 Getting comp44.tgz ... 100% |**************************************************| 38869 KB 06:19 Getting man44.tgz ... 100% |**************************************************| 6967 KB 01:50 Getting game44.tgz ... 100% |**************************************************| 7037 KB 01:16 Location of sets? (cd disk ftp http nfs or 'done') [done] done Start sshd(8) by default? [yes] yes Start ntpd(8) by default? [no] no Saving configuration files...done. Generating initial host.random file...done. What timezone are you in? ('?' for list) [Canada/Mountain] Europe/Stockholm Setting local timezone to 'Europe/Stockholm'...done. Making all device nodes...done. Installing boot block... boot: /mnt/boot proto: /mnt/usr/mdec/bootxx device: /dev/rsd0a cdevice: /dev/rsd0c modifying vid. /mnt/usr/mdec/bootxx: entry point 0x9f0000 proto bootblock size 5120 room for 64 filesystem blocks at 0x9f1198 Will load 2 blocks of size 16384 each. 0: 17696 1: 17728 CONGRATULATIONS! Your OpenBSD install has been successfully completed! To boot the new system, enter halt at the command prompt. Once the system has halted, reset the machine and boot from the disk. # umount /mnt # halt </gxemul,></gxemul,>
Once the install has finished, the following command should let you boot from the harddisk image:
_**gxemul -e mvme187old -d obsdmvme88k.img bsd**_
When asked about root disk, enter sd0.
No NIC has been implemented yet for mvme187, so there is no network connectivity from within the guest OS.
### OpenBSD/sgi:
OpenBSD/sgican run in GXemul on an emulated O2 (SGI-IP32), with root on NFS.
GXemul does not yet emulate the AHC PCI SCSI controller in the O2, so it needs to boot via the emulated network. Another emulated machine must then be used as the nfs root server, and the emulated O2 machine must boot as a disklessclient. Performing this setup is quite time consuming, but necessary:
1. First of all, the "nfs server" machine must be set up.Install NetBSD/pmax 8.0 from CDROM, perform a default install from CDROM without configuring the network, but add a 4000 MB /tftpboot partition when configuring the disk! 2. On the host, download the OpenBSD distribution, and do some fixup to make it possible to treat the tar files as SCSI disk images: | | wget http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/base64.tgz wget http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/comp64.tgz wget http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/xbase64.tgz wget http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/xfont64.tgz wget http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/xserv64.tgz wget http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/xshare64.tgz gunzip base64.tgz gunzip comp64.tgz gunzip xbase64.tgz gunzip xfont64.tgz gunzip xserv64.tgz gunzip xshare64.tgz dd if=/dev/zero of=/dev/stdout bs=65536 count=1 >> base64.tar dd if=/dev/zero of=/dev/stdout bs=65536 count=1 >> comp64.tar dd if=/dev/zero of=/dev/stdout bs=65536 count=1 >> xbase64.tar dd if=/dev/zero of=/dev/stdout bs=65536 count=1 >> xfont64.tar dd if=/dev/zero of=/dev/stdout bs=65536 count=1 >> xserv64.tar dd if=/dev/zero of=/dev/stdout bs=65536 count=1 >> xshare64.tar | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 3. Start the emulation of the DECstation NFS server using this command line: | | gxemul -xe 3max -d nbsd_pmax.img -d base64.tar -d comp64.tar -d xbase64.tar -d xfont64.tar -d xserv64.tar -d xshare64.tar | | ---------------------------------------------------------------------------------------------------------------------------- | and enter the following commands to configure the server for NFS serving and extract the OpenBSD distribution: | | echo hostname=server >> /etc/rc.conf echo ifconfig_le0=\"inet 10.0.0.2\" >> /etc/rc.conf echo nameserver 10.0.0.254 >> /etc/resolv.conf echo 10.0.0.254 > /etc/mygate echo /tftpboot -maproot=root 10.0.0.1 > /etc/exports echo rpcbind=YES >> /etc/rc.conf echo nfs_server=YES >> /etc/rc.conf echo mountd=YES >> /etc/rc.conf echo bootparamd=YES >> /etc/rc.conf printf "client root=10.0.0.2:/tftpboot \\\n swap=10.0.0.2:/tftpboot/swap\n" > /etc/bootparams echo "08:20:30:00:00:10 client" > /etc/ethers echo 10.0.0.1 client > /etc/hosts cd /tftpboot tar xf /dev/sd1c tar xf /dev/sd2c tar xf /dev/sd3c tar xf /dev/sd4c tar xf /dev/sd5c tar xf /dev/sd6c tar zxfv var/sysmerge/etc.tgz tar zxfv var/sysmerge/xetc.tgz dd if=/dev/zero of=swap bs=1024 count=262144 echo inet 10.0.0.1 > /tftpboot/etc/hostname.mec0 echo nameserver 10.0.0.254 > /tftpboot/etc/resolv.conf echo 10.0.0.2:/tftpboot / nfs rw 0 0 > /tftpboot/etc/fstab echo 10.0.0.2:/tftpboot/swap none swap sw >> /tftpboot/etc/fstab halt | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 4. Download the OpenBSD/sgi GENERIC and RAMDISK kernels: http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/bsd.IP32 http://ftp.openbsd.org/pub/OpenBSD/6.4/sgi/bsd.rd.IP32 5. Create a configuration file called config_client: | | ! Configuration file for running OpenBSD/sgi diskless with ! a NetBSD/pmax machine as the nfs server. ! ! This config file is for the client. net( add_remote("localhost:12444") ! the server local_port(12445) ! the client ) machine( name("client machine") serial_nr(1) type("sgi") subtype("o2") use_x11(1) memory(256) load("bsd.rd.IP32") ! load("bsd.IP32") ) | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ... and another configuration file for the server,config_server: | | net( local_port(12444) ! the server add_remote("localhost:12445") ! the client ) machine( name("nfs server") serial_nr(2) type("dec") subtype("5000/200") disk("nbsd_pmax.img") ) | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 6. Boot the "nfs server" and the OpenBSD/sgi "client machine" as two separate emulator instances: in one xterm: gxemul @configserver and then, in another xterm: gxemul @configclient 7. In the emulated OpenBSD/sgi client, type 's' for Shell and run these commands: | | ifconfig mec0 10.0.0.1; route add default 10.0.0.254 mount -v 10.0.0.2:/tftpboot /mnt cd /mnt/dev; ./MAKEDEV all; cd /; umount /mnt reboot | | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | 8. Change bsd.rd.IP32 to bsd.IP32 in the client configuration file. 9. Finally, run the client again: gxemul @configclient If the root device is not auto-detected, enter mec0. Note that booting is very slow, so be patient.
Many things are not working yet, for example X11 does not start yet due to some bug in the keyboard emulation. It is also very slow, mostly due to having the file system on NFS. In order to self-compile GXemul under emulated OpenBSD/sgi, you need to run swapctl -a /swap as root.
### HelenOS/testmips and testarm:
Old versions of HelenOS can run in GXemul'stestarm and oldtestmips machine modes.
To run HelenOS for testarm in GXemul:
1. Download the HelenOS kernel: http://www.helenos.org/releases/HelenOS-0.5.0-arm32-GXemul.boot 2. Start GXemul using the following command line: gxemul -X -E testarm HelenOS-0.5.0-arm32-GXemul.boot
To run HelenOS for testmips in GXemul:
1. Download the HelenOS kernel: http://www.helenos.org/releases/HelenOS-0.5.0-mips32-GXemul.boot 2. Start GXemul using the following command line: gxemul -X -E oldtestmips HelenOS-0.5.0-mips32-GXemul.boot
### Ultrix/RISC:
Ultrix 4.x can run in GXemul on an emulated DECstation 5000/200. (Ultrix was the native OS for these machines, butNetBSD/pmax is also usable.)
The following instructions should let you install Ultrix onto a disk image:
1. Create an empty harddisk image, which will be the root disk that Ultrix installs itself onto: dd if=/dev/zero of=rootdisk.img bs=1024 count=1 seek=800000 2. Place your Ultrix installation media in your CDROM drive. (On FreeBSD and similar systems, it is called /dev/cd0c. Replace that with the name of your CDROM drive, or the name of a .iso image file.) Then, start the emulator like this: gxemul -X -e 3max -d rootdisk.img -d bc:/dev/cd0c -j vmunix 3. Once the first stage of the installation is done (restoring the root filesystem), you need to restart the emulator, booting from the new rootdisk, to continue the installation process. This is done by removing the bootflag ('b') from the second diskimage argument: gxemul -X -e 3max -d rootdisk.img -d c:/dev/cd0c -j vmunix
When the installation is completed, the following command should start Ultrix from the harddisk image:
gxemul -X -e 3max -j vmunix -d rootdisk.img
If you have a very fast host machine, you might experience a weird timer related bug, which makes it impossible to logon to the system. It is triggered when the emulation goes faster than any real DECstation machine was capable of running. The first thing to try is to re-attempt the login a couple of times. If that doesn't work, a workaround is to add-I33000000 to fix the emulated clock speed to 33 million instructions per emulated second. If the workaround above doesn't work, you can also start up other processes on the host, apart from the emulator, so that the emulator runs more slowly. This is an ugly workaround, but seems to work. Once you have logged in into Ultrix, you can kill the extra processes.
You can experiment with adding -Z2 (for emulating a dual-headed workstation) or even -Z3 (tripple-headed), and also the -Y2 option for scaling down the framebuffer windows by a factor 2x2. There is also a -z option for supplying names of X11 displays to use. The following example starts Ultrix on an emulated tripple-headed workstation, on three different displays (remote1:0.0,localhost:0.0, and remote2:0.0), using no scaledown:
*gxemul -N -e 3max -jgenvmunix -d rootdisk.img * -XZ3 -z remote1:0.0 -z localhost:0.0 -z remote2:0.0
The photo below shows a single Ultrix session running tripple-headed in GXemul on an Alpha 21164PC, with displays on a Sun Ultra1 (to the left), on the Alpha itself (in the middle), and on an HP700/RX X-terminal (8-bit color depth, running off the Alpha) to the right.
The X11 displays may differ in bit depth and endianness. Unfortunately, there is no way yet to set the scaledown factor on a per-window basis, so the scaledown factor affects all windows.
(If you didn't use -Zn during the installation, and compiled your own /vmunix, then it will not contain support for multiple graphics cards. To overcome this problem, use the generic kernel,-j genvmunix, whenever you are running the emulator with a different setup than the one you used when Ultrix was installed.)
A note for the historically interested: OSF/1 for MIPS was quite similar to Ultrix, so that is possible to run as well. If you are unsuccessful in installing Ultrix or OSF/1 directly in the emulator, you can always install it on your real machine onto a real SCSI disk, and then copy the contents of that SCSI disk into a file (using dd(1)), and use that file as a disk image file in the emulator.
### Sprite for DECstation:
Sprite was a research operating system at the University of Berkeley. A copy of a Sprite harddisk image for a DECstation 5000/200 is still available. If you want to find out more about Sprite in general, readhttps://web.stanford.edu/~ouster/cgi-bin/spriteRetrospective.php.
The following instructions should let you run Sprite in the emulator:
1. Download the Sprite harddisk image: https://github.com/OSPreservProject/sprite/raw/master/ds5000.bt (83973120 bytes, MD5 = ec84eeeb20fe77b758370d5e312e4a5e) 2. Start the emulator with the following command line: gxemul -X -e 3max -M128 -d ds5000.bt -j vmsprite -o ''
The first time you boot up with the disk image, you will be asked a number of questions regarding network settings. If you feel like entering correct values, then you should use the following:
Your machine's Ethernet address: 10:20:30:00:00:10 Your machine's IP: 10.0.0.1 Subnet mask: 0xff000000 Gateway's Ethernet address: 60:50:40:30:20:10 Gateway's IP: 10.0.0.254
Unfortunately, at the end of https://raw.githubusercontent.com/OSPreservProject/sprite/master/boot.txt, the following sad statement can be found:
The bootable Sprite image is meant to be a demonstration of Sprite, not a robust Sprite system. There are several missing things, such as floating point and network support.
Once you are logged in as root, running xinit will start the X11 environment.
### Debian GNU/Linux for DECstation:
It is possible to run Debian GNU/Linux for DECstation in the emulator, on an emulated 5000/200 ("3max"). However, just choosing any Linux/DECstation kernel at random for the installation will not work.
* Linux 2.4/DECstation DZ serial console output doesn't work too well in GXemul. Linux oopses randomly, which may be due to bugs in GXemul, but may also be due to bugs in the serial controller code in Linux. (The speed at which serial interrupts are generated can be lowered with the -U command line option, but it only reduces the risk, it doesn't take away the oopses completely.) * The Linux 2.6/DECstation DZ serial console driver doesn't work at all in the emulator, and I'm not really sure it would work on a real 5000/200 either. Hopefully this will be fixed in Linux in the future. * To get around the serial console problem, the obvious solution is to use a graphical framebuffer instead. Old Debian install kernels supported the graphical framebuffer on the 3max, but not the keyboard. (This has been fixed now, it seems.) * For quite some time, the MIPS linux cvs tree has had support for the framebuffer and keyboard, but it did not include Debian's patches for networking, which made it unusable for network installs. (Possibly fixed now.) * The kernel has to be for 5000/200. This rules out using the default kernel on netinst ISO images provided by Debian. These ISO images boot directly into a kernel which is meant for a different DECstation model. * The kernel has to have an initrd which more or less matches the version of Debian that will be installed.
Luckily, a precompiled install kernel has been made available by David Muse, for Debian for R3000 DECstations, which has support for framebuffer, keyboard, and networking, which works pretty well. Thanks David. :-)
The following steps should let you install Debian GNU/Linux for DECstation onto a harddisk image in the emulator:
1. Create an empty harddisk image, which will be the root disk that Debian installs itself onto: dd if=/dev/zero of=debianpmax.img bs=1024 count=1 seek=6000000 2. Download David Muse' install kernel, and a Debian Netinstall CD-ROM: http://www.firstworks.com/mips-linux-2.4.31/vmlinux-2.4.31 http://cdimage.debian.org/cdimage/archive/3.1r6a/mipsel/iso-cd/debian-31r6a-mipsel-netinst.iso MD5 (vmlinux-2.4.31) = c88dc0a26b91e3646698179c18e8169b MD5 (debian-31r6a-mipsel-netinst.iso) = db1bf2f8e5b24f820f37034ec1d20bdc 3. Start the installation like this: gxemul -X -e3max -d debianpmax.img -d debian-31r6a-mipsel-netinst.iso vmlinux-2.4.31 If everything goes well, you will see Linux' boot messages, and then arrive at the language chooser. There will be a warning about the keyboard layout. Don't mind this. Continue, and then select Detect and mount CD-ROM in the next menu. There will also be a warning about lack of loadable modules. Don't mind this either, continue anyway by choosing Yes. When you reach the network configuration part of the install, chooseConfigure network manually and enter the following values: IP address: 10.0.0.1 Netmask: 255.0.0.0 Gateway: 10.0.0.254 Name server addresses: 10.0.0.254 Choose Erase entire disk in the partitioner. Wait for the base system to be installed. This takes almost forever, so you can go fetch several Jolts or cups of coffee in the meanwhile. Congratulations! The first phase of the installation is now completed. Reboot using the following command line: gxemul -X -e3max -o 'root=/dev/sda1' -d debianpmax.img vmlinux-2.4.31 The post-install step takes quite some time as well. A perfect opportunity for more coffee. When asked about whether the hardware clock is set to GMT or not, answer Yes. When asked about "Apt configuration", choose http as the method to use for accessing the Debian archive. Downloading the packages takes almost forever. Be patient. Congratulations (again)! You are now fully done with the installation.
Debian GNU/Linux for DECstation is now installed and ready to be used. Use this command to boot from the installed disk image:
_**gxemul -X -e3max -o 'root=/dev/sda1' -d debianpmax.img vmlinux-2.4.31**_
---