Kopiante Linus Torvalds: Kreu vian propran operaciumon de nulo (I)

Unue komentu, ke ĉi tio estas mia unua artikolo kaj ke mi deziras al vi ĉiuj ŝati ĝin.

Linus Torvals feliĉa

En ĉi tiu serio ni kopios Linus Torvalds, Ni kreos nian operaciumon de 0. En ĉi tiu unua epizodo ni vidos la ekkuron kaj ni metos tekston sur la ekranon de nia kerno.

En mia kazo la operaciumo nomiĝas SekvaDivelo. La unua decido, kiun ni devas preni tuj kiam ni konsideras la operaciumon, estas kia estos la startŝargilo?

Ĉi tie estas multaj variantoj, kaj ni eĉ povus krei unu mem; tamen en ĉi tiu lernilo mi uzos GRUB, ĉar plej multaj scias pli-malpli ion pri li. Ni kreas dosierujon, kiu estos la radiko de nia operaciumo kaj tie ni kreas la dosierujon / boot / grub

mkdir nextroot && cd nextroot

mkdir -p boot/grub

Tie ni kreas la dosieron grub.cfg jene:

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

En ĉi tiu dosiero ni vidis kiel GRUB ŝarĝos nian kernon, ĉi-kaze, en /next/START.ELF. Nun ni devas krei nian kernon.

Por ĉi tio ni bezonos la GCC y GAS (la asemblero de la projekto GNU, kutime venas kun la gcc). Do ni kreos la kernon.

Unue ni faras dosieron nomatan kernel.asm. Ĉi tiu dosiero enhavos la komencan punkton de nia kerno kaj ankaŭ difinos la plurtarbon (trajto de iuj startigiloj kiel ekzemple GRUB). La enhavo de kernel.asm estos:

.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

Ĉio rilate al multboto estas simple sekvi la specifon nenion alian. Ĉio komenciĝos en komenco, ĝi nomos multiboot_entry, ni estos difininta la multiboot-kapon en la unua 4k kaj ni metos ĝin (kun movl).

Poste ni nomas NextKernel_Main, kiu estas nia kerna C-funkcio. En la buklo ni haltas por haltigi la komputilon. Ĉi tio kompilas kun:

as -o kernel.o -c kernel.asm

Nun ni eniros programadon en C. Vi pensos, ke nun ĉio estas kuko, ni metas printf en ĉefa kaj jen, ni faris ĝin.

Nu ne, ekde tiam printf y ĉefa ili estas funkcioj difinitaj de la operaciumo, sed ni kreas ilin! Ni povas uzi nur la funkciojn, kiujn ni mem difinas.

En postaj ĉapitroj mi parolos pri kiel meti nian propran C-bibliotekon (glibc, bionic, newlibc) sed fojfoje. Ni diskutis, ke ni volas meti tekston sur la ekranon, nu ni vidos kiel ni faras ĝin.

Estas du ebloj, unu estas nomi la BIOS kaj alia estas administri ekranan memoron rekte. Ni faros ĉi-lastan ĉar ĝi estas pli klara de C kaj ĝi ankaŭ permesos al ni fari ĝin kiam ni eniros protektitan reĝimon.

Ni kreas dosieron nomatan NextKernel_Main.c kun la jena enhavo:

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

Per ĉi tio ni rekte manipulas la memoron VGA kaj signon post signo ni verkas ĝin. Ni kompilas malŝaltante la stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding

Se vi atingis ĝin ĝis nun, vi volas provi vian novan operaciumon nun, sed ni ankoraŭ ne finis. Ni bezonas malgrandan dosieron, kiu diras al la kompililo, kie en la dosiero forlasu ĉiun sekcion. Ĉi tio estas farita per ligila skripto. Ni kreas 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 = .;
}

Per ĉi tio ni difinas la pozicion de ĉiu sekcio kaj la enirpunkton, start, kiun ni difinis en kernel.asm. Nun ni povas kunigi ĉi tiun ĉion:

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

Nun ni kopias START.ELF al / sekva ene de nia dosierujo, kiu simulas la radikon de nia operaciumo. Ni iras al la radika dosierujo de nia nova operaciumo kun la konzolo kaj kontrolas, ke estas du dosieroj: unu /boot/grub/grub.cfg kaj alia /next/START.ELF.

Ni iras al la supra dosierujo kaj nomas ISO-kreadan ilon kun GRUB nomata grub-mkrescue

grub-mkrescue -o nextdivel.iso nextroot

Post kiam ni faros ĉi tion, ni havos ISO. Ĉi tiu ISO estas malfermebla sur komputiloj x86 (Ankaŭ 64 bitoj) kaj virtualaj maŝinoj. Por testi ĝin, mi uzos QEMU. Ni vokas QEMU de la komandlinio:

qemu-system-i386 nextdivel.iso

Komencos SeaBIOS kaj poste ni havos GRUB. Poste se ĉio ĝustos, ni vidos nian frazon.
Vi pensos, ke tio estas malfacila, mi respondas, jes ĝi estas.

Vere krei operaciumon malfacilas kaj ĉi tiu ĉi tie faras nenion utilan. En estontaj ĉapitroj ni vidos kiel trakti kolorojn sur la ekrano, rezervi memoron kaj se mi povas, kiel akiri datumojn de la klavaro.

Se iu ne volas kopii ĉion ĉi tie, mi havas deponejon ĉe GitHub (pli ellaborita) kun la operaciumo SekvaDivelo. Se vi volas kompili SekvaDivelo vi nur devas havi git kaj 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

Mi kuraĝigas vin kunlabori ĉe NextDivel se vi havas la tempon kaj deziron krei operaciumon. Eble eĉ pli alta ol Linukso ... la tempo diros.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

85 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   vigla diris

    :O

    1.    marianogaudix diris

      Torvalds prenis la operaciumon Minix (derivitan de UNIX) al Andrew S. Tanenbaum kaj plibonigis ĝin.

      Tanenbaum batalis kontraŭ Lino, ili insultis unu la alian. Tanenbaum diras, ke la Mikrokerno estas la estonteco (HURD, Minix nova konuso Mikrokerno).

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

  2.   eliotime3000 diris

    Ĉi tiu estis la plej bona afiŝo, kiun mi vidis ĝis nun en ĉi tiu blogo. Mi jam volas scii, kion alian fari.

  3.   Karlo.Gude diris

    Estu impresita

  4.   hakilo diris

    Vere impresa !!

  5.   rhoconlinux diris

    FUUUUUUA!
    ĝi estas la plej nerda afiŝo, kiun mi iam ajn vidis. Gratulon Adrián, putina artikolo! hiper interesa !!! 🙂

    1.    Joakimo diris

      Mi konsentas. Mi imagas ĉi tiun situacion:
      GNU / Linukso-Potenca Uzanto (kun feliĉa vizaĝo):
      "Mi jam scias kiel kompili mian Gentoon"

      Nerdo (malestime): «pff, mi kreis mian propran distribuon ...»

      1.    desikoder diris

        Jes, mi povas krei mian propran linux-distribuon. Fakte en ĝi mi disvolvas initramfs kaj kernon por enigita linux. Ne estas same krei operaciumon ol linux-distro. La unua estas multe pli malfacila, preskaŭ malebla, la dua, kiel vi diris, povas esti io ajn, eĉ Ubuntu kun la xD-emblemo ŝanĝiĝis. Do mi lasus ĝin tiel:

        GNU / Linukso-Potenca Uzanto (kun feliĉa vizaĝo)
        - Mi jam scias kiel kompili mian Gentoon

        Duon-Nerdo
        - Pff, mi sekvis linux de nulo kaj mi kreis mian propran distribuon

        Nerdo (kun malestima sinteno)
        - pff, ĉar mi programis kernon en asemblero kaj en C

        Saluton!

  6.   kronoj diris

    Ĉi tio interesas min, atendante la sekvajn ĉapitrojn.

  7.   abimaelmartell diris

    Mi vidis ĉi tiun lernilon antaŭ iom da tempo, ĝi estas por C ++
    https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

    1.    AdrianArroyoStreet diris

      Dankon pro la ligo, mi rigardos ĝin.

  8.   Jose Jácome diris

    Mi ŝatus Operaciumon 100% kongruan kun AMD-grafikaĵoj: /

    1.    ivanlinux diris

      fenestroj

      1.    Jose Jácome diris

        hahaha en Windows Catalyst ne havas subtenon de OpenGL, kvankam en Linukso mi ne povas uzi la tutan grafikan potencon, kiun mi atendos por vidi kio okazas!

        1.    beny_hm diris

          nur atendu, ke valvo ekstermu la merkaton

  9.   KZKG ^ Gaara diris

    Magia, perfekta, bonega kontribuo, ĝi aspektas kiel bonega serio de afiŝoj 🙂

  10.   O_Piksoto_O diris

    Buah Mi ŝatus scii kiel programi por helpi vin, simple kiel maniero praktiki kun la scio, ke vi lernas kaj helpas unu. Nuntempe mi lasas al vi la moton atentigi pri la projekto post kiam vi finos ĝin "Uzu NextDivel, porno aspektas same (aŭ pli bone).", Vi balaos xD.

  11.   ĉi tiu nomo estas malĝusta diris

    Mooooooolaaa !!!!

  12.   nordi diris

    Tre bona artikolo, sed nur scivola, kial vi ne sekvis la projekton Linukso De Scratch?

    salutoj

    1.    AdrianArroyoStreet diris

      Nu, Linukso de Scratch bonas, kaj vi povas diri, ke ĝi estas via, sed ĝi vere estas tre me mechanicalanika:
      -Elŝuti tiparojn
      -Fliku ilin
      -Kompili
      -Instali
      -Sekva
      Ĉi tie, eĉ se la rezulto estas pli malbona finfine, vi povas diri, ke vi reviziis ĉiujn dosierojn.

    2.    desikoder diris

      Kiel klare el mia antaŭa komento, ĉar ĝi ne havas la saman nivelon de komplekseco. Krome, linux de nulo vere, kontraŭ ĝia nomo, kreas sistemon de nulo. Krei sistemon de nulo signifas programi ĝin mem, skribi vian propran kernon, ne la linuxan kernon, se eble eĉ vian propran startŝargilon anstataŭ grub, lilo , syslinux, ktp. Kvankam LFS ne malmulte valoras kaj estas sufiĉe kompleksa, ĝi eĉ ne proksimiĝas al programado de via propra kerno ...

      Krome mi konsentas kun AdrianArroyo Calle, ke ĝi estas tro me mechanicalanika, mi legis ĝin iam kaj vi finas rezigni sur la sesa paĝo, ili ankaŭ diras al vi uzi kiajn versiojn de la pakaĵoj ĉar alie la instrukcioj ne funkcias (tio montras la mankon de fleksebleco, Laŭ mi). Mi pensas, ke estas pli bone havi vian propran ideon, kompili la deziratajn pakaĵojn, eĉ programi iujn, kompili linux-kernon kaj trankvile.

      Saluton!

  13.   kuketo diris

    uuuoooohh !! Mi neniam kaptis afiŝon tiom, kiom ĉi tiu.
    Bonvolu daŭrigi 😀

  14.   linux_uzanto diris

    Mi ne scias, kio misas:

    eraro: neniu plurbota kaplinio trovita.
    eraro vi bezonas unue ŝarĝi la kernon

    1.    AdrianArroyoStreet diris

      Se temas pri konsolo, mi faris la saman eraron. Provu uzi la fontojn en GitHub, tie la eraro jam estas solvita. Ĉiuokaze mi pensas, ke se vi ŝanĝos la linion en grub.cfg de "multiboot /next/START.ELF" al "kernel /next/START.ELF" ĝi povus funkcii. Mi ne scias precize.

      1.    mcbanana diris

        Unue, grandioza enirejo 🙂
        Mi havas la saman problemon ŝarĝi la kernon de grub. Eĉ uzante GitHub-fontojn aŭ ŝanĝante multiboton por kerno ...

        eraro: neniu plurbota kaplinio trovita.
        eraro: neniu ŝarĝita kerno

        1.    AdrianArroyoStreet diris

          Ĉu vi uzas clang kiel kompililon? Ŝanĝu ĝin por la gcc
          Ĉu vi memoris uzi la ligilan skripton? Necesas, ke la ligilo (ld en nia kazo) sciu, kie en la dosiero ĝi metos ĉiun aferon. Ĉi-kaze la plurbota kaplinio devas esti komence.
          Ĉu vi uzas la CMake-sistemon? Se vi uzas ĝin, mi pensas, ke ĝi ne malsukcesas.
          Se ĝi ne funkcios por vi, mi provos trovi alian solvon.

  15.   khort diris

    [+100]
    Nur bonege !!!

  16.   nevidebla15 diris

    Estas vere malvarmeta 🙂

  17.   tanrax diris

    Mi demetas mian ĉapelon. Impresa afiŝo. Gratulon.

  18.   viro diris

    Ho!
    Estus bonege, se vi povus malfermi programojn kreitajn en HTML5 kaj Javascript sen devi uzi retumilon, ĉu tio eblas?
    Mi parolas pri tio, ke ili similas al denaskaj programoj.
    Do estus facile programi por ĉi tiu operaciumo 😀

    1.    AdrianArroyoStreet diris

      Ĉi-kaze mi ne faros ĝin, ĉar postulas multe pli da laboro, sed ekzistas operaciumo nomata "estas", kiu faras tion, kion vi diras. Fakte la komandlinio estas JavaScript kaj la fenestroj estas desegnitaj per la funkcioj Canvas JavaScript. Inĝenieroj de Nintendo faris ĝin kaj nun ĝi estas malfermfonteco.

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

      1.    viro diris

        Valla, dankon pro la informo 😀
        Mi rigardos

  19.   patodx diris

    Kiu povas krei sian propran OS, tiu povas morti pace, ĉar la intelektan nivelon li devas atingi per ĝi; Ĝi igas vin malhavi ĉielon aŭ inferon.
    Peco de afiŝo.

    1.    Mikaelo diris

      Ĝis nun neniu sciis esti kreinta nur ion, kion oni povas diri, ke ĝi estas deca operaciumo farita de nulo, eĉ ne Linukso Torvalds, kiel vi diras komence, ĉar ĉi tio komenciĝis de Uniksaj fontoj kaj ĉio alia estas komune aŭ pli ol unu homo, la vivo estas tre mallonga kaj komenci de nulo estas nepensebla por iu ajn, eĉ se oni volas la malon, ĝi estas pruvebla en multaj eraroj faritaj dum kopiado kaj gluado de Linukso Torvald

      1.    skarmiglione diris

        La uniksaj fontoj estas fermitaj, la uzo de minikso ... kiu estas io alia.

      2.    Filipo Robaina diris

        kaj tiuj, kiuj faris QDOS, kio?
        baziĝis sur io?

  20.   Teslo diris

    Laŭ tio, kion mi vidas, kiuj ne havas sian propran operaciumon estas ĉar ili ne volas, hahahaha.

    Nun serioze, tre interesa! Multe superas mian limigitan programan scion, sed mi legos la aliajn partojn de ĉi tiu serio kun antaŭĝojo.

    Dankon pro la afiŝo!

  21.   Manuel R. diris

    Vi lasis min kun O_O-vizaĝo ... sen la intenco subtaksi la kontribuojn de iu ajn, ĝi estas la plej "profesia", kiun mi vidis lastatempe. Salutojn.

  22.   aitor_cz diris

    Tre bona artikolo, Adrián. Bonvolu daŭrigi ...

  23.   mj diris

    Ĉu vi ŝercas en April Fools Day?, Ne estu malica "Kopiante Linus Torvalds: Kreu vian propran operaciumon de nulo." Mi ne pensas, ke estas malfacile por tiuj, kiuj sekvas karieron en iu te instnika instituto aŭ universitato; sed por mi mi estas novula pafarkisto (estas tiuj, kiuj nomas nin "Noob", sed mi konsideras min pli novulo iom pigra), kio sonas kiel ne paŝi sur teron. Ĉiuokaze, ĈI TIU ARTIKOLO KREAS MULTE DE VIDECO KAJ SEN DUBA ADMIRADO KAJ RESPETO POR ĜIA REDAKTORO, GRATULON; La unua afero, kiun mi faros, estas provi kompreni almenaŭ iomete de ĉi tiu valora materialo.
    DANKON Adrian Arroyo Calle, bonega laboro kaj nobla liverado de scioj.

  24.   Blaire pascal diris

    LEL Bonega afiŝo, daŭrigu ĝin.

  25.   f3niX diris

    Kia bonega afiŝo, jen kion mi maltrafis de Linukso. Mirinda.

  26.   Rubeno diris

    Bonega afiŝo, dankegon.
    Mi ne komprenis, kion faras la dosiero link.ld, ĉu iu povas klarigi ĝin al mi?

    1.    AdrianArroyoStreet diris

      La dosiero link.ld diras al la ligilo (ĉi-kaze ld) en kiu pozicio ene de la rezulta dosiero devas esti ĉiu parto de la kodo. Ni ankaŭ difinas la enirpunkton ĉar ĉar ni ne havas operaciumon ni ne povas uzi main kiel normalan programon, ĉi-kaze ni elektas la startan funkcion.

  27.   Maxi diris

    Bonega via tuta afiŝo! Atendante la 7! Kio se mi havas dubon, ekzemple, se mi nur volus ruli algoritmon, sen OS, kiel mi scias, kion mi povas uzi kaj kio ne C?

    1.    AdrianArroyoStreet diris

      Se vi uzas ĝin tiel, vi ne povus uzi ion ajn de stdlib, kiu estas praktike, kion ĉiuj uzas (neniu malloc, senpaga, printf, scanf, strcmp, ktp). Ĉio devas esti efektivigita rekte de memoro aŭ ASM. Eble en pli alta ĉapitro mi montros al vi kiel instali C-bibliotekon por la operaciumo. Se vi uzas C ++, vi ne povas uzi esceptojn kaj la novajn kaj forigajn operatorojn (kaj certe pli).

    2.    Ŝanĝilo diris

      mi pensas ĉi tio ĝi povas doni al vi pli bonan ideon pri kiel fari ĝin.

  28.   Stefano diris

    Saluton, antaŭ ĉirkaŭ 5 jaroj mi sekvis similan eldonaĵon kaj disvolvis mikrokernon, kiu komenciĝas same, havas iujn aspektojn por plibonigi, sed ĝi eble interesos vin, ĝi funkcias en protektita reĝimo, plenumas multtaskadon kaj plenumas virtualan memoron, lastatempe Mi laboris pri ĝi diskilo kaj lumdisko por igi ĝin instalebla kaj ne nur funkcii per viva lumdisko ... Salutojn.

  29.   Johan diris

    Kara, mi havas eraron dum plenumado de la komando:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc

    link.ld: 5-sintaksa eraro
    collect2: eraro: ld redonis 1 elirstaton

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

    En linio 5 mi ne vidas la eraron, ĉu iu same?

    Mi laboras kun virtualigita Debian wheezy en virtualbox

    1.    Julian Reyes Escrigas lokokupilo diris

      aldonu la ";" fine de * (. multiboot_header)

  30.   Eric Orellana Romero diris

    Bonega iniciato, mi certe sekvos la ĉapitrojn de ĉi tiu afiŝo, mi intencas lerni multon de ĝi. Koran dankon pro via tempo por instrui nin. Ununura detalo tiurilate, notindas, ke Linus Torvalds ne estas la kreinto de iu ajn operaciumo, li kreis la Kernon de la sistemo GNU / Linukso (tiu, kiu estis uzata en alia OS), kiu ankoraŭ indas, sed ĝi estas Gravas meriti Richard Stallman por krei la plej grandan parton de la mastruma sistemo.

    Koran dankon pro la kontribuo kaj mi esperas, ke vi konsideros mian observon.

  31.   Julian Reyes Escrigas lokokupilo diris

    Mi iomete fuŝis kun la temo, mi interesiĝis tuj kiam mi legis la fraptitolon. sed la mesaĝo daŭre ricevas

    eraro: neniu plurbota kaplinio trovita.
    eraro vi bezonas unue ŝarĝi la kernon

    Mi alŝutis tion, kion mi portas al repo ĉe github https://github.com/rkmax/GenyOS

    1.    martin villalba diris

      La samo okazas al mi.Ĉu vi trovis la solvon?

  32.   Carlos diris

    demando mi komencis enkonduki la sintakson kaj la menuenira linio diras al mi komandon ne trovitan, kiu povus diri al mi kial
    jen kion mi faras

    BLACK @ BLACK-pc: ~ / blackroot $ menuentry «SekvaDivelo» {
    menuentry: komando ne trovita

    1.    AdrianArroyoStreet diris

      La enhavo de ĉi tiu enhavo ne enskribiĝu en la komandlinio, sed en la dosiero kreita de vi nomata grub.cfg

  33.   Nodetin diris

    Bonega artikolo, dankon!

  34.   david diris

    Spektaklo ... !! ĝi estas same kiel la mankanta ligo.

  35.   r.garciag diris

    Mi amas viajn lernilojn de Emulating LInus Torvalds, sed estas unu paŝo, kiun mi ne komprenas, jen:
    Nun ni kopias START.ELF al / sekva ene de nia dosierujo, kiu simulas la radikon de nia operaciumo. Ni iras al la radika dosierujo de nia nova operaciumo kun la konzolo kaj kontrolas, ke estas du dosieroj: unu /boot/grub/grub.cfg kaj alia /next/START.ELF.

    Ni iras al la supra dosierujo kaj nomas ISO-kreadan ilon kun GRUB nomita grub-mkrescue

    Ĉu iu povus klarigi ĝin al mi: p

    1.    AdrianArroyoStreet diris

      Simple por generi minimuman ISO, kiun GRUB povas ŝarĝi, ni kopias la kernon al (la / de la ISO, iu ajn dosierujo) /next/START.ELF kaj la agordan dosieron de GRUB al (la / de la ISO, iu ajn dosierujo) / boot / grub / grub.cfg. Post kiam tio estas farita, ni ankoraŭ ne instalis GRUB sur la ISO kaj ekzistas utileco, kiu generas la ISO de dosierujo kaj instalas GRUB nomatan grub-mkrescue. Tiam ni finfine finus kun startebla ISO, kiu havas GRUB instalitan, kiu povas legi la agordon por poste ekzekuti START.ELF ĝuste. Mi ne scias, ĉu mi klarigis min, sed kion ni faras estas ia falsa dosiersistemo, per kiu ni generas ISO.

  36.   miguel jose guevara atento diris

    Bonege

  37.   Mikaelo Moreno diris

    Nu, vere rigardu novan sistemon ne tiom, sed se vi plibonigas linux, ekzemple, kreu linux-eksonukleon kun servila ero, kiu funkcias kiel mikronukleo, se vi volas, tio estas ekz-strukturo kun mikronuklea konduto, kiu estus bonega kaj linux.

    La alia afero estas, ke mi ne estas sperta pri programado, nur kelkaj fromaĝaj c ++ kaj iom da java, sufiĉus al mi doni al la linuksa kerna programo modulon, elfluigi ĝin, modifi ĝin, ktp

  38.   VintroSoldato53 diris

    Sendube mi jam devas ferii.

  39.   Fermín diris

    Ĉi tiu bona kaj en kiu programo ĝi projektas kaj kodigas ĝin?
    bonvolu doni al mi tiun respondon

  40.   Malhela menso diris

    Kompilante de via git mi ricevas:

    [jmponce @ jar build] $ cmake ..
    - Krei NextRoot-dosierujon
    - Generanta ISO-skripton
    fari DESTDIR = sekva instalado
    ./iso.sh
    - Trovita Doxygen: / usr / bin / doxygen (trovita versio "1.8.9")
    - Agordado finita
    - Generado farita
    - Konstruaj dosieroj estis skribitaj al: / home / jmponce / next-divel / build
    [jmponce @ jar build] $ make
    Skanantaj dependecoj de celo START.ELF
    [7%] Konstrui ASM-ATT-objekton src / CMakeFiles / START.ELF.dir / start / boot.asm.o
    [14%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
    [21%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
    [28%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
    [35%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
    [42%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
    [50%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
    [57%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
    [64%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
    [71%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
    [78%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
    [85%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
    [92%] Konstruanta CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
    [100%] Konstrui CXX-objekton src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
    Ligo de efektivigebla ĈX START.ELF
    / usr / bin / ld: Nekongrua /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a estas preterlasita dum serĉado de -lgcc
    / usr / bin / ld: ne povas trovi -lgcc
    collect2: eraro: ld revenis elirstato 1
    src / CMakeFiles / START.ELF.dir / build.make: 402: Malsukcesaj instrukcioj por la celo 'src / START.ELF'
    fari [2]: *** [src / START.ELF] Eraro 1
    CMakeFiles / Makefile2: 106: Malsukcesaj instrukcioj por celo 'src / CMakeFiles / START.ELF.dir / all'
    make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Eraro 2
    Makefile: 117: Malsukceso en instrukcioj por celo "ĉiuj"
    make: *** [ĉio] Eraro 2

    1.    AdrianArroyoStreet diris

      La eraro ŝajnas esti, ke ĝi ne povas trovi llibgcc ĉar vi havas la 64-bitan version kaj nuntempe la kompila sistemo estas devigita uzi 32-bitan. Vi devas instali kongruan pakon en via distro aŭ pli bone, uzi 32-bitan sistemon.

      1.    Ronaldo Rodríguez diris

        Mi havas 32 bitojn kaj la sama eraro aperas, ĉu vi celas la operaciumon aŭ la arkitekturon? mia estas 64 Bitoj, sed mi uzas 32 bitojn Ubuntu, ne demandu, financajn problemojn, kun tio mi diras ĉion.

  41.   Georgo diris

    Bonega temo, atendante pli grandan amplekson. Saluton

  42.   Jhon diris

    Bonege mi esperas pli

  43.   Soid perez diris

    Saluton, mi estas juna ambasadoro, kiu volas krei operaciumon, kiu subtenas ĉiujn programojn kaj platformojn, por ke programistoj ne devas havi potencajn maŝinojn aŭ programojn aŭ programojn en komputilo.
    Tial mi interesiĝas pri ĉi tiu afiŝo, sed kiam mi elŝutas vian git aŭ provas krei ĝin, ĉio funkcias ĝis mi ekzekutas la ordonon ./iso.sh aŭ grub-mkrescue -o nextdivel.iso nextroot, vi ricevas ĉi tiun eraron.

    "Grub-mkrescue: averto: Via xorriso ne subtenas" –grub2-boot-info ". Iuj funkcioj estis malebligitaj. Uzu xorriso 1.2.9 aŭ posta ..
    grub-mkrescue: averto: Via xorriso ne subtenas "–grub2-boot-info". Via kerna bildo estas tro granda. Diska ekŝarĝo estas malŝaltita. Uzu xorriso 1.2.9 aŭ posta .. »
    Mi vere havas neniun ideon, ĉar mi scias multon pri programoj kaj retejoj, sed mi scias nenion pri grub

    1.    AdrianArroyoStreet diris

      Vi eble bezonos ĝisdatigi la xorriso-programon en via distro. Kiun distro kaj versio vi uzas?

      1.    Soid perez diris

        Mi uzas xubuntu 14.04lts kaj provas lanĉi xorrison sed la ŝelo diras al mi, ke ĝi ne povas trovi ĝin kaj mi ricevas apt-get install xorriso kvankam mi sincere atendis iun respondon ĉar mi havis malbonan sperton instalante aferojn, kiujn mi ne scias en linux hehe . Mi ĝisdatigos ĝin nun kaj rakontos al vi kio okazis

      2.    AdrianArroyoStreet diris

        Poste instalu xorriso de la programaro aŭ simple de la terminalo faru "sudo apt-get install xorriso"

      3.    Soid perez diris

        Mi jam faris ĉion, kion vi diris al mi, kaj per kaj git kaj mia mi ricevas ĉi tiun xorriso 1.3.2: RockRidge-dosiersistema manipulilo, projekto libburnia.

        Stiri aktualan: -outdev 'stdio: nextdivel.iso'
        Amaskomunikila kurento: stdio-dosiero, anstataŭigebla
        Media stato: estas malplena
        Amaskomunikila resumo: 0 kunsidoj, 0 datumblokoj, 0 datumoj, 1901m senpage
        Aldonita al ISO-bildo: dosierujo '/'='/tmp/grub.OEqSzV'
        xorriso: ĜISDATIGO: 546 dosieroj aldonitaj en 1 sekundo
        xorriso: FAILURE: Ne povas determini atributojn de fontodosiero '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Ne ekzistas tia dosiero aŭ dosierujo
        xorriso: ĜISDATIGO: 546 dosieroj aldonitaj en 1 sekundo
        xorriso: aborting: -abort_on 'FAILURE' renkontis 'FAILURE'
        kaj kordurojo mi ne komprenas, ke mia strukturo estas /nextroot/boot/grub/grub.cfg kaj nextroot / next / START.ELF

      4.    Soid perez diris

        Dankon, mi estas preta antaŭeniri, amiko helpis min kaj diris al mi, kion mi faris malbone, estis la organizo de la adresaro, do mi aranĝis ĝin kaj jen.

      5.    Erik diris

        Pardonu, ĉu vi povas diri al mi, kian procedon vi faris, ĉar mi ricevas la eraron nenion por startigi: neniu tia dosiero aŭ dosierujo

        neniu startebla aparato.

  44.   Jozefo diris

    Saluton! Mi petos al vi la favoron, ĉu vi povus sendi al mi retpoŝton kun tio, kion vi klarigas ĉi tie, mi iomete konfuziĝis kaj mi bezonas kompari tion, kion mi havas kun tio, kion vi klarigas, eble tio, kio ne klaras al mi, estas ĉu la kreo de la grub. cfg estas farita en la fina stacio gcc aŭ kie ĝuste? koran dankon amiko!

    1.    AdrianArroyoStreet diris

      Vi kreas la dosieron grub.cfg kun iu ajn tekstredaktilo kaj vi devas konservi ĝin en PROJECT_FOLDER / boot / grub / grub.cfg

  45.   jhuazano diris

    Saluton Adrian, antaŭ ĉio gratulon kaj dankon pro via kontribuo.

    Vi scias, ke mi faras ĉi tion por praktiko kaj mi komencis kunmeti ĝin post via instruado, tamen post la komenco mi trovis la unuan eraron

    $ as -o kernel.o -c kernel.asm
    bash: as: komando ne trovita ...
    Similaj komandoj estas:
    'sa'
    'ac'

    Mi laboras pri fedora 20, kaj mi ne povas trovi solvon ĉi-rilate, mi dankus vian konsilon pri tio, ĉu mi ŝanĝu ion en gcc aŭ gas

    antaŭ ĉio, Dankon

    1.    AdrianArroyoStreet diris

      Vi devas instali GAS por ke mi vidu la erarkodon. Mi ne havas Fedora ĉe la mano, sed teorie se vi instalas gcc-c ++, vi instalos la tutan GCC-aron kaj GNU Kiel kutime venas kun ĝi.

  46.   Gaston Ramirez diris

    Mi estas kun vi, mi scias ion pri C ++, C # (kvankam ĉi tiu lasta ne tre utilas en ĉi tiu afero) la malbona estas, ke ankoraŭ mankas al mi sperto, mi neniam pritraktas C-lingvon, via publikigo bonegas, Mi ne havas multon por diri, se mi havas tempon, mi vidas. Dankon.

  47.   Teresita de Jesuo Nah Sanchez diris

    Koran dankon pro granda helpo ....

  48.   jky diris

    Mi amas linux, ke gxi estas la plej bona distrikto, la vero por miaj fenestroj estas rubo, ke mi scias, ke la kreinto de linux estas la kreinto de fenestroj.

  49.   Rajdis diris

    Saluton mi havas Eraron en grub diras
    eraro: dosiero /next/START.ELF Ne trovita
    eraro: vi devas unue ŝarĝi la kernon

    Ĉu vi povus helpi min kaj gugli, sed mi ne trovas

  50.   Henriko Avila diris

    Bonvolu, kiel mi povas montri la mesaĝon HELLO WORLD, mi estas komencanto kaj mi ankoraŭ ne sufiĉe scias

  51.   CARLOS GUERRERO ALVAREZ diris

    Jen sekvas al mi:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
    / usr / bin / ld: kernel.o: translokado R_X86_64_32 kontraŭ simbolo 'stako' ne uzeblas kiam oni faras PIE-objekton; rekompili kun -fPIE
    / usr / bin / ld: fina ligilo malsukcesis: nereprezentebla sekcio pri eligo
    collect2: eraro: ld redonis 1 elirstaton