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

Я тестирую свою операционную систему на QEMU, и, похоже, это последний вариант, так как месяц назад, после добавления IDT и GDT, она перестала запускаться на VirtualBox и выдает ошибку Guru Meditation. В поисках решения я попробовал запустить её на QEMU, и тут всё заработало. Я думал, что основная проблема заключается в том, что OS загружается с .iso файла, а не записывается на диск. Я настроил приоритеты в VirtualBox и изменил параметры дисков, но это не дало результатов. Можно ли сделать вывод, что проблема связана именно с IDT и GDT, или это может быть связано с настройками VirtualBox? <br/> <br/> Репозиторий - <a href="https://github.com/ScrumboardCompany/SimpleOS" rel="nofollow">https://github.com/ScrumboardCompany/SimpleOS</a> <br/> <br/> Вот часть лога, где упоминается ошибка Guru Meditation, возможно, это поможет в диагностике: <br/> <pre><code>00:00:07.103023 Changing the VM state from 'RUNNING' to 'GURU_MEDITATION'
00:00:07.103060 Console: Machine state changed to 'Stuck'
00:00:07.103217 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00:00:07.103218 !!
00:00:07.103218 !!         VCPU0: Guru Meditation 1155 (VINF_EM_TRIPLE_FAULT)
00:00:07.103222 !!
00:00:07.103224 !! Skipping ring-0 registers and stack, rcErr=VINF_EM_TRIPLE_FAULT
00:00:07.103226 !!
00:00:07.103226 !! {mappings, &lt;NULL&gt;}
00:00:07.103227 !!
00:00:07.103235 !!
00:00:07.103235 !! {hma, &lt;NULL&gt;}
00:00:07.103235 !!
00:00:07.103236 !!
00:00:07.103236 !! {cpumguest, verbose}
00:00:07.103237 !!</code></pre>
  • 17 ноября 2024 г. 14:13
Ответы на вопрос 2
Проблема с запуском вашей операционной системы в VirtualBox, обнаружением ошибки Guru Meditation и успешным запуском в QEMU может быть связана с различиями в обработке низкоуровневых операций на этих двух платформах виртуализации. Стандартные причины подобных проблем могут включать:

1. **IDT (Interrupt Descriptor Table) и GDT (Global Descriptor Table)**: Ошибки, связанные с конфигурацией IDT и GDT, могут приводить к тому, что операционная система не может корректно обрабатывать прерывания или работать с памятью. VirtualBox может быть более строгим в отношении этих структур. Проверьте, правильно ли вы настроили GDT и IDT, включая привилегии дескрипторов.

2. **Настройки виртуальной машины**: Убедитесь, что настройки вашей виртуальной машины в VirtualBox соответствуют требованиям вашей операционной системы. Проверьте следующие параметры:
   - Включен ли режим VT-x/AMD-V?
   - Разделение на ядра (если оно необходимо).
   - Правильный объем выделенной оперативной памяти и видеопамяти.

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

4. **Логи и отладка**: Сообщение об ошибке "Guru Meditation" с кодом `VINF_EM_TRIPLE_FAULT` указывает на то, что процессор трижды сталкивается с исключением, что значит ваше ядро, возможно, пытается выполнить инструкцию или обратиться к памяти в недопустимом состоянии. Очевидно, вы должны активировать как можно больше инструментов отладки, чтобы получить более подробные сообщения об ошибках. Попробуйте интегрировать отладочный вывод или использовать встроенные функции отладки, такие как интеграция с GDB.

5. **Обработка исключений**: Убедитесь, что ваша операционная система корректно обрабатывает все существующие исключения. Возможно, какие-то из них не обрабатываются, и это становится причиной выходов за пределы допустимых состояний.

6. **Версия VirtualBox**: Попробуйте обновить VirtualBox до последней версии. Иногда со временем исправляются ошибки, которые вызывают подобные проблемы.

Постарайтесь также изолировать место, где проблема возникает. Запустите тесты с более минимальным кодом, а также постепенно добавляйте функциональность до тех пор, пока не найдете, что вызывает сбой.
В разделе Система > Материнская плата отключите опцию Floppy 
Убедитесь, что опция Intel VT-x или AMD-V включена в BIOS/UEFI
Убедитесь, что вы правильно обрабатываете таблицы прерываний и дескрипторов
Похожие вопросы