Küçük Bir İşletim Sistemi Yazmak
Küyük bir isletim sistemi YAZMAK!
Hangi Dil?
—————————————————————————-
Isletim sistemini aslinda C/C++ da yapmak isterim, ama mesela ekrana girdi vermek istedigimde bunun icin gerekli olan “printf” komutunu cagirmam gerektigini varsayalim. O zaman adindaki baslik dosyasini kullanmam gerekmekte.Ama sorun her basligin C/C++ derliyicileri tarafindan belli isletim sistemler(yada belli sistemler) icin tasarlandigi icin ne yazikki C/C++ dillerini cekirdegi yazarken kullanmayacagim fakat sonradan isletim sisteminin devamini C/C++ ile yazabilirsiniz.
Söyle düsük seviyede Assembler bilginiz olmasi sizin cekirdegi daha iyi anlamanizi saglayacaktir…
Gerekenler
—————————————————————————
1.Netwide Assembler (NASM)
2.RaWrite yada Diske Imageleri yazacak baska bir program.
3.Bos bir disk.
Buraya Dikkat!
—————————————————————————-
Size söylemem gerekirki Assembler ile cok sey yapilabilir(yada cok sey yanlis yapilabilir).Bu bilgisayariniza gelebilecek herhangibir zarar benim degil, sizin sucunuzdur!
Basliyoruz
—————————————————————————-
Bir isletim sisteminin nasil calistigini anlamak icin, önce bir bilgisayarin nasil calistigini iyi anlamak gerekir. Burada kisaca söylüyorum ki, önce bilgisayar acilir, hemen BIOS devreye girer ve denetimler yaptiktan sonra isletim sistemini cagirir. BIOS hangi sürücünün önce “BOOT” lanacagini belirler. Isletim sistemini önce yerel sürücüde arar. Biz isletim sistemimizi diske yazacagiz.
Simdik kodlari yazmaya basliyalim;
—————————————————————————-
Ilk Kernel:
Tabiki bir Kernel sadece bir mesaj ekrana yazip sistemi yeniden baslatmak la kalmaz ama böyle bir kod yapiyi anlamak icin kolaydir:
——————————————————–
mov ax, 1000h
mov ds, ax
mov es, ax
start: ; Burda gercek anlamda isletim
; sistemimize basliyoruz.
mov si, msg ; hemen bir string gösteriyoruz
call put
call read ; “oku” bir tusa basilana kadar bekler
jmp reset
msg db “Yeniden baslatmak icin bir tusa”
db “basin!”,13,10,0
put:
lodsb
or al, al
jz short put_d
mov ah, 0×0E
mov bx, 0×0007
int 0×10
jmp put
put_d:
retn
read:
mov ah, 0
int 016h
ret
reset:
db 0Eah
dw 0000h
dw 0FFFFh
———————————————————
Dosyayi kernel.asm diye kaydettikten sonra;
nasm –f bin –o kernel.bin kernel.asm
seklinde derlenmelidir.
Bir BOOTMANAGER
—————————————————————————-
BIOS ilk acildiginda 512Bytes boyutunda bir OP-Code arar ve BIOS bu dosyayi 0×7C00 adresine yükler.
———————–BOOT.ASM————————–
org 0×7C00 ; Öncelikle dosyanin adresini ayaliyoruz.
start:
cli ; Interrupts kullanma!
mov ax, 0×9000 ; Stack adresini kayit etme
mov ss, ax
mov sp, 0 ; Stackpointer’ 0 lamak
sti
mov [bootdriv], dl
call load ; Kernel i yükleme
mov ax, 0×1000 ; 0×1000 Shell’ in adresi
mov es, ax
mov ds, ax
push ax
mov ax, 0
push ax
retf
bootdriv db 0
loadmsg db “Sistem Yükleniyor…”,13,10,0
putstr:
lodsb
or al,al
jz short putstrd
mov ah,0×0E
mov bx,0×0007
int 0×10
jmp putstr
putstrd:
retn
load:
push ds
mov ax, 0
mov dl, [bootdriv]
int 13h
pop ds
jc load
load1:
mov ax,0×1000
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
;Programin 512 Bytes dan büyük olmamasi icin…
times 512-($-$$)-2 db 0
dw 0AA55h ; Bu da BIOS sa bitis talimatini verir
—————————————————-
nasm –f bin –o boot.bin boot.asm seklinde de dosya derlenmelidir.
Simdide isletim sistemimizi Diske yükleyip calistirmak icin;
copy boot.bin+kernel.bin vitaxia.img
Seklinde iki dosyayi birlestiriyoruz.
Son olarak da RaWrite programi ile bu img dosyasini diske yaziyoruz. Diski sokup bilgisayari yeniden baslattigimizda isletim sistemimiz calisacaktir.
Son olarak tabi ki bunu hepsi sadece bir örnek, nasil bir isletim sistemi yapabilecegimize dahil.

1 yorum
Küçük Bir Işletim Sistemi Yazmak - En Önemli Hacker Egitim Setleri Ve Dersleri >>>>> Download Now
Cevapla>>>>> Download Full
Küçük Bir Işletim Sistemi Yazmak - En Önemli Hacker Egitim Setleri Ve Dersleri >>>>> Download LINK
>>>>> Download Now
Küçük Bir Işletim Sistemi Yazmak - En Önemli Hacker Egitim Setleri Ve Dersleri >>>>> Download Full
>>>>> Download LINK 1d