Visų pirma pakomentuokite, kad tai yra mano pirmasis straipsnis ir tikiuosi, kad jums visiems tai patiks.
Šioje serijoje mes imituosime Linus Torvalds, mes sukursime savo operacinę sistemą nuo 0. Šiame pirmame epizode pamatysime įkrovą ir ekrane iš savo branduolio įdėsime tekstą.
Mano atveju vadinama operacine sistema „NextDivel“. Pirmasis sprendimas, kurį turime priimti, kai tik apsvarstysime operacinę sistemą, yra koks bus įkrovos tvarkyklė?
Čia yra keli variantai, ir mes netgi patys galėtume jį sukurti; tačiau šioje pamokoje ketinu naudoti GRUB, nes dauguma apie jį daugiau ar mažiau ką nors žino. Sukuriame aplanką, kuris bus mūsų operacinės sistemos šaknis, ir ten sukursime aplanką / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Čia mes sukuriame failą grub.cfg taip:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Šiame faile matėme kaip GRUB šiuo atveju įkels mūsų branduolį į /next/START.ELF. Dabar turime sukurti savo branduolį.
Tam mums reikės GCC y DUJŲ (projekto surinkėjas GNU, paprastai pateikiama kartu su gcc). Taigi mes sukursime branduolį.
Pirmiausia padarome failą, pavadintą kernel.asm. Šiame faile bus mūsų branduolio pradinis taškas, taip pat bus apibrėžtas daugkartinis įkrovimas (kai kurių įkrovos elementų, tokių kaip GRUB). Kernel.asm turinys bus:
.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
Viskas, kas susiję su „multiboot“, yra tik tai, kad laikytumėtės nieko kito. Viskas prasidės iš pradžių, jis iškvies multiboot_entry, mes nustatysime multiboot antraštę per pirmuosius 4k ir įdėsime (su movl).
Vėliau mes vadiname „NextKernel_Main“, kuri yra mūsų branduolio C funkcija. Kilpoje mes sustabdome kompiuterį. Tai sudaro:
as -o kernel.o -c kernel.asm
Dabar eisime į programavimą C. Jūs manysite, kad dabar viskas yra pyrago gabalas, mes įdėjome a printf en pagrindinis ir viskas, mes tai padarėme.
Na ne, nuo tada printf y pagrindinis tai yra operacinės sistemos apibrėžtos funkcijos, bet mes jas kuriame! Mes galime naudoti tik tas funkcijas, kurias mes patys apibrėžiame.
Vėlesniuose skyriuose kalbėsiu apie tai, kaip sukurti savo C biblioteką (glibc, bionic, newlibc), bet laikas nuo laiko. Aptarėme, kad norime įdėti tekstą į ekraną, gerai pamatysime, kaip tai darysime.
Yra dvi galimybės, viena yra paskambinti BIOS o kitas yra tiesiogiai valdyti ekrano atmintį. Mes ketiname padaryti pastarąjį, nes tai aiškiau iš C ir tai taip pat leis mums tai padaryti, kai įeisime į apsaugotą režimą.
Sukuriame failą pavadinimu NextKernel_Main.c su tokiu turiniu:
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;
}
Tuo mes tiesiogiai manipuliuojame atmintimi VGA ir po simbolį mes jį rašome. Mes sudarome išjungdami „stdlib“:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Jei tai padarėte iki šiol, norėsite išbandyti savo naują operacinę sistemą dabar, bet mes dar ne viskas. Mums reikia nedidelio failo, kuris kompiliatoriui nurodo, kur faile palikti kiekvieną skyrių. Tai daroma naudojant susiejimo scenarijų. Mes kuriame 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 = .;
}
Tuo mes apibrėžiame kiekvieno skyriaus poziciją ir pradžios tašką, kurį apibrėžėme kernel.asm. Dabar mes galime sujungti visą šią sumanymą:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Dabar kopijuojame START.ELF į / kitą aplanke, kuris imituoja mūsų operacinės sistemos šaknį. Su konsole einame į naujos operacinės sistemos šakninį aplanką ir patikriname, ar yra du failai: vienas /boot/grub/grub.cfg ir kitas /next/START.ELF.
Einame į viršutinį katalogą ir iškviečiame ISO sukūrimo įrankį, kai iškviečiamas GRUB grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Tai padarę turėsime ISO. Šį ISO galima atidaryti kompiuteriuose x86 (64 bitai taip pat) ir virtualios mašinos. Norėdami tai išbandyti, aš ketinu naudoti QEMU. Mes skambiname QEMU iš komandinės eilutės:
qemu-system-i386 nextdivel.iso
Pradės „SeaBIOS“ o vėliau turėsime GRUB. Vėliau, jei viskas bus teisinga, pamatysime savo frazę.
Jūs manysite, kad tai sunku, aš jums atsakau, taip yra.
Tikrai sukurti operacinę sistemą yra sunku ir kad ši čia nepadaro nieko naudingo. Ateityje skyriuose pamatysime, kaip elgtis su spalvomis ekrane, rezervuoti atmintį ir, jei galiu, kaip gauti duomenis iš klaviatūros.
Jei kas nors nenori čia kopijuoti visko, turiu saugyklą GitHub (išsamiau) su operacine sistema „NextDivel“. Jei norite sudaryti „NextDivel“ jūs tiesiog turite turėti git ir 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
Jei turite laiko ir noro sukurti operacinę sistemą, raginu bendradarbiauti „NextDivel“. Galbūt net pranašesnis už „Linux“ ... laikas parodys.
:O
Torvalds perėmė „Minix“ operacinę sistemą (kilusią iš UNIX) Andrew S. Tanenbaumui ir ją patobulino.
Tanenbaumas yra kovojęs su Linu, jie įžeidė vienas kitą. Tanenbaumas sako, kad mikrokernelis yra ateitis (HURD, „Minix new cone Microkernel“).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Tai buvo geriausias iki šiol matytas įrašas šiame tinklaraštyje. Aš jau noriu žinoti, ką dar daryti.
Būkite sužavėtas
Tikrai įspūdinga !!
FUUUUUUA!
Tai geekiest įrašas, kurį kada nors mačiau hehe. Sveikiname Adrianą, kekšės straipsnis! hiper įdomu !!! 🙂
Sutinku. Įsivaizduoju šią situaciją:
GNU / „Linux“ energijos vartotojas (su laimingu veidu):
"Aš jau žinau, kaip sudaryti savo" Gentoo "
Nerd (paniekinamai): «pff, aš sukūriau savo platintoją ...»
Taip, aš galiu sukurti savo „Linux Distro“. Tiesą sakant, jame kuriu „initramfs“ ir branduolį įterptam „Linux“. Kurti operacinę sistemą nėra tas pats, kas „Linux Linux“. Pirmasis yra daug sunkesnis, beveik neįmanomas, antrasis, kaip jūs sakėte, gali būti bet koks, net „Ubuntu“ su „xD“ logotipu. Taigi paliksiu tai taip:
GNU / „Linux“ energijos vartotojas (su laimingu veidu)
- Aš jau moku sudaryti savo „Gentoo“
Pusiau paprastas
- Pff, aš laikiausi „linux“ nuo nulio ir padariau savo distro
Nerd (su paniekinančiu požiūriu)
- pff, nes aš užprogramavau branduolį surinkime ir C
Sveiki atvykę!
Tai man įdomu, laukiant tolesnių skyrių.
Prieš kurį laiką mačiau šią pamoką, ji skirta „C ++“
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Ačiū už nuorodą, aš ją apžvelgsiu.
Norėčiau, kad operacinė sistema būtų visiškai suderinama su AMD grafika: /
Windows
hahaha sistemoje „Windows Catalyst“ neturi „OpenGL“ palaikymo, nors sistemoje „Linux“ negaliu išnaudoti visos grafinės galios, kurios lauksiu, kol kas bus!
tiesiog palaukite, kol vožtuvas išnaikins rinką
Stebuklingas, tobulas, puikus indėlis, atrodo kaip puiki įrašų serija 🙂
Buah, aš norėčiau žinoti, kaip programuoti, kad galėčiau jums padėti, paprasčiausiai kaip praktikuoti žinodamas, kad mokotės ir padedate. Kol kas palieku jums šūkį atkreipti dėmesį į projektą, kai jį baigsite: „Naudok„ NextDivel “, pornografija atrodo tokia pati (ar geresnė)“.
Mooooooolaaa !!!!
Labai geras straipsnis, bet įdomu, kodėl nesekėte projekto „Linux From Scratch“?
saludos
Na, „Scratch“ „Linux“ yra puikus, ir jūs galite pasakyti, kad tai jūsų, bet jis tikrai yra labai mechaniškas:
-Atsisiųskite šriftus
-Plaki juos
-Kompiliuokite
-Diegti
-Sekdami
Net jei rezultatas galų gale yra prastesnis, galite sakyti, kad peržiūrėjote visus failus.
Kaip matyti iš mano ankstesnio komentaro, nes jis nėra vienodo sudėtingumo. Be to, „Linux“ nuo nulio nėra, priešingai nei jo pavadinime, sistemos kūrimas nuo nulio. Sistemos kūrimas nuo nulio - tai pats programavimas, rašant savo, o ne „Linux“ branduolio branduolį, jei įmanoma, net savo įkrovos įrankį vietoj „grub“ lilo, syslinux ir kt. Nors LFS nėra nemenkas žygdarbis ir yra gana sudėtingas, jis net nepriartėja prie savo branduolio programavimo ...
Be to, sutinku su AdrianArroyo Calle, kad jis yra per daug mechaniškas, aš jį kažkada perskaičiau ir jūs galų gale atsisakote šeštojo puslapio, jie taip pat jums liepia naudoti kokias paketų versijas, nes kitaip instrukcijos neveikia (tai rodo lankstumo stoka, Mano nuomone). Manau, kad geriau turėti kažką savo idėjos, sudaryti norimus paketus, net užprogramuoti kai kuriuos, sukompiliuoti „Linux“ branduolį ir ramiai.
Sveiki atvykę!
uuuoooohh !! Niekada nesu užfiksavęs tiek įrašo, kiek šis.
Prašau tęsti 😀
Aš nežinau, kas negerai:
klaida: nerasta kelių paleidimų antraštės.
klaida, kurią pirmiausia turite įkelti branduolį
Jei tai paguoda, padariau tą pačią klaidą. Pabandykite naudoti šaltinius, esančius „GitHub“, ten klaida jau išspręsta. Bet kokiu atveju, manau, jei pakeisite grub.cfg eilutę iš „multiboot /next/START.ELF“ į „branduolys /next/START.ELF“, tai gali veikti. Aš tiksliai nežinau.
Visų pirma, puikus įėjimas 🙂
Man kyla ta pati problema įkeliant branduolį iš „grub“. Net naudojant „GitHub“ šaltinius arba keičiant daugialypę įkrovą branduoliui ...
klaida: nerasta kelių paleidimų antraštės.
klaida: nėra įkelto branduolio
Ar naudojate „Clang“ kaip kompiliatorių? Pakeiskite jį į gcc
Ar nepamiršote naudoti susiejimo scenarijaus? Tai būtina, kad susiejiklis (mūsų atveju - ld) žinotų, kur faile jis įdės kiekvieną daiktą. Tokiu atveju kelių įkrovų antraštė turi būti pradžioje.
Ar naudojate „CMake“ sistemą? Jei naudosite, manau, kad tai nepavyks.
Jei jums tai netiks, pabandysiu rasti kitą sprendimą.
[+100]
Tiesiog puikus !!!
Tai tikrai šaunu 🙂
Nusiimu kepurę. Įspūdingas įrašas. Sveikiname.
Vau!
Būtų puiku, jei galėtumėte atidaryti HTML5 ir „Javascript“ sukurtas programas nenaudodami naršyklės, ar tai įmanoma?
Aš kalbu apie tai, kad jie yra tarsi vietinės programos.
Taigi būtų lengva programuoti šią operacinę sistemą 😀
Šiuo atveju aš to nedarysiu, nes tam reikia daug daugiau darbo, tačiau yra operacinė sistema, vadinama „yra“, kuri daro tai, ką jūs sakote. Iš tikrųjų komandinė eilutė yra „JavaScript“, o langai piešiami naudojant „JavaScript Canvas“ funkcijas. Tai padarė „Nintendo“ inžinieriai, o dabar jis yra atviro kodo.
http://code.google.com/p/es-operating-system/
Valla, ačiū už informaciją 😀
Pasižiūrėsiu
Kas gali susikurti savo OS, gali ramiai mirti, nes intelektinį lygį jis turi tuo pasiekti; Tai priverčia jus atsisakyti dangaus ar pragaro.
Siuntimo gabalas.
iki šiol niekas nežinojo, kad padarė tik tai, ką galima pasakyti apie padorų operacinę sistemą, sukurtą nuo nulio, net ir „Linux Torvalds“, kaip sakote pradžioje, nes tai prasidėjo iš „Unix“ šaltinių, o visa kita yra būdingas daugiau nei vienam asmeniui, gyvenimas yra labai trumpas, o pradėti nuo nulio niekam neįsivaizduojamas, net jei norima priešingai, tai įrodo daugybė klaidų, padarytų kopijuojant ir įklijuojant „Linux Torvalds“
Unix šaltiniai yra uždaryti, minix naudojimas ... kas yra kažkas kita.
ir kas padarė QDOS?
buvo kažkuo pagrįsti?
Iš to, ką matau, kas neturi savo operacinės sistemos, yra todėl, kad jie to nenori, hahahaha.
Dabar rimtai, labai įdomu! Daug kas viršija mano ribotas programavimo žinias, tačiau kitas šios serijos dalis perskaitysiu tikėdamasis.
Ačiū už įrašą!
Palikote mane O_O veidu ... neturėdamas tikslo nuvertinti niekieno indėlio, tai yra pats „pro“, kurį mačiau pastaruoju metu. Pagarbiai.
Labai geras straipsnis, Adriánai. Prašome tęsti…
Ar juokauji balandžio 0 dienos kvailystės dieną?, Nereikėtų pasakyti „Lino Torvaldo mėgdžiojimas: sukurkite savo operacinę sistemą nuo nulio“. Nemanau, kad sunku tiems, kurie siekia karjeros kokiame nors technologijos institute ar universitete; bet man aš esu pradedantysis lankininkas (yra tokių, kurie sako „Noob“, bet aš save laikau labiau naujoku, kiek tingiu), kuris skamba taip, lyg nežengčiau į žemę. Šiaip ar taip, šiame straipsnyje sukuriama daugybė smalsumo ir be abejonių susižavėjimo bei pagarbos savo redaktoriui, sveikiname; Pirmas dalykas, kurį padarysiu, tai pabandysiu suprasti bent šiek tiek šios vertingos medžiagos.
AČIŪ Adrianui Arroyo Callei, puikų darbą ir kilnų žinių perdavimą.
LEL Puikus įrašas, tęsk.
Que Grandioso post, esto es lo que extrañaba de desde linux. Que maravilla.
Puikus pranešimas, labai ačiū.
Aš nesupratau, ką daro failas link.ld, ar kas nors gali man tai paaiškinti?
Failas link.ld nurodo susiejėjui (šiuo atveju ld), kur kiekviena kodo dalis turėtų būti gautame faile. Mes taip pat apibrėžiame įėjimo tašką, nes kadangi neturime operacinės sistemos, pagrindinio negalime naudoti kaip įprastos programos, šiuo atveju pasirenkame pradžios funkciją.
Puiku visas jūsų pranešimas! Laukia 7! Ką daryti, jei man kyla abejonių, pavyzdžiui, jei norėčiau paleisti tik algoritmą be OS, kaip sužinoti, ką galiu naudoti, o ko ne?
Jei jį naudosite taip, negalėsite naudoti nieko iš „stdlib“, kurį praktiškai naudoja visi (be malloc, free, printf, scanf, strcmp ir kt.). Viskas turi būti įgyvendinta tiesiogiai iš atminties ar ASM. Gal aukštesniame skyriuje parodysiu, kaip įdiegti operacinės sistemos C biblioteką. Jei naudojate C ++, negalite naudoti išimčių ir naujų bei ištrinti operatorių (ir tikrai daugiau).
aš manau Esto tai gali geriau suprasti, kaip tai padaryti.
Sveiki, maždaug prieš 5 metus aš stebėjau panašų leidinį ir sukūriau mikrokernelį, kuris paleidžiamas tokiu pačiu būdu, jame yra keletas aspektų, kuriuos reikia patobulinti, tačiau jis gali jus dominti, jis veikia saugiuoju režimu, vykdo daug užduočių ir atlieka atminties virtualizavimą, pastaruoju metu dirbau prie jo disko tvarkyklės ir kompaktinių diskų įrenginio, kad jį būtų galima įdiegti ir ne tik paleisti tiesioginiame kompaktiniame diske ... Sveikinimai.
Gerbiamasis, vykdant komandą turiu klaidą:
gcc -o START.ELF branduolys.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
link.ld: 5 sintaksės klaida
collect2: error: ld grąžino 1 išėjimo būseną
nuoroda.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
5 eilutėje nematau klaidos, ar kažkas tas pats?
Aš dirbu su virtualizuotu debianu švokštimu „virtualbox“
pridėti „;“ * (. multiboot_header) pabaigoje
Puiki iniciatyva, tikrai laikysiuosi šio įrašo skyrių, ketindama iš jo daug ko išmokti. Labai ačiū, kad skyrėte laiko mus išmokyti. Šiuo atžvilgiu reikia pažymėti vieną detalę. Pažymėtina, kad Linusas Torvaldsas nėra jokios operacinės sistemos kūrėjas, jis sukūrė GNU / Linux sistemos branduolį (tą, kuris buvo naudojamas kitose OS), kuris vis dar yra vertas, tačiau svarbu įskaityti Richardą Stallmaną kuriant didžiąją dalį OS.
Labai ačiū už indėlį ir tikiuosi, kad apsvarstysite mano pastebėjimą.
Kurį laiką šnekučiavausi su tema, susidomėjau vos perskaičiusi antraštę. bet žinia vis gaunama
klaida: nerasta kelių paleidimų antraštės.
klaida, kurią pirmiausia turite įkelti branduolį
Aš įkėliau tai, ką imuosi, į „github“ atpirkimą https://github.com/rkmax/GenyOS
Tas pats nutinka ir man. Ar radai sprendimą?
klausimas, kurį pradėjau įvesti sintaksę, o meniu eilutė man sako, kad komandai nerasta, kas galėtų man pasakyti, kodėl
tai aš darau
JUODAS @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: komanda nerasta
Šio turinio turinys turi būti įvestas ne į komandinę eilutę, o į jūsų sukurtą failą, pavadintą grub.cfg
Puikus straipsnis, ačiū!
Įspūdinga ... !! tai visai kaip trūkstama grandis.
Man patinka jūsų mėgdžiojimo LInus Torvalds pamokos, bet yra vienas žingsnis, kurio aš nesuprantu:
Dabar kopijuojame START.ELF į / kitą aplanke, kuris imituoja mūsų operacinės sistemos šaknį. Su konsole einame į naujos operacinės sistemos šakninį aplanką ir patikriname, ar yra du failai: vienas /boot/grub/grub.cfg ir kitas /next/START.ELF.
Einame į viršutinį katalogą ir iškviečiame ISO sukūrimo įrankį su GRUB, vadinamą grub-mkrescue
Ar kas nors galėtų man tai paaiškinti: p
Tiesiog sugeneruodami minimalų ISO, kurį GRUB gali įkelti, mes nukopijuojame branduolį į (ISO / bet kurio aplanko / bet kurį aplanką) /next/START.ELF ir GRUB konfigūracijos failą į (/ ISO, bet kurį aplanką) / įkrovą /grub/grub.cfg. Tai padarę, mes dar neįdiegėme GRUB ISO ir yra įrankis, kuris generuoja ISO iš aplanko ir įdiegia GRUB, vadinamą grub-mkrescue. Tada mes galiausiai galų gale turėtume įkrovos ISO, kuriame įdiegtas GRUB, kuris gali perskaityti konfigūraciją, kad vėliau tinkamai įvykdytų START.ELF. Aš nežinau, ar aš pats paaiškinau, bet tai, ką mes darome, yra tam tikra klaidinga failų sistema, kuria mes sukuriame ISO.
Buenísimo
Na, iš tikrųjų pažvelkite į naują sistemą ne tiek, bet jei patobulinsite, pavyzdžiui, „Linux“, sukurkite „Linux exonucleus“ su serverio komponentu, kuris, jei norite, veikia kaip mikrobranduolys, tai yra „exo“ struktūra su mikrobranduolių elgsena, kuri būtų super ir „Linux“.
Kitas dalykas yra tai, kad nesu programavimo ekspertas, tik keli sūrūs c ++ ir šiek tiek „Java“, man pakaktų duoti „Linux“ branduolio programai modulį, jį išdarinėjant, modifikuojant ir pan.
Be jokios abejonės, aš jau turiu tai daryti atostogų metu.
Šį gerą ir kokioje programoje jis suprojektuoja ir koduoja?
prašau duok man tą atsakymą
Renkant iš jūsų gito gaunu:
[jmponce @ jar build] $ cmake ..
- „NextRoot“ katalogo kūrimas
- ISO scenarijaus generavimas
make DESTDIR = kitas diegimas
./iso.sh
- Rastas „Doxygen“: / usr / bin / doxygen (rasta „1.8.9“ versija)
- Konfigūravimas atliktas
- Generuojama padaryta
- „Build“ failai buvo parašyti: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Nuskaitytos taikinio START.ELF priklausomybės
[7%] ASM-ATT objekto src / CMakeFiles / START.ELF.dir / start / boot.asm.o kūrimas
[14%] CXX objekto src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o kūrimas
[21%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o kūrimas
[28%] CXX objekto src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o kūrimas
[35%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o kūrimas
[42%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o kūrimas
[50%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o kūrimas
[57%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o kūrimas
[64%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o kūrimas
[71%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o kūrimas
[78%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o kūrimas
[85%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o kūrimas
[92%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o kūrimas
[100%] CXX objekto src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o kūrimas
Susiejimas CXX vykdomojo failo START.ELF
/ usr / bin / ld: Nesuderinamas /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a praleidžiamas ieškant -lgcc
/ usr / bin / ld: negalite rasti -lgcc
collect2: error: ld grąžino 1 išėjimo būseną
src / CMakeFiles / START.ELF.dir / build.make: 402: Nepavyko instrukcijos tikslui „src / START.ELF“
make [2]: *** [src / START.ELF] 1 klaida
CMakeFiles / Makefile2: 106: nepavyko instrukcijos tikslui „src / CMakeFiles / START.ELF.dir / all“
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] 2 klaida
„Makefile“: 117: gedimas instrukcijose, skirtose tikslui „visi“
make: *** [all] 2 klaida
Atrodo, kad klaida yra ta, kad ji negali rasti „llibgcc“, nes turite 64 bitų versiją, o šiuo metu kompiliavimo sistema yra priversta naudoti 32 bitų. Turėtumėte įdiegti suderinamumo paketą į savo platintoją arba geriau, naudokite 32 bitų sistemą.
Turiu 32 bitus ir pasirodo ta pati klaida, ar turite omenyje operacinę sistemą ar architektūrą? mano yra 64 bitų, bet aš naudoju 32 bitų „Ubuntu“, neklauskite, finansinių problemų, todėl viską pasakau.
Puiki tema, laukianti didesnės apimties. Cheers
Puiku, tikiuosi dar daugiau
Sveiki, esu jaunas ambasadorius, norintis sukurti operacinę sistemą, palaikančią visas programas ir platformas, kad kūrėjams nereikėtų turėti galingų mašinų ar programų ar programų kompiuteryje.
Štai kodėl mane domina šis įrašas, bet kai atsisiunčiu jūsų „git“ arba bandau jį sukurti, viskas veikia tol, kol įvykdysiu komandą ./iso.sh arba grub-mkrescue -o nextdivel.iso nextroot, gausite šią klaidą
"Grub-mkrescue: įspėjimas: Jūsų xorriso nepalaiko" –grub2-boot-info ". Kai kurios funkcijos buvo išjungtos. Naudokite „xorriso 1.2.9“ arba naujesnę versiją.
grub-mkrescue: įspėjimas: Jūsų xorriso nepalaiko „–grub2-boot-info“. Jūsų branduolio vaizdas per didelis. Disko įkrovimas išjungtas. Naudokite „xorriso 1.2.9“ arba naujesnę versiją .. »
Tikrai neįsivaizduoju, nes daug žinau apie programas ir tinklus, bet nieko nežinau apie „grub“
Jums gali tekti atnaujinti xorriso programą savo platintuve. Kokią distro ir versiją naudojate?
Aš naudoju „xubuntu 14.04lts“ ir bandau paleisti „xorriso“, bet apvalkalas man sako, kad jis negali jo rasti, ir aš gaunu apt-get install xorriso, nors nuoširdžiai tikėjausi tam tikro atsakymo, nes turėjau blogos patirties diegiant dalykus, kurių aš nežinau „Linux hehe“ . Atnaujinsiu dabar ir pasakysiu, kas nutiko
Tada įdiekite „xorriso“ iš programinės įrangos centro arba tiesiog iš terminalo atlikite „sudo apt-get install xorriso“
Aš jau padariau viską, ką man sakėte, ir su „git“, ir su mano gaunu šį xorriso 1.3.2: „RockRidge“ failų sistemos manipuliatorius, „libburnia“ projektas.
Pavaros srovė: -outdev 'stdio: nextdivel.iso'
Žiniasklaidos srovė: „stdio“ failas, perrašomas
Medijos būsena: tuščia
Medijos suvestinė: 0 seansų, 0 duomenų blokų, 0 duomenų, 1901 m nemokamai
Pridėta prie ISO atvaizdo: katalogas '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 failai pridėti per 1 sekundę
xorriso: FAILURE: Negalima nustatyti šaltinio failo „/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot“ atributų: tokio failo ar katalogo nėra
xorriso: UPDATE: 546 failai pridėti per 1 sekundę
xorriso: aborting: -abort_on 'FAILURE' rado 'FAILURE'
ir velvetas, nesuprantu, kad mano struktūra yra /nextroot/boot/grub/grub.cfg ir nextroot / next / START.ELF
Ačiū, aš pasiruošęs judėti į priekį, draugas man padėjo ir pasakė, ką aš padariau neteisingai, buvo katalogo organizavimas, todėl aš jį sutvarkiau ir viskas.
Atsiprašau, ar galite man pasakyti, kokią procedūrą atlikote, nes nieko neįkeliu į klaidą: nėra tokio failo ar katalogo
nėra įkrovos įrenginio.
Cheers! Aš ketinau jūsų paprašyti malonės, jei galėtumėte man atsiųsti el. Laišką su tuo, ką jūs čia paaiškinate, aš šiek tiek sutrikau ir turiu palyginti tai, ką turiu, su tuo, ką jūs paaiškinate, galbūt man neaišku, ar kuriant grub. cfg atliekamas terminalo gcc arba kur tiksliai? labai ačiū draugei!
Sukuriate failą grub.cfg naudodami bet kurį teksto rengyklę ir turite jį išsaugoti PROJECT_FOLDER / boot / grub / grub.cfg
Sveiki, Adrianai, visų pirma, sveikinu jus ir dėkoju už jūsų indėlį.
Jūs žinote, kad tai darau dėl praktikos, ir aš pradėjau ją derinti vadovaudamasis jūsų vadovavimu, tačiau pradėjęs radau pirmąją klaidą
$ as -o branduolys.o -c branduolys.asm
bash: as: komanda nerasta ...
Panašios komandos yra:
„sa“
„ac“
Dirbu „fedora 20“ ir negaliu rasti sprendimo šiuo klausimu. Būčiau dėkingas už jūsų patarimus, ar turėčiau ką nors pakeisti dėl gcc ar dujų
Iš anksto ačiū
Turite įdiegti GAS, kad galėčiau pamatyti klaidos kodą. Neturiu po ranka „Fedora“, bet teoriškai, jei įdiegsite „gcc-c ++“, įdiegsite visą GCC rinkinį ir „GNU“, kaip paprastai būna kartu.
Aš esu su jumis, aš ką nors žinau apie C ++, C # (nors šis paskutinis nėra labai naudingas šiuo klausimu) blogas dalykas yra tas, kad man vis dar trūksta patirties, aš niekada nesusitvarkau su C kalba, jūsų leidinys yra puikus, Neturiu daug ką pasakyti, jei turiu laiko, matau. Ačiū.
Labai ačiū už didelę pagalbą ...
Aš myliu Linux tai geriausias rajonas yra tiesa mano langai yra šiukšlės, kad aš žinau, kad Linux kūrėjas yra langų kūrėjas
Sveiki, gaunu klaidą grub sako
klaida: failas /next/START.ELF nerastas
klaida: pirmiausia turite įkelti branduolį
Ar galėtumėte man padėti ir ieškoti „Google“, bet nerandu
Prašau, kaip aš galiu priversti jį rodyti „HELLO WORLD“ pranešimą, aš esu pradedantysis ir vis dar nepakankamai žinau
Man nutinka taip:
gcc -o START.ELF branduolys.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
/ usr / bin / ld: kernel.o: perkėlimas R_X86_64_32 su simboliu `stack 'negali būti naudojamas kuriant PIE objektą; perkompiliuokite su -fPIE
/ usr / bin / ld: paskutinė nuoroda nepavyko: neatstovaujama išvesties dalis
collect2: error: ld grąžino 1 išėjimo būseną