Seite 6 von 8

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 9:28 pm
von Dirty Oerti
Hm, das heißt entweder hab ich vergessen, eine Datei ins Repo mit einzubeziehen (das geht eigntl gar nicht...dann hätte es unter 8.10 auch nicht funktioniert...)
Oder eine neue Version von gcc / ld / make hat Probleme mit meinem Code / Skript.

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 9:31 pm
von nufan
Dirty Oerti hat geschrieben:Hm, das heißt entweder hab ich vergessen, eine Datei ins Repo mit einzubeziehen (das geht eigntl gar nicht...dann hätte es unter 8.10 auch nicht funktioniert...)
Oder eine neue Version von gcc / ld / make hat Probleme mit meinem Code / Skript.
Vielleicht weil ich unter 8.10 schon ältere Revisionen draufhatte. Könnte sein, dass die Dateien übrig geblieben sind oder so.

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 9:53 pm
von Dirty Oerti
Hatte ich mir auch schon gedacht, aber eigntl geht das ja nicht...
Bei einem Checkout werden ja alle Dateien in der jeweils neusten Revision runtergeladen.

Wenn ich mir die Fehlermeldungen so ansehe, das betrifft eigntl alles eine Datei.
Hast du eine Datei namens basic-kernel-asm.asm im /trunk/src Ordner?
Dadrin wird nämlich start, _gdt_flush, tss_flush, _idt_load definiert.

Andere Frage: Hast du NASM isntalliert?

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 10:05 pm
von nufan
Dirty Oerti hat geschrieben:Hast du eine Datei namens basic-kernel-asm.asm im /trunk/src Ordner?
Dadrin wird nämlich start, _gdt_flush, tss_flush, _idt_load definiert.
Bei mir liegt die Datei in ./trunk/src/basic-kernel.
Mit folgendem Inhalt:

Code: Alles auswählen

[BITS 32]

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

[GLOBAL start]
[GLOBAL _gdt_flush]
[GLOBAL _idt_load]
[GLOBAL tss_flush]

[EXTERN _c_kernel_main]
[EXTERN _gdtp]
[EXTERN _idtp]

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

; Eintritt in den Kernel
; - Stack wird initialisiert
start:
    mov esp, _sys_stack
    jmp c_kernel_entry

; Multibootheader
; - gebraucht, um mit GRUB zu booten
;  * Magic Number
;  * Flags
;  * Prüfsumme
ALIGN 4
multiboot_header:
    dd 0x1BADB002
    dd 0x0
    dd (-0x1BADB002)


; Wechsel in den C-Kernel
; - Stackpointer übergeben
; - Zeiger auf GRUBs Multibootinfo übergeben
; - Bei Abbruch anhalten
c_kernel_entry:
    push esp
    push ebx
    call _c_kernel_main
    cli
    hlt


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Funktionen

; Lädt die GDT neu, Zeiger _gdtp muss gültig sein!
_gdt_flush:
    lgdt [_gdtp]
    mov ax, 0x10
    mov ds, ax
    mov es, ax
    mov fs, ax
    mov gs, ax
    mov ss, ax
    jmp 0x08:flush2
flush2:
    ret

; Lädt die IDT neu. Zeiger muss gültig sein!
_idt_load:
    lidt [_idtp]
    ret

tss_flush:
    ;5. Eintrag => 0x28 plus 3 da von Ring 3 ansprechbar
    mov ax,0x2b
    ltr ax
    ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Hier ist der Stack
; Größe = 8KB
; Sollte für's erste mal reichen, zur Not einfach erhöhen
SECTION .bss
    resb 8192
    ;resb 32768 ; 32KB
_sys_stack: 
Dirty Oerti hat geschrieben:Andere Frage: Hast du NASM isntalliert?
Ja.

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 10:48 pm
von Dirty Oerti
Sieht soweit ganz gut aus.
Nach dem make, gibt es da ein basic-kernel-asm.o im src Verzeichnis?

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 10:59 pm
von nufan
Dirty Oerti hat geschrieben:Nach dem make, gibt es da ein basic-kernel-asm.o im src Verzeichnis?
Ja, aber bei mir liegen all diese Dateien in /src/basic-kernel ?! Ist das normal?

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 11:10 pm
von Dirty Oerti
Ja, so soll es auch sein (im Post oben war ein Fehler).
Hm, dann liegt das Problem definitiv am Linker.

Was für eine Version von ld hast du denn?

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: So Mai 03, 2009 11:20 pm
von nufan
Dirty Oerti hat geschrieben:Was für eine Version von ld hast du denn?

Code: Alles auswählen

GNU ld (GNU Binutils for Ubuntu) 2.19.1
Gleich der Rest auch noch:

Code: Alles auswählen

GNU ld (GNU Binutils for Ubuntu) 2.19.1

Code: Alles auswählen

GNU ld (GNU Binutils for Ubuntu) 2.19.1

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: Mo Mai 11, 2009 11:53 pm
von Kerli
Bei mir kommen die exakt gleichen Fehler. Ebenfalls unter Ubuntu 9.04 und die selber Version von ld. Anscheinend haben die da wirklich irgendwas geändert :)

Re: Kernel herunterladen, compilieren und laufen lassen

Verfasst: Di Mai 12, 2009 10:14 pm
von Dirty Oerti
Kerli hat geschrieben:Bei mir kommen die exakt gleichen Fehler. Ebenfalls unter Ubuntu 9.04 und die selber Version von ld. Anscheinend haben die da wirklich irgendwas geändert :)
Juhu^^
Das heißt für mich ausprobieren bis es wieder geht oder fragen, was sich genau daran geändert hat.