Проблема с запуском вашей операционной системы в 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 до последней версии. Иногда со временем исправляются ошибки, которые вызывают подобные проблемы.
Постарайтесь также изолировать место, где проблема возникает. Запустите тесты с более минимальным кодом, а также постепенно добавляйте функциональность до тех пор, пока не найдете, что вызывает сбой.