Napraviti svoj sustav sasvim sam pogotovo danas
Kao i ti mozda koju godinicu prije i ja sam pokusao jer nisam imao nikakav posao a imao sam velika ocekivanja da bih nesto postigao od toga.
Prvo tvoja pitanja:
1. COSMOS ako sam dobro napisao ti stvarno ne treba i ne isplati se zezati sa takvim sra***
2. Os mozes pisati u kojem hoces jeziku ali danas C je odlican vec je ja mislim i receno
3. Linux kernel i open source distra imas na netu koliko te volja i cak tutoriala kako napraviti svoj linux os sam.
Ne zelim se natezati koji je bolji os od drugog os-a jer najbolji OS ne postoji tako da se razumjemo. Ja osobno za posao koristim mac os x i win a kuci Linux Gentoo i win.
Savjet:
Sto se tice kako Os funkcionira probaj neki open source micro kernel imas ih na netu pa ako razumjes cod i vidis da si tome dorastao udri jer takvi kerneli sadrze oko par tisuca do 10 000 linija koda ako se nevaram ( ako sam pogrijesio sorry uglavnom ispod 20 000 linija je micro bar koliko se sijecam).
Ako zelis neku napraviti neku svoju distru pogledaj slax.
Za ovo dvoje ti govorim jer micro kernel je odlicana stvar mozes si napraviti modularan sustav i eksperimentirati sa njime.
Slax - linux ima module i koristi linux kernel( linux kernel je monlithic) ali je fora i jednostavan za nauciti.
Ako zelis napraviti svoj kernel oko 60-70% koda su ti driver-i nije da te strasim jer za svoj komp sa svojom konfig. ces napraviti mozda sve kako treba ali za drugi neki komp ces se namuciti koliko i za svoj kao i za stotine ako zelis svoj sustav da koriste drugi. Moj savjet je da probas ove dvije mogucnosti ili neku open unix distru da poboljsas takav sustav kako tebi odgovara. Pogledaj samo kako je nastao Mac os x sve mozes ostvariti ako imas znanje. Ako imas ikakvih pitanja posalji na pm nadam se da nisam nikoga uvrijedio.
Znaci, slijedi code path.
S time da u zadnjem samo nacelno procitas: void __init start_kernel(void)
Sve fukcije koje se tu pozivaju su uglavnom arhitekutalno nezavisne i granaju se u nedogled, podizu pojedine podsustave za koje bi, bilo koji od njih, mogao napisati doktorat...bez imalo uvelicavanja.
Uglavnom, svi osnovni mehanizmi potrebni za danju inicijalizaciju kernela su u tom code streamu(header.S->main.c). Na tim mehanizmima mozes poceti pisati neki primitivan memory manager i scheduler. Pod mehanizme mislim na I/O, "debug/dump/crash" poruke(sto ranije to napravis to ce ti zivot biti laksi, samo pripaziti da dobivas tocne sadrzaje registara), opcenito printanje na ekran decimalnih i heksadecimalnih brojeva, te stringova, interrupt handleri(keyboard, timer, PIC/APIC, disk kontroler-ATA/ATAPI), paging i paging strukture(algoritmi za izradu i popunjavanje PD i PT, algortam za zamjenu PD-a), te rani, vrlo jednostavni manager fizickih adresa/page_frame-ova.
Za to je nuzno znanje arhitekture racunala i ISA procesora. Ima tu nelogicnih stvari, tipa "skakanje" iz kernel u user space se na IA32/64 procesorima radi preko IRET instrukcije, tj. pises kod kao da se dogodio interrupt.
Onda neke legacy gluposti tipa TSS(hardware task switching) kojeg moras nauciti, iako ga "nikada" neces koristiti...
I to je zapravo "laksi" dio cijele price(HW zavisan). Pisanje memory managera je zasebna bol. Scheduler, moze, ali i nemora biti bolan. Round-robin je i vise nego dovoljan za pocetak. Sve ti to govorim, ne da te obeshrabrim, vec samo da si postavljas realne ciljeve. Obicno ljuid zele napraviti Windows 7 za par mjeseci.
Bas gledam kod od GRUB loadera. Takodjer je dobar izvor...pogotovo ako ces raditi svoj bootloader. Ako ne, mozes koristi GRUB(zna parsirati FS->FAT16 je lagan za implementaciju, exec. zaglavlja tipa ELF, a.out i ucitavati obicni binary->recimo tvoj kernel ako nije u nekom od izvrsnih formata), sam prebacuje u protected mode, A20 omogucen...uglavnom mozes izbjeci dosta problema u ranoj fazi, iako, po meni, time gubis podosta saznanja od gadostima PCa.
Eh, ima i odlican PATA driver! /grub-core/disk/pata.c ~500 LOC - nista!
Evo vec spominjanog GRUB drivera za PATA diskove, tj. PIO R/W kod:
Kod:
static void
grub_pata_pio_read (struct grub_pata_device *dev, char *buf, grub_size_t size)
{
grub_uint16_t *buf16 = (grub_uint16_t *) buf;
unsigned int i;
/* Read in the data, word by word. */
for (i = 0; i < size / 2; i++)
buf16[i] = grub_le_to_cpu16 (grub_inw(dev->ioaddress + GRUB_ATA_REG_DATA));
if (size & 1)
buf[size - 1] = (char) grub_le_to_cpu16 (grub_inw (dev->ioaddress
+ GRUB_ATA_REG_DATA));
}
static void
grub_pata_pio_write (struct grub_pata_device *dev, char *buf, grub_size_t size)
{
grub_uint16_t *buf16 = (grub_uint16_t *) buf;
unsigned int i;
/* Write the data, word by word. */
for (i = 0; i < size / 2; i++)
grub_outw(grub_cpu_to_le16 (buf16[i]), dev->ioaddress + GRUB_ATA_REG_DATA);
}
Trivijalno!
Samo pises/cistas sa porta od GRUB_ATA_REG_DATA registra(ovo je offset od baznog registra) u/sa buffera, po velicini rijeci(2b). Znaci 256*2b = 512 byte sector. Parametri (LBA) idu u nize registre...
Isti kod mozes implementirati u svoj kernel.
Za DMA je, naravno, druga prica...no za pocetak je ovo i vise od dostatnog. ~20 LOC!
zar nije onda DIY Linux bolji ?
ovo sto ti govoris je skoro pa nemoguce za jednog covijeka.
svaki dan nesto pa za 10 godina ce biti gotov i valjda bude radilo...
Ako se ozbiljno pristupi poslu, te postoji dobra podloga(odlicno znanje C jezika, arhitekture racunala, te malo iskustva sa ASM-om)...aproksimiram da je potrebno do godinu dana uz redoviti rad. Najveci dio ce se gubiti na ucenju dokumentacije i debuggiranje glupih gresaka.
Za zreliji kernel...tri godine(samostojeci OS, portiran libc, kompajler, exec. loader, visezadacnost, podrska za SMP)..mozda cak i prije. Ovisi o pojedincu, no kako stjeces iskustvo i sustav sazrjeva, stvari idu sve brze. Izazov je, ali ne neosvojiv.
Nema teoretske sami da napravite OS koji će delati kako spada. Linux ima čitavu zajednicu kao i BSD, možda dvoje dedeka (Annatar i Dalmatino) bi mogli skuhati jer imaju pun kurac godina iskustva iza sebe.
Zemeš lipo linux from scratsh i složiš svoju distru jer je po meni izmišljavanje kotača idiotizam
Nema teoretske sami da napravite OS koji će delati kako spada. Linux ima čitavu zajednicu kao i BSD, možda dvoje dedeka (Annatar i Dalmatino) bi mogli skuhati jer imaju pun kurac godina iskustva iza sebe.
Zemeš lipo linux from scratsh i složiš svoju distru jer je po meni izmišljavanje kotača idiotizam
Delat kak spada. Ojne, ve...kaj bu ja sustava radil, kak ga zna Anatar zdelat, ne!? To su ti taki mestri, taj bu ti aviona sklepal za dan. Daj, vise otputuj sa tim suck-up sranjima. Kurac, sranje, govno, sisa...Dosadan si, fulao si poantu u potpunosti.
Istrazivacki radovi su za tebe teska nepoznanica.
Delat kak spada. Ojne, ve...kaj bu ja sustava radil, kak ga zna Anatar zdelat, ne!? To su ti taki mestri, taj bu ti aviona sklepal za dan. Daj, vise otputuj sa tim suck-up sranjima. Kurac, sranje, govno, sisa...Dosadan si, fulao si poantu u potpunosti.
Istrazivacki radovi su za tebe teska nepoznanica.
Nije nikakvo uvlačenje jer nemam koristi da se ikome uvlačim.
Što se tiče programiranje operativnoga sustava prvo moraš napraviti osnovni kernel koji će omogućiti komunikaciju periferija. Sada češ ti ići definirati svoje nekakvo API sučelje. Kao prvo to je glupost jer jer je UNIX, Windows i Linux već odavno izdefiniran, drugo pisanje nečega zahtijeva veliko znanje kako rade datotečni sustavi i razvoj alata koji će raditi sa datotečnim sustavom. Moreš iskoristit tuđe projekte ali onda nema jedinstvenosti jer biš kopirao tuđi rad. Nisam programer ali neke stvari znam jer mi je domena posla svakodnevna komunikacija sa the Starkeljom .
Ja sam rekao da je idiotizam i kretenizam ići raditi svoj OS jer ka prvo nema niti ideje što će taj sustav delati i kako će delati. Pisanje drivera, sretno ti bilo kada nemaš definirane standarde i onda će tvoj projekt završiti kao moji tutorijali na ovome forumu u ropotarnici povijesti. I osim što me ne poznaješ i ideš tvrditi nešto neznam ni ja kojim tvrdnjama. samo ću ti dati mig da sam upisao fakultet primjenjen i komjutorske fizike u Beogradu
Tako da s obzirom na faks koji sam upisao (tj. položio prijemni a upisi su sledeći tedan) moreš pogoditi koliko sam nezainteresiran za istraživački rad
dosta ljudi zamijenjuje Linux from Scratch sa Hardened linux from Scratch.
LFS ( linux from scratch ) ne omogucuje korisniku gradnju distre u potpunosti.
To nije Linux, vec knjiga. Citaj i radi kako pise i imat ces linux - ciji linux ?
-ne sigurno svoj, ne svoju distru, jer ne moras znati fakticki nista da ga sklepas osim citati.
Prije bi mu preporucio Hardened Gentoo nego LFS...
HLFS ( hardened linux from scratch ) nije knjiga, vec datoteke koje omogucuju gradnju distre, i to je vec nesto ali je bezveze jer ima dosta gotovih skripta i krajnji linux je opet baziran.
DIY Linux je vec nesto sasvim drugo, jedini omogucuje u potpunosti gradnju vlastite distribucije i pisanje vlastitog kernela i JAKO, JAKO je kompliciran.
i mnogi dedeki se nebi u njemu snasli... ali DIY je samo zrno u gomili za programiranje sustava
i ne postoji osoba na ovome forumu, niti na jednome forumu, sposobna da programira funkcionalan sustav, ne varajte se
i ne postoji osoba na ovome forumu, niti na jednome forumu, sposobna da programira funkcionalan sustav, ne varajte se
Srsly?
Slazem se za desktop OS, za ostalo se ne slazem...
OSevi se vrte na puno vise stvari nego li je to samo desktop.
Svi ste se uhvatili nakaradnog Intela i multitasking/multiuser/security desktop OSeva... potpuno funkcionalan OS je bio i prastari DOS, a nema 3/4 stvari koje nabrajate. A nema tog PCa na kojem nece raditi dan danas. Prebacis SATA u compatibility mode u BIOSu i bootat ce se DOS za sekundu. Provjereno.
dosta ljudi zamijenjuje Linux from Scratch sa Hardened linux from Scratch.
LFS ( linux from scratch ) ne omogucuje korisniku gradnju distre u potpunosti.
To nije Linux, vec knjiga. Citaj i radi kako pise i imat ces linux - ciji linux ?
-ne sigurno svoj, ne svoju distru, jer ne moras znati fakticki nista da ga sklepas osim citati.
Prije bi mu preporucio Hardened Gentoo nego LFS...
HLFS ( hardened linux from scratch ) nije knjiga, vec datoteke koje omogucuju gradnju distre, i to je vec nesto ali je bezveze jer ima dosta gotovih skripta i krajnji linux je opet baziran.
DIY Linux je vec nesto sasvim drugo, jedini omogucuje u potpunosti gradnju vlastite distribucije i pisanje vlastitog kernela i JAKO, JAKO je kompliciran.
i mnogi dedeki se nebi u njemu snasli... ali DIY je samo zrno u gomili za programiranje sustava
Custom made Linux nije pisanje Operacijskog sutava, vec slaganje. Glupo je to uopce iznositi kao prijedlog.
Quote:
i ne postoji osoba na ovome forumu, niti na jednome forumu, sposobna da programira funkcionalan sustav, ne varajte se
Zavidan sam na tvojoj providnosti. Stvarno!
Dobro, zasto mislis da je programiranje operacijskih sustava toliko kompliciarno? Sto znaci funkcionalan OS?
DOS? DOS moze iskusniji programer napraviti za tjedan dana. To je doslovce bilo govno od operacijskog sustava koje se u potpunosti oslanjalo na BIOS.
Bill Joy je napravio BSD kernel za par dana. Govorimo o talentiranome programeru...a ako ti ne mozes nesto sklepati za godinu, dvije...bolje se nemoj zvati programerom!
Mislim da je tvoj problem sto nisi svjestan obujma posla i znanja koji taj zahvat trazi. Oslanjas se na puke price neukih ljudi koji operacisjki sustav vide samo kao apstrakciju koja je "uzasno" komplicirana, a u stvarnosti se ne razlikuje od bilo kojeg veceg projekta u user-spaceu. NE RAZLIKUJE SE!
Dapace, izprogramirati bazu podataka moze biti daleko veci izazov...web browser takodjer. Operacijski sustavi mogu biti ultra jednostavni za potrebe ves masina ili vrlo komplicirani poput danasnjih desktop operacijskih sustava.
Po meni, svatko tko je zavrsio smjer racunarstva, bi morao biti sposoban napraviti sustav na razini DOS-a, pa i vise. Pogotovo danas kada je sve lako dostupno.
Slazem se za desktop OS, za ostalo se ne slazem...
OSevi se vrte na puno vise stvari nego li je to samo desktop.
Tako je, iako se uz malo truda moze napraviti jednostavno desktop okruzenje.
Kada pricamo o funkcionanom operacijskom sustavu, to je onaj sustav koji ima podrsku za veliki broj HW-a i jos vaznije, kolicina software pisana za doticni sustav.
Quote:
Svi ste se uhvatili nakaradnog Intela i multitasking/multiuser/security desktop OSeva... potpuno funkcionalan OS je bio i prastari DOS, a nema 3/4 stvari koje nabrajate. A nema tog PCa na kojem nece raditi dan danas. Prebacis SATA u compatibility mode u BIOSu i bootat ce se DOS za sekundu. Provjereno.
DOS je za ondasnje vrijeme, kada si programere u americi mogao nabrojati na prstima jedne ruke, kada je HW bio gotovo nedostupan, bio poprilicno veliki komad software-a.
Danas imas tisuce javnih i osobnih projekata koji se time bave. Gotovo svaki bolji fakultet ih ima i u obliku diplomskih radova. Ima ih i FER.
Knjiga koju sam ja citao o Linux kernelu je napravio jedan profesor za svoje studente koji su iskoristavali Linux za ucenje operacijskih sustava...
Dobro, u to vrijeme Linux je bio dovoljno "mali" da si ga mogao shvatiti. Ja, osobno, verziju Linuxa 0.01 mogu procitati s razumjevanje bez problema.
Previse se bojite nepoznatog.
Custom made Linux nije pisanje Operacijskog sutava, vec slaganje. Glupo je to uopce iznositi kao prijedlog.
Zavidan sam na tvojoj providnosti. Stvarno!
Dobro, zasto mislis da je programiranje operacijskih sustava toliko kompliciarno? Sto znaci funkcionalan OS?
DOS? DOS moze iskusniji programer napraviti za tjedan dana. To je doslovce bilo govno od operacijskog sustava koje se u potpunosti oslanjalo na BIOS.
Bill Joy je napravio BSD kernel za par dana. Govorimo o talentiranome programeru...a ako ti ne mozes nesto sklepati za godinu, dvije...bolje se nemoj zvati programerom!
Mislim da je tvoj problem sto nisi svjestan obujma posla i znanja koji taj zahvat trazi. Oslanjas se na puke price neukih ljudi koji operacisjki sustav vide samo kao apstrakciju koja je "uzasno" komplicirana, a u stvarnosti se ne razlikuje od bilo kojeg veceg projekta u user-spaceu. NE RAZLIKUJE SE!
Dapace, izprogramirati bazu podataka moze biti daleko veci izazov...web browser takodjer. Operacijski sustavi mogu biti ultra jednostavni za potrebe ves masina ili vrlo komplicirani poput danasnjih desktop operacijskih sustava.
Po meni, svatko tko je zavrsio smjer racunarstva, bi morao biti sposoban napraviti sustav na razini DOS-a, pa i vise. Pogotovo danas kada je sve lako dostupno.
Trivijalna glupost !
pricas kao netko tko se nacitao o tome kako se radi sustav a nikad ne probao.
koji ce mi fufac sustav poput dosa, reko sam odma to moze svatko ali cemu ? sta da radim s njime ? di su ti driveri covjece sam da se spojis na net ?
diy linux i nije bas slaganje sustava u potpunosti i radije bi ulozio dvije godine u njega nego u neki dos like sustav koji cu pokrenuti i ponosno gledat u crnu komadnu liniju i to je sve sto cu moci...
daj ajde radio si u dosu i znas mozda nesto i c i sad si se tu zanio i pricas gluposti koje nemaju smisla
.. programirati sustav
Na Fakultetu elektrotehnike i računarstva postoji kolegij Operacijski sustavi za ugradbena računala i tamo smo učili kako funkcionira jako jednostavan OS. Evo link na GIT repozitorij. Sa repozitorija možeš povući kodove korištenjem GIT klijenta za windowse ili prati upute zs linux.
Taj OS je rađen u inkrementima, malo po malo su dodavani djelovi. Ima podršku za upravljanje memorijom, sučelje za uređaje (tekst izlaz, tipkovnica), alarme, sinkronizacijske mehanizme, dretve i procese. Ako hoćeš, imamo i skriptu (nije bog zna kaj) koja opisuje ukratko pojedine djelove.
Trivijalna glupost !
pricas kao netko tko se nacitao o tome kako se radi sustav a nikad ne probao.
Koliko povrsnih i priglupih ljudi na ovom forumu.
Da, nacitao sam se i probao. Problem?
Quote:
koji ce mi fufac sustav poput dosa, reko sam odma to moze svatko ali cemu ? sta da radim s njime ? di su ti driveri covjece sam da se spojis na net ?
Koliko ti je godina?
Quote:
daj ajde radio si u dosu i znas mozda nesto i c i sad si se tu zanio i pricas gluposti koje nemaju smisla
.. programirati sustav
oko 12? Jel' da?
Tebi sve nema smisla jer nemas znanja uopce i to se vidi iz ovog tvojeg posta gore...a sto se tice mojeg znanja programskih jezika, pogotovo C-a...bolje nemoj dovoditi u pitanje. Pojma nemas s kime pricas, a vec podcjenjujes. To vec govori koliko si ogranicen i balav.
daj fuliras se tuda guglajuci linkove o nekakvome grubu a nemas blage o cemu pricas, ne znas ni sto je diy linux, to bi trebala biti osnova svakome tko zeli programirati os...
mos biti vrhunski programer ali os nisi sposoban napraviti bez zagrijavanja sa diy ili hlfs
a ti to programiras uveliko jelda....
daj jos jedan trivijalan grub primjer molim te, znas li kako uopce grub radi...
i onda ti kazes nekom da je dijete... citaj si samo kakve si gluposti pisao po postovima o linux kernelu tocno se vidi da si s nerazumijevanjem prevodio covjeku tu neki tekst sa interneta..
idi radi linux prvo pa onda nagadaj kako se programira os