Eerstens moet u opmerk dat dit my eerste artikel is en dat ek hoop dat u almal daarvan hou.
In hierdie reeks gaan ons navolg Linus Torvalds, gaan ons ons bedryfstelsel skep vanaf 0. In hierdie eerste episode gaan ons die boot sien en ons sal 'n teks uit ons kern op die skerm plaas.
In my geval word die bedryfstelsel genoem Volgende Divel. Die eerste besluit wat ons moet neem sodra ons die bedryfstelsel oorweeg, is wat die selflaaiprogram sal wees?
Hier is daar verskeie variante, en ons kan selfs self een skep; in hierdie handleiding gaan ek egter gebruik GRUB, want die meeste weet min of meer iets van hom. Ons skep 'n vouer wat die wortel van ons bedryfstelsel is en daar maak ons die / boot / grub-vouer
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Daar skep ons die grub.cfg-lêer soos volg:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
In hierdie lêer het ons gesien hoe GRUB sal ons kern in hierdie geval in /next/START.ELF laai. Nou moet ons ons kern skep.
Hiervoor het ons die GCC y GAS (die samesteller van die projek GNU, kom gewoonlik saam met die gcc). Ons gaan dus die kern skep.
Ons maak eers 'n lêer met die naam kernel.asm. Hierdie lêer bevat die beginpunt van ons kern en sal ook die multiboot definieer ('n kenmerk van sommige selflaaiprogramme soos GRUB). Die inhoud van kernel.asm sal wees:
.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
Alles wat met multiboot verband hou, is bloot om die spesifikasie niks anders te volg nie. Alles sal begin, dit sal multiboot_entry noem, ons sal die multibootkopkop in die eerste 4k gedefinieer het en ons sal dit (met movl) sit.
Later noem ons NextKernel_Main wat ons kern C-funksie is. In die lus stop ons om die rekenaar te stop. Dit kom saam met:
as -o kernel.o -c kernel.asm
Nou gaan ons programmering in C betree. U sal dink dat alles nou 'n stuk koek is, ons sit 'n printf en hoof en dit is dit, ons het dit gedoen.
Wel nee, sedertdien printf y hoof dit is funksies wat deur die bedryfstelsel gedefinieer word, maar ons skep dit! Ons kan slegs die funksies gebruik wat ons self definieer.
In latere hoofstukke sal ek praat oor hoe om ons eie C-biblioteek (glibc, bionic, newlibc) maar van tyd tot tyd te plaas. Ons het bespreek dat ons teks op die skerm wil plaas, en ons sal sien hoe ons dit doen.
Daar is twee opsies, een is om die BIOS en 'n ander is om skermgeheue direk te bestuur. Ons gaan laasgenoemde doen, want dit is duideliker uit C en dit sal ons ook toelaat om dit te doen wanneer ons die beskermde modus betree.
Ons skep 'n lêer genaamd NextKernel_Main.c met die volgende inhoud:
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;
}
Hiermee manipuleer ons die geheue direk VGA en karakter vir karakter skryf ons dit. Ons stel saam deur die stdlib uit te skakel:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
As u tot hiertoe gekom het, wil u nou u splinternuwe bedryfstelsel probeer, maar ons is nog nie klaar nie. Ons het 'n klein lêer nodig wat die samesteller vertel waar in die lêer elke afdeling moet verlaat. Dit word gedoen met 'n skakelskrip. Ons skep 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 = .;
}
Hiermee definieer ons die posisie van elke afdeling en die ingangspunt, begin, wat ons in kernel.asm omskryf het. Nou kan ons al hierdie konkoksie verenig:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Nou kopieer ons START.ELF na / volgende in ons gids wat die wortel van ons bedryfstelsel simuleer. Ons gaan met die konsole na die hoofmap van ons nuwe bedryfstelsel en verifieer dat daar twee lêers is: een /boot/grub/grub.cfg en 'n ander /next/START.ELF.
Ons gaan na die boonste gids en noem 'n ISO-skeppingsprogram met GRUB genaamd grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Sodra ons dit gedoen het, sal ons 'n ISO. Hierdie ISO kan op rekenaars oopgemaak word x86 (64 bisse ook) en virtuele masjiene. Om dit te toets, gaan ek dit gebruik QEMU. Ons roep QEMU vanaf die opdraglyn:
qemu-system-i386 nextdivel.iso
Sal begin SeaBIOS en later sal ons hê GRUB. As alles later korrek is, sal ons ons frase sien.
U sal dink dat dit moeilik is, antwoord ek, ja, dit is.
Dit is moeilik om regtig 'n bedryfstelsel te skep en dat dit hier niks nuttig is nie. In toekomstige hoofstukke sal ons sien hoe om kleure op die skerm te hanteer, geheue te reserveer en indien moontlik, hoe om data vanaf die sleutelbord te kry.
As iemand nie alles hier wil kopieer nie, het ek 'n bewaarplek by GitHub (uitgebrei) met die bedryfstelsel Volgende Divel. As u wil saamstel Volgende Divel jy moet net git en cmake hê:
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
Ek moedig u aan om saam te werk aan NextDivel as u die tyd en begeerte het om 'n bedryfstelsel te skep. Miskien selfs beter as Linux ... die tyd sal leer.
85 kommentaar, los joune
:O
Torvalds het die Minix-bedryfstelsel (afgelei van UNIX) na Andrew S. Tanenbaum geneem en dit verbeter.
Tanenbaum het met Linus baklei, hulle het mekaar beledig. Tanenbaum sê dat die Microkernel die toekoms is (HURD, Minix nuwe kegel Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Dit was die beste boodskap wat ek tot dusver op hierdie blog gesien het. Ek wil reeds weet wat om nog te doen.
Wees beïndruk
Regtig indrukwekkend !!
FUUUUUUA!
Dit is die geekiest post wat ek nog ooit gesien het hehe. Baie geluk Adrián, 'n hoerartikel! hiper interessant !!! 🙂
Ek stem saam. Ek verbeel my hierdie situasie:
GNU / Linux Power User (met 'n gelukkige gesig):
"Ek weet al hoe om my Gentoo op te stel"
Nerd (minagtend): «pff, ek het my eie distro geskep ...»
Ja, ek kan my eie Linux-distro skep. In werklikheid ontwikkel ek 'n initramfs en 'n kern vir ingeboude Linux. Dit is nie dieselfde om 'n bedryfstelsel te skep as 'n Linux-distro nie. Die eerste is baie moeiliker, amper onmoontlik, die tweede kan, soos u gesê het, enigiets wees, selfs Ubuntu met die xD-logo verander. So ek sal dit so laat:
GNU / Linux Power User (met 'n gelukkige gesig)
- Ek weet al hoe om my Gentoo op te stel
Semi-nerd
- Pff, ek het 'n Linux van vooraf gevolg en ek het my eie distro gemaak
Nerd (met minagtende houding)
- pff, omdat ek 'n kern in assembler en in C geprogrammeer het
Groete!
Dit is vir my interessant, hangende die volgende hoofstukke.
Ek het hierdie handleiding 'n geruime tyd gelede gesien, dit is vir C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Dankie vir die skakel, ek sal daarna kyk.
Ek wil 'n bedryfstelsel hê wat 100% versoenbaar is met AMD-grafika: /
Windows
hahaha in Windows Catalyst het nie OpenGL-ondersteuning nie, hoewel ek in Linux nie al die grafiese krag kan gebruik nie, sal ek wag om te sien wat gebeur!
wag net vir klep om die mark uit te wis
Magies, perfek, uitstekende bydrae, dit lyk na 'n wonderlike reeks plasings 🙂
Buah Ek wil graag weet hoe om te programmeer om u te help, bloot as 'n manier om te oefen met die kennis wat u leer en om een te help. Vir nou laat ek u die leuse om aandag te vestig op die projek sodra u dit voltooi het "Gebruik NextDivel, porn lyk dieselfde (of beter).", U sal xD vee.
Mooooooolaaa !!!!
Baie goeie artikel, maar net nuuskierig waarom u nie die Linux From Scratch-projek gevolg het nie?
Groete
Wel, Linux van Scratch is goed, en u kan sien dat dit uwe is, maar dit is regtig baie meganies:
-Laai lettertipes af
-Lap hulle
-Saamstel
Installeer
-Volgend
Hier, alhoewel die resultaat uiteindelik slegter is, kan u wel sê dat u al die lêers hersien het.
Soos blyk uit my vorige opmerking, omdat dit nie dieselfde kompleksiteit het nie. Verder is Linux van nuuts af nie eintlik 'n stelsel van nuuts af nie, in teenstelling met die naam daarvan. Om 'n stelsel van nuuts af te skep, beteken dat u dit self moet programmeer, u eie kern skryf, nie die Linux-kern nie, indien moontlik selfs u eie bootloader in plaas van grub, lilo, syslinux, ens. Alhoewel 'n LFS nie 'n geringe prestasie is nie en nogal ingewikkeld is, kom dit nie eers naby die programmering van u eie kern nie ...
Daarbenewens stem ek saam met AdrianArroyo Calle dat dit te meganies is, ek het dit een of ander tyd gelees en u moet uiteindelik opgee op die sesde bladsy. Hulle vertel u ook om die weergawes van die pakkette te gebruik, want anders werk die instruksies nie (dit toon die gebrek aan buigsaamheid) , Na my mening ). Ek dink dit is beter om iets van u eie idee te hê, die pakkette saam te stel wat u wil hê, selfs 'n paar te programmeer, 'n Linux-kern op te stel en in vrede.
Groete!
uuuoooohh !! Ek het nog nooit so 'n pos gevang soos dié nie.
Gaan asseblief voort 😀
Ek weet nie wat verkeerd is nie:
fout: geen multiboot-opskrif gevind nie.
fout moet u eers die kern laai
As dit 'n troos is, het ek dieselfde fout gemaak. Probeer die bronne in GitHub gebruik, daar is die fout al opgelos. In elk geval, ek dink as u die lyn in grub.cfg verander van "multiboot /next/START.ELF" na "kernel /next/START.ELF", kan dit werk. Ek weet nie presies nie.
In die eerste plek 'n pragtige ingang 🙂
Ek het dieselfde probleem om die kern van die grub te laai. Selfs die gebruik van GitHub-bronne of die verandering van multiboot vir kern ...
fout: geen multiboot-opskrif gevind nie.
fout: geen gelaaide kern nie
Gebruik u clang as samesteller? Verander dit vir die gcc
Het u onthou dat u die koppelingskrip gebruik het? Dit is nodig dat die skakelaar (ld in ons geval) weet waar dit in die lêer gaan sit. In hierdie geval moet die multibootkop aan die begin wees.
Gebruik u die CMake-stelsel? As u dit gebruik, dink ek dit misluk nie.
As dit nie vir u werk nie, sal ek probeer om 'n ander oplossing te vind.
[+100]
Net wonderlik !!!
Dit is regtig cool 🙂
Ek haal my hoed af. Indrukwekkende berig. Baie geluk.
Sjoe!
Dit sal wonderlik wees as u toepassings in HTML5 en Javascript kan open sonder dat u 'n blaaier hoef te gebruik, is dit moontlik?
Ek praat daarvan dat dit soos inheemse toepassings is.
Dit sou dus maklik wees om hierdie bedryfstelsel te programmeer 😀
In hierdie geval gaan ek dit nie doen nie, want dit verg baie meer werk daaragter, maar daar is 'n bedryfstelsel genaamd 'is' wat doen wat u sê. In werklikheid is die opdraglyn JavaScript en vensters word geteken met behulp van JavaScript Canvas-funksies. Nintendo-ingenieurs het dit gedoen en nou is dit open source.
http://code.google.com/p/es-operating-system/
Valla, dankie vir die inligting 😀
Ek sal kyk
Wie sy eie bedryfstelsel kan maak, kan vreedsaam sterf, aangesien die intellektuele vlak wat hy daarmee moet bereik; Dit laat jou van die hemel of die hel afsien.
Stukkie plasing.
tot dusver weet niemand dat hy net iets gemaak het wat gesê kan word dat dit 'n ordentlike bedryfstelsel is wat van nuuts af gemaak is nie, selfs nie Linux Torvalds soos u aan die begin sê nie, aangesien dit vanuit Unix-bronne begin het en al die ander is geskryf in algemeen vir meer as een persoon, is die lewe baie kort en is dit van voor af ondenkbaar vir enigiemand, selfs al is die teenoorgestelde verlang, is dit bewysbaar in baie foute wat Linux Torvalds kopieer en plak.
Die unix-bronne is gesluit, die gebruik van minix ... wat iets anders is.
en diegene wat QDOS gemaak het, wat?
was gebaseer op iets?
Van wat ek sien, wie nie hul eie bedryfstelsel het nie, is omdat hulle nie wil nie, hahahaha.
Nou ernstig, baie interessant! Baie gaan my beperkte kennis oor programmering oor, maar ek sal die ander dele van hierdie reeks met verwagting lees.
Dankie vir die berig!
U het my met 'n O_O-gesig gelaat ... sonder om die bydraes van iemand te onderskat, is dit die mees "pro" wat ek die afgelope tyd gesien het. Groete.
Baie goeie artikel, Adrián. Gaan voort ...
Grap jy op Aprilgeksdag?, Moenie gemeen wees nie "Emulasie van Linus Torvalds: skep jou eie bedryfstelsel van nuuts af." Ek dink nie dit is moeilik vir diegene wat 'n loopbaan in 'n instituut vir tegnologie of universiteit volg nie; maar vir my is ek 'n beginnerboogskutter (daar is diegene wat ons "Noob" noem, maar ek beskou myself as 'n beginner as ietwat lui) wat klink soos om nie op die land te trap nie. Hoe dit ook al sy, HIERDIE ARTIKEL SKEP BAIE GEKURSHEID EN SONDER 'N TWYFELDE BEWONING EN RESPEK VIR SY REDAKTEUR, BAIE geluk; Die eerste ding wat ek sal doen, is om ten minste 'n bietjie van hierdie waardevolle materiaal te probeer verstaan.
DANKIE Adrian Arroyo Calle, uitstekende werk en edele kennislewering.
LEL Uitstekende pos, hou so aan.
Wat 'n wonderlike boodskap, dit is wat ek van Linux misgeloop het. Wonderlik.
Goeie boodskap, baie dankie.
Ek het nie verstaan wat die link.ld-lêer doen nie, kan iemand my dit verduidelik?
Die link.ld-lêer vertel die linker (in hierdie geval ld) in watter posisie in die resulterende lêer elke deel van die kode moet wees. Ons definieer ook die ingangspunt, aangesien ons nie 'n bedryfstelsel het nie, kan ons main nie as 'n normale program gebruik nie. In hierdie geval kies ons die beginfunksie.
Groot al jou boodskappe! Wag vir die 7! Wat as ek byvoorbeeld twyfel as ek net 'n algoritme sonder bedryfstelsel wil bestuur, hoe weet ek wat ek kan gebruik en wat nie C nie?
As u dit so gebruik, sou u niks van stdlib kon gebruik nie, wat feitlik is wat almal gebruik (geen malloc, gratis, printf, scanf, strcmp, ens.). Alles moet direk vanuit die geheue of ASM geïmplementeer word. Miskien sal ek u in 'n hoër hoofstuk wys hoe u 'n C-biblioteek vir die bedryfstelsel kan installeer. As u C ++ gebruik, kan u nie uitsonderings gebruik nie en die nuwe en delete-operateurs (en sekerlik meer).
ek dink hierdie dit kan u 'n beter idee gee van hoe u dit moet doen.
Hallo, ongeveer 5 jaar gelede het ek 'n soortgelyke publikasie gevolg en 'n mikrokernel ontwikkel wat op dieselfde manier begin, dit het 'n paar aspekte om te verbeter, maar dit kan u interesseer, dit werk in beskermde modus, voer multitasking uit en voer geheue-virtualisering uit, die afgelope tyd het ek daaraan gewerk skyfbestuurder en CD-skyf om dit installeerbaar te maak en nie net op lewendige CD te loop nie ... Groete.
Beste, ek het 'n fout tydens die uitvoering van die opdrag:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -vrystaande -lgcc
link.ld: 5 sintaksisfout
collect2: fout: ld het 1 uitgangstatus teruggegee
skakel.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
In reël 5 sien ek nie die fout nie, is iemand dieselfde?
Ek werk met 'n gevirtualiseerde debian wheezy in virtualbox
voeg die ";" by aan die einde van * (. multiboot_header)
Uitstekende inisiatief, ek sal beslis die hoofstukke van hierdie pos volg en van plan wees om baie daaruit te leer. Baie dankie dat u die tyd geneem het om ons te leer. 'N Enkele detail in hierdie verband, daar moet op gelet word dat Linus Torvalds nie die skepper van enige bedryfstelsel is nie; hy het die kern van die GNU / Linux-stelsel geskep (die een wat in 'n ander bedryfstelsel gebruik is), wat nog steeds die moeite werd is, maar dit is Dit is belangrik om Richard Stallman te erken dat hy die grootste deel van die bedryfstelsel geskep het.
Baie dankie vir die insette en ek hoop dat u my waarneming oorweeg.
Ek het al 'n rukkie geknoei met die onderwerp, en ek het belanggestel sodra ek die opskrif lees. maar die boodskap word steeds
fout: geen multiboot-opskrif gevind nie.
fout moet u eers die kern laai
Ek het wat ek neem na 'n repo op github gelaai https://github.com/rkmax/GenyOS
Dieselfde gebeur met my. Het u die oplossing gevind?
'n vraag wat ek begin het om die sintaksis in te voer, en die menu-invoerreël vertel my dat die kommando nie gevind kan word wat my kan vertel hoekom nie
dit is wat ek doen
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: opdrag nie gevind nie
Die inhoud van hierdie inhoud moet nie in die opdraglyn ingevoer word nie, maar in die lêer wat u skep genaamd grub.cfg
Uitstekende artikel, dankie!
Skouspelagtige…!! dit is net soos die skakel wat ontbreek.
Ek hou van u Emulating LInus Torvalds-tutoriale, maar daar is een stap wat ek nie verstaan nie, die volgende:
Nou kopieer ons START.ELF na / volgende in ons gids wat die wortel van ons bedryfstelsel simuleer. Ons gaan met die konsole na die hoofmap van ons nuwe bedryfstelsel en verifieer dat daar twee lêers is: een /boot/grub/grub.cfg en 'n ander /next/START.ELF.
Ons gaan na die boonste gids en noem 'n hulpmiddel vir die maak van ISO's met GRUB genaamd grub-mkrescue
Kan iemand my dit verduidelik: p
Om die minimum ISO te genereer wat GRUB kan laai, kopieer ons die kern na (die / van die ISO, enige map) / volgende / START.ELF en die GRUB-konfigurasielêer na (die / van die ISO, enige map) / boot /grub/grub.cfg. Sodra dit klaar is, het ons GRUB nog nie op die ISO geïnstalleer nie en daar is 'n hulpmiddel wat die ISO genereer vanuit 'n map en GRUB genaamd grub-mkrescue installeer. Dan sal ons uiteindelik 'n opstartbare ISO hê waarop GRUB geïnstalleer is, wat die konfigurasie kan lees om later START.ELF korrek uit te voer. Ek weet nie of ek myself verduidelik het nie, maar wat ons doen is 'n soort vals lêerstelsel waarmee ons 'n ISO genereer.
buenísimo
Wel, kyk regtig nie 'n nuwe stelsel nie, maar as u Linux verbeter, byvoorbeeld om 'n Linux-exonucleus te skep met 'n bedienerkomponent wat as 'n microkernel optree indien dit verlang word, dit wil sê 'n exo-struktuur met micronucleus-gedrag wat super en linux sou wees.
Die ander ding is dat ek nie 'n kenner van programmering is nie, maar net 'n paar kaasagtige c ++ en 'n bietjie Java, dit sou genoeg wees om die Linux kernel-program 'n module te gee, te verwyder, aan te pas, ens.
Sonder twyfel moet ek al op vakansie gaan.
Hierdie goeie een en in watter program ontwerp en kodeer dit dit?
gee my asseblief die antwoord
By die samestelling van u git kry ek:
[jmponce @ jar build] $ cmake ..
- Skep NextRoot-gids
- Genereer ISO-skrif
maak DESTDIR = volgende installasie
./iso.sh
- Gevind Doxygen: / usr / bin / doxygen (gevind weergawe "1.8.9")
- Konfigurasie gedoen
- Genereer klaar
- Bou-lêers is geskryf na: / home / jmponce / next-divel / build
[jmponce @ jar gebou] $ maak
Skandeer afhanklikhede van die teiken START.ELF
[7%] Bou ASM-ATT-voorwerp src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / NextShellLite.cpp.o
[21%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Screen.cpp.o
[28%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / NextKernel_Main.cpp.o
[35%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Panic.cpp.o
[42%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Timer.cpp.o
[50%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Memory.cpp.o
[57%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_GDT.cpp.o
[71%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_ISR.cpp.o
[78%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_String.cpp.o
[85%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_IRQ.cpp.o
[92%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_IDT.cpp.o
[100%] Bou CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Keyboard.cpp.o
Koppel CXX-uitvoerbare START.ELF
/ usr / bin / ld: Onversoenbaar /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a word oorgeslaan terwyl u op soek is na -lgcc
/ usr / bin / ld: kan nie -lgcc vind nie
collect2: fout: ld het uitgangstatus 1 terugbesorg
src / CMakeFiles / START.ELF.dir / build.make: 402: Mislukte instruksies vir teiken 'src / START.ELF'
maak [2]: *** [src / START.ELF] Fout 1
CMakeFiles / Makefile2: 106: mislukte instruksies vir teiken 'src / CMakeFiles / START.ELF.dir / all'
maak [1]: *** [src / CMakeFiles / START.ELF.dir / all] Fout 2
Makefile: 117: Mislukking in instruksies vir teiken 'almal'
maak: *** [alles] Fout 2
Die fout blyk te wees dat dit nie llibgcc kan vind nie, aangesien u die 64-bis-weergawe het en dat die build-stelsel tans gedwing word om 32-bit te gebruik. U moet 'n verenigingspakket op u distro of beter installeer, gebruik 'n 32-bis-stelsel.
Ek het 32 bisse en ek kry dieselfde fout, bedoel u die bedryfstelsel of die argitektuur? myne is 64 Bit, maar ek gebruik 32 bit Ubuntu, moenie vra nie, finansiële probleme, daarmee sê ek alles.
Uitstekende onderwerp, wag op groter omvang. Cheers
Groot ek hoop vir meer
Hallo, ek is 'n jong ambassadeur wat 'n bedryfstelsel wil skep wat alle programme en platforms ondersteun, sodat ontwikkelaars nie kragtige masjiene of toepassings of programme op 'n rekenaar hoef te hê nie.
dit is waarom ek in hierdie pos belangstel, maar as ek jou git aflaai of probeer om dit te skep, gaan alles goed totdat ek die opdrag uitvoer ./iso.sh of grub-mkrescue -o nextdivel.iso volgende root kry jy hierdie fout
"Grub-mkrescue: waarskuwing: u xorriso ondersteun nie" –grub2-boot-info ". Sommige funksies is gedeaktiveer. Gebruik xorriso 1.2.9 of later.
grub-mkrescue: waarskuwing: u xorriso ondersteun nie "–grub2-boot-info" nie. Jou kernbeeld is te groot. Skyflaai is gedeaktiveer. Gebruik xorriso 1.2.9 of later .. »
Ek het regtig geen idee nie, want ek weet baie van toepassings en webwerwe, maar ek weet niks van grub nie
U moet dalk die xorriso-program op u distro opgedateer het. Watter distro en weergawe gebruik u?
Ek gebruik xubuntu 14.04lts en probeer om xorriso uit te voer, maar die dop sê vir my dat dit nie kan vind nie en ek kry dit reg om xorriso te installeer, alhoewel ek regtig reaksie verwag het omdat ek 'n slegte ervaring gehad het om dinge te installeer wat ek nie in Linux ken nie hehe. Ek sal dit dadelik opdateer en vertel wat gebeur het
Installeer dan xorriso vanaf die sagteware sentrum of eenvoudig vanaf die terminale doen "sudo apt-get install xorriso"
Ek het al alles gedoen wat u my vertel het en albei met git en myne kry ek hierdie xorriso 1.3.2: RockRidge lêerstelsel manipuleerder, libburnia projek.
Bestuur stroom: -outdev 'stdio: nextdivel.iso'
Mediastroom: stdio-lêer, oorskryfbaar
Media status: is leeg
Media-opsomming: 0 sessies, 0 datablokke, 0 data, 1901m gratis
By ISO-beeld gevoeg: gids '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 lêers binne 1 sekondes bygevoeg
xorriso: FAILURE: Kan nie kenmerke van die bronlêer '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot' bepaal nie: Geen sodanige lêer of gids nie
xorriso: UPDATE: 546 lêers binne 1 sekondes bygevoeg
xorriso: aborteer: -abort_on 'FAILURE' het 'FAILURE' teëgekom
En corduroy ek verstaan nie my struktuur is /nextroot/boot/grub/grub.cfg en nextroot / next / START.ELF
Dankie, ek is gereed om voort te gaan, 'n vriend het my gehelp en my vertel wat ek verkeerd gedoen het, was die organisasie van die gids, dus het ek dit reggemaak, en dit is dit
Verskoon my, kan u my vertel watter prosedure u uitgevoer het, aangesien ek die fout kry om niks te begin nie: geen so lêer of gids nie
geen selflaaibare toestel nie.
Cheers! Ek sou u die guns vra of u vir my 'n e-pos kon stuur met wat u hier verduidelik, ek het 'n bietjie verward geraak en ek moet vergelyk wat ek het met wat u verduidelik, miskien is dit vir my nie duidelik of die skepping van die grub nie. cfg word in die terminale gcc gedoen of waar presies? baie dankie vriendin!
U skep die lêer grub.cfg met enige teksredigeerder en u moet dit stoor in PROJECT_FOLDER / boot / grub / grub.cfg
Hallo Adrian, wens u eerstens geluk en dankie vir u bydrae.
U weet dat ek dit vir 'n oefening doen en ek het dit begin saamstel na u tutoring, maar na die aanvang het ek die eerste fout gevind
$ as -o kern.o -c kernel.asm
bash: as: opdrag nie gevind nie ...
Soortgelyke opdragte is:
'sa'
'ac'
Ek werk aan Fedora 20, en ek kan nie 'n oplossing in hierdie verband vind nie. Ek sal u leiding waardeer of ek iets in gcc of gas moet verander.
vooruit dankie
U moet GAS installeer sodat ek die foutkode kan sien. Ek het nie Fedora byderhand nie, maar as u gcc-c ++ installeer, sal u die hele GCC-suite installeer en dit kom gewoonlik met GNU As.
Ek is by jou, ek weet iets van C ++, C # (alhoewel hierdie laaste een in hierdie saak nie veel gebruik nie), die slegte ding is dat ek nog steeds nie ervaring het nie, ek hanteer nooit C-taal nie, jou publikasie is wonderlik, ek het nie veel te sê nie as ek tyd het sien ek. Dankie.
Baie dankie vir groot hulp ....
Ek hou van Linux, dit is die beste distrik wat daar is, die waarheid vir my vensters is vullis vir 'n dat ek weet dat die skepper van Linux die skepper van windows is.
Hallo ek kry 'n fout in grub sê
fout: lêer /next/START.ELF Nie gevind nie
fout: u moet die kern eers laai
Kan u my help en google, maar ek kry dit nie
Hoe kan ek die boodskap HELLO WORLD laat sien? Ek is 'n beginner en weet nog nie genoeg nie
Die volgende gebeur met my:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -vrystaande -lgcc
/ usr / bin / ld: kernel.o: hervestiging R_X86_64_32 teen die simbool `stack 'kan nie gebruik word as u 'n PIE-voorwerp maak nie; hersaamstel met -fPIE
/ usr / bin / ld: finale skakel het misluk: nie-verteenwoordigbare gedeelte oor uitvoer
collect2: fout: ld het 1 uitgangstatus teruggegee