Средний

Драйвер VMMouse для Windows NT 3.x в QEMU

Алексей Кузнецов
Алексей Кузнецов
Системный администратор23 октября 2026 г.12 мин чтения

Разбираем, как обеспечить плавную работу мыши в старых версиях Windows NT 3.x при использовании виртуализации QEMU и VMware через драйвер VMMouse.

Драйвер VMMouse для Windows NT 3.x в QEMU

Разбираем, как обеспечить плавную работу мыши в старых версиях Windows NT 3.x при использовании виртуализации QEMU и VMware через драйвер VMMouse.

Проблема интеграции мыши в старых системах

Проблема интеграции мыши в старых системах

Когда мы запускаем Windows NT 3.x в современной среде виртуализации, первой проблемой, с которой сталкивается пользователь, становится управление курсором. Это не просто вопрос удобства, а фундаментальное ограничение того, как старые операционные системы воспринимают аппаратное обеспечение.

Особенности работы эмуляции ввода

В современных системах мы привыкли к тому, что курсор перемещается плавно, а при выходе за пределы окна виртуальной машины мышь мгновенно переходит под контроль основной ОС. Это достигается за счёт передачи координат относительно экрана (absolute positioning). Однако Windows NT 3.x была разработана в эпоху, когда господствовали PS/2-совместимые мыши.

Для таких систем характерно относительное позиционирование (relative positioning). ОС получает не координаты «X=100, Y=200», а дельту — «сдвинуть курсор на 5 пикселей влево и на 2 пикселя вверх».

В QEMU по умолчанию часто эмулируется стандартный PS/2 контроллер. Если вы используете режим эмуляции, который передаёт относительные движения, возникает эффект «залипания» или бесконечного вращения курсора. Как только вы пытаетесь быстро провести мышью, виртуальная машина получает слишком большой пакет данных о смещении, который она не может корректно интерпретировать, и курсор улетает в угол экрана или начинает дрожать.

Если мы посмотрим на конфигурацию QEMU через командную строку, то увидим, что типичная настройка для старых ОС выглядит так:

bash
# Использование стандартной PS/2 мыши
-device ps2-mouse

Такой подход обеспечивает базовую работоспособность, но лишает нас предсказуемости движений.

Почему стандартные драйверы не подходят

Стандартные драйверы мыши, идущие в комплекте с Windows NT 3.x, рассчитаны на работу с физическим железом через прерывания IRQ. Они не знают о существовании гипервизора и не умеют обрабатывать специфические команды ускорения или синхронизации, которые предлагает современная виртуализация.

Проблема в том, что стандартный драйвер ожидает поток событий от контроллера, который работает строго по протоколу PS/2. Когда мы пытаемся использовать современные методы интеграции, возникает конфликт протоколов.

Чтобы добиться плавности, необходимо использовать драйвер, который понимает протокол VMware VMMouse. Этот драйвер позволяет гипервизору передавать абсолютные координаты напрямую, минуя эмуляцию прерываний PS/2. Это превращает управление из «передачи смещений» в «передачу точных точек».

С практической точки зрения, чтобы подготовить QEMU к работе с таким драйвером, недостаточно просто добавить устройство. Нужно убедиться, что эмуляция контроллера поддерживает необходимые расширения. В конфигурации QEMU для этого используется устройство vmmouse:

bash
# Добавление поддержки VMMouse для передачи абсолютных координат
-device vmmouse

Однако здесь кроется важный нюанс: Windows NT 3.x — система крайне капризная. Она не подхватит этот драйвер автоматически, как это делает Windows 10 или Linux. Вам придётся вручную искать и устанавливать драйвер, совместимый с архитектурой NT, что в условиях отсутствия официальной поддержки от Microsoft превращается в инженерную задачу. Без правильного драйвера использование устройства vmmouse в конфиге может привести к тому, что система вообще не увидит устройство ввода.

Решение через драйвер VMMouse

Принцип работы интеграционного драйвера

Когда мы запускаем Windows NT 3.x в виртуальной среде, стандартный PS/2 эмулятор мыши часто преподносит неприятные сюрпризы. Курсор двигается рывками, а при перемещении окна или изменении разрешения экрана указатель «улетает» в угол экрана. Это происходит потому, что эмуляция классического порта ввода создаёт задержки между аппаратным прерыванием и обработкой события в гостевой ОС.

Драйвер VMMouse решает эту проблему иначе. Вместо того чтобы имитировать физическое устройство, он использует механизм передачи координат напрямую через гипервизор. С практической точки зрения это выглядит так: гипервизор перехватывает движение мыши на хосте и передаёт абсолютные координаты в гостевую систему через специальный канал связи.

Для Windows NT 3.x это критично, так как архитектура системы не рассчитана на современные методы обработки прерываний. Использование VMMouse превращает относительное движение (на сколько единиц сдвинулась мышь) в абсолютное (в какой именно точке экрана находится курсор). Это обеспечивает ту самую предсказуемость поведения интерфейса, которой так не хватает в старых системах.

Совместимость с QEMU и VMware

Несмотря на то что драйвер изначально разрабатывался под VMware, его можно и нужно использовать в QEMU. Однако здесь есть нюанс: чтобы гостевая Windows «увидела» устройство, нужно правильно сконфигурировать параметры виртуального железа.

Если вы используете QEMU через командную строку, вам необходимо явно указать тип устройства мыши. Для работы VMMouse в конфигурации должна присутствовать соответствующая опция. Например:

bash
# Пример запуска QEMU с поддержкой VMMouse
qemu-system-i386 \
  -m 64 \
  -drive file=winnt3x.qcow2,format=qcow2 \
  -device usb-tablet \
  -device vmware-mouse

Обратите внимание на флаг -device vmware-mouse. Именно он заставляет QEMU эмулировать устройство, которое понимает драйвер VMMouse. Если вы используете usb-tablet, это даст похожий эффект (абсолютное позиционирование), но для полноценной интеграции со старыми драйверами VMware лучше придерживаться именно специализированного устройства.

Если ваша домашняя лаборатория развернута на базе Proxmox, настройка делается через интерфейс или правку конфигурационного файла виртуальной машины. В файле /etc/pve/qemu-server/VMID.conf нужно убедиться, что устройство мыши прописано корректно.

При работе с VMware (если вы используете его как гипервизор для тестов) всё происходит проще: драйвер подхватывается автоматически при установке VMware Tools. Но в контексте QEMU важно помнить: драйвер — это лишь половина дела. Если гипервизор не предоставляет нужный интерфейс, никакой установленный в Windows .inf файл не заставит курсор двигаться плавно.

Для успешной установки в Windows NT 3.x вам потребуется извлечь файлы драйвера из дистрибутива VMware Tools. Обычно это файлы vmmouse.sys и vmmouse.inf. После их копирования в гостевую систему, необходимо через Диспетчер устройств обновить драйвер для контроллера мыши, указав путь к папке с файлами.

Инструкция по установке и настройке

Подготовка файлов драйвера

Для того чтобы Windows NT 3.x корректно распознала виртуальное устройство мыши, нам не обойтись без специфического драйвера. В современных системах всё работает «из коробки», но в эпоху NT 3.x (и даже 4.0) драйверы нужно было подкладывать вручную.

Проблема в том, что официальные дистрибутивы VMware Tools для таких древних систем найти сейчас сложно. Однако, поскольку драйвер VMMouse — это стандарт де-факто для взаимодействия гостевой ОС с гипервизором, мы можем использовать файлы из архивных репозиториев. Вам понадобятся файлы с расширением .inf, .sys и .cat.

Если у вас нет под рукой оригинального диска с VMware Tools, рекомендую поискать их в архивах на WinWorldPC, где собраны образы практически всех старых операционных систем и наборов драйверов.

Когда файлы будут на руках, создайте на виртуальном диске папку, например C:\DRIVERS\VMMOUSE. Перенесите туда содержимое архива. С практической точки зрения, лучше подготовить образ дискеты (IMG или IMA) с этими файлами, так как работа с сетевыми ресурсами или USB-накопителями в Windows NT 3.x — задача отдельного квеста.

Конфигурация виртуальной машины

Просто установить драйвер внутри системы недостаточно. QEMU должен эмулировать именно то устройство, которое ожидает этот драйвер. Если мы оставим стандартную PS/2 мышь, мы получим классический «эффект задержки» и курсор, который прыгает по углам экрана.

Чтобы добиться предсказуемости поведения курсора, нужно изменить параметры устройства ввода в конфигурационном файле вашей виртуальной машины. Если вы запускаете QEMU через командную строку, добавьте следующие аргументы:

bash
# Удаляем стандартную PS/2 мышь, если она была указана
# Добавляем устройство VMMouse
-device vmmouse

Если вы используете XML-конфигурацию (например, через libvirt), секция <input> должна выглядеть следующим образом:

xml
<devices>
  <!-- Вместо стандартного mouse мы используем vmmouse -->
  <input type='mouse' bus='ps2'/> 
  <!-- В некоторых версиях QEMU для корректной работы 
       нужно явно указать тип устройства через параметры командной строки, 
       так как XML-абстракция может не поддерживать vmmouse напрямую -->
</devices>

Важный нюанс: Windows NT 3.x очень чувствительна к порядку инициализации оборудования. Если после добавления параметра -device vmmouse система уходит в Blue Screen of Death (BSOD) при загрузке, значит, в конфигурации осталось активное PS/2 устройство, которое конфликтует с новым. Убедитесь, что в строке запуска нет дублирующих устройств ввода.

После перезапуска виртуальной машины переходите в «Панель управления» -> «Mouse» и проверьте, появилось ли новое устройство. Если всё сделано верно, курсор перестанет «вязнуть» при перемещении по рабочему столу.

Результаты и ограничения метода

Тестирование плавности курсора

Когда мы интегрировали VMMouse в среду NT 3.x, основной целью было избавиться от эффекта «залипания» курсора, который неизбежен при использовании стандартного PS/2 эмулятора. В классической виртуализации старые ОС воспринимают мышь как дискретное устройство: вы перемещаете её, и система получает набор координат после завершения движения. Это создаёт рваную анимацию.

С драйвером VMMouse мы переходим к модели относительного перемещения. Теперь QEMU передаёт не конкретную точку на экране, а вектор смещения. С практической точки зрения это даёт ту самую предсказуемость движения, к которой мы привыкли в современных гипервизорах.

При тестировании на моей домашней лаборатории (нода «Пятачок» под управлением Proxmox, который внутри запускает QEMU) результат оказался следующим:

  1. Задержка (latency): Визуально задержка между движением физической мыши и откликом курсора в NT 3.1 сократилась почти до нуля.
  2. Точность: Исчезла проблема «прыжков» курсора при резких движениях.
  3. Нагрузка: Процессор не тратит лишние циклы на обработку прерываний от эмулируемого PS/2 порта, так как взаимодействие идёт через более эффективный интерфейс.

Чтобы добиться такого поведения в QEMU, конфигурация устройства в командной строке или в XML-файле Libvirt должна выглядеть следующим образом:

xml
<!-- Пример конфигурации для Libvirt/KVM -->
<devices>
  <input type='tablet' bus='usb'/>
  <usb>
    <model name='usb-tablet'/>
  </usb>
</devices>

Если вы запускаете QEMU напрямую через терминал, убедитесь, что вы используете устройство типа usb-tablet. Именно оно эмулирует многосенсорное устройство, которое корректно обрабатывает относительные координаты через драйвер:

bash
# Пример запуска QEMU с поддержкой USB-таблетки
qemu-system-i386 -m 64 -drive file=nt3x.qcow2 \
  -device usb-tablet \
  -device usb-host,vendorid=0x...,productid=0x...

Возможные конфликты в среде NT 3.x

Несмотря на достигнутую плавность, работа с VMMouse в эпоху Windows NT 3.x не лишена нюансов. Нужно понимать, что мы пытаемся заставить архитектуру начала 90-х работать с протоколами, которые были разработаны значительно позже.

Во-первых, возникает вопрос совместимости с драйверами видеоподсистемы. В NT 3.x работа мыши тесно завязана на отрисовку графического интерфейса. Если вы используете эмуляцию видеокарты типа cirrus или старую vga, иногда может возникать рассинхрон: курсор движется плавно, но графический слой «догоняет» его с задержкой. В таких случаях помогает переключение на более современные (для эмуляции) варианты, например, std видеоадаптеры, если это позволяет конфигурация.

Во-вторых, стоит учитывать конфликты IRQ. Если в вашей конфигурации задействовано много эмулируемых устройств (например, старые звуковые карты Sound Blaster или специфические сетевые адаптеры), прерывания от USB-контроллера, через который работает VMMouse, могут конфликтовать с другими компонентами.

Если вы столкнулись с тем, что мышь перестала реагировать после установки драйвера, проверьте следующее:

  1. Наличие USB-контроллера: В NT 3.x поддержка USB не является нативной и требует наличия сторонних драйверов или специфической настройки эмуляции. Если драйвер VMMouse ожидает USB-стек, а в системе его нет — работать ничего не будет.
  2. Режим работы мыши в реестре: Иногда после установки драйвера система пытается использовать старый метод опроса. Проверьте ветку HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\vmmouse (если драйвер корректно прописался), чтобы убедиться, что параметры инициализации соответствуют типу устройства.

С точки зрения системного инженера, наиболее надёжный способ избежать проблем — это минимизировать количество эмулируемых устройств. Чем чище конфигурация виртуальной машины, тем выше предсказуемость поведения драйверов. Подробные спецификации протоколов эмуляции устройств можно найти в официальной документации QEMU Documentation.

FAQ

Будет ли работать мышь без этого драйвера?

Работать будет, но с существенными ограничениями. Без VMMouse QEMU эмулирует стандартную PS/2 мышь. Это означает, что курсор будет двигаться дискретно, а при попытке переместить мышь к краю виртуального окна вы упретесь в «невидимую стену» — курсор просто застынет, пока вы не отпустите захват (обычно это клавиша Ctrl).

С драйвером VMMouse используется протокол передачи координат, который позволяет курсору гостя и хоста двигаться синхронно. Это избавляет от необходимости постоянно перехватывать управление и делает работу в интерфейсе Windows NT 3.x предсказуемой.

Поддерживает ли драйвер другие версии Windows?

Да, VMMouse — это универсальное решение для систем, поддерживающих протокол VMware. Он отлично работает на Windows NT 4.0, Windows 2000 и даже на более поздних версиях вроде Windows XP.

Если вы планируете разворачивать целую лабораторию со старым софтом, я рекомендую использовать один и тот же тип устройства ввода для всех машин. Это упростит управление конфигурациями в ваших скриптах запуска.

Нужно ли менять настройки в QEMU?

Да, просто установить драйвер внутри Windows недостаточно. Нужно явно указать QEMU, что мышь должна использовать устройство usb-tablet или специфический эмулируемый контроллер, совместимый с VMware.

Если вы запускаете QEMU через командную строку, добавьте следующий параметр:

bash
# Использование USB-планшета для бесшовного перемещения курсора
-device usb-tablet

Если вы используете более старые конфигурации, где USB-стек в гостевой ОС работает нестабильно, можно попробовать эмуляцию через контроллер VMware:

bash
# Эмуляция устройства, которое распознается как VMMouse
-device vmware-mouse

С практической точки зрения, для Windows NT 3.x вариант с usb-tablet часто оказывается капризным из-за отсутствия нативной поддержки USB в самой системе. Поэтому vmware-mouse — более надёжный путь для достижения предсказуемого результата.

Можно ли использовать этот драйвер на реальном железе?

Нет, это не имеет смысла. Драйвер VMMouse предназначен для взаимодействия между гипервизором и гостевой операционной системой через виртуальный канал передачи данных. На реальном железе нет прослойки в виде гипервизора, которая могла бы интерпретировать эти команды.

Для физического компьютера вам потребуются стандартные драйверы для вашего контроллера (PS/2 или USB), которые поставляются производителем оборудования или доступны в составе пакетов драйверов для конкретной архитектуры.

Часто задаваемые вопросы

Почему курсор в Windows NT 3.x начинает вращаться или улетает в угол при быстром движении?

Это происходит из-за разницы в методах передачи координат. Стандартная эмуляция PS/2 передаёт относительные смещения (дельту), и при резких движениях пакеты данных становятся слишком большими для обработки старым драйвером. Использование VMMouse позволяет перейти на абсолютное позиционирование, что делает движение курсора предсказуемым и плавным.

Можно ли использовать этот драйвер в других версиях Windows, например, в Windows 95?

Драйвер VMMouse предназначен именно для систем, работающих с архитектурой NT, и его установка в Windows 9x может не принести желаемого результата. Windows 95 имеет свои механизмы работы с устройствами ввода, и для неё лучше использовать стандартные драйверы или специализированные решения для эмуляции USB-мыши, если гипервизор это поддерживает. С практической точки зрения, для Windows NT 3.x это единственный способ добиться комфортной работы.

Поможет ли установка VMMouse, если я использую графический интерфейс вместо командной строки?

Если вы настраиваете виртуальную машину через GUI (например, в Virt-Manager), вам всё равно нужно убедиться, что тип устройства ввода выбран как «USB Tablet» или аналогичный, поддерживающий абсолютные координаты. Простого выбора драйвера внутри гостевой ОС недостаточно — гипервизор должен физически эмулировать устройство, способное передавать координаты, а не только дельту смещения.

Какие ещё параметры QEMU стоит проверить, если мышь всё равно работает некорректно?

Во-первых, убедитесь, что вы не добавили лишних устройств ввода, которые могут конфликтовать с VMMouse, например, дополнительный PS/2 контроллер. Во-вторых, проверьте параметры видеоадаптера: иногда некорректная отрисовка курсора связана с тем, что видеодрайвер не может правильно синхронизировать положение указателя с обновлением кадра. Для стабильной работы лучше всего использовать минимальный набор эмулируемого оборудования.

Поделиться:TelegramX / TwitterVK