Running Netware 3.12 on Qemu / KVM 2.8.0

So yeah, let’s build a NetWare 3.12 server! I’ve covered this over and over and over, but heh let’s do it again!

First things first, the default position of the NE2000 card at 0x300/IRQ 9 does NOT WORK.  This is the biggest stumbling block, and time waster right there.  I loaded a PCnet driver, and it didn’t lock, but it didn’t work.  I loaded 2 ne2000’s thinking the second would come up in the correct position but that didn’t work either.  The solution of course is to dive into the parameters for QEMU to drive devices.

So for the fun of it, here is how I’m going to run this in a nested VM.  It’s also why I didn’t bother enabling the ‘-enable-kvm’ flag.  Although on a real machine I would.

qemu-system-i386 -m 16 \
-cpu 486 \
-net none \
-vnc :1 \
-device ne2k_isa,mac=00:2e:3c:92:11:01,netdev=lan,irq=11,iobase=0x320  \
-netdev vde,id=lan,sock=/tmp/local \
-hda netware312.qcow2 \
-hdb netware312_data.qcow2 \
-parallel none \
-monitor tcp::4400,server,nowait

So the key portion here is the iobase & irq.  This let’s me sidestep the IRQ 9, port 0x300 issue.  Talking to the monitor and running ‘info qtree’ I’m able to look at the parameters that I can pass the network card:

bus: isa.0
type ISA
dev: ne2k_isa, id ""
  iobase = 800 (0x320)
  irq = 11 (0xb)
  mac = "00:2e:3c:92:11:01"
  vlan = 
  netdev = "lan"
  isa irq 11

As you can see there is actually a few further things I could have set, but the key ones here being the iobase, the irq, the mac address, and then assigning it to a netdev, in this case I then bind it to a VDE.

Now the fun part goes back to the old days of Netware when your network could run several possible frame times.  If you have 2 machines with different frames, they will not see each-other.  it was a cheap way to hide networks well until the wide spread availability of sniffers.  Naturally cisco and Novell have different terms for the same things.  Below are the ones that are relevant to Ethernet:

[table id=1 /]

So in my case on my Netware server I simply load my NE2000 like this:

BIND IPX TO NE2000 NET=800852

Next on my cisco router I simply need:

ipx routing ca00.06a3.0000

interface FastEthernet0/0
ipx network 800852

And now I can see my server from the router:

HKOffice#sho ipx servers
Codes: S - Static, P - Periodic, E - EIGRP, N - NLSP, H - Holddown, + = detail
U - Per-user static
1 Total IPX Servers

Table ordering is based on routing and server info

Type Name Net Address Port Route Hops Itf
P 4 HONGKONG 852.0000.0000.0001:0451 2/01 1 Fa0/0

And the interface looks busy on NetWare

NetWare 3.12

NetWare servers advertise their internal networks, much like how people should be using loopback adapters in OSPF, or EIGRP … So if you check the IPX routing table, you’ll see the wire route to the internal network:

HKOffice#sho ipx route
Codes: C - Connected primary network, c - Connected secondary network
S - Static, F - Floating static, L - Local (internal), W - IPXWAN
R - RIP, E - EIGRP, N - NLSP, X - External, A - Aggregate
s - seconds, u - uses, U - Per-user static/Unknown, H - Hold-down

2 Total IPX routes. Up to 1 parallel paths and 16 hops allowed.

No default route known.

C 800852 (NOVELL-ETHER), Fa0/0
R 852 [02/01] via 800852.002e.3c92.1101, 150s, Fa0/0

Just like that!

One thing to note, on VDE, I had an issue where the NetWare server takes about a minute before it’ll see traffic.  It could be my IOS for all I know…..

20 thoughts on “Running Netware 3.12 on Qemu / KVM 2.8.0

  1. I have had some problems with NW 3.12 and network traffic when using qemu 2.4.0 under Linux. The emulated network card was also NW2000, but due to extensive experience from DOS days I avoided IRQ9 like the plague – IRQ3 was just fine, though 🙂
    The problem however, was that *sometimes* after starting it VM it would not see/be seen by the rest of the network (that included physical DOS/NW machines). Shutting down and restarting the VM would usually solve the problem. I never tried waiting a longer time to see if it will eventually “see” the network. As an aside, the same happens with a DOS VM and IPX (IIRC TCP/IP seemed to work fine; but it’s been a while)
    On another note – have you ever tried a tunnel using the built-in TCP/IP protocol?
    I kept wanting to try but never got around to actually doing it.

    • As a matter of fact….. ip eigrp neigh
      IP-EIGRP neighbors for process 1
      H Address Interface Hold Uptime SRTT RTO Q Seq Type
      (sec) (ms) Cnt Num
      1 Et1/1 11 00:13:19 517 3102 0 2
      0 Et1/0 14 23:14:52 113 678 0 683

      I currently have my office, a colocation site in Germany, and another in the United States up and running.

      I’ve setup some basic TCP/IP, and I’ve also done some NetBEUI using DLSW+ via Dynamips and IOS 12.2 …

  2. Thank you for your insightful post.
    I have tried the same but in my kvm unfortunately it seems there is no ISA support.

    I will not expect to get any responses on the mailing list since it is an obsolete OS but maybe you have some idea.

    From this list:

    Model Bus Speed Description
    e1000 PCI 1Gb/s Intel Gigabit Ethernet
    i82551 ? ? ?
    i82557b ? ? ?
    i82559er ? 100Mb/s ?
    ne2k_pci PCI 10Mb/s NE2000
    ne2k_isa ISA 10Mb/s NE2000
    pcnet PCI 10Mb/s AMD Ethernet Card
    rtl8139 PCI 10/100Mb/s Realtek Fast Ethernet
    virtio PCI 1Gb/s Virtual High Performance Ethernet card (see Virtio)

    I have also tried ne2k_pci e1000 and pcnet with no luck. As of Netware I tried version 4.11, 5 and 6.5 no luck with KVM 🙁

    However in Vmware 6.5 works like a charm (matter of fact it is still supported by Workstation/ESX). You just create a VM with Novell and the server will recognize ALL hardware including the network with pcnet and you are set. I did not even notice network issues others mentioned here in the comments. Unfortunately I only have vmware in my laptop and this is pulling the cpu on 100% even in idle so I would prefer moving it to KVM.

    Any tips are welcome.

    • In your list you have ne2k_isa right there… Are you trying to start this via the command line, or via some wrapper? I’n the link it’s through what, libvirt? I tend not to like that kind of things as the more things you stand on top of, the more features you actually lose.

      KVM still uses Qemu for all it’s hardware emulation, and I’m pretty sure ISA is still in there….

      Post what CLI options you are running, versions of OS, Qemu/KVM (check it’ll just be a symbolic link) what version of NetWare etc. etc…..

      I can’t promise much but I’ll take a peek

    • Hi
      My 6.5 runs very well in VMWare ESXi 5.1 and 5.5.
      These Versions of ESXi come with an adapted version of DOSidle for Netware. You can only use a single CPU/Core, but the Idle function works.
      My 2 cents

  3. There is an issue with qemu and IDE.DSK (from 3.12). when accessing the emulated IDE drive, NetWare hangs for a moment, be patient. Then it works as expected.

  4. Just a quick update for you on Netware and kvm. I’ve found 4.11 and 4.2 run really nicely with -enable-kvm on Linux. Unfortunately 5.1 doesn’t, it hangs at some point during the installation process. If I run it without, the X server comes up and with a bit of tweaking and a device cirrus-vga will run 1024/768 in 256 colours.

    4.11 is my retro-os-of-the-month for February!

    • How are you running Netware 4.11 in KVM? Would you be able to post some notes on the config you’re using, etc?

      I’ve just tried setting it up using virt-manager under debian buster (10.8, kernel 4.19.0-6-amd64) without any success.

      First attempt – latest freedos. Installer won’t run – exits after language selection or I get an invalid opcode error. Guess not compatible with FreeDOS.

      Second attempt was using MS-DOS 6.22. Installer worked fine but when it tried to start server.exe it just crashed (Abend: Server-4.11-4431: CPU Hog Detected by Timer, Running Process: Initialization Processs) followed eventually by another Abend (Page Fault Processor Exception).

      Third attempt, MS-DOS again but under regular qemu with no KVM. Everything installs fine, server starts fine. I installed SP9. Try running it with KVM but same problem. A few times its been able to begin starting but it always gives the CPU Hog error before its able to finish and get to the command prompt.

      • Tried some more things and the results are confusing.

        Running netware on my linux box under qemu directly with –enable-kvm *seems* to work fine. Running it via libvirt and virt-manager does not. It reliably crashes early in the netware startup process.

        I’ve pulled out the command line parameters libvirt is supplying to qemu and had a go at running qemu how libvirt is running it. I removed a few parameters which appear to be how libvirt is controlling qemu (-object secret…, -chardev…, -mon chardev…) and netware booted successfully and I could connect to its console with a spice client. It did crash after a few minutes with a CPU Hog error though.

        Running it with a local gtk interface instead of remote spice interface seemed to be fine – was up an hour and a half before I shut it down. But I can’t see why choice of qemu video output should affect netwares stability. Might be if I put some load on netware it would have crashed.

        So it looks like netware 4.11 might just be a bit unreliable under KVM. And for some reason having libvirt watching qemu seems to make the problem much worse.

        • David,
          I’m launching mine with:

          qemu-system-i386 \
          -enable-kvm \
          -m 256 \
          -M pc \
          -netdev socket,id=net0,udp=,localaddr= \
          -device pcnet,netdev=net0,mac=00:00:0d:31:04:11 \
          -soundhw pcspk \
          -cpu pentium2 \
          -monitor stdio \
          -hda netware411hd.ima \
          -cdrom nw42_sp9_NB.iso

          (hopefully the formatting will work).
          Also – do you have the NW4-IDLE.VLM loaded so your Vm CPU is not running permanently at 100% ?

          • Yeah, that looks pretty similar to how I was running it directly and it did seem to work fine though I didn’t go as far as connecting any clients to it or getting it on the network. How stable has it been for you?

            My hope was to have the VM managed by libvirt alongside a few other guests I’ve got running on this box so I could leave it running long-term to support other vintage systems. But for some reason it just can’t boot without crashing and I can’t for the life of me figure out why.

            This is the command libvirt runs:
            /usr/bin/qemu-system-x86_64 \
            -name guest=unnamed,debug-threads=on \
            -S \
            -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-44-unnamed/master-key.aes \
            -machine pc-i440fx-3.1,accel=kvm,usb=off,dump-guest-core=off \
            -m 64 \
            -realtime mlock=off \
            -smp 1,sockets=1,cores=1,threads=1 \
            -uuid ee191a6e-9a96-4845-8673-ade72081c035 \
            -no-user-config \
            -nodefaults \
            -chardev socket,id=charmonitor,fd=29,server,nowait \
            -mon chardev=charmonitor,id=monitor,mode=control \
            -rtc base=utc \
            -no-shutdown \
            -boot strict=on \
            -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
            -drive file=/home/david/disk_img/netware411.qcow2,format=qcow2,if=none,id=drive-ide0-0-0 \
            -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
            -spice port=5902,addr=,disable-ticketing,seamless-migration=on \
            -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 \
            -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
            -msg timestamp=on

            I don’t really see anything that looks like it should make netware unhappy but then I don’t have much experience with qemu. Unless -nodefaults is resulting in some setting important for netware being turned off? Ive tried getting libvirt qemu-system-i386 instead but it didn’t make any difference.

            Running this same command directly without the -object, -mon, -chardev and -spice parameters seems to work fine though – it was up running monitor.nlm for an hour and a half with its Gtk UI sent to an X server on my windows PC before I decided to shut it down.

            I don’t have nw4-idle.vlm – where does that come from? Finding something to make it idle nicely was the next thing on my to-do list once I got it to successfully boot under libvirt.

          • I never tried it under libvirt, it seemed to take away the control I had running it from command line. My configuration reflects the real hardware Netware ran on the time and it is very picky about this.
            NW4-IDLE.NLM was part of a VMware Tools package, if you search, you should find it. Put it on a virtual floppy then either run the installer or just copy it across manually and load it from autoexec.ncf. You might also want to look for DOSidle which will do the same for MSDOS/DRDOS VMs before you LOAD SERVER and it switches into protected mode.
            I’ve run it with real and virtual clients, real across a tap interface and virtual using udp tunnels.

            I’ll run mine up again over the next few days, it might just refresh my memory!

  5. I recently discovered IPX lurking in the kernel source of FreeBSD from somwhere in 4.x up until 10.x. It’s not enabled by default so needs a kernel building to enable it (fairly straightforward if you run the install and choose Kernel Devloper”).
    Also, somehing called MARS_NWE which was a Netware emulator that ran on Unix/Linux. More IPX/SPX packet fun!

    • MARS was not very easy to setup, but yes I’ve used it, and it was totally a thing.

      I’ve found the NetWare emulator thing for NT/2000 is FAR easier to setup, and with NT/2000 drivers it’s WAY faster too!

  6. Hi Neozeed, I wanted to ask you a question about NetWare 4 for PPC. I wasn’t sure if your vast array of interests extend that far (and wasn’t sure the best way to contact you).

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.