Я не пробовал это, поэтому я не знаю, будет ли это работать, но здесь идет:
В заголовке файла ядра формата bzImage есть опция, которая указывает адрес кода реального режима, который должен быть выполнен до запуска кода защищенного режима. Вы можете создать минимальный bzImage-совместимый файл, который не имеет реального ядра, но в котором есть код реального режима, чтобы загружать MBR с помощью INT 0x13 до 0x7c00 и вставлять в него jmp, как это делает BIOS.
Если вы используете kexec для загрузки bzImage с использованием опций "-t bzImage-x86 --real-mode", он должен сбросить бит PE в CR0 для перехода в реальный режим (как упомянуто выше bdonlan) и выполнить указанный код с помощью опции заголовка bzImage.
Параметр заголовка bzImage называется realmode_swtch и задокументирован в /usr/src/linux/Documentation/x86/boot.txt, код формата заголовка находится в / usr / src / linux / arch / x86 / boot / header. S