Ensinnäkin kommentoi, että tämä on ensimmäinen artikkelini ja että toivon, että pidät siitä kaikista.
Tässä sarjassa aiomme jäljitellä Linus Torvalds, aiomme luoda käyttöjärjestelmän 0: sta. Tässä ensimmäisessä jaksossa näemme käynnistysohjelman ja laitamme tekstin ytimeen ruudulle.
Minun tapauksessani käyttöjärjestelmää kutsutaan SeuraavaDivel. Ensimmäinen päätös, joka meidän on tehtävä heti, kun katsomme käyttöjärjestelmän, on mikä käynnistyslatain tulee olemaan?
Täällä on useita muunnelmia, ja voimme jopa luoda sellaisen itse; kuitenkin tässä opetusohjelmassa aion käyttää GRUB, koska useimmat tietävät enemmän tai vähemmän jotain hänestä. Luomme kansion, josta tulee käyttöjärjestelmän juuret, ja siellä luodaan kansio / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Siellä luomme grub.cfg-tiedoston seuraavasti:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Tässä tiedostossa olemme nähneet miten GRUB lataa tässä tapauksessa ytimen hakemistoon /next/START.ELF. Nyt meidän on luotava ydin.
Tätä varten tarvitsemme GCC y GAS (projektin kokoonpanija GNU, tulee yleensä gcc: n mukana). Joten aiomme luoda ytimen.
Teemme ensin tiedoston nimeltä kernel.asm. Tämä tiedosto sisältää ytimen aloituspisteen ja määrittelee myös monikäynnistyksen (joidenkin käynnistyslatainten, kuten GRUB). Kernel.asm-sisältö on:
.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
Kaikki monikäynnistykseen liittyvä on yksinkertaisesti noudattaa spesifikaatiota mitään muuta. Kaikki alkaa alusta, se kutsuu multiboot_entry, olemme määrittäneet multiboot-otsikon ensimmäisissä 4k: ssä ja laitamme sen (movlilla).
Myöhemmin kutsumme NextKernel_Main, joka on ytimen C-funktiomme. Silmukassa pysäytämme tietokoneen pysäyttämisen. Tämä kokoaa:
as -o kernel.o -c kernel.asm
Nyt siirrymme ohjelmointiin C: ssä. Luulet, että nyt kaikki on kakku, laitamme printf en tärkein ja siinä kaikki, olemme tehneet sen.
No ei, siitä lähtien printf y tärkein Nämä ovat käyttöjärjestelmän määrittelemiä toimintoja, mutta me luomme niitä! Voimme käyttää vain itse määrittelemiä toimintoja.
Myöhemmissä luvuissa puhun siitä, miten laitamme oman C-kirjastomme (glibc, bionic, newlibc), mutta aika ajoin. Olemme keskustelleet siitä, että haluamme laittaa tekstiä ruudulle, ja näemme, miten teemme sen.
On olemassa kaksi vaihtoehtoa, yksi on soittaa BIOS ja toinen on hallita näytön muistia suoraan. Aiomme tehdä jälkimmäisen, koska se on selkeämpi C: stä ja se antaa meille myös mahdollisuuden tehdä se, kun siirrymme suojattuun tilaan.
Luomme tiedoston nimeltä NextKernel_Main.c, jolla on seuraava sisältö:
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;
}
Tällä manipuloimme suoraan muistia VGA ja merkki hahmolta kirjoitamme sen. Käännämme poistamalla stdlib käytöstä:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Jos olet päässyt tähän mennessä, sinun kannattaa kokeilla upouutta käyttöjärjestelmääsi nyt, mutta emme ole vielä tehneet sitä. Tarvitsemme pienen tiedoston, joka kertoo kääntäjälle missä tiedostossa jättää jokaisen osan. Tämä tehdään linkkikirjoituksella. Luomme 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 = .;
}
Tällä määritellään kunkin osan sijainti ja alkupiste, jonka olemme määrittäneet kernel.asm-tiedostossa. Nyt voimme yhdistää kaiken tämän keittämisen:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Nyt kopioimme START.ELF seuraavaan kansioon, joka simuloi käyttöjärjestelmän juuria. Menemme konsolin avulla uuden käyttöjärjestelmän juurikansioon ja varmistamme, että tiedostoja on kaksi: yksi /boot/grub/grub.cfg ja toinen /sext/START.ELF.
Menemme ylempään hakemistoon ja kutsumme ISO-luontiohjelman, jossa GRUB on kutsuttu grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Kun olemme tehneet tämän, meillä on ISO. Tämä ISO voidaan avata tietokoneilla x86 (Myös 64 bittiä) ja virtuaalikoneet. Testaan sen, aion käyttää QEMU. Me kutsumme QEMU komentoriviltä:
qemu-system-i386 nextdivel.iso
Alkaa SeaBIOS ja myöhemmin meillä on GRUB. Myöhemmin, jos kaikki on oikein, näemme lauseemme.
Luulet, että tämä on vaikeaa, vastaan kyllä.
Käyttöjärjestelmän todellinen luominen on vaikeaa ja että tämä ei tee mitään hyödyllistä. Tulevissa luvuissa näemme kuinka käsitellä ruudun värejä, varata muistia ja jos pystyn, kuinka saada tietoja näppäimistöltä.
Jos joku ei halua kopioida kaikkea tähän, minulla on arkisto osoitteessa GitHub (tarkemmin) käyttöjärjestelmän kanssa SeuraavaDivel. Jos haluat koota SeuraavaDivel sinun täytyy vain olla git ja 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
Kehotan teitä tekemään yhteistyötä NextDivelin kanssa, jos sinulla on aikaa ja halua luoda käyttöjärjestelmä. Ehkä jopa parempi kuin Linux ... aika näyttää.
:O
Torvalds vei Minix-käyttöjärjestelmän (johdettu UNIX: sta) Andrew S. Tanenbaumille ja paransi sitä.
Tanenbaumilla on ollut taistelu Linuksen kanssa, he loukkaavat toisiaan. Tanenbaum sanoo, että mikrotukijärjestelmä on tulevaisuus (HURD, Minixin uusi kartion mikrotykki).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Tämä on ollut tähän mennessä paras viesti, jonka olen nähnyt tässä blogissa. Haluan jo tietää mitä tehdä.
Olla vaikuttunut
Todella vaikuttava!
FUUUUUUUAA!
Se on geekiest viesti, jonka olen koskaan nähnyt hehe. Onnittelut Adrián, huora-artikkeli! hyper mielenkiintoinen !!! 🙂
Olen samaa mieltä. Kuvittelen tämän tilanteen:
GNU / Linux-tehokäyttäjä (onnellisilla kasvoilla):
"Tiedän jo, kuinka koota Gentoo"
Nerd (halveksivalla asenteella): «pff, loin oman jakeluni ...»
Kyllä, voin luoda oman linux distro. Itse siinä kehitän initramfs: ää ja ydintä upotetulle linuxille. Käyttöjärjestelmän luominen ei ole sama asia kuin Linux-distro. Ensimmäinen on paljon vaikeampaa, melkein mahdotonta, toinen, kuten sanoitte, voi olla mikä tahansa, jopa Ubuntu, jossa xD-logo on muuttunut. Joten jätän sen näin:
GNU / Linux-tehokäyttäjä (onnellisilla kasvoilla)
- Tiedän jo, kuinka koota Gentoo
Puoliksi nörtti
- Pff, olen seurannut linuxia tyhjästä ja tehnyt oman distroni
Nörtti (halveksivalla asennolla)
- pff, koska olen ohjelmoinut ytimen assemblerissa ja C: ssä
Saludos!
Tämä on mielenkiintoista minulle seuraavia lukuja odotettaessa.
Näin tämän opetusohjelman jonkin aikaa sitten, se on tarkoitettu C ++: lle
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Kiitos linkistä, katson sen.
Haluaisin käyttöjärjestelmän, joka on 100% yhteensopiva AMD-grafiikan kanssa: /
Windows
hahaha Windows Catalystissa ei ole OpenGL-tukea, vaikka Linuxissa en pysty käyttämään kaikkea graafista voimaa, odotan edelleen, mitä tapahtuu!
odota vain, että venttiili pyyhkii pois markkinat
Maaginen, täydellinen, erinomainen panos, se näyttää upealta postaussarjalta 🙂
Buah Haluaisin tietää, miten ohjelmoida auttamaan sinua yksinkertaisesti tapana harjoitella tietäen, että opit ja autat. Tällä hetkellä jätän sinulle motto kiinnittää huomiota projektiin, kun olet valmis "Käytä NextDiveliä, porno näyttää samalta (tai paremmalta).", Voit pyyhkiä xD.
Mooooooolaaa !!!!
Erittäin hyvä artikkeli, mutta vain utelias, miksi et ole seurannut Linux From Scratch -projektia?
terveiset
No, Scratchin Linux on hieno, ja voit sanoa, että se on sinun, mutta se on todella hyvin mekaanista:
-Lataa fontit
-Käytä ne
-Koota
-Asentaa
-Seurata
Vaikka tulos loppujen lopuksi olisi huonompi, voit sanoa, että olet tarkistanut kaikki tiedostot.
Kuten edellisestä kommentistani käy ilmi, koska sen monimutkaisuus ei ole sama. Lisäksi linux tyhjästä ei oikeastaan ole, toisin kuin nimensä, järjestelmän luominen tyhjästä. Järjestelmän luominen tyhjästä tarkoittaa sen itse ohjelmointia, oman ytimen, ei linux-ytimen, kirjoittamista, jos mahdollista, jopa oman käynnistyslataimen grubin sijasta, lilo, syslinux jne. Vaikka LFS ei ole pieni feat ja melko monimutkainen, se ei edes tule lähelle oman ytimen ohjelmointia ...
Lisäksi olen samaa mieltä AdrianArroyo Callen kanssa siitä, että se on liian mekaaninen, olen lukenut sen joskus ja päätät luopua kuudennelta sivulta, he myös kertovat sinun käyttämään pakettiversioita, koska muuten ohjeet eivät toimi (että osoittaa joustavuuden puutetta, mielestäni). Mielestäni on parempi saada jokin oma ideasi, koota haluamasi paketit, jopa ohjelmoida jotkut, koota linux-ydin ja rauhassa.
Saludos!
uuuoooohh !! En ole koskaan kaapannut viestiä niin paljon kuin tämä.
Jatka 😀
En tiedä mikä on vialla:
virhe: ei multiboot-otsikkoa löytynyt.
virhe sinun täytyy ladata ydin ensin
Jos se lohduttaa, tein saman virheen. Yritä käyttää lähteitä, jotka ovat GitHubissa, siellä virhe on jo ratkaistu. Joka tapauksessa luulen, että jos muutat grub.cfg-rivin "multiboot /next/START.ELF" muotoon "ydin /next/START.ELF", se saattaa toimia. En tiedä tarkalleen.
Ensinnäkin upea sisäänkäynti 🙂
Minulla on sama ongelma ladata ydin grubista. Jopa GitHub-lähteiden käyttäminen tai monikäynnistyksen muuttaminen ytimelle ...
virhe: ei multiboot-otsikkoa löytynyt.
virhe: ei ladattua ydintä
Käytätkö clangia kääntäjänä? Vaihda se gcc: ksi
Oletko unohtanut käyttää linkinkirjoitusta? Se on välttämätöntä, jotta linkki (tapauksessamme ld) tietää, mihin tiedostoon se aikoo sijoittaa jokaisen asian. Tässä tapauksessa monikäynnistysotsikon on oltava alussa.
Käytätkö CMake-järjestelmää? Jos käytät sitä, mielestäni se ei onnistu.
Jos se ei toimi sinulle, yritän löytää toisen ratkaisun.
[+100]
Hienoa !!!
Se on todella siistiä 🙂
Otan hatun pois. Vaikuttava viesti. Onnittelut.
Vau!
Olisi hienoa, jos voisit avata HTML5- ja Javascript-sovelluksia ilman selainta, onko se mahdollista?
Puhun heidän olevan kuin natiivisovellukset.
Joten se olisi helppo ohjelmoida tälle käyttöjärjestelmälle 😀
Tässä tapauksessa en aio tehdä sitä, koska se vie paljon enemmän työtä sen takana, mutta on käyttöjärjestelmä nimeltä "on", joka tekee mitä sanot. Itse komentorivi on JavaScript, ja ikkunat piirretään JavaScript Canvas -toiminnoilla. Nintendon insinöörit tekivät sen ja nyt se on avoimen lähdekoodin.
http://code.google.com/p/es-operating-system/
Valla, kiitos tiedoista 😀
Minä katson
Kuka voi tehdä oman käyttöjärjestelmän, voi kuolla rauhallisesti, koska hänen on saavutettava älyllinen taso; Se saa sinut luopumaan taivaasta tai helvetistä.
Pala lähetystä.
toistaiseksi kukaan ei tiedetä tekevän vain jotain, jonka voidaan sanoa olevan kunnollinen käyttöjärjestelmä, joka on tehty tyhjästä, ei edes Linux Torvalds, kuten sanot alussa, koska tämä alkoi Unix-lähteistä ja kaikki muu on kirjoitettu yhteisesti muille kuin yksi ihminen, elämä on hyvin lyhyt ja alusta alusta on mahdotonta ajatella kenellekään, vaikka päinvastoin halutaankin, se on osoitettavissa monissa virheissä, joita Linux Torvalds tekee kopioinnissa ja liittämisessä
Unix-lähteet ovat suljettuja, minixin käyttö ... mikä on jotain muuta.
ja ne, jotka tekivät QDOS: n mitä?
perustuivat johonkin?
Katson, että kenellä ei ole omaa käyttöjärjestelmää, koska he eivät halua, hahahaha.
Nyt vakavasti, erittäin mielenkiintoinen! Paljon ylittää rajallisen ohjelmointitietoni, mutta luen tämän sarjan muut osat ennakolta.
Kiitos viestistä!
Jätit minulle O_O-kasvot ... ilman aikomusta aliarvioida kenenkään panosta, se on viime aikoina eniten "ammattilainen". Terveiset.
Erittäin hyvä artikkeli, Adrián. Ole hyvä ja jatka…
Vitsitkö hauskaa huhtikuun foolipäivänä?, Älä tarkoita "Emuloimme Linus Torvaldsia: Luo oma käyttöjärjestelmäsi tyhjästä". Minusta ei ole vaikeaa niille, jotka tekevät uraa jossakin tekniikan instituutissa tai yliopistossa; mutta minusta olen aloittelija jousimies (on niitä, jotka sanovat "Noob", mutta pidän itseäni enemmän aloittelijana hieman laiskana), joka kuulostaa siltä, ettei astu maahan. Joka tapauksessa tämä artikkeli luo paljon uteliaisuutta ja ilman kaksinkertaista ihailua ja kunnioitusta sen toimittajalle, onnittelut; Ensin yritän ymmärtää ainakin vähän tätä arvokasta materiaalia.
KIITOS Adrian Arroyo Calle, erinomainen työ ja jalo tiedon jakaminen.
LEL Erinomainen viesti, jatka sitä.
Mikä hieno postaus, tätä kaipasin desde linux. Ihana.
Hieno viesti, kiitos paljon.
En ymmärtänyt mitä link.ld-tiedosto tekee, voiko joku selittää sen minulle?
Link.ld-tiedosto kertoo linkkerille (tässä tapauksessa ld) missä sijainnissa tuloksena olevassa tiedostossa koodin jokaisen osan tulisi olla. Määritämme myös lähtökohdan, koska koska meillä ei ole käyttöjärjestelmää, emme voi käyttää mainia normaalina ohjelmana, tässä tapauksessa valitsemme käynnistystoiminnon.
Hienoa kaikki viestisi! Odotetaan 7! Entä jos minulla on epäilyksiä, esimerkiksi, jos halusin suorittaa vain algoritmin ilman käyttöjärjestelmää, mistä tiedän, mitä voin käyttää ja mitä ei C: tä?
Jos käytät sitä näin, et voisi käyttää mitään stdlibistä, jota käytännössä kaikki käyttävät (ei mallocia, ilmaista, printf, scanf, strcmp jne.). Kaikki on toteutettava suoraan muistista tai ASM: stä. Ehkä ylemmässä luvussa näytän, kuinka C-kirjasto asennetaan käyttöjärjestelmälle. Jos käytät C ++ --ohjelmaa, et voi käyttää poikkeuksia ja uusia ja poistaa operaattoreita (ja varmasti enemmän).
mielestäni tämä se voi antaa sinulle paremman käsityksen siitä, miten se tehdään.
Hei, noin 5 vuotta sitten seurasin samanlaista julkaisua ja kehitin mikrokennon, joka alkaa samalla tavalla, jossa on joitain parannettavia näkökohtia, mutta se saattaa kiinnostaa sinua, se toimii suojatussa tilassa, suorittaa moniajoa ja suorittaa muistin virtualisointia. siinä levyn ohjain ja cd-asema, jotta se olisi asennettava eikä pelkästään suorana CD-levynä ... Terveisiä.
Hyvä, minulla on virhe komentoa suoritettaessa:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -vapaasti seisova -lgcc
link.ld: 5 syntaksivirhe
collect2: error: ld palautti yhden poistumistilan
linkki.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
Rivillä 5 en näe virhettä, onko joku sama?
Työskentelen virtualisoidun debian-wheezyn kanssa virtualboxissa
lisää ";" * (. multiboot_header) lopussa
Erinomainen aloite, noudatan ehdottomasti tämän viestin lukuja, aikomalla oppia siitä paljon. Paljon kiitoksia siitä, että käytit aikaa opettaa meille. Yhden yksityiskohdan tältä osin on huomattava, että Linus Torvalds ei ole minkään käyttöjärjestelmän luoja, hän loi GNU / Linux-järjestelmän ytimen (sellaisen, jota on käytetty muissa käyttöjärjestelmissä), joka on edelleen arvoinen, mutta on tärkeää, että luotto Richard Stallmanille luodaan suurin osa käyttöjärjestelmästä.
Kiitos paljon panoksesta ja toivon, että otat huomioon huomautukseni.
Olen sekaisin aiheen kanssa jonkin aikaa, kiinnostuin heti lukiessani otsikon. mutta viesti jatkuu
virhe: ei multiboot-otsikkoa löytynyt.
virhe sinun täytyy ladata ydin ensin
Olen ladannut mitä vietän repoon githubiin https://github.com/rkmax/GenyOS
Sama tapahtuu minulle. Löysitkö ratkaisun?
kysymys, jonka aloin esitellä syntaksin ja menuentry-rivi kertoo minulle, ettei komentoa löytynyt, kuka voisi kertoa minulle miksi
Tämä on mitä teen
MUSTA @ MUSTA-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: komentoa ei löydy
Tämän sisällön sisältöä ei tule kirjoittaa komentoriville, vaan luomallesi tiedostolle nimeltä grub.cfg
Erinomainen artikkeli, kiitos!
Upea ... !! se on aivan kuin puuttuva linkki.
Rakastan emuloivasi LInus Torvaldsin opetusohjelmia, mutta on yksi vaihe, jota en ymmärrä, seuraava:
Nyt kopioimme START.ELF seuraavaan kansioon, joka simuloi käyttöjärjestelmän juuria. Menemme konsolin avulla uuden käyttöjärjestelmän juurikansioon ja varmistamme, että tiedostoja on kaksi: yksi /boot/grub/grub.cfg ja toinen /sext/START.ELF.
Menemme ylempään hakemistoon ja kutsumme apuohjelman ISO: n luomiseksi GRUB: lla nimeltä grub-mkrescue
Voisiko joku selittää sen minulle: s
Yksinkertaisesti luoda vähintään ISO, jonka GRUB voi ladata, kopioimme ytimen (ISO: n / minkä tahansa kansion / / next /START.ELF ja GRUB-määritystiedoston (ISO: n / minkä tahansa kansion / / / / grub / grub.cfg. Kun tämä on tehty, emme ole vielä asentaneet GRUB: ää ISO: han ja on apuohjelma, joka luo ISO: n kansiosta ja asentaa GRUB: n nimeltä grub-mkrescue. Sitten päädymme lopulta käynnistettävään ISO-järjestelmään, johon on asennettu GRUB, joka voi lukea kokoonpanon suorittamaan myöhemmin START.ELF oikein. En tiedä, olenko selittänyt itselleni, mutta mitä teemme, on eräänlainen väärä tiedostojärjestelmä, jolla luomme ISO: n.
Loistava
Katsokaa todellakin uutta järjestelmää niin paljon, mutta jos esimerkiksi parannat linuxia, luo linux exonucleus palvelinkomponentilla, joka toimii mikrosydämisenä, jos haluat, ts. Exo-rakenne, jossa on mikrotumakäyttäytymistä, joka olisi super ja linux.
Toinen asia on, että en ole ohjelmoinnin asiantuntija, vain muutama cheesy c ++ ja jotkut Java-ohjelmat, riittää, että annan linux-ydinohjelmalle moduulin, peraten sen, muokkaamalla sitä jne.
Epäilemättä minun on jo tehtävä lomalla.
Tämä hyvä ja missä ohjelmassa se suunnittelee ja koodaa sen?
anna minulle se vastaus
Kun koot gitistäsi, saan:
[jmponce @ jar build] $ cmake ..
- NextRoot-hakemiston luominen
- Luodaan ISO-komentosarja
make DESTDIR = seuraava asennus
./iso.sh
- Löydetty Doxygen: / usr / bin / doxygen (löydetty versio "1.8.9")
- Konfigurointi valmis
- Luotu valmis
- Rakennustiedostot on kirjoitettu osoitteeseen: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Kohteen START.ELF skannausriippuvuudet
[7%] ASM-ATT-objektin src / CMakeFiles / START.ELF.dir / start / boot.asm.o rakentaminen
[14%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o rakentaminen
[21%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o rakentaminen
[28%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o rakentaminen
[35%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o rakentaminen
[42%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o rakentaminen
[50%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o rakentaminen
[57%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o rakentaminen
[64%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o rakentaminen
[71%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o rakentaminen
[78%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o rakentaminen
[85%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o rakentaminen
[92%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o rakentaminen
[100%] CXX-objektin src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o rakentaminen
Linkitetään CXX-suoritettava START.ELF
/ usr / bin / ld: Yhteensopimaton /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a ohitetaan, kun etsitään -lgcc: tä
/ usr / bin / ld: -lgcc ei löydy
collect2: error: ld palautti poistumistilan 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Virheelliset ohjeet kohteelle 'src / START.ELF'
tee [2]: *** [src / START.ELF] Virhe 1
CMakeFiles / Makefile2: 106: Kohteen 'src / CMakeFiles / START.ELF.dir / all' epäonnistuneet ohjeet
tee [1]: *** [src / CMakeFiles / START.ELF.dir / all] Virhe 2
Makefile: 117: Kohde "kaikki" -ohjeiden epäonnistuminen
make: *** [kaikki] Virhe 2
Virhe näyttää olevan se, että se ei löydä llibgcc-tiedostoa, koska sinulla on 64-bittinen versio ja tällä hetkellä rakennusjärjestelmä on pakko käyttää 32-bittistä. Asenna yhteensopivuuspaketti distroosi tai parempi, käytä 32-bittistä järjestelmää.
Minulla on 32 bittiä ja saan saman virheen, tarkoitatko käyttöjärjestelmää tai arkkitehtuuria? minun on 64-bittinen, mutta käytän 32-bittistä Ubuntua, älä kysy, taloudellisia ongelmia, sanon sen kaiken.
Erinomainen aihe, odottaa laajempaa laajuutta. Kippis
Hienoa toivon lisää
Hei, olen nuori suurlähettiläs, joka haluaa luoda käyttöjärjestelmän, joka tukee kaikkia ohjelmia ja alustoja, jotta kehittäjillä ei tarvitse olla tehokkaita koneita tai sovelluksia tai ohjelmia tietokoneella.
Siksi olen kiinnostunut tästä viestistä, mutta kun lataan gitin tai yritän luoda sen, kaikki menee hyvin, kunnes suoritan komennon ./iso.sh tai grub-mkrescue -o nextdivel.iso nextroot saat tämän virheen
"Grub-mkrescue: varoitus: xorrisosi ei tue" –grub2-boot-info ". Jotkin ominaisuudet on poistettu käytöstä. Käytä xorriso 1.2.9 tai uudempaa.
grub-mkrescue: varoitus: xorriso ei tue "–grub2-boot-info". Ytimen kuva on liian suuri. Levyn käynnistys on poistettu käytöstä. Käytä xorriso 1.2.9 tai uudempaa .. »
Minulla ei todellakaan ole aavistustakaan, koska tiedän paljon sovelluksista ja webistä, mutta en tiedä mitään grubista
Saatat joutua päivittämään xorriso-ohjelman distroosi. Mitä distroa ja versiota käytät?
Käytän xubuntua 14.04lts ja yritän suorittaa xorriso, mutta kuori kertoo minulle, että sitä ei löydy, ja saan apt-get install xorrison, vaikka odotin vilpittömästi vastausta, koska minulla oli huono kokemus sellaisten asioiden asentamisesta, joita en tiedä linuxissa hehe . Päivitän sen juuri nyt ja kerron sinulle mitä tapahtui
Asenna sitten xorriso ohjelmistokeskuksesta tai yksinkertaisesti terminaalista "sudo apt-get install xorriso"
Tein jo kaiken mitä kerroit minulle, ja sekä gitin että minun kanssa saan tämän xorriso 1.3.2: RockRidgen tiedostojärjestelmän manipulaattorin, libburnia-projektin.
Käyttövirta: -outdev 'stdio: nextdivel.iso'
Median nykyinen: stdio-tiedosto, korvattava
Median tila: on tyhjä
Median yhteenveto: 0 istuntoa, 0 tietolohkoa, 0 dataa, 1901 miljoonaa vapaata
Lisätty ISO-kuvaan: hakemisto '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 tiedostoa lisättiin 1 sekunnissa
xorriso: VIKA: Lähdetiedoston '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot' määritteitä ei voida määrittää: Ei tällaista tiedostoa tai hakemistoa
xorriso: UPDATE: 546 tiedostoa lisättiin 1 sekunnissa
xorriso: aborting: -abort_on 'FAILURE' havaitsi 'FAILURE'
ja vakosametti En ymmärrä rakennettani /nextroot/boot/grub/grub.cfg ja nextroot / next / START.ELF
Kiitos, olen valmis siirtymään eteenpäin, ystäväni auttoi minua ja kertoi minulle, mitä tein väärin, oli hakemiston organisaatio, joten selvitin sen ja kaikki.
Anteeksi, voitko kertoa mitä menettelyt teit, koska virhe ei käynnisty: ei tällaista tiedostoa tai hakemistoa
ei käynnistettävää laitetta.
Kippis! Aioin pyytää sinulta palvelusta, jos voisit lähettää minulle sähköpostia selittämäsi kanssa, olen hieman hämmentynyt ja minun on verrattava mitä minulla on siihen, mitä selität, ehkä minulle ei ole selvää grub.cfg luodaan pääte gcc: ssä tai missä tarkalleen? Kiitos todella paljon ystävä!
Luod tiedoston grub.cfg millä tahansa tekstieditorilla ja sinun on tallennettava se kansioon PROJECT_FOLDER / boot / grub / grub.cfg
Hei Adrian, ensinnäkin onnittelen sinua ja kiitos panoksestasi.
Tiedät, että teen tämän harjoittelun vuoksi ja aloitin sen yhdistämisen opetuksesi jälkeen, mutta aloituksen jälkeen löysin ensimmäisen virheen
$ as -o kernel.o -c kernel.asm
bash: as: komentoa ei löydy ...
Samanlaisia komentoja ovat:
'sa'
'ac'
Työskentelen fedora 20: n parissa, enkä löydä ratkaisua tähän asiaan, kiitän ohjaustasi siitä, pitäisikö minun muuttaa jotain gcc: ssä tai kaasussa
etukäteen kiitos
Sinun on asennettava GAS, jotta voin nähdä virhekoodin. Minulla ei ole Fedoraa käsillä, mutta teoriassa jos asennat gcc-c ++, asennat koko GCC-paketin ja GNU: n, kuten tavallisesti mukana.
Olen kanssasi, tiedän jotain C ++: sta, C #: sta (vaikka tämä viimeinen ei ole kovin hyödyllinen tässä asiassa), huono asia on, että minulla ei vielä ole kokemusta, en koskaan käsittele C-kieltä, julkaisusi on hieno Minulla ei ole paljon sanottavaa, jos minulla on aikaa näen. Kiitos.
Paljon kiitoksia suuresta avusta ...
Rakastan linuxia, se on paras piiri, totuus on, että ikkunoissani on roskaa, jonka tiedän, että linuxin luoja on windowsin luoja
Hei saan virheen grub sanoo
virhe: tiedosto /sext/START.ELF ei löydy
virhe: sinun on ensin ladattava ydin
Voisitko auttaa minua ja googlata, mutta en löydä
Ole hyvä, miten saan sen näyttämään viestin HELLO MAAILMA? Olen aloittelija enkä tiedä tarpeeksi
Minulle tapahtuu seuraava:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -vapaasti seisova -lgcc
/ usr / bin / ld: kernel.o: R_X86_64_32: n siirtämistä symbolin `pinoon 'ei voida käyttää PIE-objektia tehtäessä; käännä uudelleen -fPIE: n kanssa
/ usr / bin / ld: viimeinen linkki epäonnistui: edustamaton osa tuotoksesta
collect2: error: ld palautti yhden poistumistilan