Okokuqala, phawula ukuba eli nqaku lam lokuqala kwaye ndiyathemba ukuba nonke niyayithanda.
Kolu luhlu siza kuxelisa Linus Torvalds, Siza kwenza inkqubo yethu yokusebenza ukusuka ku-0. Kulesi siqendu sokuqala siza kubona i-boot kwaye siza kufaka isicatshulwa kwiscreen kwi-kernel yethu.
Kwimeko yam inkqubo yokusebenza ibizwa ngokuba OkulandelayoDivel. Isigqibo sokuqala esimele sisenze ngokukhawuleza xa siqwalasela inkqubo yokusebenza yintoni i-bootloader eya kuba yiyo?
Nazi iindlela ezahlukeneyo, kwaye sinokudala enye ngokwethu; nangona kunjalo kule khokelo ndiza kuyisebenzisa GRUB, kuba uninzi lwazi ngakumbi okanye luyinto encinci ngaye. Sakha ifolda eya kuba yingcambu yenkqubo yethu yokusebenza kwaye apho senza i / boot / grub ifolda
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Apho senza ifayile yegrub.cfg ngolu hlobo lulandelayo:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Kule fayile sibonile ukuba njani GRUB siyakulayisha i-kernel yethu, kule meko, kwi /next/START.ELF. Ngoku kufuneka senze i-kernel yethu.
Ngale nto siza kuyidinga GCC y GAS (isihlanganisi seprojekthi GNU, ihlala iza ne-gcc). Ke siza kwenza i-kernel.
Kuqala senza ifayile ebizwa ngokuba yi-kernel.asm. Le fayile iya kuba nenqaku lokuqala le-kernel yethu kwaye iya kuchaza kwakhona i-multiboot (inqaku lezinye i-bootloaders ezinje GRUB). Umxholo we kernel.asm uya kuba:
.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
Yonke into enxulumene ne-multiboot kukulandela nje imigaqo ayikho enye into. Yonke into iza kuqala ekuqaleni, iya kubiza i-multiboot_entry, siya kuchaza i-multiboot header kwi-4k yokuqala kwaye siza kuyibeka (nge-movl).
Emva kwexesha sibiza i-NextKernel_Main eyi-kernel C yethu yokusebenza. Emngxunyeni siyema ukumisa ikhompyuter. Oku kudityaniswa kunye:
as -o kernel.o -c kernel.asm
Ngoku sizakungena kwinkqubo ku-C. Uyakucinga ukuba ngoku yonke into sisiqwenga sekhekhe, sibeka u ukuprinta en eyona yiyo lonto, siyenzile.
Ewe hayi, kuba ukuprinta y eyona Le yimisebenzi echazwe yinkqubo yokusebenza, kodwa siyayenza! Singasebenzisa kuphela imisebenzi esizichaza ngayo.
Kwizahluko ezizayo ndiza kuthetha ngendlela yokubeka ilayibrari yethu C (glibc, bionic, newlibc) kodwa amaxesha ngamaxesha. Sithethile ukuba sifuna ukubeka isicatshulwa kwiscreen, kulungile ke siza kubona ukuba senza njani.
Zimbini iindlela onokukhetha kuzo, enye kukutsalela umnxeba BIOS kwaye enye kukulawula imemori yesikrini ngokuthe ngqo. Siza kuyenza le yokugqibela kuba icacile kwi-C kwaye iya kusivumela ukuba siyenze xa singena kwimowudi ekhuselweyo.
Senza ifayile ebizwa ngokuba yiNextKernel_Main.c ngalo mxholo ulandelayo:
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;
}
Ngale nto sisebenzisa ngokuthe ngqo inkumbulo VGA kunye nomlinganiswa ngohlobo esilubhalayo. Sihlanganisa ngokukhubaza i-stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Ukuba ukwenzile oku, uya kufuna ukuzama inkqubo yakho entsha yokusebenza ngoku, kodwa asikenzi okwangoku. Sifuna ifayile encinci exelela umhlanganisi ukuba yeyiphi kwifayile yokushiya icandelo ngalinye. Oku kwenziwa ngeskripthi sokudibanisa. Sakha ikhonkco.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 = .;
}
Ngale nto sichaza indawo yecandelo ngalinye kunye nendawo yokungena, qala, esiyichaze kwi kernel.asm. Ngoku singamanyanisa yonke le ngqungquthela:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Ngoku sikopa START.ELF ukuya / ngokulandelayo ngaphakathi kwifolda yethu efanisa ingcambu yenkqubo yethu yokusebenza. Siya kwifolda yengcambu yenkqubo yethu entsha yokusebenza kunye nekhonsoli kwaye siqinisekise ukuba kukho iifayile ezimbini: enye / boot / grub / grub.cfg kunye nenye / elandelayo / START.ELF.
Siya kwisikhombisi esingasentla kwaye sibize isixhobo sokwenza i-ISO ngeGRUB ebizwa grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Nje ukuba sikwenze oku siya kuba ne- ISO. Le ISO inokuvulwa kwiikhompyuter x86 (Iibhithi ezingama-64) kunye noomatshini ababonakalayo. Ukuyivavanya, ndiza kuyisebenzisa IQEMU. Siyabiza IQEMU kumgca wokuyalela:
qemu-system-i386 nextdivel.iso
Uya kuqala Ulwandle kwaye kamva siya kuba nazo GRUB. Emva kwexesha ukuba yonke into ichanekile siza kubona ibinzana lethu.
Uya kucinga ukuba kunzima, ndiyaphendula, ewe kunjalo.
Ngokwenene ukwenza inkqubo yokusebenza kunzima kwaye le apha ayenzi nto iluncedo. Kwizahluko ezizayo siza kubona indlela yokuphatha imibala kwiscreen, ukugcina imemori kwaye ukuba ndinako, indlela yokufumana idatha kwikhibhodi.
Ukuba umntu akafuni ukukopa yonke into apha, ndinendawo yokugcina izinto GitHub (ngakumbi ngakumbi) ngenkqubo yokusebenza OkulandelayoDivel. Ukuba ufuna ukudibanisa OkulandelayoDivel kufuneka une-git kunye 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
Ndiyakukhuthaza ukuba usebenzisane kwi-NextDivel ukuba unexesha kwaye unqwenela ukwenza inkqubo yokusebenza. Mhlawumbi ungaphezulu kweLinux ... ixesha liza kuxela.
:O
I-Torvalds yathatha inkqubo ye-Minix (ethathwe kwi-UNIX) yaya ku-Andrew S. Tanenbaum kwaye wayiphucula.
I-Tanenbaum iye yalwa noLinus, bathuka omnye komnye. UTanenbaum uthi iMicrokernel ikamva (HURD, Minix cone new Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Esi sesona sithuba silungileyo endisibonileyo ukuza kuthi ga ngoku kule bhlog. Sele ndifuna ukwazi enye into emandiyenze.
Chukumiseka
Inomdla ngokwenene !!
UUUUUUUA!
Yeyona post ibalaseleyo endakhe ndayibona hehe. Ndiyakuvuyela uAdrián, inqaku lesifebe! hyper umdla !!! 🙂
Ndiyavuma. Ndicinga ngale meko:
Umsebenzisi wamandla we-GNU / Linux (ngobuso obonwabileyo):
"Sele ndiyazi indlela yokuhlanganisa iGentoo yam"
UNerd (ngesimo sokudelela): «pff, ndenze eyam distro ...»
Ewe ndingazenzela eyam i-linux distro. Ngapha koko ndiphuhlisa ii-initramfs kunye ne-kernel ye-linux ebekiweyo. Ayifani nokwenza inkqubo yokusebenza kune-linux distro. Eyokuqala inzima kakhulu, phantse ayinakwenzeka, eyesibini, njengoko sele utshilo, inokuba yiyo nantoni na, nkqu noBuntu ophethe ilogo utshintshe i-xD. Ke ndingayishiya ngoluhlobo:
Umsebenzisi wamandla we-GNU / Linux (ngobuso obonwabileyo)
-Ndisele ndiyazi indlela yokuhlanganisa iGentoo yam
Isiqendu-Nerd
-Pff, ndilandele i-linux ukusuka ekuqaleni kwaye ndiyenzile eyam i-distro
UNerd (ngesimo sokudelela)
-pff, kuba ndicwangcise ikernel ngokudibanisa kunye naseC
Nibuliso!
Oku kunomdla kum, kulindelwe kwizahluko ezilandelayo.
Ndayibona le tutorial ngexesha elithile eladlulayo, yenzelwe i-C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Enkosi ngekhonkco, ndiza kujonga kulo.
Ndingathanda iNkqubo yokuSebenza eyi-100% ehambelana nemizobo ye-AMD: /
Windows
hahaha kwiWindows Catalyst ayinayo inkxaso ye-OpenGL, nangona kwi-Linux andikwazi ukusebenzisa onke amandla emizobo ndiya kuhlala ndilinde ukubona ukuba kwenzeka ntoni!
linda nje ivalve ukuba isule intengiso
Umlingo, ogqibeleleyo, negalelo elihle, kujongeka ngathi luluhlu olukhulu lwezithuba 🙂
Buah, ndingathanda ukwazi ukuba ungayenza njani inkqubo yokukunceda, njengendlela yokuziqhelanisa nolwazi olufundayo, kwaye enye iyanceda. Okwangoku ndikushiyela isiqubulo sokuba utsalele ingqalelo kwiprojekthi nje ukuba uyigqibe "Sebenzisa i-NextDivel, iphonografi ijongeka ngokufanayo (okanye ngcono)."
Mooooooolaaa !!!!
Inqaku elilunge kakhulu, kodwa unomdla nje wokuba kutheni ungayilandelanga i-Linux Ukusuka ekuqaleni kweprojekthi?
Phendula nge quote
Ewe, iLinux esuka kwiScratch ilungile, kwaye ungatsho ukuba yeyakho, kodwa inyanzelekile.
-Khuphela iifonti
-Zibambe
-Dibanisa
-Faka
-Ukulandela
Apha, nokuba iziphumo zibi kakhulu ekugqibeleni, ungatsho ukuba uzijongisisile zonke iifayile.
Njengoko kucacile kwingcaciso yam yangaphambili, kuba ayinayo inqanaba elifanayo lobunzima. Ngapha koko, i-linux ukusuka ekuqaleni ayisiyiyo kwaphela, iphikisana negama layo, yenza inkqubo ukusuka ekuqaleni.Ukwenza inkqubo ukusuka ekuqaleni kukuzicwangcisa ngokwakho, ubhale eyakho i-kernel, hayi i-linux kernel, ukuba kunokwenzeka nokuba yeyakho i-bootloader endaweni yegrub, lilo, syslinux, njl. Nangona i-LFS ingekho ncinane kwaye iyinkimbinkimbi, ayifuni nokusondela kwi-kernel ...
Ukongeza, ndiyavuma noAdrianArroyo Calle ukuba ingumatshini kakhulu, ndiyifundile ngamanye amaxesha kwaye uphela unikezela kwiphepha lesithandathu, bakwakuxelele ukuba usebenzise eziphi iinguqulelo zeephakeji kuba kungenjalo imiyalelo ayizukusebenza (leyo ibonisa ukungabikho kokuguquguquka, Ngokombono wam). Ndicinga ukuba kungcono ukuba unento ethile eyoluvo lwakho, qulunqa iipakeji ozifunayo, nkqu nenkqubo ezinye, ukuqokelela i-linux kernel kunye noxolo.
Nibuliso!
uuuoooohh !! Andizange ndibambe iposti njengale.
Nceda uqhubeke 😀
Andazi ukuba yintoni ingxaki:
Impazamo: akukho ntloko ye-multiboot ifunyenwe.
Impazamo kufuneka ulayishe ikernel kuqala
Ukuba kukho induduzo, ndenze impazamo efanayo. Zama ukusebenzisa imithombo ekwiGitHub, apho impazamo sele isonjululwe. Ngapha koko ndicinga ukuba utshintsha umgca wegrub.cfg ukusuka kwi "multiboot /next/START.ELF" uye kwi "kernel /next/START.ELF" inokusebenza. Andazi ngokuchanekileyo.
Okokuqala, umnyango omangalisayo 🙂
Ndinengxaki efanayo yokulayisha i-kernel kwi-grub. Nokuba usebenzisa imithombo yeGitHub okanye ukutshintsha i-multiboot yekernel ...
Impazamo: akukho ntloko ye-multiboot ifunyenwe.
Impazamo: akukho kernel ilayishiwe
Ngaba usebenzisa i-clang njengomhlanganisi? Guqula igcc
Ngaba ukhumbule ukusebenzisa iscript esibhaliweyo? Kuyimfuneko ukuze ikhonkco (ld kwimeko yethu) yazi ukuba yeyiphi kwifayile eza kuthi ibeke into nganye kuyo. Kule meko i-multiboot header kufuneka ibe ekuqaleni.
Ngaba usebenzisa inkqubo yeCMake? Ukuba uyayisebenzisa ndicinga ukuba ayiphumeleli.
Ukuba ayisebenzi kuwe, ndiza kuzama ukufumana esinye isisombululo.
[+ 100]
Kakhulu nje !!!
Ipholile nyani 🙂
Ndothula umnqwazi wam. Iposi entle. Ndiyakuvuyela.
Yeha!
Kuya kuba kuhle ukuba unokuvula izicelo ezenziwe kwi-HTML5 kunye neJavascript ngaphandle kokusebenzisa isikhangeli, ngaba kunokwenzeka oko?
Ndithetha ngabo ngathi bafana nezicelo zemveli.
Kungaba lula ukwenza le nkqubo yokusebenza 😀
Kule meko andizukuyenza kuba ithatha umsebenzi omninzi ngasemva kwayo kodwa kukho inkqubo yokusebenza ebizwa ngokuba "ngu" eyenza le nto uyithethayo. Ngapha koko umgca wokuyalela yiJavaScript kwaye iifestile zitsaliwe kusetyenziswa imisebenzi ye-Canvas JavaScript. Iinjineli zeNintendo ziyenzile kwaye ngoku ingumthombo ovulekileyo.
http://code.google.com/p/es-operating-system/
UValla, enkosi ngolwazi 😀
Ndiza kujonga
Nabani na onokwenza i-OS yakhe angafa ngoxolo, kuba inqanaba lobukrelekrele kufuneka afezekise ngalo; Kukwenza uhambisane nezulu okanye isihogo.
Icandelo lokuposa.
Ukuza kuthi ga ngoku akukho mntu waziyo ukuba wenze kuphela into ekunokuthiwa yinkqubo yokusebenza enesidima eyenziwe kwasekuqaleni, nditsho neLinux Torvalds njengoko usitsho ekuqaleni, kuba oku kuqale kwimithombo yeUnix nayo yonke enye into ibhaliwe ngokufanayo Kunomntu omnye, ubomi bufutshane kakhulu kwaye ukuqala kwasekuqaleni ayicingeki nakubani na, nokuba kuyafuneka okuphikisanayo, kuyabonakala kwiimpazamo ezininzi ezenziweyo ekukhupheleni nasekuncamathiseni ngeLinux Torvalds
Imithombo ye-unix ivaliwe, ukusetyenziswa kwe-minix ... yenye into eyenye.
kwaye abo benza i-QDOS yintoni?
zazisekwe kwinto ethile?
Ukusuka kwinto endiyibonayo, ngubani ongenayo eyakhe inkqubo yokusebenza kungenxa yokuba abafuni, hahahaha.
Ngoku nzulu, inomdla kakhulu! Kuninzi okungaphaya kolwazi lwenkqubo olulinganiselweyo, kodwa ndiza kufunda ezinye iinxalenye zolu ngcelele ngolangazelelo.
Enkosi ngeposi!
Undishiye nobuso O_O ... ngaphandle kwenjongo yokujongela phantsi igalelo lakhe nabani na, yeyona "pro" ndiyibonileyo mvanje. Imibuliso.
Inqaku elilunge kakhulu, uAdrián. Nceda uqhubeke…
Ngaba uyadlala ngoSuku lweziDenge ku-Epreli?, Ungathethi "Ukulinganisa iLinus Torvalds: Yenza eyakho inkqubo yokusebenza kwasekuqaleni." Andicingi ukuba kunzima kwabo baqhubela ikhondo elithile kwitekhnoloji okanye eyunivesithi; kodwa kum ndingumtoli we-novice (kukho abo basibiza "Noob" kodwa ndizithatha njengoNewbie ngakumbi ndonqena) oko kuvakala ngokunganyatheli emhlabeni. Ngapha koko, ELI NQAKU LIDALA UBUNINZI BOKUZIPHATHA KANYE NGAPHANDLE KOKUTHANDABUZWA NOKUHLONIPHA UMHLELI WAKHO, HALALISA; Into yokuqala endiza kuyenza kukuzama ukuqonda ubuncinci kwezi zinto zibalulekileyo.
ENKOSI U-Adrian Arroyo Calle, umsebenzi ogqwesileyo kunye nokuhanjiswa okubalaseleyo kolwazi.
LEL Iposti egqwesileyo, yigcine.
Enjani yona isithuba esihle, yile nto bendiyikhumbula desde linux. Iyamangalisa.
Iposti enkulu, enkosi kakhulu.
Khange ndiyiqonde into eyenziwa yile link.ld, ngaba umntu angandicacisela yona?
Ikhonkco lefayile.ld uxelela ikhonkco (kule meko ld) apho icandelo ngalinye lekhowudi kufuneka libe kwifayile enesiphumo. Sikwachaza indawo yokungena kuba asinayo inkqubo yokusebenza esingakwaziyo ukuyisebenzisa njengesiqhelo, kule meko sikhetha umsebenzi wokuqala.
Inkulu yonke iposti yakho! Ilinde i-7! Ungathini ukuba ndinamathandabuzo, umzekelo, ukuba bendifuna ukuqhuba ialgorithm kuphela, ngaphandle kwe-OS, ndiyazi njani into endinokuyisebenzisa kunye nengekhoyo u-C?
Ukuba uyisebenzisa ngolu hlobo, ngekhe ukwazi ukusebenzisa nantoni na evela kwi-stdlib, eyinto esetyenziswa ngumntu wonke (akukho malloc, simahla, printf, scanf, strcmp, njl. Yonke into kufuneka yenziwe ngokuthe ngqo kwimemori okanye kwi-ASM. Mhlawumbi kwisahluko esiphezulu ndiza kukubonisa ukuba uyifaka njani ilayibrari yeC yenkqubo yokusebenza. Ukuba usebenzisa i-C ++ awungekhe usebenzise okungafaniyo kunye nabasebenzisi abatsha kunye nokucima (kwaye ngokuqinisekileyo ngaphezulu).
Ndiyacinga oku inokukunika umbono ongcono wendlela yokwenza.
Molo, malunga neminyaka emi-5 eyadlulayo ndalandela upapasho olufanayo kwaye ndenza i-microkernel eqala ngendlela efanayo, inezinto ezithile ekufuneka iziphucule, kodwa inokuba nomdla kuwe, ibaleka kwimowudi ekhuselweyo, yenza umsebenzi omninzi kwaye yenza ukubonwa kwememori, Mva nje ndisebenze kuyo umqhubi wediski kunye ne-cd drive ukuyenza ukuba ifikeleleke kwaye ingaqhubeki kuphela kwi-cd ephilayo ...
Molo, ndinempazamo xa ndenza lo myalelo:
I-gcc -o START.ELF kernel.o I-NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ukubeka indawo -lgcc
link.ld: 5 impazamo yes syntax
collect2: Impazamo: ld ibuyise inqanaba elinye lokuphuma
ikhonkco
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
Kumgca wesi-5 andiyiboni impazamo, ngaba umntu uyafana?
Ndisebenza ne-debian wheezy ebonakalayo kwibhokisi ebonakalayo
Yongeza ";" Ekupheleni kwe * (. multiboot_header)
Isiluleko esihle kakhulu, ngokuqinisekileyo ndiza kulandela izahluko zale posi, ndizimisele ukufunda lukhulu kuyo. Enkosi kakhulu ngokuthatha ixesha lakho usifundisa. Inkcukacha enye malunga noku, kufanele kuqatshelwe ukuba iLinus Torvalds ayisiyiyo nayiphi na inkqubo yokusebenza, wayila iKernel yenkqubo ye-GNU / Linux (leyo isetyenzisiwe kwenye i-OS), eselungeleleneyo, kodwa kubalulekile ukunika uRichard Stallman ikhredithi eyimfuneko yokudala uninzi lwe-OS.
Enkosi kakhulu ngokufaka kwaye ndiyathemba ukuba uyakujonga ukubonwa kwam.
Kudala ndixakana nomxholo okwexeshana, ndaba nomdla kwakamsinya nje ukuba ndifunde umxholo. kodwa umyalezo uyaqhubeka nokufumana
Impazamo: akukho ntloko ye-multiboot ifunyenwe.
Impazamo kufuneka ulayishe ikernel kuqala
Ndikhuphele into endiyisa kuyo repo kwi-github https://github.com/rkmax/GenyOS
Kwenzeka into efanayo kum. Ngaba usifumene isisombululo?
Umbuzo ndiqalisile ukwazisa is syntax kunye nelayini yokutya yokutya indixelela commandnot found who could tell me why
yile ndiyenzayo
UMNYAMA @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
uluhlu lwezinto: umyalelo awufunyenwanga
Umxholo walo mxholo awuzukungeniswa kwilayini yomyalelo, kodwa kwifayile oyenzayo ebizwa ngokuba yi-grub.cfg
Inqaku elihle, enkosi!
Umtsalane… !! ifana nekhonkco elilahlekileyo.
Ndiyazithanda ii-Tutorials ze-LInus Torvalds ezikhuthazayo, kodwa linyathelo elinye endingaliqondiyo, oku kulandelayo:
Ngoku sikopa START.ELF ukuya / ngokulandelayo ngaphakathi kwifolda yethu efanisa ingcambu yenkqubo yethu yokusebenza. Siya kwifolda yengcambu yenkqubo yethu entsha yokusebenza kunye nekhonsoli kwaye siqinisekise ukuba kukho iifayile ezimbini: enye / boot / grub / grub.cfg kunye nenye / elandelayo / START.ELF.
Siya kulawulo oluphezulu kwaye sibize isixhobo sokudala se-ISO ngeGRUB ebizwa ngokuba yigrub-mkrescue
Ngaba umntu unokundicacisela: p
Ngokulula ukuvelisa ubuncinci be-ISO enokulayishwa yi-GRUB sikopa ikernel (kwi-ISO, nakweyiphi na ifolda) /next/START.ELF kunye nefayile yoqwalaselo yeGRUB (kwi / ye-ISO, nakweyiphi na ifolda) / boot / grub / grub.cfg. Nje ukuba kwenziwe oko asikayifaki i-GRUB kwi-ISO kwaye kukho into esebenzayo eyenza i-ISO kwifolda kwaye ifake i-GRUB ebizwa ngokuba yi-grub-mkrescue. Emva koko siya kuthi ekugqibeleni sigqibe nge-bootable ye-ISO efake i-GRUB, enokufunda ubumbeko ukuze kamva yenze i-START.ELF ngokufanelekileyo. Andazi ukuba ndizichazile na, kodwa into esiyenzayo luhlobo lwefayile engeyiyo esenza ngayo i-ISO.
Kakhulu
Ewe, jonga inkqubo entsha hayi kangako kodwa ukuba uphucula i-linux umzekelo ngokwenza i-linux exonucleus enecandelo leseva elisebenza njenge-micronucleus ukuba inqweneleka, oko kukuthi, ulwakhiwo lwe-exo olunokuziphatha kwe-micronucleus okuya kuba kuhle kunye ne-linux.
Enye into kukuba andiyongcali yenkqubo, nje ezimbalwa i-cheesy c ++ kunye ne-java ethile, kunokwanela ukuba ndinike inkqubo ye-linux kernel imodyuli, ukuyigungxula, ukuyiguqula njl.
Ngaphandle kwamathandabuzo sele ndiyenzile ekhefini.
Le ilungileyo kwaye yeyiphi inkqubo eyila kunye nekhowudi?
ndicela undinike impendulo
Xa udibanisa kwi-git yakho ndifumana:
[jmponce @ jar ukwakha] $ cmake ..
-Ukudala isikhombisi se-NextRoot
-Ukuvelisa iskripthi se-ISO
yenza DESTDIR = ngokulandelayo faka
./iso.sh
-Ufumene i-Doxygen: / usr / bin / doxygen (uguqulelo olufunyenweyo "1.8.9")
-Ukuqwalaselwa kwenziwe
Ukuvelisa kwenziwe
-Iifayile zokwakha zibhalelwe oku: / ekhaya / jmponce / next-divel / build
[jmponce @ jar ukwakha] $ yenza
Ukuskena ukuxhomekeka kokujolise kuko START.ELF
[7%] Ukwakha into ye-ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Ukwakha into yeCXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Ukuqhagamshela i-CXX ephunyeziweyo START.ELF
/ usr / bin / ld: Akuhambelani / usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a yeqiwe ngelixa ujonge -lgcc
/ usr / bin / ld: ayinakufumana -lgcc
collect2: Impazamo: ld ubuyise imeko yokuphuma 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Imiyalelo engaphumelelanga yithagethi 'src / START.ELF'
yenza [2]: *** [src / START.ELF] Impazamo 1
CMakeFiles / Makefile2: 106: Imiyalelo engaphumelelanga yokujolisa 'src / CMakeFiles / START.ELF.dir / all'
yenza [1]: *** [src / CMakeFiles / START.ELF.dir / all] Impazamo 2
Ifayile: 117: Ukusilela kwemiyalelo yokujolisa kuko 'konke'
yenza: *** [konke] Impazamo 2
Impazamo ibonakala ngathi ayinakufumana llibgcc kuba unenguqulo engama-64-bit kwaye okwangoku inkqubo yokwakha inyanzelekile ukuba isebenzise i-32-bit. Kuya kufuneka ufake ipakethi yokuhambelana kwi-distro yakho okanye bhetele, sebenzisa inkqubo ye-32-bit.
Ndine-32 bits kwaye kwavela impazamo efanayo, ngaba uthetha ukuba inkqubo yokusebenza okanye uyilo? yeyam i-64 Bit, kodwa ndisebenzisa i-32 bit Ubuntu, sukubuza, iingxaki zemali, ngaloo nto ndiyithetha yonke.
Isihloko esihle kakhulu, silinde indawo enkulu. Masinwabe
Mkhulu ndiyathemba ngaphezulu
Molo, ndililungu eliselula elifuna ukwenza inkqubo yokusebenza exhasa zonke iinkqubo kunye namaqonga ukuze abaphuhlisi kungafuneki babe noomatshini abanamandla okanye usetyenziso okanye iinkqubo kwi-pc.
Kungenxa yoko le nto ndinomdla kule post kodwa xa ndikhuphela i-git yakho okanye ndizama ukuyenza, yonke into isebenza ndide ndiphumeze lo myalelo ./iso.sh okanye grub-mkrescue -o nextdivel.iso nextroot ufumana lempazamo.
Msgstr "Igrub-mkrescue: isilumkiso: IXorriso yakho ayixhasi" - grub2-boot-info ". Ezinye izinto zikhubaziwe. Sebenzisa xorriso 1.2.9 okanye kamva ..
grub-mkrescue: isilumkiso: I-xorriso yakho ayixhasi "-grub2-boot-info". Umfanekiso wekernel wakho mkhulu kakhulu. Idisk yokukhubazeka ikhubaziwe. Sebenzisa xorriso 1.2.9 okanye kamva .. »
Andinalwazi kwaphela kuba ndiyazi kakhulu malunga nokusetyenziswa kunye neewebhu kodwa andazi kwanto malunga negrub
Kuya kufuneka uhlaziye inkqubo yeXorriso kwi-distro yakho. Yeyiphi i-distro kunye nohlobo olusebenzisayo?
Ndisebenzisa i-xubuntu 14.04lts kwaye ndizama ukuqhuba i-xorriso kodwa iqokobhe lindixelela ukuba aliyifumani kwaye ndiza kufumana i-xorriso ngokufanelekileyo nangona bendilindele ngokunyanisekileyo impendulo kuba ndinamava amabi okufaka izinto endingazaziyo kwi-linux hehe . Ndizakuyihlaziya ngoku kwaye ndikuxelele okwenzekileyo
Emva koko fakela i-xorriso kwiziko lesoftware okanye ngokusuka nje kwisiphelo sendlela "sudo apt-get install xorriso"
Sele ndiyenzile yonke into ondixelele yona kunye zombini kunye neyam ndifumana le xorriso 1.3.2: RockRidge fileystem manipulator, libburnia projekthi.
Ukuqhuba okwangoku: -outdev 'stdio: nextdivel.iso'
Imithombo yeendaba ngoku: ifayile ye-stdio, ebhalwe ngaphezulu
Imeko yemidiya: ayinanto
Isishwankathelo seendaba: Iiseshini ezi-0, iibhloko zedatha ezi-0, idatha ezi-0, isimahla ngo-1901m
Yongezwe kumfanekiso we-ISO: ulawulo '/'='/tmp/grub.OEqSzV'
xorriso: UPHANDO: Iifayile ezingama-546 zongezwe kwimizuzwana eyi-1
xorriso: UKUQINISEKA: Ayikwazi ukumisela amanqaku efayile yomthombo '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Akukho fayile okanye ulawulo
xorriso: UPHANDO: Iifayile ezingama-546 zongezwe kwimizuzwana eyi-1
xorriso: ukurhola: -abort_on 'FAILURE' yafumana 'UKUSILELA'
kunye ne-corduroy Andiqondi ukuba ubume bam ngu / /
Enkosi, ndikulungele ukuqhubela phambili, umhlobo undincedile wandixelela into endiyenzileyo engalunganga ngumbutho wesikhombisi, ndiye ndayisombulula kwaye kunjalo
Uxolo, ungandixelela ukuba yeyiphi inkqubo oyenzileyo ukusukela ukuba andifumani mpazamo kwibhotile: akukho fayile okanye umkhombandlela
akukho sixhobo siqalekisayo.
Masinwabe! Ndizokucela ubabalo ukuba ungandithumelela i-imeyile ngale nto uyicacisa apha, ndiye ndabhideka kwaye ndifuna ukuthelekisa endinako nento oyicacisayo, mhlawumbi into engacacanga kum yile yokuba uyilo lwegrub. enkosi kakhulu mfondini!
Uyila ifayile grub.cfg ngawo nawuphi na umhleli wokubhaliweyo kwaye kufuneka uyigcine kwi- PROJECT_FOLDER / boot / grub / grub.cfg
Molo Adrian, okokuqala, ndiyavuyisana nawe kwaye ndiyabulela ngegalelo lakho.
Uyazi ukuba ndiyenza le nto kwaye ndiqale ukuyibeka ngokulandela ukufundisa kwakho, nangona kunjalo emva kokuqala ndiyifumene impazamo yokuqala
$ njenge -o kernel.o -c kernel.asm
bash: as: command not found ...
Imiyalelo efanayo yile:
'sa'
'ac'
Ndisebenza kwi-fedora 20, kwaye andifumani sisombululo kule meko, ndingavuya isikhokelo sakho malunga nokuba ndingatshintsha into kwi-gcc okanye kwigesi
kwangaphambili ukubulela
Kuya kufuneka ufake i-GAS ukuze ndibone ikhowudi yempazamo. Andinayo iFedora ecaleni kodwa ithiyori ukuba uyenza ukufaka i-gcc-c ++ uya kuyifaka yonke i-GCC suite kunye ne-GNU Njengesiqhelo iza nayo.
Ndikunye nawe, ndiyazi into malunga ne-C ++, C # (nangona le yokugqibela ingaloncedo kulo mbandela) into embi kukuba andinamava, andikaze ndiyiphathe ngolwimi lwe-C, upapasho lwakho lukhulu, Andinanto ingako yokuthetha, ukuba ndinexesha ndiyabona. Enkosi.
Enkosi kakhulu ngoncedo olukhulu….
Ndiyayithanda i-linux sesona sithili sikhona, inyani yeefestile zam yinkunkuma ku a ndiyazi ukuba umenzi we-linux ngumenzi weewindows
Molo ndifumana Impazamo kwi-grub utsho
Impazamo: ifayile / elandelayo / START.ELF ayifumaneki
Impazamo: Kuya kufuneka ulayishe ikernel kuqala
Ungandinceda undigocagoce kodwa andifumani
Nceda, ndingawenza njani ubonise umyalezo HLOBO LEHLABATHI? Ndingumqali kwaye andazi okwaneleyo
Oku kulandelayo kuyenzeka kum:
I-gcc -o START.ELF kernel.o I-NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ukubeka indawo -lgcc
/ usr / bin / ld: kernel.o: ukufuduswa kwe-R_X86_64_32 ngokuchasene nesimboli `isitaki 'ayinakusetyenziswa xa usenza into ye-PIE; Buyisela kwakhona -fPIE
/ usr / bin / ld: ikhonkco lokugqibela aliphumelelanga: icandelo elingenakubonakaliswa kwimveliso
collect2: Impazamo: ld ibuyise inqanaba elinye lokuphuma