Chekutanga pane zvese, taura kuti ichi ndicho chinyorwa changu chekutanga uye kuti ndinovimba mese munochida.
Mune dzino dzakateedzana tiri kuenda kutevedzera Linus Torvalds, tichagadzira yedu yekushandisa system kubva ku0.Muchikamu chino chekutanga tichaona bhuti uye tichaisa chinyorwa pachiratidziri kubva pane yedu kernel.
Mune yangu kesi iyo inoshanda system inonzi NextDivel. Sarudzo yekutanga yatinofanirwa kuita nekukurumidza isu patinofunga nezve mashandiro sisitimu ndiyo ichave iyo bootloader ichave iri?
Pano pane zvakawanda zvakasiyana, uye isu tinogona kana kugadzira imwe pachedu; zvisinei mune ino dzidzo ini ndiri kuzoshandisa GRUB, nekuti vazhinji vanoziva zvimwe kana zvishoma chimwe chinhu nezvake. Isu tinogadzira dhairekitori iyo ichave mudzi wesystem yedu yekushandisa uye ipapo tinogadzira iyo / boot / grub dhairekitori
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Ikoko tinogadzira iyo grub.cfg faira seinotevera:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Mune ino faira taona sei GRUB inotakura kernel yedu, mune iyi kesi, mu /next/START.ELF. Iye zvino isu tinofanirwa kugadzira yedu kernel.
Kune izvi isu tichada iyo GCC y GAS (iko kuunganidza kweprojekiti GNU, kazhinji inouya neiyo gcc). Saka isu tichagadzira iyo kernel.
Kutanga tinoita faira inonzi kernel.asm. Iyi faira ichave neinotangira kernel yedu uye zvakare ichajekesa iyo multiboot (chimwe chinhu chevamwe bootloaders senge GRUB). Zviri mukati mekernel.asm zvichave:
.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
Zvese zvine chekuita ne multiboot ndeye kungoteedzera iwo maratidziro hapana chimwezve. Zvese zvichatanga pakutanga, zvinodaidza multiboot_entry, isu tichava tatsanangura iyo multiboot musoro mune yekutanga 4k uye isu tichaiisa (ne movl)
Gare gare tinodaidza NextKernel_Main inova yedu kernel C inoshanda. Muchiuno tinomira kumisa komputa. Izvi zvinosangana ne:
as -o kernel.o -c kernel.asm
Iye zvino tave kuzopinda muchirongwa muC. Iwe uchafunga kuti izvozvi zvese chidimbu chekeke, tinoisa a kudhinda en kuru uye ndizvozvo, tazviita.
Zvakanaka kwete, kubvira kudhinda y kuru aya mabasa anotsanangurwa neiyo inoshanda system, asi isu tiri kuigadzira! Tinogona chete kushandisa mabasa atinozvitsanangura isu pachedu.
Muzvitsauko zvinotevera ini ndichataura nezve maitiro ekuisa edu C raibhurari (glibc, bionic, newlibc) asi nguva nenguva. Takakurukura kuti tinoda kuisa zvinyorwa pachiratidziri, zvakanaka tichaona kuti tinozviita sei.
Pane sarudzo mbiri, imwe ndeye kudaidza iyo Bios uye imwe ndeye kubata screen memory zvakananga. Tichaita zvekupedzisira nekuti zviri pachena kubva kuC uye zvinotibvumidzawo kuti tizviite kana tapinda yakachengetedzwa maitiro.
Isu tinogadzira iyo faira inonzi NextKernel_Main.c ine zvinotevera zvirimo:
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;
}
Naizvozvi isu tinonyengera chiyeuchidzo VGA uye hunhu nehunhu isu tiri kuzvinyora. Isu tinounganidza nekuremadza iyo stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Kana iwe wakazviita kusvika pano, iwe uchazoda kuedza yako nyowani sisitimu yekushandisa izvozvi, asi isu hatisati tapedza izvozvi. Isu tinoda diki faira rinotaurira muunganidzi kuti mune iyo faira kusiya chikamu chimwe nechimwe. Izvi zvinoitwa nechinongedzo script. Isu tinogadzira 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 = .;
}
Nezvo isu tinotsanangura chinzvimbo chechikamu chimwe nechimwe nenzvimbo yekupinda, kutanga, yatakatsanangura mu kernel.asm. Iye zvino tinogona kubatanidza zvese izvi concoction:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Iye zvino isu tinoteedzera START.ELF ku / inotevera mukati medu folda iyo inoteedzera mudzi wesisitimu yedu yekushandisa. Isu tinoenda kumudzi dhairekitori reedu nyowani yekushandisa sisitimu pamwe neconsole uye tiongorore kuti kune mafaera maviri: imwe / boot / grub / grub.cfg uye imwe / / inotevera / START.ELF.
Isu tinoenda kune yekumusoro dhairekitori uye tinodaidza iyo ISO yekushandisa inobatsira ine GRUB inonzi grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Kana tangoita izvi tichava ne ISO. Iyi ISO inogona kuvhurwa pamakomputa x86 (64 bits zvakare) uye chaiwo michina. Kuti ndizviedze, ndiri kuzoshandisa QEMU. Tinoshevedza QEMU kubva pamutsetse wekuraira:
qemu-system-i386 nextdivel.iso
Unotanga GungwaBIOS uye gare gare tichava nazvo GRUB. Gare gare kana zvese zviri chokwadi tichaona mutsara wedu.
Iwe uchafunga kuti izvi zvakaoma, ndinopindura, hongu zviripo.
Chaizvoizvo kugadzira iyo inoshanda sisitimu inonetsa uye kuti iyi pano haina kuita chero chinhu chinobatsira. Muzvitsauko zvinotevera tichaona mabatiro amungaita mavara pachiratidziri, chengetedza ndangariro uye kana ndichigona, maitiro ekuwana data kubva kubhodhi.
Kana mumwe munhu asingade kuteedzera zvese apa, ndine repodhi pa GitHub (zvakanyanyisa) nehurongwa hwekushandisa NextDivel. Kana iwe uchida kuumbiridza NextDivel iwe unongofanirwa kunge uine git uye 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
Ini ndinokukurudzira kuti ubatsirane paNextDivel kana iwe uine nguva uye chishuwo chekugadzira inoshanda sisitimu. Zvichida kunyange zvakakwirira kune Linux ... nguva ichataura.
:O
Torvalds akatora iyo Minix inoshanda sisitimu (yakatorwa kubva kuUNIX) kuna Andrew S. Tanenbaum akaigadziridza.
Tanenbaum yakarwa naLinus, vakatukana. Tanenbaum inoti iyo Microkernel ndiyo ramangwana (HURD, Minix koni nyowani Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Ichi chave chiri chakanakisa posvo chandakaona kusvika parizvino pane ino blog. Ini ndave kutoda kuziva zvimwe zvekuita.
Be fascinated
Zvinonyanya kufadza !!
FUUUUUUA!
ndiyo posvo yegeekiest yandakamboona hehe. Makorokoto Adrián, chinyorwa chehure! hyper zvinonakidza !!! 🙂
Ini ndinobvumirana. Ini ndinofungidzira mamiriro aya:
GNU / Linux Simba Mushandisi (ane chiso chinofara):
"Ini ndatoziva kuunganidza Gentoo wangu"
Nerd (nekuzvidza): «pff, ini ndakagadzira yangu yega distro ...»
Hongu, ndinogona kugadzira yangu linux distro. Muchokwadi mairi ndiri kuvandudza initramfs uye kernel yeiyo yakadzamirwa linux. Izvo hazvina kufanana kugadzira system yekushandisa pane linux distro. Yekutanga yakanyanya kuomarara, inenge isingabviri, yechipiri, sekutaura kwako, inogona kuva chero chinhu, kunyangwe Ubuntu ine xD logo yakachinja Saka ndaizoisiya seizvi:
GNU / Linux Simba Mushandisi (ane chiso chinofara)
- Ini ndatoziva maitiro ekuunganidza yangu Gentoo
Semi Nerd
- Pff, ini ndatevera linux kubva pakutanga uye ndagadzira yangu yega distro
Nerd (ane hunhu hwekuzvidza)
- pff, nekuti ini ndakaronga kernel mu assembler uye muC
Kwaziso!
Izvi zvinondinakidza, zvichimirira zvitsauko zvinotevera.
Ndakaona iyi dzidziso nguva yadarika, ndeyeC ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Ndatenda neiyi link, ndichaitarisa.
Ndinoda Inoshanda System 100% inoenderana nemifananidzo ye AMD: /
Windows
hahaha muWindows Catalyst haina OpenGL rutsigiro, kunyangwe muLinux ini ndisingakwanise kushandisa ese graphic simba ini ndicharamba ndakamirira kuti ndione zvinoitika!
ingomirira vharuvhu kuti ibvise musika
Zvemashiripiti, zvakakwana, zvakanakisa mupiro, zvinoita kunge rakakura nhevedzano yezvinyorwa 🙂
Buah ndinoda kuziva maitiro ekuronga kuti ndikwanise kukubatsira, senzira yekudzidzira neruzivo urwo urikudzidza uye imwe inobatsira. Parizvino ndinokusiira chirevo chekucherechedza chirongwa kana iwe uchinge wapedza "Shandisa NextDivel, porn inotaridzika zvakafanana (kana zvirinani).", Uchatsvaira xD.
Mooooooolaaa !!!!
Chinyorwa chakanakisa, asi uchingoda kuziva kuti nei usina kutevera iyo Linux Kubva kuScratch chirongwa?
Reply with quote
Zvakanaka, Linux kubva kuScratch yakanaka, uye iwe unogona kutaura kuti ndeyako, asi yakanyatsogadzirwa.
-Download mafonti
-Patch ivo
-Compile
-Kuisa
-Kutevera
Pano, kunyangwe kana mhedzisiro yacho yakanyanya kuipa pakupedzisira, unogona kutaura kuti wadzokorora mafaera ese.
Sezvazviri pachena kubva kumashoko angu apfuura, nekuti haina chiyero chakafanana chekuoma. Kupfuurirazve, linux kubva pakutanga haina kunyatsopesana nezita rayo, kugadzira system kubva pakutanga.Kugadzira system kubva pakutanga kuri kuigadzira pachako, kunyora yako kernel, kwete iyo linux kernel, kana zvichibvira kunyangwe yako bootloader pachinzvimbo che grub, lilo, syslinux, nezvimwe. Kunyangwe iyo LFS isiri diki feat uye yakaoma kunzwisisa, haina kana kusvika padhuze nekugadzirisa yako yega kernel ...
Uye zvakare, ini ndinobvumirana naAdrianArroyo Calle kuti yakanyanyisa kugadzirwa, ndakamboiverenga imwe nguva uye unopedzisira wasiya pane rechitanhatu peji, ivo zvakare vanokuudza kuti ushandise ndedzipi shanduro dzemapakeji nekuti zvikasadaro iwo mirairo haishande (izvo inoratidza kushomeka kwekuchinja, mumaonero angu). Ini ndinofunga zvirinani kuve nechimwe chinhu chewako zano, nyora mapakeji iwe aunoda, kunyangwe kuronga mamwe, nyora linux kernel uye murunyararo.
Kwaziso!
uuuoooohh !! Handina kumbobvira ndatora chinyorwa zvakanyanya sezvakaita uyu.
Ndokumbirawo uenderere mberi
Ini handizive chakashata:
kukanganisa: hapana multiboot musoro wakawanikwa.
kukanganisa kwaunoda kutanga kurongedza kernel
Kana paine kunyaradzwa, ini ndakakanganisa zvakafanana. Edza kushandisa masosi ari muGitHub, iko iko kukanganisa kwatogadziriswa. Zvisinei, ini ndinofunga kana iwe ukachinja grub.cfg mutsara kubva ku "multiboot /next/START.ELF" kuenda ku "kernel /next/START.ELF" inogona kushanda. Ini handizive chaizvo.
Chekutanga pane zvese, yakanaka yekupinda 🙂
Ndiri kuita dambudziko rakafanana kurodha kernel kubva grub. Kunyangwe uchishandisa masosi eGitHub kana kuchinja multiboot yekernel ...
kukanganisa: hapana multiboot musoro wakawanikwa.
kukanganisa: hapana kernel yakatakurwa
Iwe uri kushandisa clang seye compiler? Chinja iyo gcc
Wakarangarira here kushandisa chinongedzo script? Izvo zvinodikanwa kuti iyo inobatanidza (ld mune yedu kesi) izive kuti mune iyo faira iri kuenda kuisa chinhu chimwe nechimwe. Mune ino kesi iyo multiboot musoro unofanirwa kuve uri pakutanga.
Uri kushandisa iyo CMake system? Kana iwe ukaishandisa ini ndinofunga haina kutadza.
Kana ikasashanda kwauri, ndichaedza kutsvaga imwe mhinduro.
[+100]
Zvakangonaka !!!
Kwakanakisa chaizvo 🙂
Ndinobvisa ngowani yangu. Inonakidza post. Makorokoto.
wow!
Zvingave zvakanaka kana iwe ukavhura maficha akagadzirwa muHTML5 uye Javascript pasina kushandisa browser, zvinoita here?
Ndiri kutaura nezvavo kunge vakaita sema native application.
Saka zvingave zviri nyore kuronga yeiyi inoshanda system 😀
Mune ino kesi ini handisi kuzozviita nekuti zvinotora rimwe basa rakawanda kuseri kwaro asi kune anoshanda system inonzi "is" iyo inoita zvaunotaura. Muchokwadi tambo yekuraira ndeyeJavaScript uye windows anotorwa achishandisa Canvas JavaScript mabasa. Nintendo mainjiniya akazviita uye ikozvino yakavhurika sosi.
http://code.google.com/p/es-operating-system/
Valla, ndatenda neruzivo 😀
Ndichatarisa
Ani naani anogona kugadzira OS yake anogona kufa murunyararo, sezvo danho rehungwaru raanofanira kuwana naro; Zvinoita kuti aende kudenga kana kugehena.
Chikamu chekutumira.
Parizvino hapana anozivikanwa kuti akagadzira chete chinhu chinganzi chakadzikama chekushandisa chakagadzirwa kubva pakutanga, kunyangwe Linux Torvalds sekutaura kwako pakutanga, sezvo izvi zvakatanga kubva kuUnix zvinyorwa uye zvese zvimwe zvakanyorwa zvakafanana kune zvimwe kupfuura munhu mumwe chete, hupenyu hupfupi uye kutanga kubva pakutanga hakufungiki kune chero munhu, kunyangwe izvo zvinopesana zvichidikanwa, zvinoratidzwa mumhosho dzakawanda dzakaitwa mukuteedzera nekunamatira neLinux Torvalds
Iwo maix unix akavharwa, iko kushandiswa kweminix ... chinova chimwe chinhu.
uye avo vakaita QDOS chii?
zvaive zvakavakirwa pane chimwe chinhu?
Kubva pane zvandinoona, ndiani asina yavo yekushandisa system ndeyekuti ivo havadi, hahahaha.
Zvino zvakanyanya, zvinonakidza kwazvo! Zvakawanda zvinopfuura ruzivo rwangu rwakaganhurirwa, asi ini ndichaverenga zvimwe zvikamu zvezvikamu izvi nekutarisira.
Kutenda nekutumira!
Makandisiya ndine O-O kumeso ... ndisina chinangwa chekuzvidza mipiro yemunhu, ndiyo imwe ye "pro" yakanyanya yandakaona munguva pfupi yapfuura. Zvido.
Chinyorwa chakanaka kwazvo, Adrián. Ndapota rambai…
Uri kutamba musi waApril Fools Day?, Usave wakaipa "Kufananidza Linus Torvalds: Gadzira yako yega sisitimu yekushandisa kubva pakutanga." Handifunge kuti zvakaoma kune avo vari kutsvaga basa mune imwe nzvimbo yehunyanzvi kana kuyunivhesiti; asi kwandiri ini ndiri mupfuri wekutanga (kune avo vanotidaidza kuti "Noob" asi ini ndinozviona sendiri Newbie neimwe simbe) zvinoita sekusatsika pasi. Zvisinei hazvo NYAYA IYI INOSIKIRA ZVIZHINJI ZVAKAFANANA UYE PASINA KUKOSHESA ADMIRATION UYE KUREMEKEDZA MUDZIDZISI WAYO, KURUMBIDZIRA; Chinhu chekutanga chandichaita kuyedza kunzwisisa kanenge zvishoma izvi zvakakosha zvinhu.
NDATENDA Adrian Arroyo Calle, basa rakanaka uye kuendesa kwakanaka kweruzivo.
LEL Yakanaka posvo, chengeta yakadaro.
Yakanaka sei post, izvi ndizvo zvandasuwa nezvazvo desde linux. Wonderful.
Nzvimbo huru, maita basa kwazvo.
Ini handina kunzwisisa izvo link.ld faira rinoita, mumwe munhu anogona kunditsanangurira?
Iyo link.ld faira inotaurira iyo inobatanidza (mune ino kesi ld) uko chikamu chimwe nechimwe chekodhi chinofanira kunge chiri mune rinoguma faira. Isu tinotsanangudza zvakare nzvimbo yekupinda sezvo tisina sisitimu yekushandisa yatisingakwanise kushandisa main sechirongwa chakajairika, mune iyi nyaya tinosarudza yekutanga basa.
Yakakura yese yako post! Kumirira iyo 7! Ko kana ndisina chokwadi, semuenzaniso, dai ndaingoda chete kumhanyisa algorithm, ndisina OS, ndinoziva sei izvo zvandinogona kushandisa uye izvo zvisiri C?
Kana iwe ukaishandisa seizvi, haungakwanise kushandisa chero chinhu kubva ku stdlib, zvinova izvo zvinoshandiswa nemunhu wese (hapana malloc, yemahara, printf, scanf, strcmp, nezvimwewo). Zvese zvinhu zvinofanirwa kuitwa zvakananga kubva mundangariro kana ASM. Pamwe muchitsauko chepamusoro ini ndicharatidza maitiro ekuisa raibhurari yeC yehurongwa hwekushandisa. Kana iwe ukashandisa C ++ haugone kushandisa zvinosiiwa uye nyowani uye bvisa vanoshanda (uyezve zvimwe).
ndofunga izvi inogona kukupa irinani zano rekuti ungazviita sei.
Mhoroi, angangoita makore mashanu apfuura ndakatevera bhuku rakafanana ndikagadzira microkernel iyo inotanga nenzira imwechete, ine zvimwe zvinhu zvekuvandudza, asi inogona kukufadza, inomhanya munzira yakachengetedzwa, inoita mabasa mazhinji uye inoita memoryization kuona, nguva pfupi yapfuura ndakashanda pairi disk mutyairi uye cd dhiraivha kuti iite inogoneka uye kwete kungomhanya pane live cd ... Kwaziso.
Anodiwa, ini ndine chikanganiso kana ndichiita kuraira:
gcc -o START.ELF kernel.o InoteveraKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
link.ld: 5 syntax kukanganisa
collect2: kukanganisa: ld yakadzosa 1 yekubuda mamiriro
link.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
Mutsetse 5 ini handioni iko kukanganisa, pane mumwe munhu zvakafanana?
Ndiri kushanda neakafanirwa debian wheezy mu virtualbox
wedzera iyo ";" pakupera kwe * (. multiboot_header)
Kwakanaka danho, ini zvechokwadi ndichatevera zvitsauko zveichi posvo, ndichifunga kudzidza zvakawanda kubva pazviri. Ndinokutendai zvikuru nekutora nguva yenyu kutidzidzisa. Tsananguro imwe chete mune izvi, zvinofanirwa kucherechedzwa kuti Linus Torvalds haasi iye mugadziri weanoshanda system, akagadzira iyo Kernel yeGNU / Linux system (iyo yakashandiswa mune imwe OS), iyo ichiri yakakodzera, asi zvakakosha Zvakakweretesa Richard Stallman yekugadzira mazhinji eOS.
Ndatenda zvikuru nekuisa uye ndinovimba unofunga maonero angu.
Ndanga ndichitenderedza nenyaya iyi kwekanguva, ndakazofarira pandakangoverenga musoro wenyaya. asi meseji inoramba ichiwana
kukanganisa: hapana multiboot musoro wakawanikwa.
kukanganisa kwaunoda kutanga kurongedza kernel
Ini ndaisa zvandinotora kune repo pane github https://github.com/rkmax/GenyOS
Zvimwe chete izvi zvinoitika kwandiri.Wakawana mhinduro here?
mubvunzo wandakatanga kuunza syntax uye iyo menyuentry mutsetse inondiudza commandnot ndawana ndiani angandiudza nei
izvi ndozvandinoita
KABHUKU @ KABHUKU-pc: ~ / blackroot $ menyuentry «NextDivel» {
menyuentry: raira haina kuwanikwa
Izvo zvemukati izvi hazvifanirwe kuiswa mumutsetse wekuraira, asi mufaira raunogadzira unonzi grub.cfg
Yakanaka chinyorwa, maita basa!
Zvinoshamisa… !! zvakangofanana neiyo chinongedzo chisipo.
Ini ndinoda yako Emulating LInus Torvalds tutorials, asi pane nhanho imwe yandisinganzwisise, inotevera:
Iye zvino isu tinoteedzera START.ELF ku / inotevera mukati medu folda iyo inoteedzera mudzi wesisitimu yedu yekushandisa. Isu tinoenda kumudzi dhairekitori reedu nyowani yekushandisa sisitimu pamwe neconsole uye tiongorore kuti kune mafaera maviri: imwe / boot / grub / grub.cfg uye imwe / / inotevera / START.ELF.
Isu tinoenda kune yekumusoro dhairekitori uye tinodaidza iyo ISO yekushandisa yekushandisa ine GRUB inonzi grub-mkrescue
Mumwe munhu anogona kunditsanangurira: p
Kungoita kuti ugadzire ISO shoma iyo GRUB inogona kurodha isu tinoteedzera iyo kernel ku (iyo / yeiyo ISO, chero dhairekodhi) /next/START.ELF uye iyo GRUB yekumisikidza faira kune (iyo / yeiyo ISO, chero dura) / boot / grub / grub.cfg. Kana izvo zvangoitwa isu hatisati taisa GRUB pane iyo ISO uye paine chishandiso chinogadzira iyo ISO kubva kufolda uye nekuisa GRUB inonzi grub-mkrescue. Ipapo isu taizopedzisira tave ne bootable ISO iyo ine GRUB yakaiswa, iyo inogona kuverenga iyo yekugadziriswa kuti gare gare iite START.ELF nemazvo. Ini handizive kana ndatsanangura ini, asi zvatinoita rudzi rwemanyepo faira system yatinogadzira iyo ISO.
Hukuru
Zvakanaka, tarisa chaizvo sisitimu nyowani kwete zvakanyanya asi kana uchivandudza linux semuenzaniso kugadzira linux exonucleus ine server chinhu chinoshanda se micronucleus kana zvichidikanwa, ndiko kuti, exo chimiro chine micronucleus maitiro angave ari makuru uye linux.
Chimwe chinhu ndechekuti ini handisi nyanzvi yekuronga, mashoma cheesy c ++ uye imwe java, zvingave zvakakwana kwandiri kupa iyo linux kernel chirongwa module, kuiburitsa, kuishandura nezvimwe.
Pasina kupokana ndinotofanira kuita pazororo.
Iyi yakanaka uye mune chirongwa chipi chaunogadzira uye kodhi iyo
ndokumbira undipe mhinduro iyoyo
Kana uchinyora kubva kune yako git ini ndinowana:
[jmponce @ chirongo kuvaka] $ cmake ..
- Kugadzira NextRoot dhairekitori
- Kugadzira ISO script
gadzira DESTDIR = inotevera gadza
./iso.sh
- Yakawanikwa Doxygen: / usr / bin / doxygen (yakawanikwa vhezheni "1.8.9")
- Kugadzira zvaitwa
- Kugadzira zvaitwa
- Vaka mafaera akanyorwa ku: / kumba / jmponce / inotevera-divel / kuvaka
[jmponce @ chirongo kuvaka] $ make
Kuongorora kutsamira kwechinangwa START.ELF
[7%] Kuvaka ASM-ATT chinhu src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Kuvaka CXX chinhu src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Kubatanidza CXX inoitwa START.ELF
/ usr / bin / ld: Incompatible /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a yakasvetuka ichitsvaga -lgcc
/ usr / bin / ld: haigone kuwana -lgcc
collect2: kukanganisa: ld yakadzosa yekubuda chinzvimbo 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Yakundikana mirairo yechinangwa 'src / START.ELF'
gadzira [2]: *** [src / START.ELF] Kukanganisa 1
CMakeFiles / Makefile2: 106: Yakundikana mirairidzo yechinangwa 'src / CMakeFiles / START.ELF.dir / all'
gadzira [1]: *** [src / CMakeFiles / START.ELF.dir / zvese] Kukanganisa 2
Makefile: 117: Kukundikana mumirairo yezvinangwa 'zvese'
gadzira: *** [zvese] Kukanganisa 2
Iko kukanganisa kunoratidzika kunge kuri kuti hakugone kuwana llibgcc sezvo iwe uine iyo 64-bit vhezheni uye parizvino iyo nzira yekusanganisa inomanikidzwa kushandisa makumi matatu nemaviri. Iwe unofanirwa kuisa inoenderana pakiti pane yako distro kana zvirinani, shandisa 32-bit system.
Ndine makumi matatu nematatu uye ini ndinowana iko kukanganisa kumwe chete, iwe unoreva here iyo yekushandisa sisitimu kana dhizaini? yangu 32 Bit, asi ndiri kushandisa 64 bit Ubuntu, usabvunze, matambudziko emari, neizvozvo ini ndinozvitaura zvese.
Yakanaka hurukuro, yakamirira yakakura chiyero. Mufaro
Zvikuru ndinotarisira zvimwe
Mhoroi, ini ndiri mumiriri mudiki anoda kuumba anoshanda masisitimu anotsigira ese mapuratifomu uye mapuratifomu kuitira kuti vanogadzira havafanirwe kunge vaine michina ine simba kana kunyorera kana zvirongwa papc.
ndosaka ndichifarira iyi posvo asi pandinodhawunirodha git yako kana kuyedza kuigadzira, zvese zvinofamba zvakanaka kudzamara ndaita iwo murairo ./iso.sh kana grub-mkrescue -o nextdivel.iso nextroot iwe unowana iko kukanganisa
"Grub-mkrescue: yambiro: yako xorriso haitsigire" -grub2-boot-info ". Zvimwe zvinhu zvakaremara. Shandisa xorriso 1.2.9 kana gare gare ..
grub-mkrescue: yambiro: xorriso yako haitsigire "-grub2-boot-info". Yako kernel mufananidzo wakanyanya kukura. Disk bhutsu yakaremara. Shandisa xorriso 1.2.9 kana gare gare .. »
Ini handina kana zano sezvo ini ndichiziva zvakawanda nezve mafomu uye mawebhu asi ini hapana chandinoziva nezve grub
Ungangoda kugadzirisa iyo xorriso chirongwa pane yako distro. Ndeipi distro uye vhezheni yaunoshandisa?
Ini ndinoshandisa xubuntu 14.04lts uye kuyedza kumhanyisa xorriso asi iyo shell inondiudza kuti haigoni kuiwana uye ndinowana apt-tora kuisa xorriso kunyangwe ndaitarisira nemoyo wese kumwe kupindura nekuti ini ndaive neruzivo rwakashata rwekuisa zvinhu zvandisingazive mu linux hehe . Ini ndichagadzirisa izvozvi uye ndikuudze zvakaitika
Wobva waisa xorriso kubva kune software centre kana kungoita kubva kune iyo terminal ita "sudo apt-tora kuisa xorriso"
Ini ndatoita zvese zvawakandiudza uye nezvose zviri zviviri git neyangu ndinowana iyi xorriso 1.3.2: RockRidge fileystem manipulator, libburnia project.
Dhiraivha yazvino: -outdev 'stdio: nextdivel.iso'
Midhiya yazvino: stdio faira, inonyorwa
Chimiro cheMedia: haina chinhu
Mhedzisiro yeMedia: 0 zvikamu, 0 data block, 0 data, 1901m mahara
Yakawedzerwa kune ISO chifananidzo: dhairekitori '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 mafaera akawedzerwa mumasekondi imwe
xorriso: KUKUNDIKANA: Haikwanise kuona hunhu hwechinyorwa faira '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Hakuna rakadai faira kana dhairekitori.
xorriso: UPDATE: 546 mafaera akawedzerwa mumasekondi imwe
xorriso: kubvisa: -abort_on 'KUKUNDIKANA' kwakasangana 'KUKUNDIKANA'
uye corduroy ini handinzwisise chimiro changu ndi /nextroot/boot/grub/grub.cfg uye nextroot / inotevera / START.ELF
Ndatenda, ndakagadzirira kuenda kumberi, shamwari yakandibatsira ikandiudza zvandatadza yaive kurongeka kwedhairekitori, saka ndakagadzirisa uye ndizvozvo
Ndiregerere, unogona kundiudza maitiro awaita sezvo ini ndichiwana iko kukanganisa hapana kubhoot: hapana rakadai faira kana dhairekitori
hapana mudziyo unovhurika.
Mufaro! Ini ndanga ndichikukumbira iwe nyasha kana iwe ukakwanisa kunditumira email neizvo iwe zvaunotsanangura pano, ndanga ndavhiringidzika uye ini ndoda kuenzanisa izvo zvandinazvo nezvaunotsanangura, pamwe izvo zvisiri pachena kwandiri ndezvekuti kugadzirwa kwe grub. cfg inoitwa mune terminal gcc kana kupi chaizvo? maita basa shamwari!
Iwe unogadzira iyo faira grub.cfg nechero zvinyorwa edhita uye iwe unofanirwa kuichengeta muPROJECT_FOLDER / boot / grub / grub.cfg
Mhoro Adrian, kutanga kwese ndinokukwazisai uye ndinokutendai nemupiro wenyu.
Iwe unoziva ndiri kuita izvi kuita uye ndakatanga kuzviisa pamwechete ndichitevera kudzidzisa kwako, zvisinei mushure mekutanga ndakawana iko kukanganisa kwekutanga
$ se -o kernel.o -c kernel.asm
bash: as: raira haina kuwanikwa ...
Mimwe mirairo yakafanana ndeiyi:
'sa'
'ac'
Ndiri kushanda pa fedora makumi maviri, uye handisi kuwana mhinduro mune izvi, ndingafarire kutungamira kwako kuti ndinofanira kuchinja chimwe chinhu mu gcc kana gasi
Pamberi kuvonga
Iwe unofanirwa kuisa GAS kuti ndikwanise kuona iyo yekukanganisa kodhi. Ini handina Fedora padhuze asi mune fungidziro kana iwe ukaita yum kuisa gcc-c ++ iwe unozomisikidza iyo yese GCC suite uye GNU Sezvinowanzo kuuya nayo.
Ndinewe, ndinoziva chimwe chinhu nezveC ++, C # (kunyangwe iyi yekupedzisira isinganyanyobatsira munyaya iyi) chinhu chakaipa ndechekuti ini ndichiri kushaya ruzivo, handimbobata mutauro weC, bhuku rako rakanaka, Handina zvakawanda zvekutaura kana ndine nguva yandinoona. Ndatenda.
Ndinokutendai zvikuru nerubatsiro rwakakura….
Ini ndinoda linux ndiyo dunhu rakanakisa riripo, chokwadi chema windows angu marara kune a ini ndinoziva kuti iye mugadziri we linux ndiye muumbi we windows
Mhoroi ini ndinowana Kanganiso mu grub anodaro
kukanganisa: file /next/START.ELF Haina kuwanikwa
kukanganisa: Unofanirwa kutanga watakura kernel
Ungandibatsira here uye ndokubata googog asi handisi kuwana
Ndokumbirawo, ndingaite sei kuti iratidze meseji HERE NYIKA? Ini ndiri wekutanga uye ini handisati ndaziva zvakakwana
Izvi zvinotevera zvinoitika kwandiri:
gcc -o START.ELF kernel.o InoteveraKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
/ usr / bin / ld: kernel.o: kutamisazve R_X86_64_32 kutarisana nechiratidzo `stack 'haigone kushandiswa pakugadzira chinhu chePIE; dzokorora ne -fPIE
/ usr / bin / ld: yekupedzisira chinongedzo chakundikana: isingamiriri chikamu pane zvinobuda
collect2: kukanganisa: ld yakadzosa 1 yekubuda mamiriro