VMware Communities
sonicbuddha
Contributor
Contributor

Setting/changing machine/os type from 32bit to 64bit

I downloaded the newest Solaris vmware machine from Sun and when I start it up I get an error message stating that I am attempting to run a 32bit os on a 64bit system and that I should change the machine setting appropriately. Ironically, I've looked and looked but couldn't find anything to make that change. Lil' help?

Reply
0 Kudos
20 Replies
admin
Immortal
Immortal

Add "monitor_control.disable_longmode = 1" to the .vmx file.

http://www.vmware.com/community/thread.jspa?messageID=512286

Reply
0 Kudos
sonicbuddha
Contributor
Contributor

Thank you for your reply, but that thread isn't exactly my problem.

I am not trying to force my VM machine to boot only the 32bit guest kernel. I am trying to resolve the error Fusion gives me which says I am trying to run a 64bit guest with an operating system type configured as 32bit. The error message states I should change my guest operating system type to 64bit, which suggests its possible but I can't find how.

Reply
0 Kudos
admin
Immortal
Immortal

What's the exact error, and where can I get the VM from to try to reproduce the problem? Your original post suggests the guest is 32-bit; but this post makes it sounds like the guest is supposed to be 64-bit but is only 32-bit.

One guess is that you'll note that if you were to try to create a new Solaris VM, you get the option of 64-bit-ness. The difference is whether the guest type is set to "solaris10-64" or just "solaris10". I'd expect a preconfigured VM to have this set correctly, but it's possible this is wrong.

Reply
0 Kudos
sonicbuddha
Contributor
Contributor

I downloaded the vmware machine from Sun, a link I got here.

https://sdlc2e.sun.com/ECom/EComActionServlet;jsessionid=523EE7505D8F5FFC70A0B7BC9D075416

Exact error message:

You are running a 64-bit guest operating system, but the virtual machine is configured to run a 32-bit operating system.

To ensure that a 64-bit guest system will function correctly you must:

1. Power off this virtual machine.

2. Change the guest operating system type to a 64-bit operating system in virtual machine settings.

Reply
0 Kudos
rcardona2k
Immortal
Immortal

>You are running a 64-bit guest operating system, but the virtual machine is configured to run a 32-bit operating system

What kind of Mac is this? You can't install a 64-bit OS in an original iMac, mini or MacBook Pro; you need a machine with a Core2 Duo or a Mac Pro for that.

The Core Duo processor doesn't meet the pre-requisites to run a 64-bit in a guest VM.

Reply
0 Kudos
sonicbuddha
Contributor
Contributor

Macbook pro, Intel Core Duo 2, which, of course, is a 64bit processor.

I'm confused- if this processor is not supported for running 64bit guest OSes, then why does Fusion, built for Intel OS X, support 64bit guest OSes? It would be a feature unusable by any Mac.

Reply
0 Kudos
rcardona2k
Immortal
Immortal

>Macbook pro, Intel Core Duo 2,

if this processor is not supported for running 64bit guest OSes, then why does Fusion, built for Intel OS X, support 64bit guest OSes? It would be a feature unusable by any Mac.

A MacBook Pro with a Core 2 Duo is fine. A MacBook Pro with a Core Duo is not. You are OK to run 64-bit OS's.

Reply
0 Kudos
admin
Immortal
Immortal

Oops, I didn't consider it might require registration to download. Do you know if it's the same VM as the one at http://www.vmware.com/vmtn/appliances/directory/420 ? What's the contents of the .vmx? What happens if you edit the guest type as in my previous post?

Reply
0 Kudos
sonicbuddha
Contributor
Contributor

The link you posted leads to the link I posted- I figured I'd just jump ahead. As for the registration, its no big deal and there isn't any spam associated. It entitles you to updates, though, which is a big deal if you ever want to use Solaris.

Heres the vmx, which I haven't edited as you indicated 'cause I WANT it to run the 64bit kernel. Also, despite the error message, it still launches:

#!/usr/bin/vmware

config.version = "8"

virtualHW.version = "4"

scsi0.present = "TRUE"

scsi0.virtualDev = "lsilogic"

memsize = "512"

MemAllowAutoScaleDown = "FALSE"

ide0:0.present = "TRUE"

ide0:0.fileName = "Solaris 10 update 3.vmdk"

ide0:0.writeThrough = "TRUE"

ide1:0.present = "TRUE"

ide1:0.fileName = "auto detect"

ide1:0.deviceType = "atapi-cdrom"

floppy0.fileName = "Auto detect"

ethernet0.present = "TRUE"

ethernet0.connectionType = "nat"

usb.present = "TRUE"

sound.present = "TRUE"

sound.virtualDev = "es1371"

displayName = "Solaris 10 update 3"

guestOS = "solaris10"

nvram = "Solaris 10 update 3.nvram"

ide1:0.autodetect = "TRUE"

floppy0.startConnected = "FALSE"

floppy0.autodetect = "TRUE"

sound.startConnected = "FALSE"

sound.fileName = "-1"

sound.autodetect = "TRUE"

ide0:0.redo = ""

ide1:0.startConnected = "TRUE"

ethernet0.addressType = "generated"

uuid.location = "56 4d ae 67 bd 46 f1 50-c8 19 11 94 e5 71 6d 23"

uuid.bios = "56 4d ae 67 bd 46 f1 50-c8 19 11 94 e5 71 6d 23"

ethernet0.generatedAddress = "00:0c:29:71:6d:23"

ethernet0.generatedAddressOffset = "0"

tools.syncTime = "FALSE"

Reply
0 Kudos
admin
Immortal
Immortal

The link you posted leads to the link I posted- I figured I'd just jump ahead.

Ah, I see. I wasn't sure about this, as the link you posted didn't lead anywhere useful for me.

Heres the vmx, which I haven't edited as you indicated

Sorry, I should have been more specific. I suggested two different edits, each of which has a different goal:

o 'monitor_control.disable_longmode = "1"' should force the guest to be 32-bit

o 'guestOS = "solaris10-64"' should tell Fusion this is a 64-bit guest

I was suggesting you try the second one. Also, since it's just a VM, you can make a backup copy (of at least the .vmx and the .vmdk) if you're wary of changing something.

Note that according to the .vmx, this VM was set up as a 32-bit guest, and the second edit will work only if all the 64-bit support was installed - I'm not familiar with Solaris, so I can't say if this is normally the case.

If this doesn't work, let me know the variant you downloaded (I see 4 different versions: 01/06, 06/06, 11/06, and Developer) and I'll try it sometime tomorrow.

Edited to add disclaimer about it maybe not working --etung 2007.02.25 21:14

Reply
0 Kudos
admin
Immortal
Immortal

Since your .vmx mentions that it's update 3, I assume you chose the 11/06 version. I downloaded it, reproduced your problem, then changed the guestOS type to solaris10-64. This made the warning not show up, and in this case `/usr/bin/isainfo -kv` reports that it is 64-bit.

The "monitor_control.disable_longmode = 1" line seemed to make the boot process slower; when I tried it, the VM appeared to do nothing for a minute or two. It did work, though, and in this case `/usr/bin/isainfo -kv` reports that it is 32-bit.

I'd like to add that whoever made the VM is also strange for leaving the guest resolution at 2304x1728.

Reply
0 Kudos
ericmacg
Contributor
Contributor

Hello,

I join the discussion a bit lately, but I encountered today exactly the same problem, using the same solaris 11/06 VM download from sun (using VMWare Fusion 1.0 under MacOS 10.4).

I experimented the following two scenarios:

1. Use 'solaris10-64' instead of 'solaris10' as guestOS in .vmx file

The warning message "You are running a 64-bit guest operating system, but the virtual machine is configured to run a 32-bit operating system." disappears.

However, on startup, Solaris cannot initialize the vmxnet interface:

Failed to plumb IPv4 interface(s): vmxnet0

Failed to configure IPv4 DHCP interface(s): vmxnet0

It seems to me that the vmxnet interface is not supported by the vmware tools for Solaris. When uninstalling the pre-installed vmware tools, and reinstalling, the installer even dumps a message that it does not activate vmxnet on 64-bit system.

2. Keep 'solaris10' as guestOS, but add "monitor_control.disable_longmode = 1" to .vmx file

Like for point 1, the 64-bit warning message does not show up. Now Solaris boots in 32-bit mode and the vmxnet adapter is correctly initialized. All networking (using NAT via my host MacOS) works correctly.

Could it be that SUN only tested their pre-configured Solaris VM's on 32-bit Intel boxes?

Smiley Wink

Reply
0 Kudos
gbullman
Expert
Expert

This thread is the closest to the problem that I am having, and that is why I'm posting here.

I downloaded the Solaris 10 Update 3 Virtual Appliance from the VMware site to refresh my Solaris skills. I am really stuck on getting the networking to work, and not quite where to go from here. I want to run this VM such that it configures via DHCP, since I run it on a MacBook Pro, and don't want to tie it to one location. After reading through various items on Solaris 10 networking and running this VM, here is my present state.

1. The VM network settings are set to bridged

2. I've set the hostname via an entry in /etc/nodename with a newline after the hostname

3. I currently have /etc/dhcp.vmxnet0 and /etc/hostname.vmxnet0 as empty files. I have tried the following in various combinations, without any change in behavior that I noticed; a) Had 2 lines in /etc/dhcp.vmxnet0 of wait 60 and primary, b) Had hostname, and on other try inet hostname in /etc/hostname.vmxnet0.

4. I have modified PARAM_REQUEST_LIST to remove 12 from /etc/default/dhcpagent so the DHCP request does not ask for a hostname.

5. I have added monitor_control.disable_longmode = 1 to the .vmx file to force 32-bit mode. Not clear wether the 1 should have quotes around it or not.

6. I've installed vmware tools, and seem to have the vmxnet0 interface that results, more on this later.

When the VM boots up the early SunOS messages indicates that it is a 32-bit OS (1st line that appears on the console).

The VM is getting set up with the desired hostname

I consistently get the following 2 messages during boot up;

Failed to plumb IPv4 interface(s): vmxnet0

Failed to configure IPv4 DHCP interface(s): vmxnet0

There seems to be no network configuration for vmxnet0. ifconfig -a returns;

lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1

inet 127.0.0.1 netmask ff000000

And ifconfig vmxnet0 plumb returns;

ifconfig: plumb: vmxnet0: No such file or directory

I'm expecting the VM to get DHCP information from my Linksys Router like the rest of the network does.

I've started over with a new copy of the original VM multiple times, generally starting over after following the recommended sys-unconfig command and subsequent reboot. Running that command seems to make more of a mess of my network configuration as far as getting the desired DHCP behavior I'm looking for.

I think the response from ifconfig vmxnet0 plumb is indicative that a driver is not installed or configured, or there is some other fundamental problem with the vmxnet0 interface. I actually did get a dhcp configuration with the original pcn0 interface during one of my attempts, but when I installed vmware tools I cannot seem to make the transition to vmxnet0.

Is anything I have listed an obvious configuration mistake? Is there something that I am obviously missing to get this to work? How do I troubleshoot what is going on with the ifconfig plumb command? I'm pretty sure from what I've read that until I get that working, nothing else will.

Thanks in advance for any help.

Reply
0 Kudos
Technogeezer
Immortal
Immortal

I'm running a home-built Solaris 10 x64 64-bit VM with no networking problem. What I found is that during the creation process for the guest, the virtual NIC type in my guest OS is an e1000 type, not a pcn type - and hence a vmxnet driver does not get installed by VMware tools in my guest.

See if changing the network interface type in the VM to be an e1000 helps out. Add the following to the vmx file

ethernet0.virtualDev = "e1000"

- Paul (Technogeezer)
Editor of the Unofficial Fusion Companion Guides
Reply
0 Kudos
gbullman
Expert
Expert

I tried your suggestion, but no change in behavior that I can see. Also did some research on the Mac OS X 32-bit / 64-bit capabilities. Tiger and Leopard have 64-bit addressing capabilities, but it does not sound like they are true fully 64-bit operating systems (ie. they don't require 64 bit drivers, they run 32-bit software, seems to be an interesting topic of discussion).

Clearly the message of my Solaris VM is that it is 32-bit when booting up, so I'm assuming that forcing the VM to run in a 32-bit virtual machine makes sense.

I have both vmxnet & vmxnet0 "files" in /dev, and the seem to link to something similar to what the pcn & pcn0 "files" link to. I really think I'm missing some fundamental config somewhere, just not sure what.

Reply
0 Kudos
Bob_Zimmerman
Expert
Expert

Leopard is as "fully 64-bit" as any other operating system I've ever seen. Why on earth would a 64-bit OS require 64-bit drivers? That seems a fairly arbitrary requirement when the hardware can run both 32-bit and 64-bit code "at the same time" (quotes because I know things don't actually run simultaneously, they just pretend to). As far as I know, Itanium is the only 64-bit-only line processors that Intel makes.

I guess I'm not sure how much more 64-bit you can get than natively running code that uses 64-bit-wide registers. All of this is wildly off-topic, though.

Reply
0 Kudos
gbullman
Expert
Expert

Fair enough, only thing I noticed is that, other than the vastly increased address space, there does appear to some debate about what is "true" 64-bit. In my case when the Solaris VM is booting up it indicates it is 32-bit, when I run the arch command in darwin on my Leopard machine (with a core 2 duo processor) it returns i386 (32-bit). Those two pieces of information at a minimum throw some confusion into the 32 / 64 bit question. I do not disagree with your statement "Leopard is as "fully 64-bit" as any other operating system I've ever seen."

At any rate, since my Solaris VM is apparently a 32-bit installation, I think that I am appropriately setting monitor_control.disable_longmode = 1 to force the VM to also be 32-bit.

Can anyone help me with my errors with ifconfig plumb? I am posting here because I think my problem is in the interface between the VM providing a virtual network adapter, and the operating system properly recognizing it and configuring it.

Reply
0 Kudos
admin
Immortal
Immortal

Leopard is as "fully 64-bit" as any other operating system I've ever seen

Leopard uses a 32-bit kernel, which I believe is unique among 64-bit OSes. I might be confusing the uniqueness with the mixed mode of Tiger, though.

Reply
0 Kudos
Bob_Zimmerman
Expert
Expert

That's a legitimate argument, but I would expect that part of the reason for the 32-bit kernel is that the kernel honestly doesn't need to be 64-bit yet. At this point, kernel extension compatibility is more important than the kernel being able to address past the PAE boundary in memory directly. Honestly, I haven't looked into whether kernel extensions can even be compiled as x86_64. Looks like they can't because the kernel they're compiling against doesn't do 64-bit directly. I expect this will eventually be necessary, but it could also be that the kernel bits that need registers wider than 64 bits will get delegated out to another process.

Oddly enough, launchd is also 32-bit.

Still, the fact remains that Leopard natively runs code that uses 64-bit-wide registers. Cocoa and the overwhelming majority of the other APIs can be called directly from 64-bit code without having to dumb the system back down to 32-bit temporarily. I guess kernel message passing would still require shifting to 32-bit mode, but you can just set up a socket or a pipe for shuffling data around in 64 bits.

Reply
0 Kudos