Hallo, hier bin ich wieder!
Also, ich hab mich dazu entschlossen, den Kernel in C zu programmieren und GRUB als Bootloader zu verwenden. Leider gibt GRUB beim booten immer folgende Meldung aus:
Error 13: Invalid or unsupported format
Der Multiboot header ist vorhanden, auch mbchk sagt, dass alles okay sei.
Hier nun meine Dateien:
[boot.asm]
[Bits 32]
extern _main
global _start
section .text
_mbh:
dd 0x1BADB002
dd 0x00000000
dd 0xE4524FFE
dd _mbh
dd _start
dd 0x00000000
dd 0x00000000
dd _start
dd 0x00000000
dd 0x00000050
dd 0x00000019
dd 0x00000000
_start:
call _main
_stop:
jmp _stop
[aquanaos_kernel.c]
int main()
{
char *Text = "Welcome to Protected Mode";
char *VideoMem = (char*)0xB8000;
while(*Text)
{
*VideoMem = *Text;
*VideoMem++;
*VideoMem = 7;
*VideoMem++;
*Text++;
}
return(0);
}
[link.txt]
OUTPUT_FORMAT("binary")
INPUT(temp/boot.obj temp/aquanaos_kernel.obj)
ENTRY(_start)
SECTIONS
{
.text 0x10200 : {
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(1);
}
.data : {
data = .; _data = .; __data = .;
*(.data)
. = ALIGN(1);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(1);
}
end = .; _end = .; __end = .;
}
Und die Befehle zum erstellen:
nasm -f aout -o temp/boot.obj boot.asm
gcc -ffreestanding -nostdinc -Wall -c -Os -o temp/aquanaos_kernel.obj aquanaos_kernel.c
ld -T link.txt -o temp/kernel.bin
Ich hoffe, ihr könnt mir helfen
Azi, #
13 und Oberster Tempelwächter