vm86 monitor inside vm
Posted: Sat Feb 08, 2025 1:47 am
I've been studying how software like neTraverse merge/win4lin worked in hope to implement smilar vm in an os. The outline, so far what I understand, is as follows:
The software requires modified host kernel which can handle 'MKI' (merge kernel interface?) branded tasks specially. The GPF handler call the added merge hooks on encountering such task.
The program 'boots' by starting a vm86 DOS machine. I believe it to be vm86 cause PE is set and it is running standard real mode from windows 95. win.com is executed which in turn loads . (virtual machine manager), along other things like setting a host sets up a vm86 monitor. I think these along with other PL0 operations are handled by the fault handlers in host kernel, the kernel essentially runs in PL3.
But when I open a DOS prompt inside windows 95, it is running under windows, triggering non existing int triggers specific behaviour (ax is cleared). So the program in DOS is running under ? So the 'real' vm monitor (ie the handlers in host kernel) gets the interrupt and somehow forwards to vmm32, and then uses its results?
Is there a better possible explanation for this?
The software requires modified host kernel which can handle 'MKI' (merge kernel interface?) branded tasks specially. The GPF handler call the added merge hooks on encountering such task.
The program 'boots' by starting a vm86 DOS machine. I believe it to be vm86 cause PE is set and it is running standard real mode
Code: Select all
command.com
Code: Select all
vmm32.vxd
Code: Select all
vmm32
Code: Select all
dpmi
Code: Select all
vmm32
But when I open a DOS prompt inside windows 95, it is running under windows, triggering non existing int triggers
Code: Select all
vmm32
Code: Select all
vmm
Code: Select all
GPF
Is there a better possible explanation for this?