@Qreen
Разъяренный питонист

UEFI — возможно ли загрузить плоский bin-файл?

Я продолжал изучение языка assembly (nasm) и низкоуровнего программирования на языке C, пока не дописал простейший загрузчик, который работал на прерываниях BIOS и переводил процессор в защищенный режим. После этого я написал простое ядро на си и nasm, которое умело читать порт клавы (60h) и кидать значения оттуда в функцию си. Рассказывать, что было реализовано далее, нет смысла. Скажу только то, что работала моя ось без особых проблем и на qemu и на реальной машине с BIOS. И тут я познал боль. После попытки загрузки моего bootloader'a с ядром на моем новом ноутбуке с UEFI он не только отказвался работать с моей ос, но и даже не видел флешку. В данный момент расклад такой: я могу скомпилировать и загрузить простейшую efi-программу, типа:
#include <efi.h>
#include <efilib.h>
EFI_STATUS
EFIAPI
efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {
   InitializeLib(ImageHandle, SystemTable);
   while(1);
   return EFI_SUCCESS;
}

а так же примерно понимаю, что такое GPT и MBR. Есть ли возможность загрузить мой плоский bin-файл, или я все же потерял время зря, разрабатывая его?

P.S. бинарник компилиовался так:
nasm -f elf32 kernel.asm -o kasm.o
gcc -m32 -c kernel.c -o kc.o -fno-pie -fstack-protector
ld -m elf_i386 -T link.ld -o kernel kasm.o kc.o
objcopy -O binary kernel kernel.bin
nasm -f bin boot.asm -o boot.bin
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы