Nabootsing van Linus Torvalds: Skep u eie bedryfstelsel van nuuts af (I)

Eerstens moet u opmerk dat dit my eerste artikel is en dat ek hoop dat u almal daarvan hou.

Linus Torvals gelukkig

In hierdie reeks gaan ons navolg Linus Torvalds, gaan ons ons bedryfstelsel skep vanaf 0. In hierdie eerste episode gaan ons die boot sien en ons sal 'n teks uit ons kern op die skerm plaas.

In my geval word die bedryfstelsel genoem Volgende Divel. Die eerste besluit wat ons moet neem sodra ons die bedryfstelsel oorweeg, is wat die selflaaiprogram sal wees?

Hier is daar verskeie variante, en ons kan selfs self een skep; in hierdie handleiding gaan ek egter gebruik GRUB, want die meeste weet min of meer iets van hom. Ons skep 'n vouer wat die wortel van ons bedryfstelsel is en daar maak ons ​​die / boot / grub-vouer

mkdir nextroot && cd nextroot

mkdir -p boot/grub

Daar skep ons die grub.cfg-lêer soos volg:

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

In hierdie lêer het ons gesien hoe GRUB sal ons kern in hierdie geval in /next/START.ELF laai. Nou moet ons ons kern skep.

Hiervoor het ons die GCC y GAS (die samesteller van die projek GNU, kom gewoonlik saam met die gcc). Ons gaan dus die kern skep.

Ons maak eers 'n lêer met die naam kernel.asm. Hierdie lêer bevat die beginpunt van ons kern en sal ook die multiboot definieer ('n kenmerk van sommige selflaaiprogramme soos GRUB). Die inhoud van kernel.asm sal wees:

.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

Alles wat met multiboot verband hou, is bloot om die spesifikasie niks anders te volg nie. Alles sal begin, dit sal multiboot_entry noem, ons sal die multibootkopkop in die eerste 4k gedefinieer het en ons sal dit (met movl) sit.

Later noem ons NextKernel_Main wat ons kern C-funksie is. In die lus stop ons om die rekenaar te stop. Dit kom saam met:

as -o kernel.o -c kernel.asm

Nou gaan ons programmering in C betree. U sal dink dat alles nou 'n stuk koek is, ons sit 'n printf en hoof en dit is dit, ons het dit gedoen.

Wel nee, sedertdien printf y hoof dit is funksies wat deur die bedryfstelsel gedefinieer word, maar ons skep dit! Ons kan slegs die funksies gebruik wat ons self definieer.

In latere hoofstukke sal ek praat oor hoe om ons eie C-biblioteek (glibc, bionic, newlibc) maar van tyd tot tyd te plaas. Ons het bespreek dat ons teks op die skerm wil plaas, en ons sal sien hoe ons dit doen.

Daar is twee opsies, een is om die BIOS en 'n ander is om skermgeheue direk te bestuur. Ons gaan laasgenoemde doen, want dit is duideliker uit C en dit sal ons ook toelaat om dit te doen wanneer ons die beskermde modus betree.

Ons skep 'n lêer genaamd NextKernel_Main.c met die volgende inhoud:

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

Hiermee manipuleer ons die geheue direk VGA en karakter vir karakter skryf ons dit. Ons stel saam deur die stdlib uit te skakel:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding

As u tot hiertoe gekom het, wil u nou u splinternuwe bedryfstelsel probeer, maar ons is nog nie klaar nie. Ons het 'n klein lêer nodig wat die samesteller vertel waar in die lêer elke afdeling moet verlaat. Dit word gedoen met 'n skakelskrip. Ons skep 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 = .;
}

Hiermee definieer ons die posisie van elke afdeling en die ingangspunt, begin, wat ons in kernel.asm omskryf het. Nou kan ons al hierdie konkoksie verenig:

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

Nou kopieer ons START.ELF na / volgende in ons gids wat die wortel van ons bedryfstelsel simuleer. Ons gaan met die konsole na die hoofmap van ons nuwe bedryfstelsel en verifieer dat daar twee lêers is: een /boot/grub/grub.cfg en 'n ander /next/START.ELF.

Ons gaan na die boonste gids en noem 'n ISO-skeppingsprogram met GRUB genaamd grub-mkrescue

grub-mkrescue -o nextdivel.iso nextroot

Sodra ons dit gedoen het, sal ons 'n ISO. Hierdie ISO kan op rekenaars oopgemaak word x86 (64 bisse ook) en virtuele masjiene. Om dit te toets, gaan ek dit gebruik QEMU. Ons roep QEMU vanaf die opdraglyn:

qemu-system-i386 nextdivel.iso

Sal begin SeaBIOS en later sal ons hê GRUB. As alles later korrek is, sal ons ons frase sien.
U sal dink dat dit moeilik is, antwoord ek, ja, dit is.

Dit is moeilik om regtig 'n bedryfstelsel te skep en dat dit hier niks nuttig is nie. In toekomstige hoofstukke sal ons sien hoe om kleure op die skerm te hanteer, geheue te reserveer en indien moontlik, hoe om data vanaf die sleutelbord te kry.

As iemand nie alles hier wil kopieer nie, het ek 'n bewaarplek by GitHub (uitgebrei) met die bedryfstelsel Volgende Divel. As u wil saamstel Volgende Divel jy moet net git en cmake hê:

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

Ek moedig u aan om saam te werk aan NextDivel as u die tyd en begeerte het om 'n bedryfstelsel te skep. Miskien selfs beter as Linux ... die tyd sal leer.


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

85 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   lewendig dijo

    :O

    1.    marianogaudix dijo

      Torvalds het die Minix-bedryfstelsel (afgelei van UNIX) na Andrew S. Tanenbaum geneem en dit verbeter.

      Tanenbaum het met Linus baklei, hulle het mekaar beledig. Tanenbaum sê dat die Microkernel die toekoms is (HURD, Minix nuwe kegel Microkernel).

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

  2.   eliotyd3000 dijo

    Dit was die beste boodskap wat ek tot dusver op hierdie blog gesien het. Ek wil reeds weet wat om nog te doen.

  3.   Carlos. Gude dijo

    Wees beïndruk

  4.   Axl dijo

    Regtig indrukwekkend !!

  5.   rhoconlinux dijo

    FUUUUUUA!
    Dit is die geekiest post wat ek nog ooit gesien het hehe. Baie geluk Adrián, 'n hoerartikel! hiper interessant !!! 🙂

    1.    Joaquin dijo

      Ek stem saam. Ek verbeel my hierdie situasie:
      GNU / Linux Power User (met 'n gelukkige gesig):
      "Ek weet al hoe om my Gentoo op te stel"

      Nerd (minagtend): «pff, ek het my eie distro geskep ...»

      1.    desikoder dijo

        Ja, ek kan my eie Linux-distro skep. In werklikheid ontwikkel ek 'n initramfs en 'n kern vir ingeboude Linux. Dit is nie dieselfde om 'n bedryfstelsel te skep as 'n Linux-distro nie. Die eerste is baie moeiliker, amper onmoontlik, die tweede kan, soos u gesê het, enigiets wees, selfs Ubuntu met die xD-logo verander. So ek sal dit so laat:

        GNU / Linux Power User (met 'n gelukkige gesig)
        - Ek weet al hoe om my Gentoo op te stel

        Semi-nerd
        - Pff, ek het 'n Linux van vooraf gevolg en ek het my eie distro gemaak

        Nerd (met minagtende houding)
        - pff, omdat ek 'n kern in assembler en in C geprogrammeer het

        Groete!

  6.   Cronos dijo

    Dit is vir my interessant, hangende die volgende hoofstukke.

  7.   abimaelmartell dijo

    Ek het hierdie handleiding 'n geruime tyd gelede gesien, dit is vir C ++
    https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

    1.    AdrianArroyoStreet dijo

      Dankie vir die skakel, ek sal daarna kyk.

  8.   Jose Jácome dijo

    Ek wil 'n bedryfstelsel hê wat 100% versoenbaar is met AMD-grafika: /

    1.    Ivan Linux dijo

      Windows

      1.    Jose Jácome dijo

        hahaha in Windows Catalyst het nie OpenGL-ondersteuning nie, hoewel ek in Linux nie al die grafiese krag kan gebruik nie, sal ek wag om te sien wat gebeur!

        1.    beny_hm dijo

          wag net vir klep om die mark uit te wis

  9.   KZKG ^ Gaara dijo

    Magies, perfek, uitstekende bydrae, dit lyk na 'n wonderlike reeks plasings 🙂

  10.   O_Piksote_O dijo

    Buah Ek wil graag weet hoe om te programmeer om u te help, bloot as 'n manier om te oefen met die kennis wat u leer en om een ​​te help. Vir nou laat ek u die leuse om aandag te vestig op die projek sodra u dit voltooi het "Gebruik NextDivel, porn lyk dieselfde (of beter).", U sal xD vee.

  11.   hierdie naam is vals dijo

    Mooooooolaaa !!!!

  12.   nordi dijo

    Baie goeie artikel, maar net nuuskierig waarom u nie die Linux From Scratch-projek gevolg het nie?

    Groete

    1.    AdrianArroyoStreet dijo

      Wel, Linux van Scratch is goed, en u kan sien dat dit uwe is, maar dit is regtig baie meganies:
      -Laai lettertipes af
      -Lap hulle
      -Saamstel
      Installeer
      -Volgend
      Hier, alhoewel die resultaat uiteindelik slegter is, kan u wel sê dat u al die lêers hersien het.

    2.    desikoder dijo

      Soos blyk uit my vorige opmerking, omdat dit nie dieselfde kompleksiteit het nie. Verder is Linux van nuuts af nie eintlik 'n stelsel van nuuts af nie, in teenstelling met die naam daarvan. Om 'n stelsel van nuuts af te skep, beteken dat u dit self moet programmeer, u eie kern skryf, nie die Linux-kern nie, indien moontlik selfs u eie bootloader in plaas van grub, lilo, syslinux, ens. Alhoewel 'n LFS nie 'n geringe prestasie is nie en nogal ingewikkeld is, kom dit nie eers naby die programmering van u eie kern nie ...

      Daarbenewens stem ek saam met AdrianArroyo Calle dat dit te meganies is, ek het dit een of ander tyd gelees en u moet uiteindelik opgee op die sesde bladsy. Hulle vertel u ook om die weergawes van die pakkette te gebruik, want anders werk die instruksies nie (dit toon die gebrek aan buigsaamheid) , Na my mening ). Ek dink dit is beter om iets van u eie idee te hê, die pakkette saam te stel wat u wil hê, selfs 'n paar te programmeer, 'n Linux-kern op te stel en in vrede.

      Groete!

  13.   koekie dijo

    uuuoooohh !! Ek het nog nooit so 'n pos gevang soos dié nie.
    Gaan asseblief voort 😀

  14.   linux_gebruiker dijo

    Ek weet nie wat verkeerd is nie:

    fout: geen multiboot-opskrif gevind nie.
    fout moet u eers die kern laai

    1.    AdrianArroyoStreet dijo

      As dit 'n troos is, het ek dieselfde fout gemaak. Probeer die bronne in GitHub gebruik, daar is die fout al opgelos. In elk geval, ek dink as u die lyn in grub.cfg verander van "multiboot /next/START.ELF" na "kernel /next/START.ELF", kan dit werk. Ek weet nie presies nie.

      1.    mcbanaan dijo

        In die eerste plek 'n pragtige ingang 🙂
        Ek het dieselfde probleem om die kern van die grub te laai. Selfs die gebruik van GitHub-bronne of die verandering van multiboot vir kern ...

        fout: geen multiboot-opskrif gevind nie.
        fout: geen gelaaide kern nie

        1.    AdrianArroyoStreet dijo

          Gebruik u clang as samesteller? Verander dit vir die gcc
          Het u onthou dat u die koppelingskrip gebruik het? Dit is nodig dat die skakelaar (ld in ons geval) weet waar dit in die lêer gaan sit. In hierdie geval moet die multibootkop aan die begin wees.
          Gebruik u die CMake-stelsel? As u dit gebruik, dink ek dit misluk nie.
          As dit nie vir u werk nie, sal ek probeer om 'n ander oplossing te vind.

  15.   khourt dijo

    [+100]
    Net wonderlik !!!

  16.   invisible15 dijo

    Dit is regtig cool 🙂

  17.   tanrax dijo

    Ek haal my hoed af. Indrukwekkende berig. Baie geluk.

  18.   man dijo

    Sjoe!
    Dit sal wonderlik wees as u toepassings in HTML5 en Javascript kan open sonder dat u 'n blaaier hoef te gebruik, is dit moontlik?
    Ek praat daarvan dat dit soos inheemse toepassings is.
    Dit sou dus maklik wees om hierdie bedryfstelsel te programmeer 😀

    1.    AdrianArroyoStreet dijo

      In hierdie geval gaan ek dit nie doen nie, want dit verg baie meer werk daaragter, maar daar is 'n bedryfstelsel genaamd 'is' wat doen wat u sê. In werklikheid is die opdraglyn JavaScript en vensters word geteken met behulp van JavaScript Canvas-funksies. Nintendo-ingenieurs het dit gedoen en nou is dit open source.

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

      1.    man dijo

        Valla, dankie vir die inligting 😀
        Ek sal kyk

  19.   patodx dijo

    Wie sy eie bedryfstelsel kan maak, kan vreedsaam sterf, aangesien die intellektuele vlak wat hy daarmee moet bereik; Dit laat jou van die hemel of die hel afsien.
    Stukkie plasing.

    1.    Miguel dijo

      tot dusver weet niemand dat hy net iets gemaak het wat gesê kan word dat dit 'n ordentlike bedryfstelsel is wat van nuuts af gemaak is nie, selfs nie Linux Torvalds soos u aan die begin sê nie, aangesien dit vanuit Unix-bronne begin het en al die ander is geskryf in algemeen vir meer as een persoon, is die lewe baie kort en is dit van voor af ondenkbaar vir enigiemand, selfs al is die teenoorgestelde verlang, is dit bewysbaar in baie foute wat Linux Torvalds kopieer en plak.

      1.    skarmiglione dijo

        Die unix-bronne is gesluit, die gebruik van minix ... wat iets anders is.

      2.    Philip Robaina dijo

        en diegene wat QDOS gemaak het, wat?
        was gebaseer op iets?

  20.   Tesla dijo

    Van wat ek sien, wie nie hul eie bedryfstelsel het nie, is omdat hulle nie wil nie, hahahaha.

    Nou ernstig, baie interessant! Baie gaan my beperkte kennis oor programmering oor, maar ek sal die ander dele van hierdie reeks met verwagting lees.

    Dankie vir die berig!

  21.   Manuel R. dijo

    U het my met 'n O_O-gesig gelaat ... sonder om die bydraes van iemand te onderskat, is dit die mees "pro" wat ek die afgelope tyd gesien het. Groete.

  22.   aitor_cz dijo

    Baie goeie artikel, Adrián. Gaan voort ...

  23.   mj dijo

    Grap jy op Aprilgeksdag?, Moenie gemeen wees nie "Emulasie van Linus Torvalds: skep jou eie bedryfstelsel van nuuts af." Ek dink nie dit is moeilik vir diegene wat 'n loopbaan in 'n instituut vir tegnologie of universiteit volg nie; maar vir my is ek 'n beginnerboogskutter (daar is diegene wat ons "Noob" noem, maar ek beskou myself as 'n beginner as ietwat lui) wat klink soos om nie op die land te trap nie. Hoe dit ook al sy, HIERDIE ARTIKEL SKEP BAIE GEKURSHEID EN SONDER 'N TWYFELDE BEWONING EN RESPEK VIR SY REDAKTEUR, BAIE geluk; Die eerste ding wat ek sal doen, is om ten minste 'n bietjie van hierdie waardevolle materiaal te probeer verstaan.
    DANKIE Adrian Arroyo Calle, uitstekende werk en edele kennislewering.

  24.   Blaire pascal dijo

    LEL Uitstekende pos, hou so aan.

  25.   f3niX dijo

    Wat 'n wonderlike boodskap, dit is wat ek van Linux misgeloop het. Wonderlik.

  26.   Ruby dijo

    Goeie boodskap, baie dankie.
    Ek het nie verstaan ​​wat die link.ld-lêer doen nie, kan iemand my dit verduidelik?

    1.    AdrianArroyoStreet dijo

      Die link.ld-lêer vertel die linker (in hierdie geval ld) in watter posisie in die resulterende lêer elke deel van die kode moet wees. Ons definieer ook die ingangspunt, aangesien ons nie 'n bedryfstelsel het nie, kan ons main nie as 'n normale program gebruik nie. In hierdie geval kies ons die beginfunksie.

  27.   Maxi dijo

    Groot al jou boodskappe! Wag vir die 7! Wat as ek byvoorbeeld twyfel as ek net 'n algoritme sonder bedryfstelsel wil bestuur, hoe weet ek wat ek kan gebruik en wat nie C nie?

    1.    AdrianArroyoStreet dijo

      As u dit so gebruik, sou u niks van stdlib kon gebruik nie, wat feitlik is wat almal gebruik (geen malloc, gratis, printf, scanf, strcmp, ens.). Alles moet direk vanuit die geheue of ASM geïmplementeer word. Miskien sal ek u in 'n hoër hoofstuk wys hoe u 'n C-biblioteek vir die bedryfstelsel kan installeer. As u C ++ gebruik, kan u nie uitsonderings gebruik nie en die nuwe en delete-operateurs (en sekerlik meer).

    2.    skakelaar dijo

      ek dink hierdie dit kan u 'n beter idee gee van hoe u dit moet doen.

  28.   Esteban dijo

    Hallo, ongeveer 5 jaar gelede het ek 'n soortgelyke publikasie gevolg en 'n mikrokernel ontwikkel wat op dieselfde manier begin, dit het 'n paar aspekte om te verbeter, maar dit kan u interesseer, dit werk in beskermde modus, voer multitasking uit en voer geheue-virtualisering uit, die afgelope tyd het ek daaraan gewerk skyfbestuurder en CD-skyf om dit installeerbaar te maak en nie net op lewendige CD te loop nie ... Groete.

  29.   Johan dijo

    Beste, ek het 'n fout tydens die uitvoering van die opdrag:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -vrystaande -lgcc

    link.ld: 5 sintaksisfout
    collect2: fout: ld het 1 uitgangstatus teruggegee

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

    In reël 5 sien ek nie die fout nie, is iemand dieselfde?

    Ek werk met 'n gevirtualiseerde debian wheezy in virtualbox

    1.    Julian Reyes Escrigas plekhouer beeld dijo

      voeg die ";" by aan die einde van * (. multiboot_header)

  30.   Eric Orellana Romero dijo

    Uitstekende inisiatief, ek sal beslis die hoofstukke van hierdie pos volg en van plan wees om baie daaruit te leer. Baie dankie dat u die tyd geneem het om ons te leer. 'N Enkele detail in hierdie verband, daar moet op gelet word dat Linus Torvalds nie die skepper van enige bedryfstelsel is nie; hy het die kern van die GNU / Linux-stelsel geskep (die een wat in 'n ander bedryfstelsel gebruik is), wat nog steeds die moeite werd is, maar dit is Dit is belangrik om Richard Stallman te erken dat hy die grootste deel van die bedryfstelsel geskep het.

    Baie dankie vir die insette en ek hoop dat u my waarneming oorweeg.

  31.   Julian Reyes Escrigas plekhouer beeld dijo

    Ek het al 'n rukkie geknoei met die onderwerp, en ek het belanggestel sodra ek die opskrif lees. maar die boodskap word steeds

    fout: geen multiboot-opskrif gevind nie.
    fout moet u eers die kern laai

    Ek het wat ek neem na 'n repo op github gelaai https://github.com/rkmax/GenyOS

    1.    martin villalba dijo

      Dieselfde gebeur met my. Het u die oplossing gevind?

  32.   Carlos dijo

    'n vraag wat ek begin het om die sintaksis in te voer, en die menu-invoerreël vertel my dat die kommando nie gevind kan word wat my kan vertel hoekom nie
    dit is wat ek doen

    BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
    menuentry: opdrag nie gevind nie

    1.    AdrianArroyoStreet dijo

      Die inhoud van hierdie inhoud moet nie in die opdraglyn ingevoer word nie, maar in die lêer wat u skep genaamd grub.cfg

  33.   Nodetin dijo

    Uitstekende artikel, dankie!

  34.   David dijo

    Skouspelagtige…!! dit is net soos die skakel wat ontbreek.

  35.   r.garciag dijo

    Ek hou van u Emulating LInus Torvalds-tutoriale, maar daar is een stap wat ek nie verstaan ​​nie, die volgende:
    Nou kopieer ons START.ELF na / volgende in ons gids wat die wortel van ons bedryfstelsel simuleer. Ons gaan met die konsole na die hoofmap van ons nuwe bedryfstelsel en verifieer dat daar twee lêers is: een /boot/grub/grub.cfg en 'n ander /next/START.ELF.

    Ons gaan na die boonste gids en noem 'n hulpmiddel vir die maak van ISO's met GRUB genaamd grub-mkrescue

    Kan iemand my dit verduidelik: p

    1.    AdrianArroyoStreet dijo

      Om die minimum ISO te genereer wat GRUB kan laai, kopieer ons die kern na (die / van die ISO, enige map) / volgende / START.ELF en die GRUB-konfigurasielêer na (die / van die ISO, enige map) / boot /grub/grub.cfg. Sodra dit klaar is, het ons GRUB nog nie op die ISO geïnstalleer nie en daar is 'n hulpmiddel wat die ISO genereer vanuit 'n map en GRUB genaamd grub-mkrescue installeer. Dan sal ons uiteindelik 'n opstartbare ISO hê waarop GRUB geïnstalleer is, wat die konfigurasie kan lees om later START.ELF korrek uit te voer. Ek weet nie of ek myself verduidelik het nie, maar wat ons doen is 'n soort vals lêerstelsel waarmee ons 'n ISO genereer.

  36.   miguel jose guevara aandag dijo

    buenísimo

  37.   michael moreno dijo

    Wel, kyk regtig nie 'n nuwe stelsel nie, maar as u Linux verbeter, byvoorbeeld om 'n Linux-exonucleus te skep met 'n bedienerkomponent wat as 'n microkernel optree indien dit verlang word, dit wil sê 'n exo-struktuur met micronucleus-gedrag wat super en linux sou wees.

    Die ander ding is dat ek nie 'n kenner van programmering is nie, maar net 'n paar kaasagtige c ++ en 'n bietjie Java, dit sou genoeg wees om die Linux kernel-program 'n module te gee, te verwyder, aan te pas, ens.

  38.   WinterSoldaat53 dijo

    Sonder twyfel moet ek al op vakansie gaan.

  39.   Fermin dijo

    Hierdie goeie een en in watter program ontwerp en kodeer dit dit?
    gee my asseblief die antwoord

  40.   Darkmind dijo

    By die samestelling van u git kry ek:

    [jmponce @ jar build] $ cmake ..
    - Skep NextRoot-gids
    - Genereer ISO-skrif
    maak DESTDIR = volgende installasie
    ./iso.sh
    - Gevind Doxygen: / usr / bin / doxygen (gevind weergawe "1.8.9")
    - Konfigurasie gedoen
    - Genereer klaar
    - Bou-lêers is geskryf na: / home / jmponce / next-divel / build
    [jmponce @ jar gebou] $ maak
    Skandeer afhanklikhede van die teiken START.ELF
    [7%] Bou ASM-ATT-voorwerp src / CMakeFiles / START.ELF.dir / start / boot.asm.o
    [14%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / NextShellLite.cpp.o
    [21%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Screen.cpp.o
    [28%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / NextKernel_Main.cpp.o
    [35%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Panic.cpp.o
    [42%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Timer.cpp.o
    [50%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Memory.cpp.o
    [57%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
    [64%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_GDT.cpp.o
    [71%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_ISR.cpp.o
    [78%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_String.cpp.o
    [85%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_IRQ.cpp.o
    [92%] Bou van CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_IDT.cpp.o
    [100%] Bou CXX-voorwerp src / CMakeFiles / START.ELF.dir / begin / ND_Keyboard.cpp.o
    Koppel CXX-uitvoerbare START.ELF
    / usr / bin / ld: Onversoenbaar /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a word oorgeslaan terwyl u op soek is na -lgcc
    / usr / bin / ld: kan nie -lgcc vind nie
    collect2: fout: ld het uitgangstatus 1 terugbesorg
    src / CMakeFiles / START.ELF.dir / build.make: 402: Mislukte instruksies vir teiken 'src / START.ELF'
    maak [2]: *** [src / START.ELF] Fout 1
    CMakeFiles / Makefile2: 106: mislukte instruksies vir teiken 'src / CMakeFiles / START.ELF.dir / all'
    maak [1]: *** [src / CMakeFiles / START.ELF.dir / all] Fout 2
    Makefile: 117: Mislukking in instruksies vir teiken 'almal'
    maak: *** [alles] Fout 2

    1.    AdrianArroyoStreet dijo

      Die fout blyk te wees dat dit nie llibgcc kan vind nie, aangesien u die 64-bis-weergawe het en dat die build-stelsel tans gedwing word om 32-bit te gebruik. U moet 'n verenigingspakket op u distro of beter installeer, gebruik 'n 32-bis-stelsel.

      1.    Ronaldo Rodríguez dijo

        Ek het 32 ​​bisse en ek kry dieselfde fout, bedoel u die bedryfstelsel of die argitektuur? myne is 64 Bit, maar ek gebruik 32 bit Ubuntu, moenie vra nie, finansiële probleme, daarmee sê ek alles.

  41.   Jorge dijo

    Uitstekende onderwerp, wag op groter omvang. Cheers

  42.   Jhon dijo

    Groot ek hoop vir meer

  43.   Soid perez dijo

    Hallo, ek is 'n jong ambassadeur wat 'n bedryfstelsel wil skep wat alle programme en platforms ondersteun, sodat ontwikkelaars nie kragtige masjiene of toepassings of programme op 'n rekenaar hoef te hê nie.
    dit is waarom ek in hierdie pos belangstel, maar as ek jou git aflaai of probeer om dit te skep, gaan alles goed totdat ek die opdrag uitvoer ./iso.sh of grub-mkrescue -o nextdivel.iso volgende root kry jy hierdie fout

    "Grub-mkrescue: waarskuwing: u xorriso ondersteun nie" –grub2-boot-info ". Sommige funksies is gedeaktiveer. Gebruik xorriso 1.2.9 of later.
    grub-mkrescue: waarskuwing: u xorriso ondersteun nie "–grub2-boot-info" nie. Jou kernbeeld is te groot. Skyflaai is gedeaktiveer. Gebruik xorriso 1.2.9 of later .. »
    Ek het regtig geen idee nie, want ek weet baie van toepassings en webwerwe, maar ek weet niks van grub nie

    1.    AdrianArroyoStreet dijo

      U moet dalk die xorriso-program op u distro opgedateer het. Watter distro en weergawe gebruik u?

      1.    Soid perez dijo

        Ek gebruik xubuntu 14.04lts en probeer om xorriso uit te voer, maar die dop sê vir my dat dit nie kan vind nie en ek kry dit reg om xorriso te installeer, alhoewel ek regtig reaksie verwag het omdat ek 'n slegte ervaring gehad het om dinge te installeer wat ek nie in Linux ken nie hehe. Ek sal dit dadelik opdateer en vertel wat gebeur het

      2.    AdrianArroyoStreet dijo

        Installeer dan xorriso vanaf die sagteware sentrum of eenvoudig vanaf die terminale doen "sudo apt-get install xorriso"

      3.    Soid perez dijo

        Ek het al alles gedoen wat u my vertel het en albei met git en myne kry ek hierdie xorriso 1.3.2: RockRidge lêerstelsel manipuleerder, libburnia projek.

        Bestuur stroom: -outdev 'stdio: nextdivel.iso'
        Mediastroom: stdio-lêer, oorskryfbaar
        Media status: is leeg
        Media-opsomming: 0 sessies, 0 datablokke, 0 data, 1901m gratis
        By ISO-beeld gevoeg: gids '/'='/tmp/grub.OEqSzV'
        xorriso: UPDATE: 546 lêers binne 1 sekondes bygevoeg
        xorriso: FAILURE: Kan nie kenmerke van die bronlêer '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot' bepaal nie: Geen sodanige lêer of gids nie
        xorriso: UPDATE: 546 lêers binne 1 sekondes bygevoeg
        xorriso: aborteer: -abort_on 'FAILURE' het 'FAILURE' teëgekom
        En corduroy ek verstaan ​​nie my struktuur is /nextroot/boot/grub/grub.cfg en nextroot / next / START.ELF

      4.    Soid perez dijo

        Dankie, ek is gereed om voort te gaan, 'n vriend het my gehelp en my vertel wat ek verkeerd gedoen het, was die organisasie van die gids, dus het ek dit reggemaak, en dit is dit

      5.    Erik dijo

        Verskoon my, kan u my vertel watter prosedure u uitgevoer het, aangesien ek die fout kry om niks te begin nie: geen so lêer of gids nie

        geen selflaaibare toestel nie.

  44.   jose dijo

    Cheers! Ek sou u die guns vra of u vir my 'n e-pos kon stuur met wat u hier verduidelik, ek het 'n bietjie verward geraak en ek moet vergelyk wat ek het met wat u verduidelik, miskien is dit vir my nie duidelik of die skepping van die grub nie. cfg word in die terminale gcc gedoen of waar presies? baie dankie vriendin!

    1.    AdrianArroyoStreet dijo

      U skep die lêer grub.cfg met enige teksredigeerder en u moet dit stoor in PROJECT_FOLDER / boot / grub / grub.cfg

  45.   jhuazano dijo

    Hallo Adrian, wens u eerstens geluk en dankie vir u bydrae.

    U weet dat ek dit vir 'n oefening doen en ek het dit begin saamstel na u tutoring, maar na die aanvang het ek die eerste fout gevind

    $ as -o kern.o -c kernel.asm
    bash: as: opdrag nie gevind nie ...
    Soortgelyke opdragte is:
    'sa'
    'ac'

    Ek werk aan Fedora 20, en ek kan nie 'n oplossing in hierdie verband vind nie. Ek sal u leiding waardeer of ek iets in gcc of gas moet verander.

    vooruit dankie

    1.    AdrianArroyoStreet dijo

      U moet GAS installeer sodat ek die foutkode kan sien. Ek het nie Fedora byderhand nie, maar as u gcc-c ++ installeer, sal u die hele GCC-suite installeer en dit kom gewoonlik met GNU As.

  46.   Gaston Ramirez dijo

    Ek is by jou, ek weet iets van C ++, C # (alhoewel hierdie laaste een in hierdie saak nie veel gebruik nie), die slegte ding is dat ek nog steeds nie ervaring het nie, ek hanteer nooit C-taal nie, jou publikasie is wonderlik, ek het nie veel te sê nie as ek tyd het sien ek. Dankie.

  47.   Teresita van Jesus Nah Sanchez dijo

    Baie dankie vir groot hulp ....

  48.   jky dijo

    Ek hou van Linux, dit is die beste distrik wat daar is, die waarheid vir my vensters is vullis vir 'n dat ek weet dat die skepper van Linux die skepper van windows is.

  49.   Gery dijo

    Hallo ek kry 'n fout in grub sê
    fout: lêer /next/START.ELF Nie gevind nie
    fout: u moet die kern eers laai

    Kan u my help en google, maar ek kry dit nie

  50.   Henry Avila dijo

    Hoe kan ek die boodskap HELLO WORLD laat sien? Ek is 'n beginner en weet nog nie genoeg nie

  51.   CARLOS GUERRERO ALVAREZ dijo

    Die volgende gebeur met my:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -vrystaande -lgcc
    / usr / bin / ld: kernel.o: hervestiging R_X86_64_32 teen die simbool `stack 'kan nie gebruik word as u 'n PIE-voorwerp maak nie; hersaamstel met -fPIE
    / usr / bin / ld: finale skakel het misluk: nie-verteenwoordigbare gedeelte oor uitvoer
    collect2: fout: ld het 1 uitgangstatus teruggegee