Okokuqala, phawula ukuthi lesi yindatshana yami yokuqala futhi ngiyethemba nonke niyayithanda.
Kulolu chungechunge sizolingisa linus torvalds, sizokwakha uhlelo lwethu lokusebenza kusuka ku-0. Kulesi siqephu sokuqala sizobona ibhuthi futhi sizobeka umbhalo esikrinini kusuka kunhlamvu yethu.
Ngokwami uhlelo lokusebenza lubizwa OkulandelayoDivel. Isinqumo sokuqala okufanele sisithathe ngokushesha nje lapho sibheka uhlelo lokusebenza ukuthi ngabe i-bootloader izoba yini?
Lapha kunokuhlukahluka okuningi, futhi singazakhela esisodwa; noma kunjalo kulesi sifundo ngizosebenzisa I-GRUB, ngoba iningi lazi okuthile okuncane noma okuncane ngaye. Sakha ifolda ezoba yimpande yohlelo lwethu lokusebenza futhi lapho sakha ifolda / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Lapho sakha ifayela le-grub.cfg ngokulandelayo:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Kuleli fayela sibonile ukuthi kanjani I-GRUB izolayisha i-kernel yethu, kulokhu, ku- /next/START.ELF. Manje kufanele senze i-kernel yethu.
Kulokhu sizodinga i- I-GCC y I-GAS (ukuhlanganisa iphrojekthi I-GNU, imvamisa iza ne-gcc). Ngakho-ke sizokwakha i-kernel.
Okokuqala senza ifayela elibizwa nge- kernel.asm. Leli fayela lizoqukatha isiqalo se-kernel yethu futhi lizophinda lichaze i-multiboot (isici samanye ama-bootloaders afana I-GRUB). Okuqukethwe kernel.asm kuzoba:
.text
.globl start
start:
jmp multiboot_entry
.align 4
multiboot_header:
.long 0x1BADB002
.long 0x00000003
.long -(0x1BADB002+0x00000003)
multiboot_entry:
movl $(stack + 0x4000), %esp
call NextKernel_Main
loop: hlt
jmp loop
.section ".bss"
.comm stack,0x4000
Konke okuphathelene ne-multiboot kumane nje ukulandela imininingwane akukho okunye. Konke kuzoqala ekuqaleni, kuzobiza i-multiboot_entry, sizobe sesichaze unhlokweni we-multiboot ku-4k yokuqala futhi sizokubeka (nge-movl).
Kamuva sibiza i-NextKernel_Main okuwumsebenzi wethu we-kernel C. Ku-loop simisa ukumisa ikhompyutha. Lokhu kuhlanganiswa ne:
as -o kernel.o -c kernel.asm
Manje sizofaka izinhlelo ku-C. Uzocabanga ukuthi manje konke kuyisiqeshana sekhekhe, sibeka i- printf en main futhi yilokho kuphela, sikwenzile.
Cha, ngoba printf y main yimisebenzi echazwa uhlelo olusebenzayo, kepha siyayakha! Singasebenzisa kuphela imisebenzi esizichaza yona.
Ezahlukweni ezizayo ngizokhuluma ngendlela yokubeka owethu umtapo wezincwadi we-C (glibc, bionic, newlibc) kepha ngezikhathi ezithile. Sikhulume ukuthi sifuna ukubeka umbhalo esikrinini, kahle sizobona ukuthi sikwenza kanjani.
Kunezinketho ezimbili, eyodwa ukubiza ifayela le- I-BIOS okunye ukuphatha imemori yesikrini ngqo. Sizokwenza lokhu kokugcina ngoba kucace bha ku-C futhi kuzosivumela nokuthi sikwenze lapho singena kwimodi evikelwe.
Sakha ifayela elibizwa nge-NextKernel_Main.c ngokuqukethwe okulandelayo:
int NextKernel_Main()
{
char *str = "NextDivel says Hello World", *ch;
unsigned short *vidmem = (unsigned short*) 0xb8000;
unsigned i;
for (ch = str, i = 0; *ch; ch++, i++)
vidmem[i] = (unsigned char) *ch | 0x0700;
return 0;
}
Ngalokhu sisebenzisa imemori ngqo I-VGA nohlamvu ngesimilo siyakubhala. Sihlanganisa ngokukhubaza i-stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Uma usufinyelele lapha, uzofuna ukuzama uhlelo lwakho olusha sha manje, kepha asikaqedi. Sidinga ifayili elincane elitshela umhlanganisi lapho efayilini ashiye khona isigaba ngasinye. Lokhu kwenziwa nge-linker script. Sakha i-link.ld:
ENTRY(start)
SECTIONS
{
. = 0x00100000;
.multiboot_header :
{
*(.multiboot_header)
}
.text :
{
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(4096);
}
.data :
{
data = .; _data = .; __data = .;
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .; _end = .; __end = .;
}
Ngalokhu sichaza ukuma kwesigaba ngasinye nendawo yokungena, qala, esikuchaze ku-kernel.asm. Manje sesingakwazi ukuhlanganisa yonke le ngxube:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Manje sesikopisha u-START.ELF ukuya / ngokulandelayo ngaphakathi kwefolda yethu elingisa impande yohlelo lwethu lokusebenza. Siya kufolda yezimpande yohlelo lwethu olusha lokusebenza ne-console bese siqinisekisa ukuthi kunamafayela amabili: elilodwa / boot / grub / grub.cfg nelinye / elilandelayo / i-START.ELF
Siya enkombeni ephezulu bese sibiza insiza yokudala ye-ISO ebizwa nge-GRUB i-grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Uma sesikwenzile lokhu sizoba ne- ISO. Le ISO ingavulwa kumakhompyutha x86 (Ama-bits angama-64) nemishini ebonakalayo. Ukuyihlola, ngizosebenzisa QEMU. Siyabiza QEMU kusuka kulayini womyalo:
qemu-system-i386 nextdivel.iso
Izoqala I-SeaBIOS futhi kamuva siyoba nakho I-GRUB. Kamuva uma konke kulungile, sizobona umusho wethu.
Uzocabanga ukuthi lokhu kunzima, ngiyaphendula, yebo kunjalo.
Ukwakha uhlelo olusebenzayo kunzima nokuthi lena lapha ayenzi lutho oluwusizo. Ezahlukweni ezizayo sizobona ukuthi singayiphatha kanjani imibala esikrinini, sigcine imemori futhi uma ngikwazi, ukuthi ungayithola kanjani idatha kusuka kukhibhodi.
Uma othile engafuni ukukopisha konke lapha, ngine-repository ku GitHub (chaza kabanzi) ngohlelo olusebenzayo OkulandelayoDivel. Uma ufuna ukuhlanganisa OkulandelayoDivel kufanele ube ne-git ne-cmake:
git clone https://github.com/AdrianArroyoCalle/next-divel
cd next-divel
mkdir build && cd build
cmake ..
make
make DESTDIR=next install
chmod +x iso.sh
./iso.sh
qemu-system-i386 nextdivel.iso
Ngiyakukhuthaza ukuthi uhlanganyele ku-NextDivel uma unesikhathi futhi ufisa ukudala uhlelo olusebenzayo. Mhlawumbe ngisho nangaphezulu kweLinux ... isikhathi sizotshela.
:O
AbakwaTorvalds bathathe uhlelo lokusebenza lweMinix (olususelwa ku-UNIX) laya ku-Andrew S. Tanenbaum baluthuthukisa.
UTanenbaum uxabene noLinus, bathukana. UTanenbaum uthi iMicrokernel ikusasa (HURD, Minix new cone Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Lokhu kube okuthunyelwe okuhle kakhulu engikubonile kuze kube manje kule bhulogi. Sengivele ngifuna ukwazi ukuthi yini enye okufanele ngiyenze.
Hlatshwa umxhwele
Kuyamangaza ngempela !!
FUUUUUUU!
yiposi elingumgogodla engake ngalibona hehe. Siyakuhalalisela u-Adrián, i-athikili yesifebe! hyper ezithakazelisayo !!! 🙂
Ngiyavuma. Ngicabanga lesi simo:
Umsebenzisi we-GNU / Linux Power (ngobuso obujabulile):
"Sengivele ngiyazi ukuthi ngihlanganisa kanjani iGentoo yami"
UNerd (ngokwedelela): «pff, ngidale eyami i-distro ...»
Yebo, ngingadala eyami i-linux distro. Empeleni kuyo ngakha ama-initramfs kanye ne-kernel ye-linux eshumekiwe. Akufani nokwakha uhlelo lokusebenza kune-linux distro. Okokuqala kunzima kakhulu, cishe akunakwenzeka, okwesibili, njengoba ushilo, kungaba yinoma yini, ngisho no-Ubuntu onelogo ye-xD eguqukile. Ngakho-ke bengizoyishiya kanjena:
Umsebenzisi we-GNU / Linux Power (ngobuso obujabulile)
- Sengivele ngiyazi ukuthi ngingahlanganisa kanjani iGentoo yami
I-Semi-Nerd
- Pff, ngilandele i-linux kusukela ekuqaleni futhi ngazenzela eyami i-distro
UNerd (onesimo sokudelela)
- pff, ngoba ngihlelile i-kernel ku-assembler naku-C
Ukubingelela!
Lokhu kuyangithakazelisa, kusalindwe izahluko ezilandelayo.
Ngibone lesi sifundo esikhathini esedlule, senzelwe i-C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Ngiyabonga ngesixhumanisi, ngizosibuka.
Ngingathanda i-Operating System 100% ihambisane nemidwebo ye-AMD: /
Windows
hahaha kuWindows Catalyst ayinakho ukwesekwa kwe-OpenGL, yize ku-Linux ngingawasebenzisi wonke amandla wokuqhafaza engizoqhubeka ngilinde ukubona ukuthi kwenzekani!
vele ulinde i-valve ukuqeda imakethe
Umlingo, ophelele, umnikelo omuhle kakhulu, kubukeka njengochungechunge olukhulu lokuthunyelwe 🙂
I-Buah ngithanda ukwazi ukuthi ngingahlelela kanjani ukukusiza, njengendlela yokuzijwayeza ngolwazi olufundayo futhi eyodwa iyasiza. Okwamanje ngikushiyela isiqubulo sokudonsela ukunakekela kuphrojekthi uma usuqede "Sebenzisa i-NextDivel, i-porn ibukeka ifana (noma ingcono).", Uzoshanela i-xD.
Mooooooolaaa !!!!
I-athikili enhle kakhulu, kepha ufuna ukwazi ukuthi kungani ungayilandelanga iphrojekthi yeLinux From Scratch?
Phendula ngokucaphuna
Yebo, iLinux evela kuScratch ilungile, futhi ungasho ukuthi ngeyakho, kepha imishini impela:
Amafonti -Landa
-Zibambe
-Qoqa
-Faka
-Ukulandela
Lapha noma ngabe imiphumela iba mibi ekugcineni ungasho ukuthi ubuyekeze wonke amafayela.
Njengoba kucacile ekuphawuleni kwami kwangaphambilini, ngoba ayinayo izinga elifanayo lobunzima. Ngaphezu kwalokho, i-linux kusuka ekuqaleni ayiphikisani neze negama layo, ukudala uhlelo kusuka ekuqaleni.Ukwenza uhlelo kusuka ekuqaleni ukuzenzela uhlelo, ubhale i-kernel yakho, hhayi i-linux kernel, uma kungenzeka ngisho ne-bootloader yakho grub, lilo, syslinux, njll. Yize i-LFS ingeyona into encane futhi iyinkimbinkimbi impela, ayisondeli nakusondela ekuhleleni i-kernel yakho ...
Ngaphezu kwalokho, ngivumelana no-AdrianArroyo Calle ukuthi ingumshini kakhulu, ngiyifundile ngesinye isikhathi futhi ugcine unikezela ekhasini lesithupha, bakutshela nokuthi usebenzise iziphi izinhlobo zamaphakeji ngoba uma kungenjalo imiyalelo ngeke isebenze (lokho kukhombisa ukungabi bhetyebhetye, Ngokombono wami). Ngicabanga ukuthi kungcono ukuba nokuthile komqondo wakho, uhlanganise amaphakheji owafunayo, noma uwahlelele amanye, uhlanganise i-linux kernel nangokuthula.
Ukubingelela!
uuuoooohh !! Angikaze ngithathe okuthunyelwe njengoba kwenza lokhu.
Sicela uqhubeke 😀
Angazi ukuthi yini okungahambi kahle:
iphutha: asikho isihloko se-multiboot esitholakele.
iphutha udinga ukulayisha i-kernel kuqala
Uma kuyinduduzo, ngenze iphutha elifanayo. Zama ukusebenzisa imithombo eku-GitHub, lapho iphutha selivele lixazululiwe. Noma kunjalo ngicabanga ukuthi uma ushintsha ulayini we-grub.cfg usuka ku- "multiboot /next/START.ELF" uye ku- "kernel /next/START.ELF" ungahle usebenze. Angazi kahle.
Okokuqala, indawo enhle yokungena 🙂
Nginenkinga efanayo yokulayisha i-kernel kusuka ku-grub. Noma usebenzisa imithombo yeGitHub noma ushintsha i-multiboot ye-kernel ...
iphutha: asikho isihloko se-multiboot esitholakele.
iphutha: ayikho i-kernel elayishiwe
Ngabe usebenzisa i-clang njengomhlanganisi? Shintshela i-gcc
Usukhumbule ukusebenzisa iskripthi se-linker? Kuyadingeka ukuze i-linker (ld kithi) yazi ukuthi izofaka kuphi into ngayinye efayilini. Kulokhu unhlokweni we-multiboot kumele ube ekuqaleni.
Ngabe usebenzisa uhlelo lwe-CMake? Uma uyisebenzisa ngicabanga ukuthi ayiphumeleli.
Uma kungakusebenzeli, ngizozama ukuthola esinye isixazululo.
[+100]
Kuhle nje !!!
Kuhle impela really
Ngikhumula isigqoko sami. Okuthunyelwe okumangalisayo. Halala.
Hawu!
Kungakuhle uma ungavula izinhlelo zokusebenza ezenziwe nge-HTML5 neJavascript ngaphandle kokusebenzisa isiphequluli, kungenzeka lokho?
Ngikhuluma ngabo ukuthi bafana nezicelo zomdabu.
Ngakho-ke kungaba lula ukuhlelela lolu hlelo lokusebenza 😀
Kulokhu angizukukwenza ngoba kudinga umsebenzi omningi ngemuva kepha kukhona uhlelo lokusebenza olubizwa nge- "is" olwenza lokho okushoyo. Eqinisweni umugqa womyalo yiJavaScript futhi amawindi adwetshiwe kusetshenziswa imisebenzi yeJavaScript Canvas. Onjiniyela beNintendo bakwenzile futhi manje sekuwumthombo ovulekile.
http://code.google.com/p/es-operating-system/
UValla, ngiyabonga ngolwazi 😀
Ngizobheka
Noma ngubani ongazenzela i-OS yakhe angafa ngokuthula, ngoba izinga lobuhlakani kufanele alifeze ngalo; Kukwenza uhambisane nezulu noma isihogo.
Ucezu lokuposa.
kuze kube manje akekho owaziwa ukuthi wenze kuphela okuthile okungathiwa uhlelo oluhloniphekile lokusebenza olwenziwe ekuqaleni, ngisho neLinux Torvalds njengoba usho ekuqaleni, ngoba lokhu kuqale emithonjeni ye-Unix nakho konke okunye kubhalwe ngokufana nokunye Kunomuntu oyedwa, impilo imfushane kakhulu futhi ukuqala ekuqaleni akunakucatshangwa yinoma ngubani, noma ngabe okuhlukile kuyadingeka, kuyabonakala emaphutheni amaningi enziwe ekukopisheni nasekunamathiseleni kweLinux Torvalds
Imithombo ye-unix ivaliwe, ukusetshenziswa kwe-minix ... okungenye into.
nalabo abenza i-QDOS ini?
zazisekelwe kokuthile?
Ngokwalokho engikubonayo, ngubani ongenalo uhlelo lwabo lokusebenza kungenxa yokuthi abafuni, hahahaha.
Manje ngokungathí sina, okuthakazelisa kakhulu! Okuningi kungaphezu kolwazi lwami olunqunyelwe, kepha ngizofunda ezinye izingxenye zalolu chungechunge ngilindele.
Siyabonga ngokuthunyelwe!
Ungishiye nobuso be-O_O ... ngaphandle kwenhloso yokubukela phansi iminikelo yanoma ngubani, "ngungqondongqondo" omkhulu kunabo bonke engake ngababona muva nje. Ozithobayo.
I-athikili enhle kakhulu, u-Adrián. Sicela uqhubeke…
Uyadlala ngoSuku lweziwula luka-Ephreli?, Ungabi nonya "Ulingisa iLinus Torvalds: Dala uhlelo lwakho lokusebenza kusukela ekuqaleni." Angicabangi ukuthi kunzima kulabo abaphishekela ikhono elithile esikhungweni sobuchwepheshe noma eyunivesithi; kepha kimi ngingumcibisheli osafufusa (kukhona labo abathi "Noob" kepha ngizibona nginguNewbie ngokwengeziwe ngivila) lokho kuzwakala kunganyatheli umhlaba. Noma kunjalo, LESI SIQEPHU SIDALA ISIQINISEKISO ESININGI NANGAPHANDLE KOKUNGABIZI UKUTHANDA NOKUHLONIPHA UMHLELI WAKHO, HALALISELA; Into yokuqala engizoyenza ukuzama ukuqonda okungenani okuncane kwalokhu okubalulekile.
NGIYABONGA u-Adrian Arroyo Calle, umsebenzi oncomekayo nokulethwa okuhle kwemininingwane.
LEL okuthunyelwe okuhle, qhubeka.
Que Grandioso post, esto es lo que extrañaba de desde linux. Que maravilla.
Okuthunyelwe okuhle, ngiyabonga kakhulu.
Angiqondanga okwenziwa yifayela le-link.ld, ngabe othile angangichazela?
Ifayela le-link.ld litshela i-linker (kulokhu ld) lapho ingxenye ngayinye yekhodi kufanele ibe kufayela eliholelekile. Sichaza nendawo yokungena ngoba njengoba singenalo uhlelo lokusebenza asikwazi ukusebenzisa okuyinhloko njengohlelo olujwayelekile, kulokhu sikhetha umsebenzi wokuqala.
Kuhle konke okuthunyelwe kwakho! Ilinde okungu-7! Kuthiwani uma nginokungabaza, ngokwesibonelo, uma bengifuna kuphela ukusebenzisa i-algorithm, ngaphandle kwe-OS, ngazi kanjani ukuthi yini engingayisebenzisa nokuthi yini engasebenzisi uC?
Uma uyisebenzisa kanjena, ngeke ukwazi ukusebenzisa noma yini kusuka ku-stdlib, okuyilokho okusetshenziswa yiwo wonke umuntu (akukho malloc, free, printf, scanf, strcmp, njll). Konke kufanele kusetshenziswe ngqo kusuka kwimemori noma ku-ASM. Mhlawumbe esahlukweni esiphakeme ngizokukhombisa ukuthi ungayifaka kanjani ilabhulali engu-C yohlelo lokusebenza. Uma usebenzisa i-C ++ awukwazi ukusebenzisa okuhlukile futhi opharetha abasha bese ususa (futhi ngokuqinisekile ngaphezulu).
Ngiyacabanga lokhu kungakunika umbono ongcono wokuthi ungakwenza kanjani.
Sawubona, cishe eminyakeni emi-5 eyedlule ngalandela ukushicilelwa okufanayo futhi ngakha imicroernern eqala ngendlela efanayo, inezici ezithile okufanele uzithuthukise, kepha ingakuthakazelisa, isebenza ngemodi evikelekile, yenza imisebenzi eminingi futhi yenze ukubonwa kwememori, muva nje ngisebenze kuyo disk nomshayeli we-cd ukuyenza ifinyeleleke futhi ingagijimi ku-cd ebukhoma kuphela ... Sanibonani.
Sawubona, nginephutha lapho ngisebenzisa umyalo:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ukubeka eceleni -lgcc
link.ld: 5 iphutha le-syntax
iqoqo2: iphutha: ld ubuyise isimo sokuphuma esingu-1
isixhumanisi.ld
. = 0x00100000;
isihloko se-multiboot_head: {
* (. multiboot_header)
}
Kulayini 5 angiliboni iphutha, ngabe kwenzeka into efanayo kuye?
Ngisebenza nge-virtualized debian wheezy ku-virtualbox
engeza ";" ekugcineni kwe * (. multiboot_header)
Isinyathelo esihle kakhulu, nakanjani ngizolandela izahluko zalokhu okuthunyelwe, ngihlose ukufunda okuningi kukho. Ngiyabonga kakhulu ngokuthatha isikhathi ukusifundisa. Imininingwane eyodwa kulokhu, kufanele kuqashelwe ukuthi uLinus Torvalds akayena umqambi wanoma yiluphi uhlelo lokusebenza, wenza iKernel yohlelo lwe-GNU / Linux (olusetshenziswe kwenye i-OS), olusazuzisa, kepha Kubalulekile ukukhokha uRichard Stallman ngokudala iningi le-OS.
Ngiyabonga kakhulu ngokufaka futhi ngiyethemba ukuthi uzocubungula engikubonile.
Bengilokhu ngizixaka nendaba isikhashana, ngibe nentshisekelo lapho nje ngifunda isihloko. kodwa umyalezo ulokhu uthola
iphutha: asikho isihloko se-multiboot esitholakele.
iphutha udinga ukulayisha i-kernel kuqala
Ngilayishe engikuthathayo ngikwenze repo ku-github https://github.com/rkmax/GenyOS
Nami kwenzeka into efanayo.Ngabe usitholile isisombululo?
umbuzo engiqale ngawo ukwethula i-syntax futhi umugqa wemenyuentry ungitshela umyalo wokuthola ongatholakalanga ongangitshela ukuthi kungani
nakhu engikwenzayo
EMNYAMA @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
imenyuentry: umyalo awutholakali
Okuqukethwe kwalokhu okuqukethwe akumele kufakwe kulayini womyalo, kodwa kufayela olakha elibizwa nge- grub.cfg
I-athikili enhle kakhulu, ngiyabonga!
Okumangazayo… !! kufana nje nesixhumanisi esilahlekile.
Ngiyazithanda izifundo zakho ze-Emulating LInus Torvalds, kepha kunesinyathelo esisodwa engingasiqondi, okulandelayo:
Manje sesikopisha u-START.ELF ukuya / ngokulandelayo ngaphakathi kwefolda yethu elingisa impande yohlelo lwethu lokusebenza. Siya kufolda yezimpande yohlelo lwethu olusha lokusebenza ne-console bese siqinisekisa ukuthi kunamafayela amabili: elilodwa / boot / grub / grub.cfg nelinye / elilandelayo / i-START.ELF
Siya enkombeni ephezulu bese sibiza insiza yokwenza ama-ISOs ane-GRUB ebizwa nge-grub-mkrescue
Ngabe kukhona ongangichazela: p
Mane ukukhiqiza i-ISO encane i-GRUB engayilayisha sikopisha i-kernel ku- (the / ye-ISO, noma iyiphi ifolda) /next/START.ELF kanye nefayela lokumisa le-GRUB ku- (the / of the ISO, any folder) / boot /grub/grub.cfg. Uma lokho sekuqediwe asikayifaki i-GRUB ku-ISO futhi kukhona into ekhiqiza i-ISO kusuka kufolda bese ifaka i-GRUB ebizwa nge-grub-mkrescue. Ngemuva kwalokho ekugcineni sizogcina sine-bootable ISO efakwe i-GRUB, engafunda ukumiswa ukuze kamuva yenze i-START.ELF ngokufanele. Angazi noma ngizichazile yini, kepha esikwenzayo luhlobo lwefayela lamanga esenza ngalo i-ISO.
Kuhle
Yebo, bheka uhlelo olusha hhayi kangako kepha uma uthuthukisa i-linux, ngokwesibonelo, dala i-linux exonucleus enengxenye yeseva esebenza njenge-micronucleus uma ufisa, okungukuthi, isakhiwo se-exo esinokuziphatha kwe-micronucleus okungaba kuhle futhi kube yi-linux.
Enye into ukuthi angiyena uchwepheshe wohlelo, ama-cheesy c ++ ambalwa nje ne-java ethile, kuzokwanela mina ukunikeza uhlelo lwe-linux kernel imodyuli, ukuyigungqa, ukuyiguqula njll.
Ngaphandle kokungabaza sekuvele kufanele ngikwenze eholidini.
Le enhle futhi iluklama futhi ilukopishe ngaluphi uhlelo?
ngicela unginike leyo mpendulo
Lapho ngihlanganisa kusuka ku-git yakho ngithola:
[jmponce @ jar build] $ cmake ..
- Ukwakha isiqondisi se-NextRoot
- Ukwenza umbhalo we-ISO
yenza i-DESTDIR = ukufaka okulandelayo
./iso.sh
- Kutholakale i-Doxygen: / usr / bin / doxygen (inguqulo etholakele "1.8.9")
- Ukuhlela kwenziwe
- Ukwenza kwenziwe
- Amafayili wokwakha abhalwe ukuthi: / home / jmponce / next-divel / build
[jmponce @ jar build] $ enze
Iskena ukuncika kwethagethi START.ELF
[7%] Ukwakha into ye-ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Ukwakha into ye-CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Ixhuma i-CXX ephumelelayo START.ELF
/ usr / bin / ld: Akuhambisani / usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a yeqiwe ngenkathi ifuna -lgcc
/ usr / bin / ld: ayikwazi ukuthola -lgcc
iqoqo2: iphutha: ld ubuyise isimo sokuphuma 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Imiyalo ehlulekile ye-target 'src / START.ELF'
yenza [2]: *** [src / START.ELF] Iphutha 1
I-CMakeFiles / Makefile2: 106: Imiyalo ehlulekile ye-target 'src / CMakeFiles / START.ELF.dir / all'
yenza [1]: *** [src / CMakeFiles / START.ELF.dir / all] Iphutha 2
I-Makefile: 117: Ukwehluleka kumiyalo yethagethi 'konke'
yenza: *** [konke] Iphutha 2
Iphutha libukeka sengathi alikwazi ukuthola i-llibgcc ngoba unenguqulo engama-64-bit futhi njengamanje uhlelo lokwakha luphoqelekile ukusebenzisa ama-32-bit. Kufanele ufake iphakethe lokuhambisana ku-distro yakho noma okungcono, sebenzisa uhlelo lwe-32-bit.
Nginezingcezu ezingama-32 futhi kuvela iphutha elifanayo, usho ukuthi uhlelo lokusebenza noma ukwakheka? okwami kungu-64 Bit, kepha ngisebenzisa i-32 bit Ubuntu, ungabuzi, izinkinga zezezimali, ngalokho ngikusho konke.
Isihloko esihle kakhulu, silinde ububanzi obukhulu. Jabulela
Kuhle ngithemba okuningi
Sawubona, ngiyinxusa elincane elifuna ukudala uhlelo lokusebenza olusekela zonke izinhlelo namapulatifomu ukuze onjiniyela kungadingeki babe nemishini enamandla noma izinhlelo zokusebenza noma izinhlelo kwi-pc.
Kungakho nginentshisekelo kulokhu okuthunyelwe kepha uma ngilanda i-git yakho noma ngizama ukuyakha, konke kusebenza ngize ngikhiphe umyalo ./iso.sh noma i-grub-mkrescue -o nextdivel.iso nextroot uthola leli phutha
"I-Grub-mkrescue: isexwayiso: I-xorriso yakho ayisekeli" -grub2-boot-info ". Ezinye izici zikhutshaziwe. Sebenzisa i-xorriso 1.2.9 noma kamuva ..
i-grub-mkrescue: isexwayiso: I-xorriso yakho ayisekeli i - "-grub2-boot-info". Isithombe sakho se-kernel sikhulu kakhulu. I-Disk boot ikhutshaziwe. Sebenzisa i-xorriso 1.2.9 noma kamuva .. »
Angazi nakancane ngoba ngazi okuningi ngezinhlelo zokusebenza namawebhu kodwa angazi lutho nge-grub
Ungahle udinge ukubuyekeza uhlelo lwe-xorriso ku-distro yakho. Usebenzisa yiphi i-distro nohlobo?
Ngisebenzisa i-xubuntu 14.04lts futhi ngizama ukusebenzisa i-xorriso kepha uShell ungitshela ukuthi ayikwazi ukuyithola futhi ngithola ukufakelwa kahle xorriso yize bengilindele ngobuqotho impendulo ethile ngoba ngibe nesipiliyoni esibi sokufaka izinto engingazazi ku-linux hehe. Ngizoyibuyekeza manje bese ngikutshele ukuthi kwenzekeni
Ngemuva kwalokho faka i-xorriso kusuka esikhungweni se-software noma umane nje uvele ku-terminal do "sudo apt-get install xorriso"
Sengikwenzile konke ongitshele ngakho nangokubili kwe-git nokwami ngithola le xorriso 1.3.2: RockRidge fileystem manipulator, libburnia project.
IDrayivu yamanje: -outdev 'stdio: nextdivel.iso'
Okwamanje kwemidiya: ifayela le-stdio, elibhalwe phansi
Isimo semidiya: asinalutho
Isifinyezo semidiya: amaseshini ama-0, amabhlogo wedatha angu-0, idatha engu-0, mahhala ngo-1901m
Kungezwe esithombeni se-ISO: isiqondisi '/'='/tmp/grub.OEqSzV'
xorriso: QAPHELA: Amafayela angama-546 engezwe ngemizuzwana eyi-1
xorriso: UKUHLULEKA: Ayikwazi ukunquma imfanelo yefayela lomthombo '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Alikho lelo fayela noma umkhombandlela
xorriso: QAPHELA: Amafayela angama-546 engezwe ngemizuzwana eyi-1
i-xorriso: ukukhipha isisu: -abort_on 'FAILURE' kuhlangatshezwane ne 'FAILURE'
futhi i-corduroy angiqondi ukuthi isakhiwo sami ngu /nextroot/boot/grub/grub.cfg ne-nextroot / elandelayo / START.ELF
Ngiyabonga, sengikulungele ukuqhubekela phambili, umngani wangisiza wangitshela ukuthi engone ngakho yinhlangano yomkhombandlela, ngakho-ke ngiyilungisile
Uxolo, ungangitshela ukuthi iyiphi inqubo oyenzile ngoba angitholi phutha lokuqalisa: alikho lelo fayela noma umkhombandlela
ayikho i-bootable device.
Halala! Bengizokucela umusa uma ungangithumelela i-imeyili nalokho okuchaza lapha, ngididekile kancane futhi ngidinga ukuqhathanisa enginakho nalokho okuchazayo, mhlawumbe okungangicaceli ukuthi ngabe ukwenziwa kwe-grub. i-cfg yenziwa ku-terminal gcc noma ikuphi ngqo? ngiyabonga kakhulu mngani!
Udala ifayili grub.cfg nganoma yisiphi isihleli sombhalo futhi kufanele ulilondoloze ku-PROJECT_FOLDER / boot / grub / grub.cfg
Sawubona Adrian, okokuqala, ngiyakubongela futhi ngiyabonga ngeqhaza lakho.
Uyazi ngenza lokhu njengomkhuba futhi ngaqala ukukuhlanganisa ngokulandela ukufundiswa kwakho, kepha ngemuva kokuqala ngithole iphutha lokuqala
$ njenge -o kernel.o -c kernel.asm
bash: njengoba: umyalo awutholakalanga ...
Imiyalo efanayo yile:
'sa'
'ac'
Ngisebenza ku-fedora 20, futhi angisitholi isisombululo kulokhu, ngingajabulela ukuholwa kwakho kokuthi kufanele ngishintshe okuthile ku-gcc noma kugesi
kusengaphambili ngiyabonga
Kufanele ufake i-GAS ukuze ngibone ikhodi yephutha. Anginayo i-Fedora eseduze kodwa ngombono uma wenza i-yum install gcc-c ++ uzofaka yonke i-suite ye-GCC futhi imvamisa iza ne-GNU As.
Nginawe, kukhona engikwaziyo nge-C ++, C # (yize le yokugcina ingasetshenziswanga kakhulu kule ndaba) okubi ukuthi ngisenaso isipiliyoni, angikaze ngiphathe ulimi lwe-C, ukushicilelwa kwakho kuhle, Akukho okuningi engingakusho, uma nginesikhathi ngiyabona. Ngiyabonga.
Ngiyabonga kakhulu ngosizo olukhulu….
Ngiyayithanda i-linux yisifunda esihle kunazo zonke esikhona, iqiniso lamawindi wami udoti kulokho engikwaziyo ukuthi umenzi we-linux ngumenzi wamawindi
Sawubona ngithola Iphutha ku-grub kusho
iphutha: file /next/START.ELF Ayitholakalanga
iphutha: udinga ukulayisha i-kernel kuqala
Ungangisiza ungibhekabheka kodwa angikutholi
Ngiyacela, ngingawenza kanjani ubonise umlayezo othi HELLO WORLD? Ngingumqali futhi angazi okwanele
Okulandelayo kwenzeka kimi:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ukubeka eceleni -lgcc
/ usr / bin / ld: kernel.o: ukuhambisa kabusha i-R_X86_64_32 emelene nophawu `isitaki 'ngeke isetshenziswe lapho kwenziwa into ye-PIE; phinda uhlanganise ne -fPIE
/ usr / bin / ld: isixhumanisi sokugcina sehlulekile: isigaba esingamelwe kokukhishwayo
iqoqo2: iphutha: ld ubuyise isimo sokuphuma esingu-1