Este post va dedicado a todos aquellos que, como yo, no suelen leerse las "guias de instalación". Si además pretenden instalar una imagen de Windows 2000 sobre VirtualBox en un ordenador tirando a rápido, es posible que tengan un problema.
Al principio parece que todo va bien, pero llega un momento en que el proceso de instalación hace que el PC se reinicie. Al arrancar de nuevo, la instalación vuelve a comenzar. Nos quedamos atrapados en un bucle infinito del que no es posible salir.
Después de perder algún tiempo imaginando qué podía estar pasando, he llegado al origen del problema (manual de VirtualBox):
11.2.2 Windows 2000 installation failures
When installing Windows 2000 guests, you might run into one of the following issues:
• Installation reboots, usually during component registration.
• Installation fills the whole hard disk with empty log files.
• Installation complains about a failure installing msgina.dll.
These problems are all caused by a bug in the hard disk driver of Windows 2000.
After issuing a hard disk request, there is a race condition in the Windows driver code
which leads to corruption if the operation completes too fast, i.e. the hardware interrupt
from the IDE controller arrives too soon. With physical hardware, there is a
guaranteed delay in most systems so the problem is usually hidden there (however it
should be possible to reproduce it on physical hardware as well). In a virtual environment,
it is possible for the operation to be done immediately (especially on very fast
systems with multiple CPUs) and the interrupt is signalled sooner than on a physical
system. The solution is to introduce an artificial delay before delivering such interrupts.
This delay can be configured for a VM using the following command:
VBoxManage setextradata <vmname>
"VBoxInternal/Devices/piix3ide/0/Config/IRQDelay" 1
This sets the delay to one millisecond. In case this doesn’t help, increase it to a value
between 1 and 5 milliseconds. Please note that this slows down disk performance.
After installation, you should be able to remove the key (or set it to 0).
Siguiendo las instrucciones del manual, todo parece funcionar correctamente. A veces puede ser útil leer un manual...