Command to start the QEMU process.
        (to be passed to subprocess.Popen())

def _build_command(self):
        """
        Command to start the QEMU process.
        (to be passed to subprocess.Popen())
        """

        additional_options = self._options.strip()
        additional_options = additional_options.replace("%vm-name%", '"' + self._name.replace('"', '\\"') + '"')
        additional_options = additional_options.replace("%vm-id%", self._id)
        additional_options = additional_options.replace("%project-id%", self.project.id)
        additional_options = additional_options.replace("%project-path%", '"' + self.project.path.replace('"', '\\"') + '"')
        command = [self.qemu_path]
        command.extend(["-name", self._name])
        command.extend(["-m", "{}M".format(self._ram)])
        command.extend(["-smp", "cpus={}".format(self._cpus)])
        if self._run_with_kvm(self.qemu_path, self._options):
            command.extend(["-enable-kvm"])
            version = yield from self.manager.get_qemu_version(self.qemu_path)
            # Issue on some combo Intel CPU + KVM + Qemu 2.4.0
            # https://github.com/GNS3/gns3-server/issues/685
            if version and parse_version(version) >= parse_version("2.4.0") and self.platform == "x86_64":
                command.extend(["-machine", "smm=off"])
        command.extend(["-boot", "order={}".format(self._boot_priority)])
        command.extend(self._bios_option())
        command.extend(self._cdrom_option())
        command.extend((yield from self._disk_options()))
        command.extend(self._linux_boot_options())
        if "-uuid" not in additional_options:
            command.extend(["-uuid", self._id])
        if self._console_type == "telnet":
            command.extend(self._serial_options())
        elif self._console_type == "vnc":
            command.extend(self._vnc_options())
        elif self._console_type == "spice":
            command.extend(self._spice_options())
        else:
            raise QemuError("Console type {} is unknown".format(self._console_type))
        command.extend(self._monitor_options())
        command.extend((yield from self._network_options()))
        command.extend(self._graphic())
        if additional_options:
            try:
                command.extend(shlex.split(additional_options))
            except ValueError as e:
                raise QemuError("Invalid additional options: {} error {}".format(additional_options, e))
        return command