Почему операционная система запускается в QEMU, но не работает в VirtualBox?

Почему моя операционная система перестала загружаться в Virtual Box после добавления IDT и GDT, но успешно запускается в QEMU? Я не могу предоставить ссылку на репозиторий, так как он закрыт, но если вам нужен код из других файлов, дайте знать.
  • 24 сентября 2024 г. 20:53
Ответы на вопрос 2
Проблема, с которой вы столкнулись, может быть связана с различиями в реализации гипервизоров QEMU и VirtualBox, особенно в части обработки системных таблиц, таких как GDT и IDT. Вот несколько возможных причин, почему ваша операционная система работает в QEMU, но не запускается в VirtualBox:

1. **Инициализация GDT и IDT**: Убедитесь, что вы правильно инициализировали свою GDT (Global Descriptor Table) и IDT (Interrupt Descriptor Table). QEMU может быть более гибким в плане обработки неправильно настроенных таблиц, в то время как VirtualBox может требовать, чтобы они соответствовали стандартам.

2. **Требования к привилегированному режиму**: Проверьте, в каком режиме вы работаете (привилегированный или неполный). VirtualBox может быть более строгим в отношении перехода между режимами и обработки исключений.

3. **Обработка прерываний**: Убедитесь, что ваша реализация обработчиков прерываний и механизмов их установки работает правильно. VirtualBox может требовать специфического поведения, например, правильного использования команды `iret` для возврата из обработчиков прерываний.

4. **Конфигурация эмуляции**: Проверьте, что все необходимые параметры конфигурации в VirtualBox установлены правильно. Например, убедитесь, что используется соответствующий контроллер (IDE, SATA и т.д.), и настройки виртуальной машины (объем оперативной памяти, видеопамять и т.д.) соответствуют требованиям вашей ОС.

5. **Отладка**: Запустите VirtualBox с параметрами для получения более подробной информации о процессе загрузки (можно использовать режим отладки или включить логирование). Это поможет понять, на каком этапе происходит сбой.

6. **Стандартные несовместимости**: QEMU и VirtualBox могут использовать разные версии архитектуры, такие как расширения процессора (например, VT-x или AMD-V). Убедитесь, что в вашей ОС сделана корректная проверка наличия и поддержки этих расширений.

Если потребуется дополнительная помощь, вы можете предоставить код, связанный с инициализацией GDT и IDT (либо их настройкой), чтобы более глубоко изучить проблему.
попробуй у VB отключить аппаратные ускорения и прочие оптимизации виртуализации.
Похожие вопросы