Eigen OS

  • Onderwerp starter Onderwerp starter vaat
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

vaat

Terugkerende gebruiker
Lid geworden
16 mei 2001
Berichten
3.954
hoe ver zijn jullie nu eigenlijk ?
 
stepvantantebep,
of iemand anders,

is er nog steeds interesse hierin? rond begin 2004 ga ik actief werken aan een eigen klein interrupt-driven single-tasking, single-user os, voorlopig zoveel mogelijk geschreven in low-level nasm assembler, waarvan het kerneltje draait vanuit de bootsector van een fat12 floppy.

de voorlopige kernel heb ik al, maar de in mijn ogen altijd nog zeer ingewikkelde disk i/o middels bios int 0x13 door rechtstreeks sectors van schijf in te lezen, moet nog. juist hier hoop ik veel van te leren. ik wil hiervoor onderin het geheugen een eigen software-interrupt installeren met de diverse functies normaal aanroepbaar vanuit de cpu-registers. als dat is gelukt, wil ik ook een grafische shell met eigen windowtjes.

later wil ik bij succes het boot-gedeelte proberen om te schrijven naar andere bestandssystemen, om het ook op een harddisk te laten draaien.

misschien kunnen we hier tegen die tijd meteen wat handleidingen over schrijven voor helpmij. ook wil ik een website, maar da's een groot probleem want ik ben niet zo creatief ;)
 
Laatst bewerkt:
Geplaatst door captain
de voorlopige kernel heb ik al, maar de in mijn ogen altijd nog zeer ingewikkelde disk i/o middels bios int 0x13 door rechtstreeks sectors van schijf in te lezen, moet nog. juist hier hoop ik veel van te leren.
:8-0:
te ingewikkeld voor mij :o:D
verder, eigen OS is idd een hele onderneming, ik wens je d'r ook veel succes mee :D
khoop dat 't je lukt :thumb:
 
Leuk idee, wil ook assembler gaan leren. Ben benieuwd hoe je dit aan wilt pakken..
Hou me op de hoogte..
 
doen we jeroenotje. ben bijna klaar met de mobilisatie van een heel leger test-pc's en -randapparatuur ;)

met je assembler gewoon doorbijten, het is het waard! :D
 
Ok,
ik ben me nu aan het orrienteren op een goede tutorial, de meeste zijn engels. Weet iemand een fijne nederlandse? Heb ook een goede compiler nodig, weet iemand een download? Turbo Pascal (de taal die ik zowat van buiten ken) kan toch ool overweg met assembler? (zo goed ken ik hem nou ook weer niet...)

Groeten Jeroen

P.s. goede strategie, wat voorn test PC's zijn het? 386s?
 
hoi jeroenotje,

absoluut geen assembler gaan leren vanuit een 3de generatie-taal als turbo pascal! dit zou inderdaad betekenen dat je met 'asm'- en 'end asm'-statements assembler-code gaat inkapselen in de code van een hogere programmeertaal, en je zou de compiler daarvan nodig hebben om een uitvoerbaar bestand te creëren. dat is suikerklontjes stapelen met een hijskraan: probeer dat maar es netjes!

compiler wil jij niet, want je gaat direct in machinetaal programmeren. dat ís assembler (asm) immers in essentie al. het verschil tussen asm en pure machinetaal zijn vooral macro's voor onder meer geheugentypen en labels en dergelijke. door labels hoef je (gelukkig!) bijvoorbeeld geen geheugenadressen meer zelf te berekenen. dat doet de assembler/linker voor je, die jouw asm-bronbestand via objectbestanden omzet in executable code.

je hebt dus geen compiler, maar wel een assembler/linker nodig. de TASM assembler van Borland zelf heeft een gescheiden linker, TLINK. maar deze twee kosten geld. MASM van microsoft ook (waarom klinkt dat toch zo logisch ... :( ).

ik adviseer je de Netwide Assembler (NASM):

http://sourceforge.net/project/showfiles.php?group_id=6208

gratis, veel mogelijkheden en veel gebruikt tegenwoordig. linkt direct naar exe-bestanden (of com-).
even rustig kijken welke je moet downloaden. waarschijnlijk is jouwe de bovenste van de win32-sectie.

tutorials zoek je door handig te worden met google. kwestie van intelligent trefwoorden invullen. zoek steeds gewoon wat je denkt nodig te hebben met voorbeelden erbij. verder is goeie leerstof doorgaans tóch in het engels, dus probeer die angst ook te verliezen :confused:

en zorg tenslotte dat je het hex-stelsel vooraf goed kunt omrekenen!
----------------------------------------------------
mijn test-pc's:

1 x 286
1 x 386
1 x 486-DX
1 x Pentium
1 x Pentium notebook
1 x Pentium 3

3 x 14"-monitor
1 x 15"-monitor op het oog
2 x 17"-monitor

allerlei muizen en toetsenborden, DIN, PS2, USB1 en 2
----------------------------------------------------

:p
 
Laatst bewerkt:
Geplaatst door captain
ook wil ik een website, maar da's een groot probleem want ik ben niet zo creatief ;)

die wil ik wel voor je maken :D

natuurlijk wel inruil voor gratis versie van je OS :P

ik hoop dat het lukt lijkt me leuk om die site te maken voor je OS :thumb:

suc6 ermee verder
 
Het is een lange tijd geleden...

Ik heb nog steeds geen assembler geleerd en was eerlijk gezegt zelfs een beetje vergeten dat dit topic nog open stond.

Ik heb inmiddels ook al hele legers test PC's staan.
Hoe staat het aan de andere kant van het front?
 
klopt de meeste zijn nu gratis, maar nasm wordt het meest aangeraden. met als reden de beste combinatie van verschillende platforms, functionaliteit en eenvoud
 
Ik heb nog een goede homepage voor de OS geeks onder ons, zelf ben ik ook druk bezig met mijn OS,

http://www.osdever.net

Ik heb nu alleen nog maar een bootloader en een mini kernel. Ik denk dat ik maar een standaard Diskette driver ga gebruiken voor m'n OS zelf eentje schrijven is zoo moeilijk :) maar wel leuk.
 
Ik begrijp niet waarom je het in asm wil gaan doen, compilers voor hogere programeertalen maken van de betreffende taal net zo goed machine-code die bv. met dasm weer te lezen is als ASM code.

Tevens heb je met direct in ASM code schrijven het probleem dat je code maar voor 1 soort architectuur geschikt is aangezien je hem niet kan compilen voor een ander architectuur. ASM code is namelijk verschillend per architectuur.
 
Kicken, andere os-coders

Cool, andere OS-coders.
Ik ben al een hele tijd bezig met mijn eigen OS. Ik heb het net weer uit de koelkast gehaald, na er een paar maanden niets meer aan gedaan te hebben.
Ik sla alle int 0x13 rommel over en skip gelijk naar waar het echt leuk wordt (pmode, paging, multitasking, etc) al is dat wel behoorlijk lastig.
Ik hoop dat je weet waar je aan begint, want een OS is een niet zomaar een project.
Ik ben me op het moment stuk aan het bijten op virtual memory management, maar dat is makkelijker gezegt dan gedaan (zeker in combinatie met multitasking problemen als fork(), en copy-on-write pages). Tegen de tijd dat het ook echt wat doet, zal ik hier een link posten (Het heeft nu nog niet eens een libc, laat staan een shell).


- Grinny -

UNIX is user-friendly; it's just picky about its friends!!!
 
Ik ben sinds kort ook wat beginnen klooien met OS devolpment, maar loop een beetje vast. Kennen jullie toevallig een tuto die Je een kernel leert bouwen die aan de volgende "eisen" voldoet:

1. Boot vanuit GRUB (is me al gelukt, maar later in die tut werd er overgeschakeld naar C)
2. Intel Assembly gebruikt (NASM compiler)
3. Linux-Based is

Ik heb me al rot gegoogled, Maar verder dan booten en in een oneindig loopje duwen ben ik nog niet geraakt. (Nuja, ook wel tekst op 't scherm gekregen, maar dat was in real mode (Denk ik, Klopt dat als je grub laat booten?), en nu wil ik in protected mode werken.)

Als iemand zelf ook al ongeveer zoiets in mekaar gebokst heeft, en zijn source wil delen, mag hij ze ook eens sturen :-p)
 
Laatst bewerkt:
Even wat specifieker:

start.asm:
Code:
SECTION .text
BITS 32

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; entry point
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

GLOBAL entry
entry:

; display a blinking white-on-blue 'D' and freeze
	mov word [0B8000h],9F44h
	jmp short $

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Multiboot header for GRUB bootloader. This must be in the first 8K
; of the kernel file. We use the aout kludge so it works with ELF,
; DJGPP COFF, Win32 PE, or other formats.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MULTIBOOT_PAGE_ALIGN	equ 1<<0
MULTIBOOT_MEMORY_INFO	equ 1<<1
MULTIBOOT_AOUT_KLUDGE	equ 1<<16
MULTIBOOT_HEADER_MAGIC	equ 0x1BADB002
MULTIBOOT_HEADER_FLAGS	equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_AOUT_KLUDGE
MULTIBOOT_CHECKSUM	equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)

ALIGN 4
mboot:
	dd MULTIBOOT_HEADER_MAGIC
	dd MULTIBOOT_HEADER_FLAGS
	dd MULTIBOOT_CHECKSUM
; aout kludge. These must be PHYSICAL addresses
	dd mboot
	dd entry

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

link.ld
Code:
OUTPUT_FORMAT("binary")
ENTRY(entry)
phys = 0x00100000;
SECTIONS
{
  .text phys : AT(phys) {
    code = .;
    *(.text)
    . = ALIGN(4096);
  }
  .data : AT(phys + (data - code))
  {
    data = .;
    *(.data)
    . = ALIGN(4096);
  }
  .bss : AT(phys + (bss - code))
  {
    bss = .;
    *(.bss)
    . = ALIGN(4096);
  }
  end = .;
}

Makefile:
Code:
all : kernel.bin
start.o : start.asm
	nasm -f aout -o start.o start.asm
kernel.bin : start.o
	ld -T link.ld -o kernel.bin start.o
cleanup:
	rm kernel.bin start.o

Bij het laden van de kernel zegt grub dit:
[Multiboot-kludge, loadaddr=0x100000, text-and-data=0x1000, bss=0x0 entry=0x0]

En bij boot word er gereboot. Ik denk dat dit komt omdat entry 0x100000 moet zijn, (Een ander mini OS deed het zo) maar hoe zorg ik daar voor?
 
Ben ook al een tijdje bezig met het werken aan een eigen osje probleem wat ik nu vooral heb waar vindt ik genoeg informatie over pc architectuur? Ik heb al gevonden dat ieder pc eerst opstart in een 8086 configuratie en pas nadien switch naar meer geavanceerde modus. dus dacht ik als ik om te beginnen leer hoe die 8086 architectuur ineen zit dat ik dan al een eindje ver was.

Bijkomend vraag ik mij ook af indien ik dergerlijke architectuur nu zou begrijpen weet ik dan onmiddellijk ook hooe de basis bewerkingen naar disk cd en beeldscherm verlopen?

Groeten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan