code: def _set_ghost_ios(self, vm):
          
  
          if not vm.mmap:
              raise DynamipsError("mmap support is required to enable ghost IOS support")
  
          if vm.platform == "c7200" and vm.npe == "npe-g2":
              log.warning("Ghost IOS is not supported for c7200 with NPE-G2")
              return
  
          ghost_file = vm.formatted_ghost_file()
  
          module_workdir = vm.project.module_working_directory(self.module_name.lower())
          ghost_file_path = os.path.join(module_workdir, ghost_file)
          if ghost_file_path not in self._ghost_files:
              # create a new ghost IOS instance
              ghost_id = str(uuid4())
              ghost = Router("ghost-" + ghost_file, ghost_id, vm.project, vm.manager, platform=vm.platform, hypervisor=vm.hypervisor, ghost_flag=True)
              try:
                  yield from ghost.create()
                  yield from ghost.set_image(vm.image)
                  yield from ghost.set_ghost_status(1)
                  yield from ghost.set_ghost_file(ghost_file_path)
                  yield from ghost.set_ram(vm.ram)
                  try:
                      yield from ghost.start()
                      yield from ghost.stop()
                      self._ghost_files.add(ghost_file_path)
                  except DynamipsError:
                      raise
                  finally:
                      yield from ghost.clean_delete()
              except DynamipsError as e:
                  log.warn("Could not create ghost instance: {}".format(e))
  
          if vm.ghost_file != ghost_file and os.path.isfile(ghost_file_path):
              # set the ghost file to the router
              yield from vm.set_ghost_status(2)
              yield from vm.set_ghost_file(ghost_file_path)
docs: Manages Ghost IOS support.
  
          :param vm: VM instance