Linus Torvaldsi matkimine: looge oma operatsioonisüsteem nullist (I)

Kõigepealt kommenteerige, et see on minu esimene artikkel ja et ma loodan, et see teile kõigile meeldib.

Linus Torvals õnnelik

Selles sarjas me jäljendame Linus Torvalds, loome oma operatsioonisüsteemi alates 0. Selles esimeses osas näeme alglaadimist ja paneme oma kernelilt ekraanile teksti.

Minu puhul nimetatakse operatsioonisüsteemi JärgmineDivel. Esimene otsus, mille peame tegema kohe pärast operatsioonisüsteemi kaalumist, on see, mis saab olema alglaadur?

Siin on mitu varianti ja me võiksime selle isegi ise luua; aga selles õpetuses kavatsen ma seda kasutada GRUB, sest enamik teab temast enam-vähem midagi. Loome kausta, mis saab olema meie operatsioonisüsteemi juur, ja seal loome kausta / boot / grub

mkdir nextroot && cd nextroot

mkdir -p boot/grub

Seal loome grub.cfg faili järgmiselt:

menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}

Selles failis oleme näinud kuidas GRUB laadib sel juhul meie tuuma kataloogi /next/START.ELF. Nüüd peame looma oma tuuma.

Selleks vajame GCC y GAS (projekti koostaja GNU, tavaliselt kaasas gcc). Nii et me loome kerneli.

Kõigepealt valmistame faili kernel.asm. See fail sisaldab meie kerneli alguspunkti ja määratleb ka mitme alglaadimise (mõne alglaaduri funktsioon nagu GRUB). Kernel.asmi sisu 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

Kõik, mis on seotud mitme käivitusega, on lihtsalt spetsifikatsiooni järgimine. Kõik algab alguses, see kutsub multiboot_entry, oleme määranud mitme alglaadimise päise esimeses 4k-s ja paneme selle (movliga).

Hiljem kutsume NextKernel_Main, mis on meie tuuma C funktsioon. Silmus peatume arvuti peatamiseks. See koostab koos:

as -o kernel.o -c kernel.asm

Nüüd hakkame sisestama programmeerimise C.-sse. Te arvate, et nüüd on kõik koogitükk, panime a printf en põhiline ja see on kõik, me oleme seda teinud.

No ei, kuna printf y põhiline need on funktsioonid, mille operatsioonisüsteem määratleb, kuid me loome neid! Saame kasutada ainult neid funktsioone, mille ise määratleme.

Hilisemates peatükkides räägin sellest, kuidas panna oma C-teek (glibc, bionic, newlibc), kuid aeg-ajalt. Oleme arutanud, et tahame teksti ekraanile panna, eks me näe, kuidas me seda teeme.

On kaks võimalust, üks on helistada BIOS ja teine ​​on otse ekraanimälu haldamine. Teeme viimast, sest see on C-st selgem ja see võimaldab meil seda teha ka siis, kui siseneme kaitstud režiimi.

Loome järgmise sisuga faili nimega NextKernel_Main.c:

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;
}

Sellega manipuleerime otse mäluga VGA ja tähemärgi kaupa me seda kirjutame. Koostame stdlibi keelamise abil:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding

Kui olete nii kaugele jõudnud, tahate proovida oma uhiuut operatsioonisüsteemi kohe, kuid me pole veel lõpetanud. Vajame väikest faili, mis ütleb kompilaatorile, kus failis igast osast lahkuda. Seda tehakse linkeri skriptiga. Loome 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 = .;
}

Sellega määratleme iga sektsiooni asukoha ja alguspunkti, mille oleme määratlenud failis kernel.asm. Nüüd saame ühendada kogu selle segu:

gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc

Nüüd kopeerime START.ELF oma kausta, mis simuleerib meie operatsioonisüsteemi juuri. Läheme konsooliga oma uue operatsioonisüsteemi juurkausta ja kontrollime, kas faile on kaks: üks /boot/grub/grub.cfg ja teine ​​/next/START.ELF.

Me läheme ülemisse kataloogi ja kutsume ISO loomise utiliidi, mille nimi on GRUB grub-mkrescue

grub-mkrescue -o nextdivel.iso nextroot

Kui oleme selle teinud, on meil ISO. Seda ISO-d saab avada arvutites x86 (64 bitti ka) ja virtuaalmasinad. Selle testimiseks hakkan kasutama QEMU. Me helistame QEMU käsurealt:

qemu-system-i386 nextdivel.iso

Algab SeaBIOS ja hiljem saame GRUB. Hiljem, kui kõik on õige, näeme meie fraasi.
Te arvate, et see on keeruline, ma vastan, jah.

Operatsioonisüsteemi loomine on keeruline ja see siin ei tee midagi kasulikku. Järgmistes peatükkides näeme, kuidas ekraanil värve käsitseda, mälu reserveerida ja kui saan, siis kuidas klaviatuurilt andmeid hankida.

Kui keegi ei taha kõike siia kopeerida, on mul aadressil hoidla GitHub (täpsemalt) koos operatsioonisüsteemiga JärgmineDivel. Kui soovite koostada JärgmineDivel teil peab lihtsalt olema 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

Kui teil on aega ja soovi operatsioonisüsteemi loomiseks, soovitan teil teha koostööd NextDiveliga. Ehk isegi Linuxist parem ... näitab aeg.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   elav DIJO

    :O

    1.    marianogaudix DIJO

      Torvalds viis Minixi operatsioonisüsteemi (tuletatud UNIX-ist) Andrew S. Tanenbaumi kätte ja täiustas seda.

      Tanenbaum on Linusega tülli läinud, nad solvasid üksteist. Tanenbaum ütleb, et mikrokernel on tulevik (HURD, Minixi uus koonus mikrokernel).

      http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html

  2.   eliotime3000 DIJO

    See on olnud siiani parim postitus siin blogis. Ma tahan juba teada, mida veel teha.

  3.   Carlos. Gude DIJO

    Ole muljet avaldanud

  4.   telg DIJO

    Tõesti muljetavaldav !!

  5.   Rhoconlinux DIJO

    FUUUUUUA!
    See on geekiest postitus, mida ma kunagi näinud olen hehe. Palju õnne Adrián, hoora artikkel! hüper huvitav !!! 🙂

    1.    Joaquin DIJO

      Nõustun. Ma kujutan seda olukorda ette:
      GNU / Linuxi kasutaja (õnneliku näoga):
      "Ma juba tean, kuidas oma Gentoo koostada"

      Nerd (põlgliku suhtumisega): «pff, ma olen loonud oma turustaja ...»

      1.    desikooder DIJO

        Jah, ma saan luua oma linux distro. Tegelikult töötan selles sisseehitatud Linuxi jaoks initramfsi ja tuuma. Operatsioonisüsteemi loomine pole sama mis linux distro. Esimene on palju raskem, peaaegu võimatu, teine, nagu te ütlesite, võib olla ükskõik milline, isegi xD logoga Ubuntu on muutunud. Nii et jätaksin selle järgmiselt:

        GNU / Linuxi kasutaja (õnneliku näoga)
        - Ma juba tean, kuidas oma Gentoo koostada

        Pool-Nerd
        - Pff, olen järginud linuxi nullist ja teinud oma distro

        Nerd (põlgliku suhtumisega)
        - pff, sest ma olen programmeerinud tuuma assembleris ja C-s

        Saludos!

  6.   Cronose DIJO

    See on minu jaoks huvitav järgmiste peatükkide ootel.

  7.   abimaelmartell DIJO

    Nägin seda õpetust mõni aeg tagasi, see on mõeldud C ++ jaoks
    https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

    1.    AdrianArroyo tänav DIJO

      Täname lingi eest, vaatan selle üle.

  8.   Jose Jácome DIJO

    Sooviksin 100% AMD graafikaga ühilduvat operatsioonisüsteemi: /

    1.    ivanlinux DIJO

      Windows

      1.    Jose Jácome DIJO

        hahaha Windows Catalystis pole OpenGL-i tuge, kuigi Linuxis ei saa ma kasutada kogu graafilist jõudu, ootan edasi, et näha, mis juhtub!

        1.    beny_hm DIJO

          lihtsalt oodake, kuni klapp turu hävitab

  9.   KZKG ^ Gaara DIJO

    Maagiline, täiuslik, suurepärane panus, see näeb välja nagu suurepärane postituste seeria 🙂

  10.   O_Piksoot_O DIJO

    Buah, ma tahaksin teada, kuidas programmeerida sind aitama, lihtsalt kui võimalust harjutada teadmistega, mida sa õpid, ja üks neist aitab. Praegu jätan teile moto juhtida projekti tähelepanu, kui olete selle lõpetanud "Kasuta NextDivel, porn näeb välja sama (või parem).", Sa pühid xD.

  11.   see nimi on vale DIJO

    Mooooooolaaa !!!!

  12.   nordi DIJO

    Väga hea artikkel, kuid lihtsalt uudishimulik, miks te pole projekti Linux From Scratch järginud?

    seoses

    1.    AdrianArroyo tänav DIJO

      Noh, Scratchi Linux on korras ja võite öelda, et see on teie, kuid see on tõesti väga mehaaniline:
      - Laadige alla fondid
      -Plaan nad
      - Koosta
      -Paigaldage
      -Järgnev
      Isegi kui tulemus on lõpuks halvem, võite siin öelda, et olete kõik failid üle vaadanud.

    2.    desikooder DIJO

      Nagu selgub minu eelmisest kommentaarist, sest selle keerukus ei ole sama. Pealegi ei ole linux nullist vastupidi oma nimele süsteemi loomine nullist. Süsteemi loomine nullist on selle ise programmeerimine, kirjutades oma, mitte Linuxi tuuma, võimaluse korral grubi asemel isegi oma alglaaduri, lilo, syslinux jne. Kuigi LFS ei ole väike saavutus ja on üsna keeruline, ei lähe see isegi teie enda kerneli programmeerimise lähedale ...

      Lisaks nõustun AdrianArroyo Calle'iga, et see on liiga mehaaniline, olen seda kunagi lugenud ja lõpetate kuuendal lehel, nad ütlevad ka, et kasutage pakettide mis versioone, sest muidu ei tööta juhised (see näitab paindlikkuse puudumist, minu arvates). Ma arvan, et parem on omada midagi oma ideest, koostada soovitud paketid, isegi mõned programmeerida, kompileerida Linuxi kernel ja rahus.

      Saludos!

  13.   küpsis DIJO

    uuuoooohh !! Ma pole kunagi varem postitust nii palju jäädvustanud kui see.
    Palun jätkake 😀

  14.   linux_user DIJO

    Ma ei tea, mis viga on:

    viga: mitme käivituse päist ei leitud.
    viga peate kõigepealt laadima kerneli

    1.    AdrianArroyo tänav DIJO

      Kui see lohutab, tegin sama vea. Proovige kasutada GitHubi allikaid, seal on viga juba lahendatud. Igatahes arvan, et kui muudate rea grub.cfg väärtusest "multiboot /next/START.ELF" koodiks "kernel /next/START.ELF", võib see toimida. Ma ei tea täpselt.

      1.    mcbanana DIJO

        Esiteks suurepärane sissepääs 🙂
        Mul on sama probleem tuuma grubist laadimisel. Isegi GitHubi allikate kasutamisel või mitme käivitusprogrammi muutmiseks kerneli jaoks ...

        viga: mitme käivituse päist ei leitud.
        viga: laadimata kernel puudub

        1.    AdrianArroyo tänav DIJO

          Kas kasutate kompilaatorina clangi? Muutke see gcc jaoks
          Kas olete unustanud linkeri skripti kasutada? See on vajalik selleks, et linker (meie puhul ld) teaks, kuhu faili ta iga asja paneb. Sel juhul peab mitme alglaadimise päis olema alguses.
          Kas kasutate CMake süsteemi? Kui te seda kasutate, arvan, et see ei õnnestu.
          Kui see teile ei sobi, proovin leida mõne muu lahenduse.

  15.   khourt DIJO

    [+100]
    Lihtsalt suurepärane !!!

  16.   nähtamatu15 DIJO

    See on väga lahe 🙂

  17.   tanrax DIJO

    Võtan mütsi ära. Muljetavaldav postitus. Palju õnne.

  18.   mees DIJO

    Vau!
    Tore oleks, kui saaksite avada HTML5-s ja Javascriptis tehtud rakendusi ilma brauserit kasutamata, kas see on võimalik?
    Ma räägin, et need oleksid nagu omakeelsed rakendused.
    Nii et selle opsüsteemi jaoks oleks seda lihtne programmeerida 😀

    1.    AdrianArroyo tänav DIJO

      Sel juhul ma ei kavatse seda teha, sest see nõuab palju rohkem tööd, kuid on olemas operatsioonisüsteem nimega "on", mis teeb seda, mida te ütlete. Tegelikult on käsurida JavaScripti ja aknad joonistatakse Canvas JavaScripti funktsioonide abil. Nintendo insenerid tegid seda ja nüüd on see avatud lähtekoodiga.

      http://code.google.com/p/es-operating-system/

      1.    mees DIJO

        Valla, aitäh info eest 😀
        Vaatan järele

  19.   patodx DIJO

    Kes suudab oma OS-i teha, võib rahulikult surra, kuna intellektuaalne tase, mille ta sellega peab saavutama; See paneb teid loobuma taevast või põrgust.
    Tükk postitust.

    1.    Miguel DIJO

      Siiani pole keegi teadaolevalt teinud ainult midagi sellist, mille kohta võiks öelda, et see on korralik nullist tehtud operatsioonisüsteem, isegi mitte Linux Torvalds, nagu te alguses ütlete, kuna see sai alguse Unixi allikatest ja kõik muu on kirjutatud ühiselt rohkematele kui üks inimene, on elu väga lühike ja nullist alustamine pole kellelegi mõeldav, isegi kui soovitakse vastupidist, on see demonstreeritav paljudes Linux Torvaldsi kopeerimisel ja kleepimisel tehtud vigades

      1.    skarmiglione DIJO

        Unixi allikad on suletud, minixi kasutamine ... mis on midagi muud.

      2.    Philip Robaina DIJO

        ja need, kes QDOS-i tegid?
        põhinesid millelgi?

  20.   Teslal DIJO

    Minu arvates on see, et kellel pole oma opsüsteemi, sellepärast, et nad ei taha, hahahaha.

    Nüüd tõsiselt, väga huvitav! Palju on väljaspool minu piiratud programmeerimisteadmisi, kuid loen selle sarja teisi osi innukalt.

    Aitäh postituse eest!

  21.   Manuel R. DIJO

    Jätsite mulle O_O näo ... kavatsemata kellegi panust alahinnata, see on kõige rohkem "proff", mida olen viimasel ajal näinud. Tervitades.

  22.   aitor_cz DIJO

    Väga hea artikkel, Adrián. Palun jätkake…

  23.   mj DIJO

    Kas te nalja teete aprillinaljapäeval?, Ärge pidage silmas "Linus Torvaldsi jäljendamine: looge oma operatsioonisüsteem nullist". Ma ei arva, et see on keeruline neil, kes teevad karjääri mõnes tehnoloogiainstituudis või ülikoolis; aga minu jaoks olen algaja vibulaskja (on ka neid, kes ütlevad "Noob", aga pean ennast algajaks pigem laisaks), mis kõlab nagu maale astumata jätmine. Igatahes loob see artikkel palju uudishimu ja ilma kaheldava imetluseta ning austust oma toimetajale, PALJU ÕNNE; Esimese asjana proovin vähemalt natuke sellest väärtuslikust materjalist aru saada.
    TÄNU Adrian Arroyo Calle, suurepärane töö ja üllas teadmiste edastamine.

  24.   Blaire pascal DIJO

    LEL Suurepärane postitus, hoidke seda.

  25.   f3niX DIJO

    Kui suurepärane postitus, just sellest jäin ilma desde linux. Imeline.

  26.   rubiin DIJO

    Suurepärane postitus, suur aitäh.
    Ma ei saanud aru, mida link.ld fail teeb, kas keegi oskab seda mulle seletada?

    1.    AdrianArroyo tänav DIJO

      Fail link.ld ütleb linkerile (antud juhul ld), kus tulemuse failis peaks olema koodi iga osa. Samuti määratleme sisestuspunkti, kuna kuna meil pole opsüsteemi, ei saa me tavalise programmina kasutada maini, valime sel juhul algusfunktsiooni.

  27.   Maxi DIJO

    Suurepärane kogu teie postitus! Ootan seitset! Mis saab siis, kui mul on kahtlusi, näiteks kui ma sooviksin käivitada ainult algoritmi, ilma operatsioonisüsteemita, kuidas ma tean, mida ma saan kasutada ja mida mitte C?

    1.    AdrianArroyo tänav DIJO

      Kui kasutate seda niimoodi, ei saa te midagi kasutada stdlib-ist, mida kõik praktiliselt kasutavad (ei malloci, tasuta, printfi, scanfi, strcmp-i jne). Kõik tuleb rakendada otse mälust või ASM-ist. Võib-olla näitan kõrgemas peatükis, kuidas installida operatsioonisüsteemi C-teek. Kui kasutate C ++, ei saa te kasutada erandeid ning uusi ja kustutatavaid operaatoreid (ja kindlasti rohkem).

    2.    lüliti DIJO

      ma mõtlen esto see võib anda teile parema ülevaate, kuidas seda teha.

  28.   Esteban DIJO

    Tere, umbes 5 aastat tagasi jälgisin sarnast väljaannet ja töötasin välja samamoodi algava mikrotuuma, sellel on mõningaid aspekte, mida parandada, kuid see võib teid huvitada, see töötab kaitstud režiimis, täidab mitme ülesande täitmist ja teostab mälu virtualiseerimist, Viimasel ajal töötasin selle kettadraiveri ja CD-draivi kallal, et muuta see installitavaks ja mitte ainult live-CD-l töötama ... Tervitused.

  29.   Johan DIJO

    Kallis, mul on käsu täitmisel viga:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc

    link.ld: 5 süntaksiviga
    collect2: tõrge: ld tagastas 1 väljumise oleku

    link.ld
    . = 0x00100000;
    .multiboot_header: {
    * (. multiboot_header)
    }

    5. reas ma viga ei näe, kas temaga juhtub sama asi?

    Töötan virtualiseeritud debianvihinaga virtualboxis

    1.    Julian Reyes Escrigas kohahoidja pilt DIJO

      lisage ";" * lõpus (. multiboot_header)

  30.   Eric Orellana Romero DIJO

    Suurepärane algatus, järgin kindlasti selle postituse peatükke, kavatsedes sellest palju õppida. Suur aitäh, et leidsite aega meie õpetamiseks. Selles osas tuleb märkida, et Linus Torvalds ei ole ühegi operatsioonisüsteemi looja, ta lõi GNU / Linuxi süsteemi tuuma (selle, mida on kasutatud teistes operatsioonisüsteemides), mis on endiselt väärt, kuid see on oluline, et Richard Stallman saaks au enamiku operatsioonisüsteemi loomisest.

    Suur aitäh panuse eest ja loodan, et kaalute minu tähelepanekut.

  31.   Julian Reyes Escrigas kohahoidja pilt DIJO

    Olen mõnda aega teemaga jamas käinud, huvi tekkis kohe, kui pealkirja lugesin. aga sõnumit muudkui saadakse

    viga: mitme käivituse päist ei leitud.
    viga peate kõigepealt laadima kerneli

    Olen üles laadinud selle, mida võtan, githubi repo-sse https://github.com/rkmax/GenyOS

    1.    Martin villalba DIJO

      Sama juhtub ka minuga. Kas leidsite lahenduse?

  32.   Carlos DIJO

    küsimus, mida hakkasin süntaksit tutvustama ja menuentry rida ütleb mulle, et käsku ei leitud, kes võiks mulle öelda, miks
    seda ma teen

    MUST @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
    menuentry: käsku ei leitud

    1.    AdrianArroyo tänav DIJO

      Selle sisu sisu ei pea sisestama käsureale, vaid teie loodud faili nimega grub.cfg

  33.   Nodetin DIJO

    Suurepärane artikkel, aitäh!

  34.   David DIJO

    Suurejooneline ... !! see on täpselt nagu puuduv lüli.

  35.   r.garciag DIJO

    Mulle meeldivad teie emuleerivad LInus Torvaldsi õpetused, kuid on üks samm, millest ma aru ei saa, järgmine:
    Nüüd kopeerime START.ELF oma kausta, mis simuleerib meie operatsioonisüsteemi juuri. Läheme konsooliga oma uue operatsioonisüsteemi juurkausta ja kontrollime, kas faile on kaks: üks /boot/grub/grub.cfg ja teine ​​/next/START.ELF.

    Me läheme ülemisse kataloogi ja kutsume GRUB-iga ISO loomisutiliidi nimega grub-mkrescue

    Kas keegi võiks mulle seda selgitada: lk

    1.    AdrianArroyo tänav DIJO

      Lihtsalt minimaalse ISO genereerimiseks, mida GRUB saab laadida, kopeerime kerneli (ISO-i /, mis tahes kausta) /next/START.ELF ja GRUB-i konfiguratsioonifaili (ISO-i / mis tahes kausta / / boot / grub / grub.cfg. Kui see on tehtud, pole me GRUB-i veel ISO-sse installinud ja seal on utiliit, mis genereerib kaustast ISO-i ja installib GRUB-i nimega grub-mkrescue. Siis jõuaksime lõpuks käivitatava ISO-ga, kuhu on installitud GRUB, mis saab lugeda konfiguratsiooni, et hiljem START.ELF õigesti käivitada. Ma ei tea, kas ma olen ennast selgitanud, kuid see, mida me teeme, on mingi vale failisüsteem, millega me loome ISO.

  36.   miguel jose guevara tähelepanu DIJO

    Buenísimo

  37.   Michael Moreno DIJO

    Noh, vaadake tõesti uut süsteemi mitte niivõrd, vaid kui parandada linuxi, näiteks luua serveri komponendiga linux exonucleus, mis toimib soovi korral mikrotuumana, see tähendab mikrotuumade käitumisega exo-struktuur, mis oleks super ja linux.

    Teine asi on see, et ma ei ole programmeerimise asjatundja, vaid paar juustulist c ++ ja natuke Java-d, mulle piisaks, kui annaksin Linuxi kerneli programmile mooduli, rookides seda, muutes jne.

  38.   Talvesõdur53 DIJO

    Kahtlemata pean seda juba puhkusel tegema.

  39.   Fermín DIJO

    See hea ja mis programmis ta seda kavandab ja kodeerib?
    palun anna mulle see vastus

  40.   Tume meel DIJO

    Teie gitist koostades saan:

    [jmponce @ purgi ehitus] $ cmake ..
    - NextRoot kataloogi loomine
    - ISO-skripti genereerimine
    make DESTDIR = järgmine install
    ./iso.sh
    - Leitud Doxygen: / usr / bin / doxygen (leitud versioon "1.8.9")
    - konfigureerimine tehtud
    - Genereerimine tehtud
    - Ehitamisfailid on kirjutatud: / home / jmponce / next-divel / build
    [jmponce @ purgi ehitamine] $ make
    Sihtmärgi START.ELF sõltuvuste skannimine
    [7%] ASM-ATT objekti src / CMakeFiles / START.ELF.dir / start / boot.asm.o loomine
    [14%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o loomine
    [21%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o loomine
    [28%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o loomine
    [35%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o loomine
    [42%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o loomine
    [50%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o loomine
    [57%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o loomine
    [64%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o loomine
    [71%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o loomine
    [78%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o loomine
    [85%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o loomine
    [92%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o loomine
    [100%] CXX-i objekti src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o loomine
    CXX käivitatava faili START.ELF linkimine
    / usr / bin / ld: Ühildumatu /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a jäetakse vahele, otsides -lgcc
    / usr / bin / ld: ei leia -lgcc
    collect2: tõrge: ld tagastas väljumise oleku 1
    src / CMakeFiles / START.ELF.dir / build.make: 402: Ebaõnnestunud juhised sihtmärgile „src / START.ELF”
    make [2]: *** [src / START.ELF] Viga 1
    CMakeFiles / Makefile2: 106: nurjunud juhised sihtmärgile 'src / CMakeFiles / START.ELF.dir / all'
    make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Viga 2
    Makefile: 117: sihtmärgi „kõik“ juhiste nurjumine
    make: *** [kõik] Viga 2

    1.    AdrianArroyo tänav DIJO

      Tundub, et viga on see, et see ei leia llibgcc-d, kuna teil on 64-bitine versioon ja praegu on ehitussüsteem sunnitud kasutama 32-bitist. Peaksite installima ühilduvuspaki oma distrosse või parem, kasutage 32-bitist süsteemi.

      1.    Ronaldo Rodríguez DIJO

        Mul on 32 bitti ja ilmub sama viga, kas peate silmas operatsioonisüsteemi või arhitektuuri? minu oma on 64-bitine, kuid ma kasutan 32-bitist Ubuntu, ärge küsige, rahalised probleemid, sellega ma ütlen kõik.

  41.   Jorge DIJO

    Suurepärane teema, ootab suuremat ulatust. Terviseks

  42.   Jhon DIJO

    Suurepärane, loodan veel

  43.   Väldi perezi DIJO

    Tere, olen noor suursaadik, kes soovib luua opsüsteemi, mis toetab kõiki programme ja platvorme, et arendajatel ei peaks arvutis olema võimsaid masinaid ega rakendusi ega programme.
    sellepärast olen sellest postitusest huvitatud, kuid kui laadin alla teie giti või proovin seda luua, läheb kõik hästi, kuni täidan käsu ./iso.sh või grub-mkrescue -o nextdivel.iso nextroot, saate selle vea

    "Grub-mkrescue: hoiatus: teie xorriso ei toeta" –grub2-boot-info ". Mõni funktsioon on keelatud. Kasutage xorriso 1.2.9 või uuemat.
    grub-mkrescue: hoiatus: Teie xorriso ei toeta "–grub2-boot-info". Teie tuuma pilt on liiga suur. Ketta käivitamine on keelatud. Kasutage xorriso 1.2.9 või uuemat .. »
    Mul pole tegelikult aimugi, sest ma tean palju rakendustest ja veebidest, kuid ma ei tea midagi grubist

    1.    AdrianArroyo tänav DIJO

      Võimalik, et peate oma distroos uuendama xorriso programmi. Mis distro ja versiooni te kasutate?

      1.    Väldi perezi DIJO

        Ma kasutan xubuntu 14.04lts ja proovin käivitada xorriso, kuid kest ütleb mulle, et seda ei õnnestu leida ja ma saan apt-get install xorriso, kuigi ma ootasin siiralt vastust, sest mul oli halb kogemus selliste asjade installimisega, mida ma Linuxis ei tea . Värskendan seda kohe ja ütlen teile, mis juhtus

      2.    AdrianArroyo tänav DIJO

        Seejärel installige xorriso tarkvarakeskusest või lihtsalt terminalist, tehke "sudo apt-get install xorriso"

      3.    Väldi perezi DIJO

        Ma tegin juba kõik, mida te mulle ütlesite ja nii gitiga kui ka minu omadega saan selle xorriso 1.3.2: RockRidge'i failisüsteemi manipulaator, projekt libburnia.

        Ajami vool: -outdev 'stdio: nextdivel.iso'
        Meediumivool: stdio-fail, ülekirjutatav
        Meedia olek: on tühi
        Meediumikokkuvõte: 0 seanssi, 0 andmeplokki, 0 andmeid, 1901m tasuta
        Lisatud ISO-pildile: kataloog '/'='/tmp/grub.OEqSzV'
        xorriso: UPDATE: 546 faili lisati 1 sekundiga
        xorriso: FAILURE: Lähtefaili '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot' atribuute ei saa kindlaks määrata: sellist faili ega kataloogi pole
        xorriso: UPDATE: 546 faili lisati 1 sekundiga
        xorriso: katkestamine: -abort_on 'FAILURE' leidis 'FAILURE'
        Ja velvetist ma ei saa aru, et minu struktuur on /nextroot/boot/grub/grub.cfg ja nextroot / next / START.ELF

      4.    Väldi perezi DIJO

        Aitäh, ma olen valmis edasi liikuma, sõber aitas mind ja ütles mulle, mida ma valesti tegin, oli kataloogi korraldus, nii et ma kohandasin seda ja kõik

      5.    erik DIJO

        Vabandage, kas saate öelda, millise protseduuri te olete teinud, kuna mul pole viga, et midagi käivitada: sellist faili ega kataloogi pole

        pole käivitatavat seadet.

  44.   jose DIJO

    Terviseks! Ma küsisin teilt poolehoidu, kui saaksite mulle saata meili koos sellega, mida te siin selgitate, ma olen natuke segaduses ja ma pean võrdlema seda, mis mul on, mida te seletate, võib-olla pole minu jaoks selge, kas grub.cfg loomine toimub terminali gcc-s või kus täpselt? suur aitäh sõber!

    1.    AdrianArroyo tänav DIJO

      Faili grub.cfg loote mis tahes tekstiredaktoriga ja peate selle salvestama kausta PROJECT_FOLDER / boot / grub / grub.cfg

  45.   jhuazano DIJO

    Tere, Adrian, kõigepealt õnnitlen teid ja tänan teid panuse eest.

    Teate, et teen seda harjutamiseks ja hakkasin seda teie juhendamise järgi kokku panema, kuid pärast alustamist leidsin esimese vea

    $ as -o kernel.o -c kernel.asm
    bash: as: käsku ei leitud ...
    Sarnased käsud on:
    "sa"
    'ac'

    Töötan fedora 20-ga ja ma ei leia selles osas lahendust, ma hindaksin teie juhiseid selle kohta, kas ma peaksin midagi muutma gcc või gaasis

    eelnevalt tänu

    1.    AdrianArroyo tänav DIJO

      Peate installima gaasi, et näeksin veakoodi. Mul pole Fedorat käepärast, kuid teoreetiliselt, kui installite gcc-c ++, installite kogu GCC komplekti ja tavaliselt on see kaasas GNU As-ga.

  46.   Gaston Ramirez DIJO

    Olen teiega, tean midagi C ++, C # kohta (kuigi see viimane pole selles küsimuses eriti kasulik), halb on see, et mul on endiselt puudu kogemustest, ma ei saa kunagi hakkama C-keelega, teie väljaanne on suurepärane, Mul pole palju öelda, kui mul on aega, ma näen. Aitäh.

  47.   Teresita del jeesus nah sanchez DIJO

    Suur aitäh suure abi eest.

  48.   jky DIJO

    Ma armastan linuxit, see on parim linnaosa, tõde minu Windowsi jaoks on prügi, et ma tean, et linuxi looja on Windowsi looja

  49.   Sõitis DIJO

    Tere, mul on viga grub ütleb
    viga: fail /next/START.ELF ei leitud
    viga: peate kõigepealt laadima kerneli

    Kas saaksite mind aidata ja googeldada, aga ma ei leia

  50.   Henry Avila DIJO

    Palun, kuidas ma saan panna selle kuvama sõnumit TERE MAAILM? Olen algaja ja ei tea ikka veel piisavalt

  51.   CARLOS GUERRERO ALVAREZ DIJO

    Minuga juhtub järgmine:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
    / usr / bin / ld: kernel.o: R_X86_64_32 ümberpaigutamist sümbolile "stack" ei saa kasutada PIE-objekti loomisel; uuesti kompileerida -fPIE-ga
    / usr / bin / ld: viimane link ebaõnnestus: väljundi esindamatu osa
    collect2: tõrge: ld tagastas 1 väljumise oleku