An emulator emulates the hardware (CPU, network interface, disk, graphics, etc.) and the real operating system runs mostly or entirely unmodified atop this.
A simulator reproduces the APIs that an application expects without running the actual operating system code, through some combination of a port or a reimplementation.
However, I think it's fair to use the word simulation here too. It is a simulation from the user's point of view.
In fact, another way to categorize all this is at which level the mimicry happens: hardware, API, or user.