kernel hardware problem

möchte ein kernel schreiben,das nur eine ausgabe erzeugt nichts weiter. Leider habe ich noch zwei probleme.
erstens welche laufwerksnummer hat das cd-laufwerk und
das kartenlesegerät?
brauch ich für den bootloader, möchte nähmlich von cd oder sd-karte starten.
Wenn ich von sdKarte starten möchte, würde ich gerne wissen wie ich es schaffen kann, den bootloader in den ersten sector der karte zu schreiben. gibt es ein tool?
 
Was geanu meinst du mit Kernel selber schreiben?
Willst du den z.B. den Linux-Kernel selbst kompilieren oder willst du ein eigenes Betriebssystem schreiben? :P

Um etwas in den ersten Datenblock deiner Karte zu schreiben kannst du "dd" benutzen.
Siehe "man dd" unter Linux.
 
ich meine ein eigenes betribssystem, wobei man das so nicht nennen darf, weil ich ja nur wissen möchte wie ein betribssytem wirklich funzt, deswegen habe ich mir ein kernel geschrieben, das nur eine nachricht in den videospeicher schreibt
 
Das wuerde mich jetzt auch sehr interessieren. Darf ich den Code sehen? :D

Und du solltest noch genuer sagen was du mti Laufwerksnummer meinst.
 
also deine infos sind mehr als spärlich..
ist dein kernel im real mode oder protected mode? vermutlich real..
welcbe sprache hast den kernel geschrieben..
sd karte vergiss mal lieber.. cd rom musste dich mit el torito FS auskennen..
wenn dann pack das in nen img format und lass es auf nem emulator laufen..
dann brauchst du noch nen bootloader, der in assembler geschrieben werden muss..
weitere infos
http://lowlevel.brainsware.org/wiki/index.php/Hauptseite
 
der bootloader:

call load
mov ax, 0x1000
mov es, ax
mov ds, ax
push ax
mov ax, 0
push ax
retf

bootdriv db 0 ; mein problem das bootlaufwerk
loadmsg db "Lade VitaXia...",13,10,0 ;so heißt mein image

putstr:
lodsb
or al,al
jz short putstrd
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp putstr
putstrd:
retn

load:
push ds
mov ax, 0
mov dl, [bootdriv]
int 13h
pop ds
jc load

load1:
mov ax,0x1000
mov es,ax
mov bx, 0
mov ah, 2
mov al, 5
mov cx, 2
mov dx, 0
int 13h
jc load1
mov si,loadmsg
call putstr
retn

times 512-($-$$)-2 db 0
dw 0AA55h


mein kernel:

mov ax, 1000h
mov ds, ax
mov es, ax

start:
mov si, nachricht
call schreiben

call lesen
jmp reset

nachricht db "Eine Taste drücken, um neu zu starten...",13,10,0

schreiben:
lodsb
or al, al
jz short schreiben_d
mov ah, 0x0E
mov bx, 0x0007
int 0x10
jmp schreiben

schreiben_d:
retn

lesen:
mov ah, 0
int 016h
ret

reset:
db 0Eah
dw 0000h
dw 0FFFFh
 
Zurück
Oben