|
NOTE: The guest operating systems listed on this page are here because they do not work well enough to be regarded as "stable"/supported. If they become stable, they'll be moved to the guest OS page.
This page contains instructions on how installation of guest OSes could potentially be done, once the emulation is stable/complete enough. In some cases, it contains notes about starting guest OSes that are not complete (i.e. just booting a kernel, not a full installation of a guest OS).
NOTE: Mach for DECstation requires some files (called 'startup' and 'emulator') which I haven't been able to find on the web. Without these, Mach will not get very far. These installation instructions are preliminary.
The following steps should let you experiment with running Mach for DECstation in the emulator:
http://lost-contact.mit.edu/afs/athena/user/d/a/ daveg/Info/Links/Mach/src/release/pmax.tar.Z 7263343 bytes, md5 = f9d76c240a6e169921a1df99ad560cc0
tar xfvz pmax.tar.Z pmax_mach/special/mach.boot.MK83.STD+ANY
dd if=/dev/zero of=disk.img bs=1 count=512 seek=400000000
gxemul -c 'put w 0x800990e0, 0' -c 'put w 0x80099144, 0' \ -c 'put w 0x8004aae8, 0' -e 3max -X -d disk.img \ pmax_mach/special/mach.boot.MK83.STD+ANY
Earlier versions of GXemul had a configure option to enable better R3000 cache emulation, but since Mach was more or less the only thing that used it, I removed it. Today's version of GXemul can thus not boot mach.boot.MK83.STD+ANY straight off, it has to be patched to skip the cache detection.
The -c commands above patch the kernel to get past the cache detection. Thanks to Artur Bujdoso for these values.
TODO: Better instructions on how to create the old-style UFS disk image.
The following steps should let you run Redhat Linux for DECstation in GXemul:
http://www.firstworks.com/mips-linux-2.4.31/vmlinux-2.4.31
ftp://ftp.linux-mips.org/pub/linux/mips/mipsel-linux/root/mipsel-root-20011216.tgz 19486676 bytes, md5 = 5bcb725c90209479cd7ead8ad0c4a414
dd if=/dev/zero of=redhat_mips.img bs=1024 count=1 seek=2000000
I recommend you run fdisk and mke2fs and untar the archive from within Debian/DECstation or Debian/CATS running inside the emulator. (Alternatively, if you are on a Linux host, you could use a loopback mount, or similar. This might require root access. See e.g. http://www.mega-tokyo.com/osfaq2/index.php/Disk%20Images%20Under%20Linux.)
In order to actually boot the system you need to modify /etc/fstab. Change
/dev/root / nfs defaults 1 1 #/dev/sdc1 / ext2 defaults 1 1 none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0to
#/dev/root / nfs defaults 1 1 /dev/sda1 / ext2 defaults 1 1 none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0(Note sda1 instead of sdc1.)
To boot Redhat linux from the disk image, use the following command line:
gxemul -X -e3max -o "root=/dev/sda1 ro" -d redhat_mips.img vmlinux-2.4.31If you need to boot into single user mode, change options to -o "root=/dev/sda1 rw init=/bin/sh".
NOTE: I haven't succeeded all the way with this yet, and this shows/triggers many bugs in the emulator, but some of it works.
GXemul does not yet emulate the AHC PCI SCSI controller in the O2. (I have mailed Adaptec several times, asking for documentation, but never received any reply.) OpenBSD/sgi can still run in the emulator, as long as it doesn't use SCSI. For a simple test with the ramdisk (install) kernel, try dowloading
ftp://ftp.se.openbsd.org/pub/OpenBSD/4.0/sgi/bsd.rdand run gxemul -xeo2 bsd.rd.
It might also be possible to netboot. Another emulated machine must then be used as the nfs root server, and the emulated O2 machine must boot as a diskless client. Performing this setup is quite time consuming, but necessary:
gxemul -e 3max -d nbsd_pmax.imgand 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 "10:20:30:00:00:10 client" > /etc/ethers echo 10.0.0.1 client > /etc/hosts reboot |
cd /tftpboot; ftp -i ftp.se.openbsd.org (log in as anonymous...) cd pub/OpenBSD/4.0/sgi mget b*tgz c*tgz e* g* m* quit sh for a in *.tgz; do echo $a; tar zxfp $a; done echo 10.0.0.2:/tftpboot / nfs rw 0 0 > /tftpboot/etc/fstab rm *.tgz dd if=/dev/zero of=swap bs=1024 count=32768 halt |
ftp://ftp.se.openbsd.org/pub/OpenBSD/4.0/sgi/bsd ftp://ftp.se.openbsd.org/pub/OpenBSD/4.0/sgi/bsd.rd
! 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") ! load("bsd") load("bsd.rd") ) |
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") ) |
in one xterm: gxemul @config_server and then, in another xterm: gxemul @config_client
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 halt |
NOTE: Everything up to this point should work. However, the next step (in gray) doesn't actually work:
Once everything has been set up correctly, change bsd.rd in config_client to just bsd (the GENERIC kernel). It should now be possible to boot OpenBSD/sgi using the NetBSD/pmax nfs server. (When asked for "root device :" on the OpenBSD machine, enter mec0.)
But it doesn't work. Probably because GXemul's implementation of the mec (ethernet card used in the O2) is too much of a quick hack. For now, use the bsd.rd kernel, and (at every boot) type:
s (for Shell) ifconfig mec0 10.0.0.1; route add default 10.0.0.254 mount -v 10.0.0.2:/tftpboot /mnt cd /mnt; usr/sbin/chroot . sh etc/rc
This will not cause OpenBSD to be booted normally, but at least a few basic things will work. By the way, the emulator performs so poorly, that you will have time to fetch several cups of coffee for each of the steps above.
Earlier, I had this guest OS listed as officially working in the emulator, but for several reasons, it has been moved down here to the "informative-but-not-really-working" section.
Currently, I don't test for every release whether or not OpenBSD/arc can be installed. Releases prior to 0.3.7 (but probably not 0.3.7) should work. Anyway, here are the old installation instructions:
To install OpenBSD/arc onto an emulated harddisk image, follow these instructions:
dd if=/dev/zero of=obsd_arc.img bs=1024 count=1 seek=700000
wget -np -l 0 -r ftp://ftp.se.openbsd.org/pub/OpenBSD/2.3/arc/
mkisofs -o openbsd_arc_2.3.iso ftp.se.openbsd.org/pub/OpenBSD/
gxemul -e pica -X -d obsd_arc.img -d b:openbsd_arc_2.3.iso -j 2.3/arc/bsd.rdand proceed like you would do if you were installing OpenBSD on a real Acer PICA-61. (Answer 'no' when asked if you want to configure networking, and then install from CD-ROM.)
Once the install has finished, the following command should let you boot from the harddisk image:
gxemul -X -e pica -d obsd_arc.img ftp.se.openbsd.org/pub/OpenBSD/2.3/arc/bsdThe system is very sensitive to (I think) kernel stack overflow, so it crashes easily. If I remember correctly from mailing lists, this also happened on real hardware.
IT DOES NOT WORK YET!
The following installation instructions would theoretically work:
dd if=/dev/zero of=debian_cats.img bs=1024 count=1 seek=3300000
http://ftp.debian.org/debian/dists/oldstable/main/disks-arm/current/cats/tftpboot.img
gxemul -XEcats -d debian_cats.img tftpboot.img
It doesn't work, though, because the NIC isn't working well enough.
The only use of Debian/CATS in the emulator right now is as a way to manipulate Linux disk images, if you are on a non-Linux host. By choosing "Execute a shell" in the installer's menu, you can have access to tools such as fdisk and mke2fs, which are useful for creating Linux paritions on disk images.
The Malta emulation mode is best suited for running NetBSD/evbmips, however, it is possible to experiment with Linux/Malta as well.
The general idea behind Linux/Malta seems to be that the end user always compiles his/her own kernel, applies patches, downloads userland separately, etc. For that reason, Linux/Malta support in the emulator is not tested for every release (sometimes it works, sometimes it doesn't work), and these instructions are kind of "fuzzy".
dd if=/dev/zero of=linux.img bs=1024 count=1 seek=5000000
ftp://ftp.linux-mips.org/pub/linux/mips/mipsel-linux/root/mipsel-root-20011216.tgz 19486676 bytes, md5 = 5bcb725c90209479cd7ead8ad0c4a414This is an old Redhat tree from 2001, but it seems to almost work.
TODO
gunzip vmlinux_2.* gunzip mipsel-root-20011216.tar gxemul -xemalta -d linux.img -d mipsel-root-20011216.tar vmlinux_2.4.33.2-ide-pci-ramdisk.elf Inside GXemul: Log in as root and execute the following commands: fdisk /dev/hda (enter suitable commands, e.g. n, p, 1, 1, 9921, w) mkfs /dev/hda1 mount /dev/hda1 /mnt cd /mnt; tar -xf /dev/hdb; cd .. umount /mnt; sync; reboot
It should now be possible to boot from the disk image, using the following command:
gxemul -xemalta -d linux.img -o "root=/dev/hda1 rw" vmlinux_2.6.18-rc4-ide-pci-novty.elf
There's a slight problem with this specific Redhat tree, so when you see the message "Configuring kernel parameters: [ OK ]", press CTRL-C once.
The Malta emulation mode is best suited for running NetBSD/evbmips, however, it is possible to experiment with Linux/Malta as well.
It is also possible to experiment with much newer Linux userland, compared to the Linux/Malta variant 1 above, by using a kernel and disk image from http://people.debian.org/~aurel32/qemu/mipsel/. THIS DOES NOT WORK YET!
wget http://people.debian.org/~aurel32/qemu/mipsel/vmlinux-2.6.26-1-4kc-malta wget http://people.debian.org/~aurel32/qemu/mipsel/debian_lenny_mipsel_small.qcow.gz (142 MB)
gunzip debian_lenny_mipsel_small.qcow.gz qemu-img convert -f qcow -O raw debian_lenny_mipsel_small.qcow debian_lenny_mipsel_small.raw(qemu-img actually requires that you have QEMU installed.)
It should now be possible to boot from the disk image, using the following command:
gxemul -e malta -d debian_lenny_mipsel_small.raw -o "root=/dev/hda1 console=ttyS0" vmlinux-2.6.26-1-4kc-maltaNOTE: IT DOES NOT WORK YET!
The following steps should let you boot into the Linux/QEMU_MIPS kernel, in way similar to the run-qemu script:
wget http://www.nongnu.org/qemu/mips-test-0.2.tar.gz tar zxvf mips-test-0.2.tar.gz
gxemul -E qemu_mips -x -M 128 -o 'console=ttyS0 rd_start=0x80800000 rd_size=10000000 init=/bin/sh' 0x80800000:mips-test/initrd.gz mips-test/vmlinux-2.6.18-3-qemu
Installation steps similar to these would be required to install Windows NT onto a disk image:
dd if=/dev/zero of=winnt_test.img bs=1024 count=1 seek=999000
gxemul -X -e pica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\ARCINSTNote that ARCINST almost works, but not quite.
gxemul -X -e pica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\SETUPLDR
SETUPLDR manages to load some drivers from the cdrom, but then it crashes because of incomplete emulation of some hardware devices.
The following instructions will let you install NetBSD/bebox onto a disk image, using a NetBSD/prep kernel temporarily during the install:
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.1/prep/binary/kernel/netbsd-INSTALL.gz
dd if=/dev/zero of=nbsd_bebox.img bs=1024 count=1 seek=999000
wget -np -l 0 -r ftp://ftp.netbsd.org/pub/NetBSD/arch/bebox/snapshot/19981119/ mv ftp.netbsd.org/pub/NetBSD/arch/bebox/snapshot/19981119/kern.tgz . tar zxvf kern.tgz rm -f kern.tgz mkisofs -o netbsd-bebox-19981119.iso ftp.netbsd.org/pub/NetBSD/arch/bebox/snapshot/19981119 |
gxemul -x -e ibm6050 -d d:netbsd-bebox-19981119.iso -d nbsd_bebox.img netbsd-INSTALL.gzChoose (S) for Shell, and execute the following commands:
disklabel -I -i wd1 a 4.2BSD 1c 750M b swap a 200M W y Q newfs /dev/wd1a mount_cd9660 /dev/wd0c /mnt mount /dev/wd1a /mnt2 cd mnt2 for a in /mnt/*.tgz; do echo $a; tar zxfp $a; done 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/bebox using this command:
gxemul -X -E bebox -d nbsd_bebox.img netbsd
When asked for the root device, enter wd0a.
IT DOES NOT WORK YET, there are errors while uncompressing the tgz files, and the machine crashes when trying to run /sbin/init.