Rescuing a SCO OpenServer 5.0.5 machine to run in a VM on RHEL5.4

I received a frantic SMS from an old classmate running a travel agency business saying that his SCO machine cannot now boot. He is running an application written to a 3-GL/4-GL product called Thoroughbred. He has had the system running since about 1999. And since it does not connect to the Internet, and only has internal LAN users coming in via a telnet connection, he never needed to keep it updated.

So, what was the problem? His 10-year old IBM tower machine failed to boot. Got some help from a local vendor and found that it was the power supply that failed not the harddisk. WIth the power supply replaced, he is now back in business. The proposal given to him from the vendor who fixed the hardware was to “upgrade to a new machine, but we cannot guarantee that the OS and applications you have running will work”.

Enter, the lunch meeting. After hearing his story, I thought his situation would make for an interesting case study for virtualization. So, with his permission, I got hold of the “still in original shrink-warp” SCO manuals and CDs along with the Thoroughbred software and installed the SCO OpenServer 5.0.5 in a RHEL 5.4 VM.

Here is what I had to do:
a) dd’ed the SCO OpenServer 5.0.5 CD (“you can now boot from the CD if your BIOS supports it”) into an iso. It came up to about 280M only!
b) From virtual-machine-manager, choose a new maching with full virtualization
c) Specified 800MB as the drive size (imagine that!)
d) Kept the defaults for the rest.
e) Proceeded with the boot up and installation.
f) All went well. It is hilarious to see the setting up of the harddisk with the sector numbers and heads being cycled through – the “drive” is virtual, and kudos to the virtualization engineers, the SCO installation program was sufficiently convinced that it was all real.
g) Boot up.

The boot up went well (user: root and password: fedora). But the network was not working. Had to start “scoadmin” to get into a curses based setup to configure the network device. I had to go back to virtual-machine-manager and set this VM to have a “pcnet” network. The default “hypervisor” network did not seem to work. The “pcnet” is apparently a ISA device which the SCO has drivers for. It was in the AMD section of the hardware network hardware setup section of the scoadmin command.

So here’s the /etc/libvirt/qemu/sco-openserver-5.0.5.xml:

  sco-openserver-5.0.5
  447d29e3-7891-bb76-385c-82d38e43e739
  524288
  524288
  1

    hvm

  destroy
  restart
  restart

    /usr/bin/qemu

[BTW, in the xml file above, I have to add a space after the < above so that it will not be interpereted by lj. Edit out the extra space if you want to use the xml file.]

The SCO OpenServer 5.0.5 does not have DHCP default and needs an IP to be specified. So, an IP, netmask and default gw has to be specified manually. Interestingly, the network device is “net3”.

It could ping out of the box, telnet to external machines etc so the NAT setup of the VM is working fine.

Looks like I have solved the problem from my friend by using virtualization. Now can get go get a new machine and run RHEL 5.4 on it have his ancient SCO OpenServer 5.0.5 + applications run in perpetuity.

34 comments


    • Virtualization
      Hi Harish,
      its really exciting to read how useful virtualization can be. I believe ROI can definitely be maximised this way.
      I’m still very new to virtualisation though. Is loading balancing = server virtualization? Not sure if loading balancing is physical or virtual. Hope you can share some light on this.
      Cheers,
      David (ex-student of Open Source Office Productivity Tool)


      • Re: Virtualization
        David –
        Hi. Good to hear from you.
        Load balancing is not the same as server virtualization. Load balancing is about having same systems share a load. For example, you can have 4 systems running an exact copy of the webserver and have another system in front of these 4 machines which will direct incoming web requests evenly. This is called round-robin load balancing. Load balancing has many other deployments as well (databases, etc).
        Server virtualization could be the building block of what could be deployed in a load balancing situation.
        Consider the following:
        a) You have 4 physical machines all installed with Linux and running Apache as the web server.
        b) With a 5th machine sitting in front of those 4, you can implement a form of round robin load balancing.
        c) Now consider instead of 4 physical machines, you have 4 virtual machines all running on one physical machine. Let’s say you have a 5th VM running the round-robin load balancing tool. With this setup you are using VM techniques below a load balancing solution.
        I hope this was a clear enough explanation.
        Harish


  1. i have been trying to replicate this with centos 5.5 and kvm. i can install just fine, but at reboot time it always comes back with:

    FATAL: No bootable device.

    i’ve fiddled around with the qemu xml file to match what you have and still no luck. did you experience anything like this? maybe kvm interferes somehow, but it should just be a faster version of plain qemu.


      • the rhel box i have access to doesn’t have the qemu virtualization system available. it doesn’t have any of the virt-* tools available, so i think it may be a license issue. it is so annoying that i can install, but then not boot…


    • it was a rhn channel subscription issue, but then i also realized that rhel only does kvm/qemu for 64 bit, which i can’t convert this rhel system into. sco now supports a virtual image for vmware and hyper-v, unfortunately they want more money to use it, but that may be the best way for my client to go.


      • OK. Understand. The technical and business tradeoff is that if you want to truly run virtualization in an enterprise, it is unlikely that you will be running a 32-bit server hardware. Hence the availability of KVM on only 64-bit. However, Xen is available for 32-bit RHEL.

        Harish


  2. Harish,

    I have this same exact issue. I bought the software in 1988 sold the business in 1992 and just bought it back. The last updates were for y2k. If you do the virtualization, can you print using a modern printer or do you have to rely on the old SCO/Throughbred drivers?


    • Terry –

      What I did was to have the app send the print out to a file which was in a NFS’ed file system. The host monitored that subdir with a script which will then take any file and send to one of the printers. The issue i had to get around was that the app wanted a parallel printer and since there are no more parallel ports on the new machine, I had to do some simple python scripting to take care of it.


  3. I have tried this on CentOS 5.5 with OSR506 using a version of your XML and `virsh define kvm1.xml; virsh start kvm1`, the install starts OK, asks about keyboard layout, licence keys. Then stops saying “ERROR” No root disk has been detected, Cannot proceed” – any ideas?


      • Hello, thanks for taking a look,

        The console windows shows the following

        QEMU BIOS

        ata0 master: QEMU HARDDISK ATA-7 Hard Disk (10000 MB)
        ata1 master: QEMU DVD-ROM ATAPI-4 CR-Rom/DVD-Rom

        (OpenServer messages)
        Boot
        :

        %adapter 0x0170-0x0177 15 – type=IDE ctlr=secondary dvr=wd
        %tape – – – type=IDE ctlr=pri cfg=slave dvr=Stp->wd
        %cd-rom – – – type=IDE ctlr=pri cfg=slave dvr=Srom->wd

        WARNING: hd: no root disk controller was found
        hd: a Boot-Time Loadable Driver may be required

        if I ignore the error and proceed, I can get it to read my OSR506.iso by telling it the media is IDE secondary master (other settings it says there’s no media) which doesn’t look consistent with the boot messages.


  4. Harrish,

    I have a similar situation with two old business applications running on a SCO 505 server. The Dell hardware is very old and I can’t upgrade the software to work on newer versions of Unix. I’d like to buy time to transition to newer applications by moving everything to new hardware using virtualization like you describe. Would you be willing, and what would it cost, to do this same thing for me (create a virtual SCO machine for me)? Is there a way I could get the hardware and have you walk me through set-up to the point where you could remote access to finish? Sorry if this is not a suitable comment for this blog, but I could not find an email address to use.

    Thanks,
    Tom


    • Tom –

      Hi. Thanks for the comment and note. I’d be happy to help you on this. Do send me an
      email and we can pick it up from there.

      Email to h dot pillay at ieee dot org.

      Harish


  5. Hi Harish,

    I tried the email address you provided but have not received a reply. Are my emails getting through or in your Junk Mail folder? Thanks. Mine is tobyrne at obyrnedc dot com

    Tom


  6. Hello
    I’m trying to install sco 5.0.5 on SLES11 (xen-libs-4.1.2/kernel-xen-3.0.13)
    I have not had great success, start the installation, copy the files, but then not boot the disc.
    The installation copies the files, but not sure if the installation is successful because they never last screen servers provide information about the installation is complete.

    Then to start the domU shows the error: ‘Booting From Hard Disk … “, you say do remember something wrong? (3 years is a long time to remember)

    Greetings.


    • Indeed it is a little hard to recall what the problem was, but I think the issue was about the boot sector not being found. I have not done this on a Xen VM so I can’t tell you what to look out for. Could you not install in a KVM VM on the SLES11 host?


      • Hello
        If I’m going to try with KVM
        Now I’m testing with VirtualBox. seems to work but managed to 6MB / s disk access: (

        Thank you.


  7. i am back to trying to virtualize a 5.0.5 box. this time i just made an image of the boot disk and shoved that into kvm. things are looking good, it boots up, but i can’ t get any keyboard input. i have tried all kinds of kvm fiddling, but no luck so far. any clues as to what might be going on? the sco bootloader can see keyboard input, but once it gets into unix, nothing is accepted from the keyboard.


  8. So here’s the /etc/libvirt/qemu/sco-openserver-5.0.5.xml:

    sco-openserver-5.0.5
    447d29e3-7891-bb76-385c-82d38e43e739
    524288
    524288
    1

    hvm

    destroy
    restart
    restart

    /usr/bin/qemu

    [BTW, in the xml file above, I have to add a space after the < above so that it will not be interpereted by lj. Edit out the extra space if you want to use the xml file.]

    Well, I’m not sure what “lj” is, but evidently it, or WordPress, has eaten your XML. It doesn’t even show up in the page source.

    Right now I’ve dd’ed a physical hard drive of SCO OpenServer 5.0.4 and was trying to get it to boot. I get as far as it asking for an administrator password or press Ctrl-d to continue booting. It seems my keyboard is non-functional.

    Is there some magic trick in the XML that makes the keyboard work?

    Thanks in advance.
    Regards,
    Stuart Longland


    • Stuart –

      “lj” refers to livejournal where the blog used to be. I guess I should update the page. Thanks for pointing it out.

      Keyboard – well, on the system I had set up the keyboard was working. could not figure out the mouse though.

      Harish


  9. Ahh no worries. Maybe this is a bug that was fixed in release 5.0.5, but sadly the machine I got this drive from ran 5.0.4 which doesn’t like QEMU’s keyboard at all.

    I’m running QEMU/KVM 1.5.3 (Gentoo Linux host). I might give VirtualBox a try and see how that goes. It’s not terribly important, this is just a convenience so I can boot up the old system, I can still put the drive back in the machine it came from.

    Thanks anyway.

    Regards,
    Stuart Longland.


    • Don’t have a 5.0.4 version to test though.

      The machine I have that SCO VM running is now on RHEL 6.5 and the related qemu and kvm versions are:

      qemu-guest-agent-0.12.1.2-2.415.el6_5.3.x86_64
      qemu-img-0.12.1.2-2.415.el6_5.3.x86_64
      gpxe-roms-qemu-0.9.7-6.10.el6.noarch
      qemu-kvm-0.12.1.2-2.415.el6_5.3.x86_64
      qemu-kvm-tools-0.12.1.2-2.415.el6_5.3.x86_64
      qemu-kvm-0.12.1.2-2.415.el6_5.3.x86_64
      qemu-kvm-tools-0.12.1.2-2.415.el6_5.3.x86_64

      hth.

      harish


  10. ;&lt domain type=’qemu’;&gt
    ;&lt name;&gtsco-openserver-5.0.5;&lt/name;&gt
    ;&lt uuid;&gt447d29e3-7891-bb76-385c-82d38e43e739;&lt/uuid;&gt
    ;&lt memory;&gt524288;&lt/memory;&gt
    ;&lt currentMemory;&gt524288;&lt/currentmemory;&gt
    ;&lt vcpu;&gt1;&lt/vcpu;&gt
    ;&lt os;&gt
    ;&lt type arch=’i686′ machine=’pc’;&gthvm;&lt/type;&gt
    ;&lt boot dev=’hd’/;&gt
    ;&lt /os;&gt
    ;&lt features;&gt
    ;&lt acpi/;&gt
    ;&lt apic/;&gt
    ;&lt pae/;&gt
    ;&lt /features;&gt
    ;&lt clock offset=’utc’/;&gt
    ;&lt on_poweroff;&gtdestroy;&lt/on_poweroff;&gt
    ;&lt on_reboot;&gtrestart;&lt/on_reboot;&gt
    ;&lt on_crash;&gtrestart;&lt/on_crash;&gt
    ;&lt devices;&gt
    ;&lt emulator;&gt/usr/bin/qemu;&lt/emulator;&gt
    ;&lt disk type=’file’ device=’disk’;&gt
    ;&lt source file=’/var/lib/libvirt/images/sco-openserver-5.0.5.img’/;&gt
    ;&lt target dev=’hda’ bus=’ide’/;&gt
    ;&lt /disk;&gt
    ;&lt disk type=’file’ device=’cdrom’;&gt
    ;&lt target dev=’hdc’ bus=’ide’/;&gt
    ;&lt readonly/;&gt
    ;&lt /disk;&gt
    ;&lt interface type=’network’;&gt
    ;&lt mac address=’54:52:00:3c:a2:67’/;&gt
    ;&lt source network=’default’/;&gt
    ;&lt model type=’pcnet’/;&gt
    ;&lt /interface;&gt
    ;&lt serial type=’pty’;&gt
    ;&lt source path=’/dev/pts/3’/;&gt
    ;&lt target port=’0’/;&gt
    ;&lt /serial;&gt
    ;&lt console type=’pty’ tty=’/dev/pts/3′;&gt
    ;&lt source path=’/dev/pts/3’/;&gt
    ;&lt target port=’0’/;&gt
    ;&lt /console;&gt
    ;&lt input type=’mouse’ bus=’ps2’/;&gt
    ;&lt graphics type=’vnc’ port=’-1′ autoport=’yes’ keymap=’en-us’/;&gt
    ;&lt /devices;&gt
    ;&lt /domain;&gt


    • Let’s try that again…

      ;&lt domain type=’qemu’>
      ;&lt name>sco-openserver-5.0.5;&lt/name>
      ;&lt uuid>447d29e3-7891-bb76-385c-82d38e43e739;&lt/uuid>
      ;&lt memory>524288;&lt/memory>
      ;&lt currentMemory>524288;&lt/currentmemory>
      ;&lt vcpu>1;&lt/vcpu>
      ;&lt os>
      < type arch=’i686′ machine=’pc’>hvm</type>
      < boot dev=’hd’/>
      < /os>
      < features>
      < acpi/>
      < apic/>
      < pae/>
      < /features>
      < clock offset=’utc’/>
      < on_poweroff>destroy</on_poweroff>
      < on_reboot>restart</on_reboot>
      < on_crash>restart</on_crash>
      < devices>
      < emulator>/usr/bin/qemu</emulator>
      < disk type=’file’ device=’disk’>
      < source file=’/var/lib/libvirt/images/sco-openserver-5.0.5.img’/>
      < target dev=’hda’ bus=’ide’/>
      < /disk>
      < disk type=’file’ device=’cdrom’>
      < target dev=’hdc’ bus=’ide’/>
      < readonly/>
      < /disk>
      < interface type=’network’>
      < mac address=’54:52:00:3c:a2:67’/>
      < source network=’default’/>
      < model type=’pcnet’/>
      < /interface>
      < serial type=’pty’>
      < source path=’/dev/pts/3’/>
      < target port=’0’/>
      < /serial>
      < console type=’pty’ tty=’/dev/pts/3′>
      < source path=’/dev/pts/3’/>
      < target port=’0’/>
      < /console>
      < input type=’mouse’ bus=’ps2’/>
      < graphics type=’vnc’ port=’-1′ autoport=’yes’ keymap=’en-us’/>
      < /devices>
      < /domain>


  11. Who’d have thought that a simple search and replace would be so non-simple? :-p

    Anyway, here’s an actual readable version of the original XML file:

    ;&lt domain type=’qemu’>
    < name>sco-openserver-5.0.5</name>
    < uuid>447d29e3-7891-bb76-385c-82d38e43e739</uuid>
    < memory>524288</memory>
    < currentMemory>524288</currentmemory>
    < vcpu>1</vcpu>
    < os>
    < type arch=’i686′ machine=’pc’>hvm</type>
    < boot dev=’hd’/>
    < /os>
    < features>
    < acpi/>
    < apic/>
    < pae/>
    < /features>
    < clock offset=’utc’/>
    < on_poweroff>destroy</on_poweroff>
    < on_reboot>restart</on_reboot>
    < on_crash>restart</on_crash>
    < devices>
    < emulator>/usr/bin/qemu</emulator>
    < disk type=’file’ device=’disk’>
    < source file=’/var/lib/libvirt/images/sco-openserver-5.0.5.img’/>
    < target dev=’hda’ bus=’ide’/>
    < /disk>
    < disk type=’file’ device=’cdrom’>
    < target dev=’hdc’ bus=’ide’/>
    < readonly/>
    < /disk>
    < interface type=’network’>
    < mac address=’54:52:00:3c:a2:67’/>
    < source network=’default’/>
    < model type=’pcnet’/>
    < /interface>
    < serial type=’pty’>
    < source path=’/dev/pts/3’/>
    < target port=’0’/>
    < /serial>
    < console type=’pty’ tty=’/dev/pts/3′>
    < source path=’/dev/pts/3’/>
    < target port=’0’/>
    < /console>
    < input type=’mouse’ bus=’ps2’/>
    < graphics type=’vnc’ port=’-1′ autoport=’yes’ keymap=’en-us’/>
    < /devices>
    < /domain>

Leave a Reply to Tom O'ByrneCancel reply