qemu: Error loading uncompressed kernel without PVH ELF note
Пытаюсь запустить простое ядро (написано на Си и NASM) через команду qemu-system-x86_64 -kernel kernel, однако получаю ошибку: Error loading uncompressed kernel without PVH ELF Note. Раньше этого не было и ядро нормально запускалось, но я так и не смог понял причину ошибки. В интернете мало ответов на подобный вопрос и я не могу их нормально совместить со своим кодом.
boot.asm:
bits 32
section .bss
resb 8192
stack:
section .text
align 4
dd 0x1BADB002
dd 0x00
dd -(0x1BADB002 + 0x00)
global _start
extern kmain
_start:
cli
mov esp, stack
call kmain
hlt
jmp $
link.ld:
ENTRY(_start)
SECTIONS {
. = 1M;
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
.rodata : { *(.rodata) }
}
Makefile:
ASMFLAGS = -felf64
CFLAGS=-c -nostdlib -m32 -fno-stack-protector --no-warnings -I./include -ggdb -finline-functions
OBJS=bin/mem.o bin/string.o bin/idt.o bin/irq.o bin/isr.o \
bin/main.o bin/system.o bin/vga.o bin/keyboard.o \
bin/boot.o bin/io.o bin/idt_load.o bin/isr_handler.o bin/irq_handler.o
all: bin/kernel
bin/kernel: link.ld $(OBJS)
ld -T $< -m elf_i386 -o $@ $(OBJS) -M > bin/map.map
bin/boot.o: boot/boot.asm
nasm -felf32 $^ -o $@
bin/io.o: kernel/io.asm
nasm -felf32 $^ -o $@
bin/idt_load.o: kernel/interrupts/idt_load.asm
nasm -felf32 $^ -o $@
bin/isr_handler.o: kernel/interrupts/isr_handler.asm
nasm -felf32 $^ -o $@
bin/irq_handler.o: kernel/interrupts/irq_handler.asm
nasm -felf32 $^ -o $@
bin/main.o: kernel/main.c
gcc $(CFLAGS) $^ -o $@
bin/vga.o: kernel/vga.c
gcc $(CFLAGS) $^ -o $@
bin/system.o: kernel/system.c
gcc $(CFLAGS) $^ -o $@
bin/keyboard.o: kernel/keyboard.c
gcc $(CFLAGS) $^ -o $@
bin/%.o: kernel/*/%.c
gcc $(CFLAGS) $^ -o $@
clean:
rm bin/*
Что вообще означает эта ошибка?