Having trouble booting this version of the network installer for Debian under Microsoft Virtual Server 2005 R2 SP1? Supply it with the following kernel options at the “Press F1 to install” screen:

8042.noloop clock=pit

If you want to know why this works then carry on reading.. Still here? This is probably quite boring, so I don't blame you if you give up half way through!

Generally an OS gets the current time from the CMOS during startup, and then sets up a timer to generate periodic interrupts. The OS keeps track of time by counting these interrupts. However, when a virtual machine generates a time interrupt, the guest OS may not be running therefore the guest OS may not immediately account for some of these interrupts and thus “loose” time. To work around this issue, the virtual machine keeps a backlog of these interrupts. Additionally, the virtual machine increases the frequency of timer interrupts when it is running. The increased frequency of timer interrupts is intended to help the guest operating system maintain the correct time. However, the increased frequency of these interrupts could cause the guest to miss some of the interrupts. These missed interrupts are known as “lost ticks.” Lost ticks cause the time on the guest OS to lag behind.

The Linux 2.4 kernel doesn't have any way of accounting or dealing with these lost ticks, and this can cause the time to lag. However, the Linux 2.6 kernel has a number of clever algorithms to deal with them. Unfortunately this causes some other problems, by the look of it. Unfortunately I don't know exactly why, but I assume it's to do with how its dealing with the time and internal scheduling, perhaps (I am not a kernel developer, this is a bit of a stab in the dark)? What I can tell you is that by telling the kernel to use the pit algorithm you are telling it to not use any lost tick correction.

I'm assuming that this is probably going to become a staple thing to do when running Linux 2.6 kernels under VS 2005R2SP1 - at least for a little while.