Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Creeky

Seiten: [1]
1
Lowlevel-Coding / Kernel startet nicht
« am: 11. January 2006, 18:47 »
Mir ist jetzt noch etwas aufgefallen. Der Bootloader alleine besitzt doch eine Größe von 512Bytes, worauf dann noch mein Kernel folgt.
Wende ich jetzt aber 'qemu-img info test.img' an, so erhalte ich folgende Ausgabe:
Zitat
*****@ubuntu:~/OS$ qemu-img info test.img
image: test.img
file format: raw
virtual size: 512 (512 bytes)
disk size: 4.0K


Da stimmt doch etwas nicht oder? Das müsste doch größer sein als 512Bytes.[/quote]
2
Lowlevel-Coding / Kernel startet nicht
« am: 10. January 2006, 21:21 »
Vielen Dank für die Bemühungen. Werde das Ganze dann man mit nem andren Emulator ausprobieren.
3
Lowlevel-Coding / Kernel startet nicht
« am: 10. January 2006, 14:44 »
Vielen Dank erstmal für die ganzen Antworten.

Leider habe ich das Problem immer noch nicht beseitigt. Habe einmal die Idee von bitmaster ausprobiert, die Segmentregister ES und DS auf Null zu setzen. Ohne Veränderung. Qemu bleibt immer noch bei "Loading..." stehen. Nachdem der Code bei vielen funktioniert: könnte das Problem vll auch an Qemu liegen?

Hab das neulich erst drauf gemacht und hab somit noch keine Ahnung davon.
4
Lowlevel-Coding / Kernel startet nicht
« am: 09. January 2006, 20:06 »
Danke für die schnellen Antworten.

Hier mein Code:
bootloader.asm:
org 0x7C00 ; Unsere Startadresse

; -----------------------------------------
; Unser Bootloader
; -----------------------------------------

start:
                ; Erst brauchen wir einen Stack.
cli             ; Keine Interrupts!
mov ax, 0x9000  ; Stackadresse
mov ss, ax      ; SS = 9000 (unser Stack)
mov sp, 0       ; SP = 0000  (der Stackpointer)
sti             ; Interrupts zulassen

; Bootlaufwerk aus DL speichern
mov [bootdrv], dl

;Lade unseren Kernel
call load

;Springe zu diesem Kernel
mov ax, 0x1000 ; Die Adresse des Programms
mov es, ax     ; Segmentregister updaten
mov ds, ax
push ax
mov ax, 0
push ax
retf

; ----------------------------------------------
; Funktionen und Variablen
; ----------------------------------------------

bootdrv db 0 ;Das Bootlaufwerk
loadmsg db "Loading...",13,10,0

; Einen String ausgeben:
putstr:
lodsb             ; Byte laden
or al,al
jz short putstrd  ; 0-Byte? -> Ende!

mov ah,0x0E       ; Funktion 0x0E
mov bx,0x0007     ; Attribut-Byte (wird nicht benötigt)
int 0x10          ; schreiben
jmp putstr        ; Nächstes Byte
putstrd:
retn

; Lade den Kernel vom Bootlaufwerk
load:

; Diskdrive reset (Interrupt 13h, 0)
push ds            ; Sichere DS
mov ax, 0          ; Die gewünschte Funktion (reset)
mov dl, [bootdrv]  ; Dieses Laufwerk ist gewünscht
int 13h            ; Den Interrupt ausführen
pop ds             ; DS wiederherstellen
jc load            ; Geht nicht? -> Noch mal!

load1:
mov ax,0x1000      ; ES:BX = 10000
mov es,ax
mov bx, 0

; Sektoren lesen (Interrupt 13h, 2)
mov ah, 2       ; Funktion 2 (Lesen)
mov al, 5       ; Lese 5 Sektoren
mov cx, 2       ; Cylinder=0, Sector=2
mov dx, 0       ; Head=0, Laufwerk=0
int 13h         ; ES:BX =  Daten vom Laufwerk
jc load1        ; Fehler? Noch mal!
mov si,loadmsg
call putstr     ; Meldung ausgeben
retn

times 512-($-$$)-2 db 0   ; Dateilänge: 512 Bytes
dw 0AA55h                 ; Bootsignatur


kernel.asm:
; ---------------------------------------------------
; Unser Kernel
; ---------------------------------------------------

mov ax, 1000h ; Segmentregister updaten
mov ds, ax
mov es, ax

start:
mov si, msg
call putstr   ; Schicke Bootmessage :)

mov si,msg_boot
call putstr   ; Noch eine Message :D

call getkey   ; Warte auf einen Tastendruck
jmp reboot    ; Reboot

; -------------------------------------------------
; Funktionen und Variablen
; -------------------------------------------------

msg db "Welcome to StupidOS 1.0",13,10,0
msg_boot db "Press any key...",10,0

; Stringausgabe
putstr:
lodsb            ; Byte laden
or al,al
jz short putstrd ; 0-Byte? -> Ende!
mov ah,0x0E      ; Funktion 0x0E
mov bx,0x0007    ; Atrribut-Byte
int 0x10         ; schreiben
jmp putstr       ; nächstes Byte
putstrd:
retn

; Warte auf einen Tastendruck
getkey:
mov ah, 0 ; Funktion 0
int 016h  ; Ausführen
ret

; Rebooten (HEX Dump).
reboot:
db 0EAh
dw 0000h
dw 0FFFFh


Die zwei Assembler-Datei kompiliere ich unter Linux per:
nasm -f bin -o boot.bin boot.asm
nasm -f bin -o kernel.bin kernel.asm

Und schreibe sie per:
cat boot.bin kernel.bin > OS.img
in ein Qemu-Image. Wenn ich nun über Qemu das OS starte, bleibt es nach "Loading..." stehen und springt somit ja gar nicht in den Kernel. Ich weis selber nicht weiter.

Könnte es vielleicht sein, dass das Problem an Qemu liegt?
Ich habe nämlich auch schnell das Tutorial von DarkThing ausprobiert: auch dort wird in Qemu nur der Bootloader und dann nicht mehr der Kernel geladen.
5
Lowlevel-Coding / Kernel startet nicht
« am: 08. January 2006, 11:50 »
Ich wollte einmal den Kernel aus dem 1. Lowlevel-Magazin ausprobieren.
Leider erhalte ich, wenn ich das OS unter Qemu starte, nur das "Loading..." aus dem Bootloader auf den Bildschirm. Die Ausgaben, die der Kernel übernehmen sollte, kommen nicht und das System bleibt stehen.

Weis jemand was ich falsch gemacht habe?
6
Offtopic / OS unter Qemu starten
« am: 07. January 2006, 19:45 »
Vielen Dank für die schnelle Antwort.

Ich habe zum Ausprobieren einmal den Bootloader und den Kernel aus der ersten Lowlevel ausgabe genommen (http://lowlevel.brainsware.org/index.php?pagename=tutorials&showtut_id=1#OS%20Dev-Tutorial,%20Teil%201).

Habe dann ganz normal die beiden Assembler-Dateien kompiliert und dann wie von DarkThing beschrieben mit Hilfe von
cat boot.bin kernel.bin > image.img
qemu -fda image.img -boot a
gestartet.

Leider bleibt dann in Qemu der Ladevorgang bei "Loading..." stehen und der Rest wird nicht mehr angezeigt.

An was kann das liegen?
7
Offtopic / OS unter Qemu starten
« am: 07. January 2006, 18:42 »
Hallo alle zusammen,

nachdem ich mich jetzt umgehend mit C beschäftigt habe, bin ich auf eure Seite gestossen und wollte auch gleich mal ein paar Tutorials ausprobieren.
Leider basieren ja die meisten Beispiele darauf, dass man ein Floppylaufwerk besitzt und dieses dazu nutzen kann das OS zu booten. Leider besitze ich eben kein Floppylaufwerk.
Also habe ich unter Linux nun Qemu installiert um damit ein paar Beispiele und vielleicht später auch mal ein paar Kleinigkeiten von mir auszuprobieren.

Nun weis ich nur nicht, wie ich z.B. eine vorliegende Kernel.bin, die man normal von Diskette bootet, auf Qemu zum laufen zu bringen. Wäre für schnelle Hilfe dankbar, damit ich auch gleich mal ein paar Beispiele ausprobieren kann.

Schonmal vielen Dank
  creeky
8
Lowlevel-Coding / Bochs "lernen"
« am: 13. December 2005, 17:09 »
Habe mir jetzt unter Windows Qemu und den QemuManager installiert.

Wie kann ich denn jetzt ein System mit meiner kernel.bin ausprobieren. Habe trotz gegoogel das nich so kappiert was ich machen muss.

Könnte mir da bitte einer schnell helfen.
9
Lowlevel-Coding / Bochs "lernen"
« am: 13. December 2005, 14:24 »
Hallo,

ich würde gerne ein paar Sachen (vll später auch mehr) mit einem Emulator ausprobieren.
1. Frage: Bochs oder einen anderen? (einfache Bedienung)
2. : Weiß irgendjemand ein gutes Tutorial oder Buch (alles bitte auf Deutsch) in denen die ersten einführenden Schritte (vll auch schon ein bisschen mehr) beschrieben sind.
Um ein bisschen damit umgehen zu können.

Schon mal danke für die Antworten
10
Lowlevel-Coding / Kernel von Festplatte booten
« am: 12. December 2005, 17:52 »
Kann mir keiner noch letzt endlich schnell helfen?
11
Lowlevel-Coding / Kernel von Festplatte booten
« am: 11. December 2005, 14:19 »
Ich steh glaube ich gerade irgendwie auf dem Schlauch. Ich benutze den Kernel aus dem Tutorial "Kernel in C". Könnte mir vll bitte jemand sagen, was ich an diesem Kernel ändern muss, damit er so läuft wie ich das will.

Ich komm gerade anderst einfach nicht weiter.
12
Lowlevel-Coding / Kernel von Festplatte booten
« am: 11. December 2005, 13:54 »
Kann mir vll jemand ein Tutorial zu einem Kernel mit Multiboot-Header oder gleich einen Kernel mit dem ich das schnell ausprobieren kann.

P.S.: Wie kann ich den einen Kernel zu einer ELF FIle machen?
13
Lowlevel-Coding / Kernel von Festplatte booten
« am: 11. December 2005, 13:50 »
Nun erhalt ich:
Zitat
Error 13: Invalid or unsuported executable format


Geht also immer noch nicht
14
Lowlevel-Coding / Kernel von Festplatte booten
« am: 11. December 2005, 00:06 »
menu.lst:
Zitat
title MyOS
root (hd0,6)
kernel kernel.bin
15
Lowlevel-Coding / Kernel von Festplatte booten
« am: 10. December 2005, 20:22 »
Habe meinen Kernel erstellt und auf einer Partition unter dem Namen kernel.bin gespeichert.

Möchte ich nun über Grub den Kernel booten erhalte ich folgende Meldung:
Zitat
Error 1 : Filename must be either an absolute pathname or blocklist

Warum??

Was hab ich falsch gemacht?
16
Lowlevel-Coding / Kernel von Festplatte booten
« am: 10. December 2005, 18:48 »
Kann mir keiner schnell helfen?
17
Lowlevel-Coding / Kernel von Festplatte booten
« am: 10. December 2005, 15:05 »
Dankeschön für die Antwort.
Jetzt stellt sich für mich noch eine Frage:
Kann ich dazu den Kernel, der im "Kernel in C" Tutorial vorgestellt wurde verwenden?
Ich habe mir unter Windows meine Windows-Partition F mit Fat formatiert.
Muss ich darauf dann einfach den Kernel speichern?
Was muss ich denn jetzt bei mir genau meine menu.lst von GRUB eintragen?

Danke schonmal im Voraus
18
Lowlevel-Coding / Kernel von Festplatte booten
« am: 08. December 2005, 14:11 »
Hallo,

ich bin auf eure Tutorials gestossen und würde die jetzt gern ausprobieren.
Leider hab ich kein Diskettenlaufwerk an meinem PC.

Nun zu meiner Frage: Wie kann ich denn den Kernel auch von einer meiner Partitionen starten. Momentan benutze ich den GRUB-Bootloader. Kann ich das mit dem machen?

Wäre für schnelle Antwort dankbar.
Seiten: [1]

Einloggen