Qemu version 0.13.0 rc1

Qemu version 0.13rc1 has now been released!

I’ve found two issues so far when building on Windows… In the file vnc-enc-tight.c I’ve had to add the following line to the top:

typedef unsigned int uint;

And the next being in the file ui/sdl.c

The MinGW environment doesn’t seem to allow the setenv call, so I just remove the lines…

if (!full_screen) {
setenv(“SDL_VIDEO_ALLOW_SCREENSAVER”, “1”, 0);
}

One other thing I’ve done is modified the hw/pc.c and removed the 0x300/irq 9 NE2000 NIC, as there is some IRQ conflict on number 9…

At any rate, I’ll provide binaries for Windows users, a x86 only package is here, while the larger ‘full’ package is here.

Formatting disks for Solaris

This applies to Qemu and real SPARC’s… Anyways, every disk that Solaris uses has to be tagged with a special ‘format’ and disk label for use. When you buy disks from SUN they did this at the factory. However if you go ahead with a 3rd party disk, you’ll have to do this yourself.

Luckily it’s not all that hard.

So in this quick example we’ll add a 36GB disk to Qemu for use with Solaris 2.6

Now I’ve had issues with Solaris 2.6’s format program so I also use a Solaris 8 CD for that portion. I’m going to assume you’ve got all the bits to make Solaris on Qemu work.

The first step is to create the hard disk.

$ ./qemu-img create -f qcow2 36GB.disk 36GB
Formatting ’36GB.disk’, fmt=qcow2 size=38654705664 encryption=off cluster_size=0

I’m running this on OS X, however the steps are all the same for Linux & Windows users.

Now the next step is to fire up Qemu with the Solaris 8 CDROM.

$ ./qemu-system-sparc -bios ss5.bin -nographic -L . -hda 36GB.disk -m 256 -M SS-5 -cdrom sol-8-u7-install-sparc.iso

Then the ROM will initialize:

Power-ON Reset

$$$$$ WARNING: No Keyboard Detected! $$$$$
MMU Context Table Reg Test
MMU Context Register Test
MMU TLB Replace Ctrl Reg Tst
MMU Sync Fault Stat Reg Test
MMU Sync Fault Addr Reg Test
MMU TLB RAM NTA Pattern Test
ERROR : Address= 000000fc, exp= 07ffffdc, obs= 00000000, xor= 07ffffdc
initializing TLB
initializing cache

Allocating SRMMU Context Table
Setting SRMMU Context Register
Setting SRMMU Context Table Pointer Register
Allocating SRMMU Level 1 Table
Mapping RAM
Mapping ROM

ttya initialized
Probing Memory Bank #0 32 Megabytes
Probing Memory Bank #1 32 Megabytes
Probing Memory Bank #2 32 Megabytes
Probing Memory Bank #3 32 Megabytes
Probing Memory Bank #4 32 Megabytes
Probing Memory Bank #5 32 Megabytes
Probing Memory Bank #6 32 Megabytes
Probing Memory Bank #7 32 Megabytes
Incorrect configuration checksum;
Setting NVRAM parameters to default values.
Setting diag-switch? NVRAM parameter to true
Probing CPU FMI,MB86904
Probing /iommu@0,10000000/sbus@0,10001000 at 5,0 espdma esp sd st SUNW,bpp ledma le
Probing /iommu@0,10000000/sbus@0,10001000 at 4,0 SUNW,CS4231 power-management
Probing /iommu@0,10000000/sbus@0,10001000 at 1,0 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 2,0 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 3,0 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 0,0 Nothing there
screen not found.
Can’t open input device.
Keyboard not present. Using tty for input and output.
Probing Memory Bank #0 32 Megabytes
Probing Memory Bank #1 32 Megabytes
Probing Memory Bank #2 32 Megabytes
Probing Memory Bank #3 32 Megabytes
Probing Memory Bank #4 32 Megabytes
Probing Memory Bank #5 32 Megabytes
Probing Memory Bank #6 32 Megabytes
Probing Memory Bank #7 32 Megabytes
Incorrect configuration checksum;
Setting NVRAM parameters to default values.
Setting diag-switch? NVRAM parameter to true
Probing CPU FMI,MB86904
Probing /iommu@0,10000000/sbus@0,10001000 at 5,0 espdma esp sd st SUNW,bpp ledma le
Probing /iommu@0,10000000/sbus@0,10001000 at 4,0 SUNW,CS4231 power-management
Probing /iommu@0,10000000/sbus@0,10001000 at 1,0 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 2,0 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 3,0 Nothing there
Probing /iommu@0,10000000/sbus@0,10001000 at 0,0 Nothing there

SPARCstation 5, No Keyboard
ROM Rev. 2.15, 256 MB memory installed, Serial #0.
Ethernet address 52:54:0:12:34:56, Host ID: 80000000.

Boot device: /iommu/sbus/ledma@5,8400010/le@5,8c00000 File and args:
Internal loopback test — Wrong packet length; expected 36, observed 64

Can’t open boot device

Type help for more information
ok

Now we boot off the CD-ROM, but into single user mode, with the verbose flag…

ok boot disk2:d -vs

Now the kernel will boot up, and dump us into single user mode. Take note about the disk having a “corrupt label – wrong magic number’ error.

Boot device: /iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@2,0:d File and args: -vs
Size: 259712+54162+47510 Bytes
SunOS Release 5.8 Version Generic_108528-13 32-bit
Copyright 1983-2001 Sun Microsystems, Inc. All rights reserved.
Ethernet address = 52:54:0:12:34:56
Using default device instance data
vac: enabled in write through mode
mem = 262144K (0x10000000)
avail mem = 258383872
root nexus = SUNW,SPARCstation-5
iommu0 at root: obio 0x10000000
sbus0 at iommu0: obio 0x10001000
dma0 at sbus0: SBus slot 5 0x8400000
dma0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000
/iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000 (esp0):
esp-options=0x46
esp0 at dma0: SBus slot 5 0x8800000 sparc ipl 4
esp0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000
sd0 at esp0: target 0 lun 0
sd0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@0,0
WARNING: /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@0,0 (sd0):
corrupt label – wrong magic number

Vendor ‘QEMU’, product ‘QEMU’, 75497472 512 byte blocks
sd2 at esp0: target 2 lun 0
sd2 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@2,0
root on /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@2,0:b fstype ufs
obio0 at root
obio0 at obio0: obio 0x100000, sparc ipl 12
zs0 is /obio/zs@0,100000
obio1 at obio0: obio 0x0, sparc ipl 12
zs1 is /obio/zs@0,0
cpu0: FMI,MB86904 (mid 0 impl 0x0 ver 0x4 clock 1200 MHz)
Configuring /dev and /devices
pseudo-device: devinfo0
devinfo0 is /pseudo/devinfo@0
ledma0 at sbus0: SBus slot 5 0x8400010
le0 at ledma0: SBus slot 5 0x8c00000 sparc ipl 6
le0 is /iommu@0,10000000/sbus@0,10001000/ledma@5,8400010/le@5,8c00000
pseudo-device: fssnap0
fssnap0 is /pseudo/fssnap@0
sbusmem0 at sbus0: SBus slot 0 0x0
sbusmem0 is /iommu@0,10000000/sbus@0,10001000/sbusmem@0,0
sbusmem1 at sbus0: SBus slot 1 0x0
sbusmem1 is /iommu@0,10000000/sbus@0,10001000/sbusmem@1,0
sbusmem2 at sbus0: SBus slot 2 0x0
sbusmem2 is /iommu@0,10000000/sbus@0,10001000/sbusmem@2,0
sbusmem3 at sbus0: SBus slot 3 0x0
sbusmem3 is /iommu@0,10000000/sbus@0,10001000/sbusmem@3,0
sbusmem4 at sbus0: SBus slot 4 0x0
sbusmem4 is /iommu@0,10000000/sbus@0,10001000/sbusmem@4,0
sbusmem5 at sbus0: SBus slot 5 0x0
sbusmem5 is /iommu@0,10000000/sbus@0,10001000/sbusmem@5,0
NOTICE: SBus clock frequency out of range.
pseudo-device: winlock0
winlock0 is /pseudo/winlock@0
pseudo-device: lockstat0
lockstat0 is /pseudo/lockstat@0
pseudo-device: llc10
llc10 is /pseudo/llc1@0
NOTICE: audiocs0:Couldn’t set value (../../sun/io/audio/sada/drv/audiocs/audio_4231.c, Line #1738 0x00 0x88)
audiocs0:audio may not work correctly until it is stopped and restarted
audiocs0 at sbus0: SBus slot 4 0xc000000 SBus level 5 sparc ipl 9
audiocs0 is /iommu@0,10000000/sbus@0,10001000/SUNW,CS4231@4,c000000
pseudo-device: lofi0
lofi0 is /pseudo/lofi@0
pseudo-device: fcp0
fcp0 is /pseudo/fcp@0
Using RPC Bootparams for network configuration information.
/sbin/rcS: manual_find_and_mount_cdrom: not found

INIT: SINGLE USER MODE
#

I now issue the drvconfig/disks commands. This is more useful for adding disks to a live system..

# drvconfig
NOTICE: SBus clock frequency out of range.
inst_sync failed for /etc/path_to_inst.66: Read-only file system
drvconfig: WARNING: failed to update /etc/path_to_inst
# disks
disks: mkdir failed for /dev 0x1ed: Read-only file system

Now for the fun part of ‘formatting’ the disk. Looking at this page, they give the geometry of a SCSI disk with a capacity of 36 GB as:

24,622 cylinders
27 heads
107 sectors

As a note the format program likes to reserve the last 2 cylinders, so you must answer this appropriately.

So using the above information, I run the format command like this:

# format
Searching for disks…WARNING: /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@0,0 (sd0):
corrupt label – wrong magic number

Vendor ‘QEMU’, product ‘QEMU’, 75497472 512 byte blocks
done

AVAILABLE DISK SELECTIONS:
0. c0t0d0
/iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@0,0
Specify disk (enter its number): 0

AVAILABLE DRIVE TYPES:
0. Auto configure
1. Quantum ProDrive 80S
2. Quantum ProDrive 105S
3. CDC Wren IV 94171-344
4. SUN0104
5. SUN0207
6. SUN0327
7. SUN0340
8. SUN0424
9. SUN0535
10. SUN0669
11. SUN1.0G
12. SUN1.05
13. SUN1.3G
14. SUN2.1G
15. SUN2.9G
16. Zip 100
17. Zip 250
18. other
Specify disk type (enter its number): 18
Enter number of data cylinders: 24620
Enter number of alternate cylinders[2]:
Enter number of physical cylinders[24622]:
Enter number of heads: 27
Enter physical number of heads[default]:
Enter number of data sectors/track: 107
Enter number of physical sectors/track[default]:
Enter rpm of drive[3600]:
Enter format time[default]:
Enter cylinder skew[default]:
Enter track skew[default]:
Enter tracks per zone[default]:
Enter alternate tracks[default]:
Enter alternate sectors[default]:
Enter cache control[default]:
Enter prefetch threshold[default]:
Enter minimum prefetch[default]:
Enter maximum prefetch[default]:
Enter disk type name (remember quotes): Qemu36GB
selecting c0t0d0
[disk formatted]

FORMAT MENU:
disk – select a disk
type – select (define) a disk type
partition – select (define) a partition table
current – describe the current disk
format – format and analyze the disk
repair – repair a defective sector
label – write label to the disk
analyze – surface analysis
defect – defect list management
backup – search for backup labels
verify – read and display labels
save – save new disk/partition definitions
inquiry – show vendor, product and revision
volname – set 8-character volume name
! – execute , then return
quit
format>

Finally we just slap down a label and we should be good to go. I run the command twice to make sure that it took, as it should only mention the corrupt number one more time, then it’ll be ok.

format> label
Ready to label disk, continue? y

WARNING: /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@0,0 (sd0):
corrupt label – wrong magic number

Vendor ‘QEMU’, product ‘QEMU’, 75497472 512 byte blocks

format> l
Ready to label disk, continue? y

format>

Now we can quit, and reboot the VM.

format> q
# reboot
syncing file systems… done
rebooting…
Resetting …

And that’s it!

I’ve since then booted it up under Solaris 2.6, and now in the bootup it shows up like this:

sd0 at esp0: target 0 lun 0
sd0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@0,0

And even in the Solaris 2.6 install…

Disk Device (Size) Available Space
=============================================
[X] c0t0d0 (34730 MB) 34730 MB (F4 to edit)

Total Selected: 34730 MB
Suggested Minimum: 487 MB

And that’s about it.

VMWare Fusion 3.1 & KOTOR

Well let me be the first to say this is a little “modern” compared to all of my prior stuff, but anyways I’ve been enjoying life under OS X the last few days (along with crunch time @ work.. .sigh). As part of my day job I do still have to maintain some MS-DOS & Windows stuff, so while I do run Qemu under OS X, I’ve also purchased a copy of VMWare Fusion 3.1 (available online, and as a 30 day eval!). Ok so it’s $89 with the one year support, pretty snazzy stuff.

Now one thing that I find very interesting, is that unlike all the other more expensive versions of VMWare, Fusion for the MAC allows for SOME 3d apps to run!

I’m still kind of amazed at the stuff that does run and how cleanly it does so.

So I’ve installed good old Windows XP in a VM, then tried Fallout 3. No go. For the hell of it I tried Sims 3, and surprisingly it worked.. Even though it’s silly as there is an OS X version available.

So for today (I think it may be over in a few hours….) Steam is selling Star Wars Knights of the Old Republic for $2.50 USD!

Now KOTOR has been kind of finicky about what machines it’ll run on, in the past, but I have to say, much to my surprise the emulated 3d hardware ran KOTOR out of the box, without any modifications or anything!

So here it is, KOTOR in a ‘window’ on Windows XP in a Window on OS X.

KOTOR under XP VMWare Fusion in a window windowed

KOTOR under XP VMWare Fusion in a window windowed

And it’s playable at 1024×786.. and 1280×960, although at higher resolutions I’ve had issues with the mouse tracking.. .perhaps something about hardware/software mice support?

Anyways, emulation has now come to the point where 3d stuff really does run!

Win32 to be dropped from Qemu?

From an anonymous posting on here, I heard about this:

http://lists.gnu.org/archive/html/qemu-devel/2010-08/msg00537.html

since several months, QEMU for Windows (and mingw32 cross builds)
no longer builds without error.

I suspect that the same is true for QEMU on Darwin (lots of errors like
darwin-user/qemu.h:149: error: cast to pointer from integer of different size),
but I’m not sure here because I have no valid Darwin test environment.
Maybe someone can test this.

What about these environments? They have no maintainers.
Should they be marked as unsupported? Are they still used?
Or should they be removed?

Man, I sure hope it’s not the end of the road for Windows hosts running Qemu….

300 Baud magazine…

300buadcover_02_l

I came across this on a mailing list a while back, and meant to at least mention it here, but then I forgot. But I remembered it again… 300 Baud includes some of the old ads for various micros, along with some projects that you can actually follow along on the real thing, or even emulators.

For a fanzine, I have to say, it’s pretty well done, and certainly worth the $6 USD. Afterall whats so bad about supporting something cool like that?

And speaking of which, check out retro GAMER, sure it’s all professionally done, but I like its various focus on a platform month to month, and it’s loaded with all kinds of great interviews.

UnixWare 7.1.1

So I got myself a ‘5’ user version of UnixWare 7.1.1 to add to my collection, along with a copy of Word Perfect 5.1 for UNIX (i386 SYSV it would seem).

From the wikipedia link, 7.1.1 was the last release from “old SCO” the company that brought us exciting things like Xenix, SCO Unix and SCO OpenServer (although it’s about as ‘open’ as VMS).

Anyways I went ahead and installed it in Virtual PC 2007, and it was a pretty straight forward install. The only catch has been that if you suspend the virtual machine, the networking will cease to function. And as it stands right now I don’t have any sound, but I doubt that’ll be that big of an issue.

So I broke the nice and new shrinkwrap on the Word Perfect, and went through some minor hell trying to get the first disk to untar, as it states on the diskette and in the installation manual.. Eventually I found this worked in my Virtual PC:

tar -xvf /dev/dsk/f0q18d

Then I just ran the ‘wpinstall’. Now what is weird about this install is that word perfect then just has you hand it all the disks in any random order, then it’ll start to configure itself. While it does support over 200 terminal types, it seems that the “dtterm” console is not among them. Also what was weird is that for the X11 component the Univel UnixWare (the direct descendant to SCO UnixWare) did *NOT* work, while SCO Unix did.

I would imagine if you had a pre 2000 release of any Linux you could run this via iBCS, however that project seems to have died on the vine. The last time I tried to run Xenix stuff on NetBSD/FreeBSD & OpenBSD I was met with kernel panics and disaster. I don’t think anyone runs this stuff anymore, and now that we know how to run Xenix under Qemu/Virtual PC I guess that basically takes care of that.

Speaking of Xenix, it would seem that all of the 7.x releases of UnixWare do not include compatibility for the x.out exe format either.

At any rate, I figured I could just go ahead and run my builds of Quake & Doom on a seemingly ‘slightly’ older 7.1.1 without issue.

That was not to be the case.

dynamic linker : ./quake : error opening /usr/lib/libm.so.1
Killed

Well that’s a bummer, if I do say so myself. Thankfully this version of UnixWare included the compiler (and a license) along with the OpenServer/UnixWare development CD so I had the ‘official’ X11 headers & libraries, unlike what I had to do under 7.1.3

So I ended up shuffling around my UnixWare stuff to separate the 7.1.3 from the new 7.1.1 stuff.

7.1.1
*gmake
*gzip
*doom
*quake
*zork
*unzip

7.1.3
*gmake
*gzip
*unzip
*quake
*doom
*zork

In retrospect, I would imagine you can run 7.1.1 binaries on 7.1.3, but not the other way around… But in retrospect, that is to be expected.

I’m not sure how to even play with the X11 configuration so right now I’m limited to 256 colors… But you get the idea.

 

MacMinix

MacMinix

Once upon a time, I bought a Mac Plus, and decked it out with 4MB of ram, and a 40MB SCSI hard disk. I thought it was so cool, I even got a cable to talk to a normal external modem, and used it as a compact terminal to BBS, although the 800Kb floppies were a bit of a pain….

Anyways it was OK for a while but system 6 is so… limiting. Then I started using it for a foot rest, as I couldn’t do anything really more with it. Then someone at college pointed out that Minix actually supported a bunch of 68000 based machines, namely the Amiga, Atari ST, and the Macintosh!!!

The best part of the Mac port being that you didn’t have to format, repartition or anything, as it was essentially and operating environment!

The best parts being, that it had vi, and even a C compiler! Although without documentation getting things in & out of the Mac seemed impossible, and I kind of gave up on it.

But after digging around these ancient Linux things, I thought I’d take a look at MacMinix again.

To start, Brad Pliner has an excellent site, with lots of documentation for this port of Minix, including some PDF’s of the instructions.

I’ve detailed some of the install steps on gunkies.

The only real downside will be that the C compiler is ancient… It really can’t compare to MINT’s GCC.

MCC Linux 0.97 & dungeon

Interestingly enough it seems that the ancient linux circa 0.01 – 0.10 not only didn’t have FPU emulation, but didn’t support FPU instructions at all… Or I could be doing something wrong with gcc 1.40 as there isn’t a libm, nor does it inline the math… So anything with floating point is out. So with a bit of digging around for an ancient distro, I found a Linux 0.97 version of MCC. It’s incredibly small, as things were back then. So I’ve installed it, altered the kernel to default to a US keyboard map, (Sorry to people in the UK), and tried to squeeze the disk image down to something not too big. And I’ve included the f2c components and a build of dungeon.

Another f2c platform!

For anyone interested, I’ve uploaded my MCC image, it’s just under 6 megabytes. WOW how the times have changed!!!!

Again special thanks to Jiong Zhao’s most excellent oldlinux.org.

With that said, I’ve also just gotten a note from Artyom that his SunOS patches have been sent upstream to Qemu, so hopefully they’ll be downstream any day!