Lion Torvaldsin jäljitteleminen: Luo oma käyttöjärjestelmä tyhjästä (I)

Ensinnäkin kommentoi, että tämä on ensimmäinen artikkelini ja että toivon, että pidät siitä kaikista.

Linus Torvals onnellinen

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ää.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   vilkas dijo

    :O

    1.    marianogaudix dijo

      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

  2.   eliotime3000 dijo

    Tämä on ollut tähän mennessä paras viesti, jonka olen nähnyt tässä blogissa. Haluan jo tietää mitä tehdä.

  3.   Carlos dijo

    Olla vaikuttunut

  4.   axl dijo

    Todella vaikuttava!

  5.   Rhoconlinux dijo

    FUUUUUUUAA!
    Se on geekiest viesti, jonka olen koskaan nähnyt hehe. Onnittelut Adrián, huora-artikkeli! hyper mielenkiintoinen !!! 🙂

    1.    Joaquin dijo

      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 ...»

      1.    desikoderi dijo

        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!

  6.   Cronos dijo

    Tämä on mielenkiintoista minulle seuraavia lukuja odotettaessa.

  7.   abimaelmartell dijo

    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

    1.    AdrianArroyoKatu dijo

      Kiitos linkistä, katson sen.

  8.   Jose Jácome dijo

    Haluaisin käyttöjärjestelmän, joka on 100% yhteensopiva AMD-grafiikan kanssa: /

    1.    ivanlinux dijo

      Windows

      1.    Jose Jácome dijo

        hahaha Windows Catalystissa ei ole OpenGL-tukea, vaikka Linuxissa en pysty käyttämään kaikkea graafista voimaa, odotan edelleen, mitä tapahtuu!

        1.    beny_hm dijo

          odota vain, että venttiili pyyhkii pois markkinat

  9.   KZKG ^ Gaara dijo

    Maaginen, täydellinen, erinomainen panos, se näyttää upealta postaussarjalta 🙂

  10.   O_Pixote_O dijo

    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.

  11.   tämä nimi on väärä dijo

    Mooooooolaaa !!!!

  12.   nordi dijo

    Erittäin hyvä artikkeli, mutta vain utelias, miksi et ole seurannut Linux From Scratch -projektia?

    terveiset

    1.    AdrianArroyoKatu dijo

      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.

    2.    desikoderi dijo

      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!

  13.   pikkuleipä dijo

    uuuoooohh !! En ole koskaan kaapannut viestiä niin paljon kuin tämä.
    Jatka 😀

  14.   linux_user dijo

    En tiedä mikä on vialla:

    virhe: ei multiboot-otsikkoa löytynyt.
    virhe sinun täytyy ladata ydin ensin

    1.    AdrianArroyoKatu dijo

      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.

      1.    mcbanana dijo

        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ä

        1.    AdrianArroyoKatu dijo

          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.

  15.   khourt dijo

    [+100]
    Hienoa !!!

  16.   näkymätön15 dijo

    Se on todella siistiä 🙂

  17.   tanrax dijo

    Otan hatun pois. Vaikuttava viesti. Onnittelut.

  18.   mies dijo

    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 😀

    1.    AdrianArroyoKatu dijo

      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/

      1.    mies dijo

        Valla, kiitos tiedoista 😀
        Minä katson

  19.   patodx dijo

    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ä.

    1.    Miguel dijo

      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ä

      1.    skarmiglione dijo

        Unix-lähteet ovat suljettuja, minixin käyttö ... mikä on jotain muuta.

      2.    Philip Robaina dijo

        ja ne, jotka tekivät QDOS: n mitä?
        perustuivat johonkin?

  20.   Tesla dijo

    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ä!

  21.   Manuel R. dijo

    Jätit minulle O_O-kasvot ... ilman aikomusta aliarvioida kenenkään panosta, se on viime aikoina eniten "ammattilainen". Terveiset.

  22.   aitor_cz dijo

    Erittäin hyvä artikkeli, Adrián. Ole hyvä ja jatka…

  23.   mj dijo

    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.

  24.   Blaire pascal dijo

    LEL Erinomainen viesti, jatka sitä.

  25.   f3niX dijo

    Mikä hieno postaus, tätä kaipasin desde linux. Ihana.

  26.   Rubiini dijo

    Hieno viesti, kiitos paljon.
    En ymmärtänyt mitä link.ld-tiedosto tekee, voiko joku selittää sen minulle?

    1.    AdrianArroyoKatu dijo

      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.

  27.   Maxi dijo

    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ä?

    1.    AdrianArroyoKatu dijo

      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).

    2.    kytkin dijo

      mielestäni tämä se voi antaa sinulle paremman käsityksen siitä, miten se tehdään.

  28.   Esteban dijo

    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ä.

  29.   johan dijo

    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

    1.    Julian Reyes Escrigas paikkamerkki dijo

      lisää ";" * (. multiboot_header) lopussa

  30.   Eric Orellana Romero dijo

    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.

  31.   Julian Reyes Escrigas paikkamerkki dijo

    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

    1.    martin villalba dijo

      Sama tapahtuu minulle. Löysitkö ratkaisun?

  32.   Carlos dijo

    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

    1.    AdrianArroyoKatu dijo

      Tämän sisällön sisältöä ei tule kirjoittaa komentoriville, vaan luomallesi tiedostolle nimeltä grub.cfg

  33.   Nodetin dijo

    Erinomainen artikkeli, kiitos!

  34.   David dijo

    Upea ... !! se on aivan kuin puuttuva linkki.

  35.   r.garciag dijo

    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

    1.    AdrianArroyoKatu dijo

      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.

  36.   miguel jose guevara huomio dijo

    Loistava

  37.   Michael Moreno dijo

    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.

  38.   TalviSotilas 53 dijo

    Epäilemättä minun on jo tehtävä lomalla.

  39.   Fermin dijo

    Tämä hyvä ja missä ohjelmassa se suunnittelee ja koodaa sen?
    anna minulle se vastaus

  40.   Darkmind dijo

    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

    1.    AdrianArroyoKatu dijo

      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ää.

      1.    Ronaldo Rodríguez dijo

        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.

  41.   Jorge dijo

    Erinomainen aihe, odottaa laajempaa laajuutta. Kippis

  42.   Jhon dijo

    Hienoa toivon lisää

  43.   Vältä perez dijo

    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

    1.    AdrianArroyoKatu dijo

      Saatat joutua päivittämään xorriso-ohjelman distroosi. Mitä distroa ja versiota käytät?

      1.    Vältä perez dijo

        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

      2.    AdrianArroyoKatu dijo

        Asenna sitten xorriso ohjelmistokeskuksesta tai yksinkertaisesti terminaalista "sudo apt-get install xorriso"

      3.    Vältä perez dijo

        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

      4.    Vältä perez dijo

        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.

      5.    erik dijo

        Anteeksi, voitko kertoa mitä menettelyt teit, koska virhe ei käynnisty: ei tällaista tiedostoa tai hakemistoa

        ei käynnistettävää laitetta.

  44.   jose dijo

    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ä!

    1.    AdrianArroyoKatu dijo

      Luod tiedoston grub.cfg millä tahansa tekstieditorilla ja sinun on tallennettava se kansioon PROJECT_FOLDER / boot / grub / grub.cfg

  45.   jhuazano dijo

    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

    1.    AdrianArroyoKatu dijo

      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.

  46.   Gaston Ramirez dijo

    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.

  47.   Teresita del jeesus nah sanchez dijo

    Paljon kiitoksia suuresta avusta ...

  48.   jky dijo

    Rakastan linuxia, se on paras piiri, totuus on, että ikkunoissani on roskaa, jonka tiedän, että linuxin luoja on windowsin luoja

  49.   Rode dijo

    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ä

  50.   Henry Avila dijo

    Ole hyvä, miten saan sen näyttämään viestin HELLO MAAILMA? Olen aloittelija enkä tiedä tarpeeksi

  51.   CARLOS GUERRERO ALVAREZ dijo

    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