I'm currently testing ROS PXE with VBox 4.1.18 and I noticed some bugs happening:
- slow when starting freeldr.sys
- when we arrive into the freeldr menu, the timer stops. After many investigations I noticed that it was a call to PcGetTime, more exactly a call to Int386(0x1A) with AH = 0x02 (Get CMOS Time) that never returned: see commit http://svn.reactos.org/svn/reactos?view=revision&revision=66022 for more details.
- with the "hackfix" of r66022, the FreeLdr menu becomes usable. I attempted to test PXE livecd boot, and it appears freeldr hangs. It hangs there (after having added some dprints):
(reactos/boot/freeldr/freeldr/fs/pxe.c:168) err: CallPxe(PXENV_TFTP_GET_FSIZE)...
(reactos/boot/freeldr/freeldr/fs/pxe.c:92) err: CallPxe, calling GetPxeStructure
(reactos/boot/freeldr/freeldr/fs/pxe.c:100) err: CallPxe, calling KeStallExecutionProcessor
(reactos/boot/freeldr/freeldr/fs/pxe.c:105) err: CallPxe, calling PxeCallApi
The PxeCallApi never returns (with my dprint setup it should say:
(reactos/boot/freeldr/freeldr/fs/pxe.c:113) err: PxeCallApi returned!
if it had succeeded).
On the Internet I noticed that PXE internals hooks INT 0x1A.
Another note is that in reactos\boot\freeldr\freeldr\fs\pxe.c, in FindPxeStructure, we check for the presence of the !PXE structure in memory, between addresses 0x10000 and 0xA0000. This lead me to wonder whether at some point we would not suffer from memory corruption around this structure such that its contents would become corrupted...