Building a testbed for evaluating the performance of large-scale heterogeneous systems can be costly and inefficient. Emulation is often used to evaluate the performance of a system in a controlled environment. Time dilation allows virtual machines (VMs) to emulate higher performance than that of their physical machine. We present an approach using adaptive time dilation to emulate large-scale distributed systems composed of heterogeneous machines and Operating Systems (OSs). In our implementation, VMs are globally synchronized. To evaluate our system, distributed VMs running Linux, Windows, FreeBSD, and Junos are emulated on general-purpose physical machines.