Para së gjithash, komentoni se ky është artikulli im i parë dhe që ju uroj të gjithë ju pëlqen.
Në këtë seri ne do të imitojmë Linus Torvalds, ne do të krijojmë sistemin tonë operativ nga 0. Në këtë episod të parë do të shohim boot-in dhe do të vendosim një tekst në ekran nga kerneli ynë.
Në rastin tim thirret sistemi operativ NextDivel. Vendimi i parë që duhet të marrim sa më shpejt që të shqyrtojmë sistemin operativ është cili do të jetë bootloader?
Këtu ka variante të shumta, dhe ne madje mund të krijojmë një vetë; megjithatë në këtë udhëzues do të përdor GRUB, sepse shumica dinë pak a shumë diçka për të. Ne krijojmë një dosje që do të jetë rrënja e sistemit tonë operativ dhe aty krijojmë dosjen / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Aty krijojmë skedarin grub.cfg si më poshtë:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Në këtë skedar kemi parë se si GRUB do të ngarkojë bërthamën tonë, në këtë rast, në /next/START.ELF. Tani ne duhet të krijojmë bërthamën tonë.
Për këtë do të na duhet GCC y GAS (montuesi i projektit GNU, zakonisht vjen me gcc). Kështu që ne do të krijojmë bërthamën.
Së pari bëjmë një skedar të quajtur kernel.asm. Kjo skedar do të përmbajë pikën fillestare të kernelit tonë dhe gjithashtu do të përcaktojë multiboot (një tipar i disa bootloaders si p.sh. GRUB) Përmbajtja e kernel.asm do të jetë:
.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
Gjithçka që lidhet me multiboot është thjesht të ndjekësh specifikimet asgjë më shumë. Gjithçka do të fillojë në fillim, do të thërrasë multiboot_entry, ne do të kemi përcaktuar kokën multiboot në 4k-në e parë dhe do ta vendosim atë (me movl).
Më vonë ne e quajmë NextKernel_Main që është funksioni ynë i kernelit C. Në lak, ne ndalet për të ndaluar kompjuterin. Kjo përpilohet me:
as -o kernel.o -c kernel.asm
Tani do të hyjmë në programim në C. Do të mendoni se tani gjithçka është një copë tortë, ne vendosim një printf en kryesor dhe kjo është e gjitha, ne e kemi bërë atë.
Epo jo, pasi printf y kryesor Këto janë funksione që përcaktohen nga sistemi operativ, por ne po i krijojmë ato! Ne mund të përdorim vetëm funksionet që i përcaktojmë vetë.
Në kapitujt e mëvonshëm do të flas se si të vendosim bibliotekën tonë C (glibc, bionic, newlibc) por kohë pas kohe. Ne kemi biseduar që duam të vendosim tekst në ekran, mirë do të shohim se si ta bëjmë atë.
Ka dy mundësi, njëra është të telefononi BIOS dhe një tjetër është menaxhimi i kujtesës në ekran direkt. Ne do të bëjmë këtë të fundit sepse është më i qartë nga C dhe gjithashtu do të na lejojë ta bëjmë kur të hyjmë në modalitetin e mbrojtur.
Ne krijojmë një skedar të quajtur NextKernel_Main.c me përmbajtjen vijuese:
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;
}
Me këtë manipulojmë drejtpërdrejt me kujtesën VGA dhe karakter për karakter po e shkruajmë. Ne përpilojmë duke çaktivizuar stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Nëse e keni arritur deri më tani, do të dëshironi të provoni sistemin tuaj të ri operativ tani, por ne nuk kemi mbaruar ende. Ne kemi nevojë për një skedar të vogël që i tregon përpiluesit se ku në skedar të lërë secilin seksion. Kjo është bërë me një skenar lidhës. Ne krijojmë 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 = .;
}
Me këtë ne përcaktojmë pozicionin e secilit seksion dhe pikën e hyrjes, fillimin, që kemi përcaktuar në kernel.asm. Tani mund ta bashkojmë të gjithë këtë shpikje:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Tani ne kopjojmë START.ELF tek / tjetri brenda dosjes tonë që simulon rrënjën e sistemit tonë operativ. Ne shkojmë në dosjen rrënjë të sistemit tonë të ri operativ me tastierë dhe verifikojmë që ekzistojnë dy skedarë: një /boot/grub/grub.cfg dhe një tjetër /next/START.ELF.
Ne shkojmë në direktorinë e sipërme dhe thërrasim një vegël të krijimit ISO me GRUB të thirrur grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Pasi ta kemi bërë këtë do të kemi një ISO. Ky ISO mund të hapet në kompjuter x86 (64 bit gjithashtu) dhe makinat virtuale. Për ta provuar, do të përdor QEMU. Ne e quajmë QEMU nga rreshti i komandës:
qemu-system-i386 nextdivel.iso
Do të fillojë DetiBIOS dhe më vonë do të kemi GRUB. Më vonë nëse gjithçka është e saktë do të shohim frazën tonë.
Ju do të mendoni se kjo është e vështirë, unë ju përgjigjem, po është.
Realisht krijimi i një sistemi operativ është i vështirë dhe se ky këtu nuk bën ndonjë gjë të dobishme. Në kapitujt e ardhshëm do të shohim se si të trajtojmë ngjyrat në ekran, të rezervojmë kujtesën dhe nëse mundem, si të marr të dhëna nga tastiera.
Nëse dikush nuk dëshiron të kopjojë gjithçka këtu, unë kam një depo në GitHub (më i përpunuar) me sistemin operativ NextDivel. Nëse dëshironi të përpiloni NextDivel thjesht duhet të keni git dhe 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
Unë ju inkurajoj të bashkëpunoni në NextDivel nëse keni kohë dhe dëshirë për të krijuar një sistem operativ. Ndoshta edhe më superior se Linux ... koha do ta tregojë.
:O
Torvalds e çoi sistemin operativ Minix (rrjedh nga UNIX) te Andrew S. Tanenbaum dhe e përmirësoi atë.
Tanenbaum ka pasur një luftë me Linus, ata fyen njëri-tjetrin. Tanenbaum thotë se Microkernel është e ardhmja (HURD, Minix kon i ri Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Ky ka qenë postimi më i mirë që kam parë deri më tani në këtë blog. Unë tashmë dua të di se çfarë tjetër të bëj.
Bëni përshtypje
Me të vërtetë mbresëlënëse !!
FUUUUUUA!
Postshtë postimi më i mirë që kam parë ndonjëherë. Urime Adrián, një artikull lavire! hiper interesante !!! 🙂
Pajtohem Unë e imagjinoj këtë situatë:
Përdorues i GNU / Linux Power (me një fytyrë të lumtur):
"Unë tashmë di si të përpiloj Gentoo tim"
Nerd (me përbuzje): «pff, unë kam krijuar distro tim ...»
Po, unë mund të krijoj distro tim linux. Në fakt në të po zhvilloj një initramf dhe një bërthamë për linux-in e ngulitur. Nuk është e njëjta gjë për të krijuar një sistem operativ sesa një distro linux. E para është shumë më e vështirë, pothuajse e pamundur, e dyta, siç keni thënë, mund të jetë gjithçka, madje edhe Ubuntu me logon xD të ndryshuar. Kështu që do ta lija kështu:
Përdorues i Fuqisë GNU / Linux (me një fytyrë të lumtur)
- Unë tashmë di si ta përpiloj Gentoo tim
Gjysmë-Nerd
- Pff, unë kam ndjekur një linux nga e para dhe kam bërë distro-n time
Nerd (me qëndrim përbuzës)
- pff, sepse kam programuar një bërthamë në montues dhe në C
Përshëndetje!
Kjo është interesante për mua, në pritje të kapitujve të mëposhtëm.
E pashë këtë udhëzues disa kohë më parë, është për C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Faleminderit për lidhjen, do ta hedh një vështrim.
Unë do të doja një sistem operativ 100% i pajtueshëm me grafikë AMD: /
Dritaret
hahaha në Windows Catalyst nuk ka mbështetje OpenGL, megjithëse në Linux nuk mund të përdor të gjithë fuqinë grafike që do të pres të shoh se çfarë do të ndodhë!
thjesht prisni që valvula të zhdukë tregun
Kontribut i magjishëm, i përsosur, i shkëlqyeshëm, duket si një seri e shkëlqyer postimesh
Buah Unë do të doja të dija si të programoja që të jem në gjendje t'ju ndihmoj, thjesht si një mënyrë praktikimi me njohuritë që po mësoni dhe një ndihmon. Tani për tani ju lë moton për të tërhequr vëmendjen e projektit sapo ta përfundoni atë "Përdorni NextDivel, pornografia duket e njëjtë (ose më mirë).", Ju do të fshini xD.
Mooooooolaaa !!!!
Artikull shumë i mirë, por thjesht kurioz pse nuk e keni ndjekur projektin Linux From Scratch?
të fala
Epo, Linux nga Scratch është mirë, dhe mund të thuash se është e jotja, por me të vërtetë është shumë mekanike:
-Shkarkoni shkronjat
-Patçini ato
-Kompiloni
-Instalo
-Në vijim
Këtu, edhe nëse rezultati është më i keq në fund, mund të thuash se i ke shqyrtuar të gjitha skedarët.
Siç është e qartë nga komenti im i mëparshëm, sepse nuk ka të njëjtin nivel kompleksiteti. Për më tepër, linux nga e para nuk është në të vërtetë, në kundërshtim me emrin e tij, duke krijuar një sistem nga e para. Krijimi i një sistemi nga e para është programimi vetë, duke shkruar kernelin tuaj, jo kernelin linux, nëse është e mundur edhe bootloader tuaj në vend të grub, lilo, syslinux, etj. Megjithëse një AFP nuk është diçka e vogël dhe është mjaft komplekse, ai nuk i afrohet as programimit të bërthamës tuaj ...
Për më tepër, unë pajtohem me AdrianArroyo Calle që është shumë mekanike, e kam lexuar diku dhe përfundon të heqësh dorë në faqen e gjashtë, ata gjithashtu të thonë që të përdorësh versionet e paketave sepse përndryshe udhëzimet nuk funksionojnë (kjo tregon mungesën e fleksibilitetit , Per mendimin tim ). Mendoj se është më mirë të kesh diçka nga ideja jote, përpilo paketat që dëshiron, madje programon disa, përpilo një bërthamë linux dhe në paqe.
Përshëndetje!
uuuoooohh !! Unë kurrë nuk kam kapur një postim aq sa ka bërë ky.
Ju lutemi vazhdoni
Unë nuk e di se çfarë është e gabuar:
gabim: nuk u gjet asnjë titull multiboot.
gabim ju duhet të ngarkoni më parë kernelin
Nëse është ndonjë ngushëllim, kam bërë të njëjtin gabim. Mundohuni të përdorni burimet që janë në GitHub, atje gabimi është zgjidhur tashmë. Gjithsesi mendoj se nëse ndryshoni vijën grub.cfg nga "multiboot /next/START.ELF" në "kernel /next/START.ELF" mund të funksionojë. Unë nuk e di saktësisht.
Para së gjithash, hyrja madhështore
Unë kam të njëjtin problem duke ngarkuar kernelin nga grub. Edhe përdorimi i burimeve të GitHub ose ndryshimi i multiboot për kernel ...
gabim: nuk u gjet asnjë titull multiboot.
gabim: nuk ka bërthamë të ngarkuar
A jeni duke përdorur zhargonin si përpilues? Ndryshojeni atë për gcc
A keni kujtuar të përdorni skenarin e lidhësit? Shtë e nevojshme që lidhësi (ld në rastin tonë) të dijë se ku në skedar do të vendosë çdo gjë. Në këtë rast, header multiboot duhet të jetë në fillim.
A jeni duke përdorur sistemin CMake? Nëse e përdorni mendoj se nuk dështon.
Nëse nuk funksionon për ju, do të përpiqem të gjej një zgjidhje tjetër.
[+100]
Thjesht fantastike !!!
Reallyshtë vërtet bukur cool
Heq kapelën. Post mbresëlënës. Urime
Uau!
Do të ishte mirë nëse mund të hapni aplikacione të bëra në HTML5 dhe Javascript pa pasur nevojë të përdorni një shfletues, është e mundur?
Unë jam duke folur në lidhje me ata që janë si aplikacionet vendase.
Kështu që do të ishte e lehtë të programohej për këtë sistem operativ
Në këtë rast unë nuk do ta bëj atë sepse kërkon shumë më shumë punë pas tij, por ekziston një sistem operativ i quajtur "është" që bën atë që thua ti. Në fakt rreshti i komandës është JavaScript dhe dritaret vizatohen duke përdorur funksionet JavaScript Canvas. Inxhinierët e Nintendo e bënë atë dhe tani është me burim të hapur.
http://code.google.com/p/es-operating-system/
Valla, faleminderit për informacionin
Do të hedh një vështrim
Kushdo që mund të krijojë një OS të vet mund të vdesë i qetë, pasi niveli intelektual duhet të arrijë me të; Kjo e bën atë të largohet nga parajsa ose ferri.
Pjesë e postimit.
deri më tani askush nuk dihet të ketë bërë vetëm diçka që mund të thuhet se është një sistem i mirë operativ i bërë nga e para, madje as Linux Torvalds siç thoni ju në fillim, pasi kjo filloi nga burimet e Unix dhe gjithçka tjetër është autore në e zakonshme për më shumë se një person, jeta është shumë e shkurtër dhe duke filluar nga e para është e paimagjinueshme për këdo, edhe nëse kërkohet e kundërta, është e demonstrueshme në shumë gabime të bëra në kopjimin dhe ngjitjen nga Linux Torvalds
Burimet e unix janë të mbyllura, përdorimi i minix ... që është diçka tjetër.
dhe ata që bënë QDOS çfarë?
ishin bazuar ne dicka?
Nga sa shoh unë, kush nuk ka sistemin e vet operativ është sepse nuk dëshiron, hahahaha.
Tani seriozisht, shumë interesante! Shumë është përtej njohurive të mia të kufizuara programore, por unë do të lexoj pjesët e tjera të kësaj serie me pritje.
Faleminderit për postimin!
Më la me një fytyrë O_O ... pa synimin për të nënvlerësuar kontributet e askujt, është më "pro" që kam parë kohët e fundit. Të fala.
Artikull shumë i mirë, Adrián. Ju lutem vazhdoni…
A po bëni shaka në Ditën e Gënjeshtrave të Prillit?, Mos jini mesatar "Të imitoni Linus Torvalds: Krijoni sistemin tuaj operativ nga e para". Nuk mendoj se është e vështirë për ata që po ndjekin karrierën në ndonjë institut të teknologjisë ose universitet; por për mua unë jam një shigjetar fillestar (ka nga ata që thonë "Noob" por unë e konsideroj veten më Newbie disi dembel) që tingëllon si të mos shkelësh në tokë. Gjithsesi, ky artikull krijon shumë kuriozitet dhe pa një admirim dhe dyshim të dyshimtë për redaktorin e saj, urime; Gjëja e parë që do të bëj është të përpiqem të kuptoj të paktën pak nga ky material i vlefshëm.
FALEMINDERIT Adrian Arroyo Calle, punë e shkëlqyeshme dhe ofrim fisnik i njohurive.
LEL Postim i shkëlqyeshëm, vazhdo kështu.
Çfarë postimi i mrekullueshëm, kjo është ajo që më ka marrë malli desde linux. E mrekullueshme.
Post i shkëlqyeshëm, faleminderit shumë.
Nuk e kuptova se çfarë bën skedari link.ld, a mund të ma shpjegojë dikush?
Skedari link.ld i tregon lidhësit (në këtë rast ld) ku secila pjesë e kodit duhet të jetë në skedarin që rezulton. Ne gjithashtu përcaktojmë pikën hyrëse pasi që pasi nuk kemi një sistem operativ nuk mund ta përdorim main si një program normal, në këtë rast zgjedhim funksionin start.
E shkëlqyeshme gjithë postimi juaj! Në pritje të 7! Po sikur të kisha një dyshim, për shembull, nëse do të doja të ekzekutoja vetëm një algoritëm, pa OS, si mund ta di se çfarë mund të përdor dhe çfarë jo C?
Nëse e përdorni kështu, nuk do të ishit në gjendje të përdorni asgjë nga stdlib, e cila është praktikisht ajo që përdor të gjithë (pa malloc, free, printf, scanf, strcmp, etj). Gjithçka duhet të implementohet drejtpërdrejt nga memoria ose ASM. Ndoshta në një kapitull më të lartë unë do t'ju tregoj se si të instaloni një bibliotekë C për sistemin operativ. Nëse përdorni C ++ nuk mund të përdorni përjashtime dhe operatorët e rinj dhe të fshini (dhe sigurisht më shumë).
Unë mendoj kjo mund t'ju japë një ide më të mirë se si ta bëni.
Përshëndetje, rreth 5 vjet më parë ndoqa një botim të ngjashëm dhe zhvillova një mikrokernel që fillon në të njëjtën mënyrë, ka disa aspekte për tu përmirësuar, por mund t'ju interesojë, funksionon në mënyrë të mbrojtur, ekzekuton shumë detyra dhe kryen virtualizimin e kujtesës, kohët e fundit kam punuar në të shoferi i diskut dhe cd për ta bërë të instalueshëm dhe jo vetëm të funksionojë në cd drejtpërdrejt ... Përshëndetje.
I dashur, unë kam një gabim gjatë ekzekutimit të komandës:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
link.ld: 5 gabim sintakse
Collect2: gabim: ld ktheu 1 statusin e daljes
lidhje.ld
Me = 0x00100000;
.motoboot_header: {
* (. kokë multiboot)
}
Në rreshtin 5 nuk e shoh gabimin, a ka dikush të njëjtën gjë?
Po punoj me një debian të virtualizuar në virtualbox
shtoni ";" në fund të * (. multiboot_header)
Nismë e shkëlqyeshme, unë patjetër do të ndjek kapitujt e këtij postimi, duke synuar të mësoj shumë prej tij. Faleminderit shumë që morët kohë të na mësoni. Një detaj i vetëm në lidhje me këtë, duhet të theksohet se Linus Torvalds nuk është krijuesi i ndonjë sistemi operativ, ai krijoi Kernelin e sistemit GNU / Linux (ai që është përdorur në sistemin tjetër operativ), i cili është ende i vlefshëm, por është Importantshtë e rëndësishme të kreditosh Richard Stallman për krijimin e shumicës së sistemit operativ.
Faleminderit shumë për kontributin dhe shpresoj të merrni parasysh vëzhgimin tim.
Kam kohë që jam ngatërruar me këtë temë, u interesova sapo lexova titullin. por mesazhi vazhdon të marrë
gabim: nuk u gjet asnjë titull multiboot.
gabim ju duhet të ngarkoni më parë kernelin
Unë kam ngarkuar atë që marr në një repo në github https://github.com/rkmax/GenyOS
E njëjta gjë më ndodh. A e gjetët zgjidhjen?
një pyetje që fillova të prezantoj sintaksën dhe linja e menuve më tregon komandën nuk u gjet kush mund të më tregonte pse
kjo është ajo që bëj unë
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: komanda nuk u gjet
Përmbajtja e kësaj përmbajtje nuk duhet të futet në rreshtin e komandës, por në skedarin që krijoni të quajtur grub.cfg
Artikull i shkëlqyeshëm, faleminderit!
Spektakolare… !! është tamam si hallka që mungon.
Unë i dua udhëzimet e tua Emulated LInus Torvalds, por ekziston një hap që nuk e kuptoj, si më poshtë:
Tani ne kopjojmë START.ELF tek / tjetri brenda dosjes tonë që simulon rrënjën e sistemit tonë operativ. Ne shkojmë në dosjen rrënjë të sistemit tonë të ri operativ me tastierë dhe verifikojmë që ekzistojnë dy skedarë: një /boot/grub/grub.cfg dhe një tjetër /next/START.ELF.
Ne shkojmë në direktorinë e sipërme dhe thërrasim një mjet krijimi ISO me GRUB të quajtur grub-mkrescue
A mund të ma shpjegojë dikush: f
Thjesht për të gjeneruar një ISO minimale që GRUB mund të ngarkojë, ne kopjojmë bërthamën në (/ e ISO, çdo dosje) /next/START.ELF dhe skedarin e konfigurimit GRUB në (/ të ISO, çdo dosje) / boot /grub/grub.cfg. Pasi të jetë bërë, ne ende nuk e kemi instaluar GRUB në ISO dhe ekziston një vegël që gjeneron ISO nga një dosje dhe instalon GRUB të quajtur grub-mkrescue. Atëherë më në fund do të përfundonim me një ISO bootable që ka të instaluar GRUB, i cili mund të lexojë konfigurimin për të ekzekutuar më vonë START.ELF saktë. Nuk e di nëse e kam shpjeguar veten, por ajo që bëjmë është një lloj sistemi i rremë i skedarëve me të cilin gjenerojmë një ISO.
Madhe
Epo, shikoni me të vërtetë në një sistem të ri jo aq shumë, por nëse përmirësoni linux, për shembull, krijoni një eksonukleus linux me një komponent serveri që vepron si mikronukleus nëse dëshironi, domethënë një strukturë exo me sjellje mikronukleus që do të ishte super dhe linux.
Gjëja tjetër është se unë nuk jam një ekspert në programim, vetëm disa c ++ me djathë dhe disa java, do të ishte e mjaftueshme për mua t'i jepja programit të kernel linux një modul, duke e gutting, modifikuar atë etj.
Pa dyshim që tashmë duhet të bëj me pushime.
Ky i mirë dhe në cilin program e harton dhe e kodon atë?
te lutem me jep ate pergjigje
Kur përpiloj nga programi juaj marr:
[jmponce @ jar build] $ cmake ..
- Krijimi i direktorisë NextRoot
- Gjenerimi i skriptit ISO
bëj DESTDIR = instalimi tjetër
./iso.sh
- Gjetur oksigjen: / usr / bin / dooksigjen (versioni i gjetur "1.8.9")
- Konfigurimi u krye
- Gjenerimi u bë
- Skedarët e ndërtimit janë shkruar në: / home / jmponce / next-divel / build
[jmponce @ jar build] $ bëjë
Varësia e skanimit të synuar START.ELF
[7%] Ndërtimi i objektit ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Ndërtimi i objektit CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Lidhja e fillimit të ekzekutueshëm të CXX. VETF
/ usr / bin / ld: E papajtueshme /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a kapërcehet ndërsa kërkon -lgcc
/ usr / bin / ld: nuk mund ta gjej -lgcc
mbledhje2: gabim: ld kthehet statusi i daljes 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Udhëzime të dështuara për target 'src / START.ELF'
bëj [2]: *** [src / START.ELF] Gabimi 1
CMakeFiles / Makefile2: 106: Udhëzime të dështuara për target 'src / CMakeFiles / START.ELF.dir / all'
bëj [1]: *** [src / CMakeFiles / START.ELF.dir / të gjitha] Gabimi 2
Makefile: 117: Dështimi në udhëzimet për 'të gjithë' të synuar
bëj: *** [të gjitha] Gabimi 2
Gabimi duket se është se nuk mund të gjejë llibgcc pasi që ju keni versionin 64-bit dhe aktualisht sistemi i ndërtimit është i detyruar të përdor 32-bit. Ju duhet të instaloni një paketë pajtueshmërie në distro ose më mirë, të përdorni një sistem 32-bit.
Unë kam 32 bit dhe shfaqet i njëjti gabim, a keni parasysh sistemin operativ apo arkitekturën? imi është 64 bit, por unë jam duke përdorur 32 bit Ubuntu, mos pyet, probleme financiare, me këtë i them të gjitha.
Tema e shkëlqyeshme, duke pritur një shtrirje më të madhe. Brohoritje
E madhe shpresoj për më shumë
Përshëndetje, unë jam një ambasador i ri që dëshiroj të krijoj një sistem operativ që mbështet të gjitha programet dhe platformat në mënyrë që zhvilluesit të mos duhet të kenë makina të fuqishme ose aplikacione ose programe në një kompjuter.
kjo është arsyeja pse unë jam i interesuar për këtë post, por kur unë shkarkoj git tuaj ose përpiqem ta krijoj atë, gjithçka shkon mirë derisa të ekzekutoj komandën.
"Grub-mkrescue: paralajmërim: xorriso juaj nuk mbështet" –grub2-boot-info ". Disa karakteristika janë çaktivizuar. Përdorni xorriso 1.2.9 ose më vonë ..
grub-mkrescue: paralajmërim: xorriso juaj nuk mbështet "–grub2-boot-info". Imazhi juaj i kernelit është shumë i madh. Nisja e diskut është çaktivizuar. Përdorni xorriso 1.2.9 ose më vonë .. »
Unë me të vërtetë nuk kam asnjë ide pasi që di shumë për aplikacionet dhe rrjetat, por nuk di asgjë për grub
Ju mund të duhet të azhurnoni programin xorriso në distro. Çfarë distro dhe versioni përdorni?
Unë përdor xubuntu 14.04lts dhe përpiqem të ekzekutoj xorriso por guaska më thotë se nuk mund ta gjejë atë dhe unë marr apt-get install xorriso edhe pse sinqerisht prisja ndonjë përgjigje sepse kisha një përvojë të keqe duke instaluar gjëra që nuk i di në linux hehe. Do ta azhurnoj tani dhe do të tregoj se çfarë ka ndodhur
Pastaj instaloni xorriso nga qendra e softuerit ose thjesht nga terminali bëni "sudo apt-get install xorriso"
Unë tashmë bëra gjithçka që më thatë dhe si me git ashtu edhe me timen e marr këtë xorriso 1.3.2: manipuluesin e sistemit të skedarëve RockRidge, projektin libburnia.
Drejtoni rrymën: -outdev 'stdio: nextdivel.iso'
Rryma e medias: skedari stdio, i mbishkrueshëm
Statusi i medias: është bosh
Përmbledhje mediatike: 0 seanca, 0 blloqe të dhënash, 0 të dhëna, 1901 milion falas
Shtuar në imazhin ISO: direktoria '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 skedarë të shtuar në 1 sekonda
xorriso: DILSHTIM: Nuk mund të përcaktohen atributet e skedarit burimor '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Asnjë skedar apo direktori e tillë
xorriso: UPDATE: 546 skedarë të shtuar në 1 sekonda
xorriso: aborting: -abort_on 'FAILURE' has 'FAILURE'
Dhe pantallona kadifeje nuk e kuptoj strukturën time është /nextroot/boot/grub/grub.cfg dhe nextroot / next / START.ELF
Faleminderit, unë jam gati të shkoj përpara, një mik më ndihmoi dhe më tha atë që bëra gabim ishte organizimi i drejtorisë, kështu që unë e zgjidha atë dhe kaq
Më falni, a mund të më tregoni se çfarë procedure keni kryer pasi nuk kam asnjë gabim për të nisur: asnjë skedar apo direktori të tillë
pa pajisje bootable.
Gëzuar! Unë do të të kërkoja favor nëse mund të më dërgosh një email me atë që shpjegon këtu, unë jam hutuar pak dhe duhet të krahasoj atë që kam me atë që shpjegon, ndoshta ajo që nuk është e qartë për mua është nëse krijimi i grub. cfg bëhet në terminalin gcc apo ku saktësisht? faleminderit shume mik!
Ju krijoni skedarin grub.cfg me ndonjë redaktues teksti dhe duhet ta ruani në PROJECT_FOLDER / boot / grub / grub.cfg
Përshëndetje Adrian, së pari, ju përgëzoj dhe faleminderit për kontributin tuaj.
Ju e dini që unë po e bëj këtë për një praktikë dhe fillova ta bashkoj duke ndjekur tutorin tuaj, megjithatë pasi fillova gjeta gabimin e parë
$ si -o kernel.o -c kernel.asm
bash: si: komanda nuk u gjet ...
Komanda të ngjashme janë:
'sa'
'ac'
Unë jam duke punuar në fedora 20, dhe nuk mund të gjej një zgjidhje në këtë drejtim, unë do të vlerësoja udhëzimet tuaja nëse duhet të ndryshoj diçka në gcc ose gaz
paraprakisht faleminderit
Ju duhet të instaloni GAS në mënyrë që të shoh kodin e gabimit. Unë nuk kam Fedora në dorë, por në teori nëse instaloni gcc-c ++ ju do të instaloni të gjithë kompletin GCC dhe GNU Siç vjen zakonisht me të.
Unë jam me ju, di diçka për C ++, C # (megjithëse kjo e fundit nuk është shumë e dobishme në këtë çështje) e keqja është se unë ende nuk kam përvojë, kurrë nuk merrem me gjuhën C, botimi juaj është i shkëlqyeshëm, nuk kam shumë për të thënë nëse kam kohë e shoh. Faleminderit.
Faleminderit shumë për ndihmën e madhe.
Unë e dua linux-in është rrethi më i mirë që ekziston, e vërteta për dritaret e mia është hedhurina për një që unë e di që krijuesi i linux-it është krijuesi i dritareve
Përshëndetje Kam një gabim në grub thotë
gabim: skedari / tjetër / START.ELF Nuk u gjet
gabim: së pari duhet të ngarkoni bërthamën
A mund të më ndihmoni dhe të bëni google por nuk mund ta gjej
Ju lutem, si mund ta bëj atë të tregojë mesazhin HELLO WORLD? Unë jam një fillestar dhe ende nuk di sa duhet
Më ndodh më poshtë:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
/ usr / bin / ld: kernel.o: zhvendosja R_X86_64_32 kundër simbolit "pirg" nuk mund të përdoret kur bën një objekt PIE; rikompiloni me -fPIE
/ usr / bin / ld: lidhja përfundimtare dështoi: seksioni që nuk përfaqësohet për prodhimin
Collect2: gabim: ld ktheu 1 statusin e daljes