Al_Havemann
Enlightened
X-Ray:
VMware and Virtual PC both use their own hardware abstraction layer. They use the VM-OS drivers but abstract the interface so that it doesn't matter what OS is hosting the session. The networking depends on the host to have the correct drivers in one case but if the host does not, then the VM can access the hardware directly. If the host has the drivers for the network installed then the VM uses it's own driver and NAT to work through them.
It is supposed to be possible to do direct access to some of the hardware even if the host is using it. I haven't followed that logic to it's conclusion so I'll beg off a direct answer there, I'm not at all sure exactly what hardware the host will allow to have shared access to.
I do know that the VM-OS can be attacked, destroyed or whatever without infecting the host. For example, I created a Novell NetWare 6.3 server in a VM on a desktop system at my office. I loaded the firewall (Border Manager) in default mode without much configuration or specific port blocking etc. as would be the case for an inexperienced sysadmin. That evening I attacked the server from home using my laptop. This test was somewhat unfair since I knew the OS intimately and was aware of every installation choice.
I penetrated the firewall and destroyed the server first by attacking the WEB server and corrupting it, then the underlying server OS and finished by killing all the volumes. In other words, I attacked it much as an experienced hacker might with intent to do as much damage as possible. At no time was I able to detect that I was attacking a VM and not a physical server.
The next morning I checked the machine and the host OS (WinXP) was completely undamaged.
In summary, the VM uses much of the host hardware control systems since they are not shareable. The host OS locks onto much of the hardware and the VM must work through the host. This doesn't mean that you don't need drivers for the VM, just that they work through the host for access. This is going to be true for any VM on any host OS since on any system, the essential hardware is not shareable.
Attached peripherals for the most part function fine. I have had problems with USB devices and SCSI drives. Virtual PC doesn't support SCSI at all and I've had trouble Hot syncing my Palm to a VM, the VM see's the connection but fails to hotsync, so there's likely some issues with USB and maybe firewire as well, I don't have all the answers since I haven't tested that exhaustively. Mostly, I use VM to test various configurations, do investigation and forensics work and virus/Trojan investigation.
Performance is good with a VM on a competent machine but keep in mind that running two OS's on one machine is going to hit the system pretty hard. For most daily, non-intensive applications like WP, browsing and such it's no problem, but I wouldn't load a VM to do video processing, it just isn't going to work all that well. In a couple of years the hardware will probably support this workload with flinching but for now, just know that performance will take a hit.
As for drivers, they work through the host OS but the VM-OS has to have the drivers loaded as well. If you remember that the Vmware application uses the host OS as it's platform, that it can use whatever services the host provides and supply an abstract layer to the VM you'll pretty much be able to figure out what's going on.
Got another one for you, consider this: I load a version of VMware on a server, a special datacenter server version of VMware specially designed to abstract the server environment at the machine level. Into that server I load NetWare or some other server OS in a VM. Next I obtain say, 10 more computers and load the datacenter VMware on them as well and hook them into the network so they can all see each other. Once all the machines have the VMware loaded and can see each other, I do some configuration to inform them that they are all part of the same virtual computer. Having done that, I start the server os and off we go.
Since the hardware is abstracted and the machines themselves are abstracted, all 10 systems behave as if they were a single computer. The fun part is, if I lose say two systems, maybe the power supplies fail or something. The server just gets a bit slower. Fix those machines and maybe add 5 more and the VM server gets faster. No more single server failures, no clustering headaches. Need more horsepower?, add more hardware. One OS running on a multi-machine virtual server, fully fault tolerant, fully redundant and non-stop. Take down a machine for maintenance and the VMserver never misses a step.
The above is not fiction, there's a product well on it's way to delivering those features. Future high availability servers and sites may well utilize this technology. I wouldn't be surprised to see a product soon from that includes it's own boot OS and driver base. Boot to a minimum system (DOS like) and load your OS into a VM. Think of the relief to the support world, no more individual configurations for different hardware platforms, it's all abstracted. Build one OS, polish it to the corporate standard and copy it to every system in house regardless of the hardware and it runs the same everywhere.
I'd LOVE that!.
Hope this explains it better.
Al
VMware and Virtual PC both use their own hardware abstraction layer. They use the VM-OS drivers but abstract the interface so that it doesn't matter what OS is hosting the session. The networking depends on the host to have the correct drivers in one case but if the host does not, then the VM can access the hardware directly. If the host has the drivers for the network installed then the VM uses it's own driver and NAT to work through them.
It is supposed to be possible to do direct access to some of the hardware even if the host is using it. I haven't followed that logic to it's conclusion so I'll beg off a direct answer there, I'm not at all sure exactly what hardware the host will allow to have shared access to.
I do know that the VM-OS can be attacked, destroyed or whatever without infecting the host. For example, I created a Novell NetWare 6.3 server in a VM on a desktop system at my office. I loaded the firewall (Border Manager) in default mode without much configuration or specific port blocking etc. as would be the case for an inexperienced sysadmin. That evening I attacked the server from home using my laptop. This test was somewhat unfair since I knew the OS intimately and was aware of every installation choice.
I penetrated the firewall and destroyed the server first by attacking the WEB server and corrupting it, then the underlying server OS and finished by killing all the volumes. In other words, I attacked it much as an experienced hacker might with intent to do as much damage as possible. At no time was I able to detect that I was attacking a VM and not a physical server.
The next morning I checked the machine and the host OS (WinXP) was completely undamaged.
In summary, the VM uses much of the host hardware control systems since they are not shareable. The host OS locks onto much of the hardware and the VM must work through the host. This doesn't mean that you don't need drivers for the VM, just that they work through the host for access. This is going to be true for any VM on any host OS since on any system, the essential hardware is not shareable.
Attached peripherals for the most part function fine. I have had problems with USB devices and SCSI drives. Virtual PC doesn't support SCSI at all and I've had trouble Hot syncing my Palm to a VM, the VM see's the connection but fails to hotsync, so there's likely some issues with USB and maybe firewire as well, I don't have all the answers since I haven't tested that exhaustively. Mostly, I use VM to test various configurations, do investigation and forensics work and virus/Trojan investigation.
Performance is good with a VM on a competent machine but keep in mind that running two OS's on one machine is going to hit the system pretty hard. For most daily, non-intensive applications like WP, browsing and such it's no problem, but I wouldn't load a VM to do video processing, it just isn't going to work all that well. In a couple of years the hardware will probably support this workload with flinching but for now, just know that performance will take a hit.
As for drivers, they work through the host OS but the VM-OS has to have the drivers loaded as well. If you remember that the Vmware application uses the host OS as it's platform, that it can use whatever services the host provides and supply an abstract layer to the VM you'll pretty much be able to figure out what's going on.
Got another one for you, consider this: I load a version of VMware on a server, a special datacenter server version of VMware specially designed to abstract the server environment at the machine level. Into that server I load NetWare or some other server OS in a VM. Next I obtain say, 10 more computers and load the datacenter VMware on them as well and hook them into the network so they can all see each other. Once all the machines have the VMware loaded and can see each other, I do some configuration to inform them that they are all part of the same virtual computer. Having done that, I start the server os and off we go.
Since the hardware is abstracted and the machines themselves are abstracted, all 10 systems behave as if they were a single computer. The fun part is, if I lose say two systems, maybe the power supplies fail or something. The server just gets a bit slower. Fix those machines and maybe add 5 more and the VM server gets faster. No more single server failures, no clustering headaches. Need more horsepower?, add more hardware. One OS running on a multi-machine virtual server, fully fault tolerant, fully redundant and non-stop. Take down a machine for maintenance and the VMserver never misses a step.
The above is not fiction, there's a product well on it's way to delivering those features. Future high availability servers and sites may well utilize this technology. I wouldn't be surprised to see a product soon from that includes it's own boot OS and driver base. Boot to a minimum system (DOS like) and load your OS into a VM. Think of the relief to the support world, no more individual configurations for different hardware platforms, it's all abstracted. Build one OS, polish it to the corporate standard and copy it to every system in house regardless of the hardware and it runs the same everywhere.
I'd LOVE that!.
Hope this explains it better.
Al