Līnusa Torvalda atdarināšana: izveidojiet savu operētājsistēmu no jauna (I)

Vispirms komentējiet, ka šis ir mans pirmais raksts un ka es ceru, ka jums visiem tas patiks.

Linuss Torvals priecīgs

Šajā sērijā mēs gatavojamies līdzināties Linuss Torvalds, mēs izveidosim savu operētājsistēmu no 0. Šajā pirmajā epizodē mēs redzēsim sāknēšanu un ekrānā no sava kodola ievietosim tekstu.

Manā gadījumā tiek saukta operētājsistēma NākamaisDivel. Pirmais lēmums, kas mums jāpieņem, tiklīdz uzskatām, ka operētājsistēma ir tāds, kāds būs sāknēšanas ielādētājs?

Šeit ir vairāki varianti, un mēs pat varētu tādu izveidot paši; tomēr šajā apmācībā es to izmantoju GRUB, jo lielākā daļa par viņu zina vairāk vai mazāk kaut ko. Mēs izveidojam mapi, kas būs mūsu operētājsistēmas sakne, un tur mēs izveidojam mapi / boot / grub

mkdir nextroot && cd nextroot

mkdir -p boot/grub

Tur mēs izveidojam grub.cfg failu šādi:

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

Šajā failā mēs esam redzējuši, kā GRUB šajā gadījumā ielādēs mūsu kodolu mapē /next/START.ELF. Tagad mums ir jāizveido savs kodols.

Šim nolūkam mums būs nepieciešams GCC y GAS (projekta montētājs GNU, parasti nāk ar gcc). Tāpēc mēs izveidosim kodolu.

Vispirms mēs izveidojam failu ar nosaukumu kernel.asm. Šajā failā būs mūsu kodola sākumpunkts, un tas arī definēs vairāku sāknēšanu (dažu sāknēšanas ielādētāju, GRUB). Kernel.asm saturs būs:

.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

Viss, kas saistīts ar multiboot, ir vienkārši ievērot specifikāciju neko citu. Viss sāksies sākumā, tas izsauks multiboot_entry, mēs būsim definējuši multiboot galveni pirmajos 4k un ieliksim to (ar movl).

Vēlāk mēs saucam NextKernel_Main, kas ir mūsu kodola C funkcija. Cilpā mēs apstājamies, lai apturētu datoru. Tas apkopo ar:

as -o kernel.o -c kernel.asm

Tagad mēs ievadīsim programmēšanu C. Jūs domājat, ka tagad viss ir kūkas gabals, mēs ieliekam printf en galvenais un tas ir viss, mēs to esam izdarījuši.

Nu nē, kopš printf y galvenais Tās ir funkcijas, kuras nosaka operētājsistēma, bet mēs tās veidojam! Mēs varam izmantot tikai tās funkcijas, kuras paši definējam.

Turpmākajās nodaļās es runāšu par to, kā ievietot mūsu pašu C bibliotēku (glibc, bionic, newlibc), bet laiku pa laikam. Mēs esam apsprieduši, ka mēs vēlamies ievietot tekstu uz ekrāna, un mēs redzēsim, kā mēs to darīsim.

Ir divas iespējas, viena ir piezvanīt BIOS un vēl viens ir tieši pārvaldīt ekrāna atmiņu. Mēs darīsim pēdējo, jo tas ir skaidrāk no C, un tas arī ļaus mums to izdarīt, kad mēs ieslēdzam aizsargāto režīmu.

Mēs izveidojam failu ar nosaukumu NextKernel_Main.c ar šādu saturu:

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

Ar to mēs tieši manipulējam ar atmiņu VGA un raksturs pēc rakstura mēs to rakstām. Mēs apkopojam, atspējojot stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding

Ja esat to paveicis tik tālu, vēlēsities izmēģināt savu pavisam jauno operētājsistēmu jau tagad, taču mēs to vēl neesam darījuši. Mums vajadzīgs mazs fails, kas kompilatoram norāda, kur failā atstāt katru sadaļu. Tas tiek darīts ar saites skriptu. Mēs izveidojam 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 = .;
}

Ar to mēs definējam katras sadaļas pozīciju un sākuma punktu, sākumu, kuru esam definējuši kodolā.asm. Tagad mēs varam apvienot visu šo sacepumu:

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

Tagad mēs kopējam START.ELF uz / nākamo mapē, kas simulē mūsu operētājsistēmas sakni. Mēs ar konsoli dodamies uz jaunās operētājsistēmas saknes mapi un pārbaudām, vai ir divi faili: viens /boot/grub/grub.cfg un vēl viens /next/START.ELF.

Mēs ejam uz augšējo direktoriju un izsaucam ISO izveides utilītu ar izsauktu GRUB grub-mkrescue

grub-mkrescue -o nextdivel.iso nextroot

Kad tas būs izdarīts, mums būs ISO. Šo ISO var atvērt datoros x86 (Arī 64 biti) un virtuālās mašīnas. Lai to pārbaudītu, es gatavojos izmantot QEMU. Mēs saucam QEMU no komandrindas:

qemu-system-i386 nextdivel.iso

Sāksies SeaBIOS un vēlāk mums būs GRUB. Vēlāk, ja viss ir pareizi, mēs redzēsim savu frāzi.
Jūs domājat, ka tas ir grūti, es jums atbildu, jā, tā ir.

Operētājsistēmas izveide ir sarežģīta un ka šī šeit nedara neko noderīgu. Turpmākajās nodaļās mēs redzēsim, kā rīkoties ar ekrānā redzamajām krāsām, rezervēt atmiņu un, ja es varu, kā iegūt datus no tastatūras.

Ja kāds nevēlas visu šeit nokopēt, man ir krātuve GitHub (sarežģītāk) ar operētājsistēmu NākamaisDivel. Ja vēlaties apkopot NākamaisDivel jums vienkārši jābūt git un 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

Es iesaku jums sadarboties ar NextDivel, ja jums ir laiks un vēlme izveidot operētājsistēmu. Varbūt pat pārāks par Linux ... laiks rādīs.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   dzīvīgs teica

    :O

    1.    marianogaudix teica

      Torvalds aizveda operētājsistēmu Minix (atvasinātu no UNIX) Endrjū S. Tanenbaumam un to uzlaboja.

      Tanenbaumam ir bijis kautiņš ar Līnusu, viņi apvainoja viens otru. Tanenbaums saka, ka mikrokodelis ir nākotne (HURD, Minix new cone Microkernel).

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

  2.   3000 teica

    Šis ir bijis labākais ieraksts, ko līdz šim esmu redzējis šajā emuārā. Es jau gribu zināt, ko vēl darīt.

  3.   Karloss. Gude teica

    Esi pārsteigts

  4.   ass teica

    Tiešām iespaidīgi !!

  5.   Rhoconlinux teica

    FUUUUUUA!
    Tas ir geekiest ieraksts, ko esmu redzējis hehe. Apsveicu Adrián, raksts par prostitūtu! hiper interesanti !!! 🙂

    1.    Joaquin teica

      Es piekrītu. Es iedomājos šo situāciju:
      GNU / Linux enerģijas lietotājs (ar laimīgu seju):
      "Es jau zinu, kā sastādīt savu Gentoo"

      Nerd (nicinoši): «pff, es izveidoju savu distro ...»

      1.    desikoders teica

        Jā, es varu izveidot pats savu linux distro. Patiesībā tajā es izstrādāju initramfs un kodolu iegultam Linux. Izveidot operētājsistēmu nav tas pats, kas linux distro. Pirmais ir daudz grūtāks, gandrīz neiespējams, otrais, kā jūs teicāt, var būt jebkas, pat mainīts Ubuntu ar xD logotipu. Tāpēc es to atstātu šādi:

        GNU / Linux enerģijas lietotājs (ar laimīgu seju)
        - Es jau zinu, kā sastādīt savu Gentoo

        Pusrieksts
        - Pff, es esmu sekojis linuxam no nulles un esmu izveidojis pats savu distro

        Nerd (ar nicinošu attieksmi)
        - pff, jo es esmu ieprogrammējis kodolu montāžā un C

        Saludos!

  6.   Cronos teica

    Tas man ir interesanti, gaidot šādas nodaļas.

  7.   abimaelmartell teica

    Pirms kāda laika es redzēju šo apmācību, tā ir paredzēta C ++
    https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

    1.    AdrianArroyoStreet teica

      Paldies par saiti, es to apskatīšu.

  8.   Hosē Jācome teica

    Es gribētu, lai operētājsistēma būtu 100% saderīga ar AMD grafiku: /

    1.    ivanlinux teica

      Windows

      1.    Hosē Jācome teica

        hahaha operētājsistēmā Windows Catalyst nav OpenGL atbalsta, lai gan Linux es nevaru izmantot visu grafisko jaudu, ko es gaidīšu, lai redzētu, kas notiks!

        1.    beny_hm teica

          vienkārši pagaidiet, kamēr vārsts iznīcinās tirgu

  9.   KZKG ^ Gaara teica

    Maģisks, ideāls, lielisks ieguldījums, tas izskatās kā lieliska ziņu sērija 🙂

  10.   O_pixote_o teica

    Buah, es gribētu zināt, kā ieprogrammēt, lai jums palīdzētu, vienkārši praktizējot ar zināšanām, ka jūs mācāties un palīdzat tām. Pagaidām es jums atstāju devīzi, lai pēc projekta pabeigšanas pievērstu uzmanību projektam "Izmantojiet NextDivel, pornogrāfija izskatās vienāda (vai labāka)".

  11.   šis vārds ir nepareizs teica

    Mooooooolaaa !!!!

  12.   nordi teica

    Ļoti labs raksts, bet vienkārši interesanti, kāpēc jūs neesat sekojis projektam Linux From Scratch?

    Sveicieni

    1.    AdrianArroyoStreet teica

      Nu, Linux no Scratch ir lieliski, un jūs varat pateikt, ka tas ir jūsu, bet tas patiešām ir ļoti mehānisks:
      -Lejupielādējiet fontus
      -Labojiet tos
      -Sastādīt
      -Uzstādīt
      -Sekojošs
      Pat tad, ja rezultāts beigās ir sliktāks, jūs varat teikt, ka esat pārskatījis visus failus.

    2.    desikoders teica

      Kā redzams no mana iepriekšējā komentāra, jo tam nav tikpat sarežģīts līmenis. Turklāt linux no nulles patiesībā, pretēji tā nosaukumam, nav sistēmas izveidošana no nulles. Sistēmas izveide no nulles nozīmē to pats programmēt, rakstīt savu kodolu, nevis linux kodolu, ja iespējams, pat jūsu bootloader, nevis grub, lilo, syslinux utt. Lai gan LFS nav mazs varoņdarbs un ir diezgan sarežģīts, tas pat nav tuvu sava kodola programmēšanai ...

      Turklāt es piekrītu AdrianArroyo Calle, ka tas ir pārāk mehāniski, es to kādreiz esmu lasījis, un jūs galu galā atsakāties no sestās lapas, viņi arī saka, ka izmantojiet kādas pakotņu versijas, jo pretējā gadījumā instrukcijas nedarbojas (ka parāda elastības trūkumu, manuprāt). Es domāju, ka labāk ir kaut kas no jūsu paša idejas, apkopot vēlamos pakotnes, pat programmēt dažus, sastādīt Linux kodolu un mierīgi.

      Saludos!

  13.   cepums teica

    uuuoooohh !! Es nekad neesmu iemūžinājis tik daudz ziņu kā šis.
    Lūdzu, turpiniet 😀

  14.   linux_lietotājs teica

    Es nezinu, kas par vainu:

    kļūda: nav atrasta vairāku sāknējumu galvene.
    kļūda, vispirms jāielādē kodols

    1.    AdrianArroyoStreet teica

      Ja tas ir kāds mierinājums, es pieļāvu to pašu kļūdu. Mēģiniet izmantot avotus, kas atrodas GitHub, tur kļūda jau ir novērsta. Jebkurā gadījumā es domāju, ka, ja jūs maināt grub.cfg līniju no "multiboot /next/START.ELF" uz "kernel /next/START.ELF", tas varētu darboties. ES nezinu precīzi.

      1.    Mcplatano teica

        Pirmkārt, lieliska ieeja 🙂
        Man ir tāda pati problēma kā ielādēt kodolu no grub. Pat izmantojot GitHub avotus vai mainot kodola multiboot ...

        kļūda: nav atrasta vairāku sāknējumu galvene.
        kļūda: nav ielādēta kodola

        1.    AdrianArroyoStreet teica

          Vai jūs izmantojat clang kā kompilatoru? Mainiet to pret gcc
          Vai esat atcerējies izmantot saites skriptu? Tas ir nepieciešams, lai saite (mūsu gadījumā ld) zinātu, kur failā tā ievietos katru lietu. Šajā gadījumā vairāku sāknējumu galvenei jābūt sākumā.
          Vai izmantojat CMake sistēmu? Ja jūs to izmantojat, es domāju, ka tas neizdodas.
          Ja tas jums nedarbojas, mēģināšu atrast citu risinājumu.

  15.   khourt teica

    [+100]
    Vienkārši lieliski !!!

  16.   Invisible15 teica

    Tas ir tiešām forši 🙂

  17.   Tanraks teica

    Es noņemu cepuri. Iespaidīgs ieraksts. Apsveicu.

  18.   vīrietis teica

    Oho!
    Būtu lieliski, ja jūs varētu atvērt lietojumprogrammas, kas izveidotas HTML5 un Javascript, neizmantojot pārlūku, vai tas ir iespējams?
    Es runāju par to, ka tie ir kā vietējās lietojumprogrammas.
    Tāpēc būtu viegli programmēt šai operētājsistēmai 😀

    1.    AdrianArroyoStreet teica

      Šajā gadījumā es to nedarīšu, jo tas prasa daudz vairāk darba, taču ir operētājsistēma ar nosaukumu "ir", kas dara to, ko jūs sakāt. Faktiski komandrinda ir JavaScript, un logi tiek zīmēti, izmantojot JavaScript Canvas funkcijas. Nintendo inženieri to izdarīja, un tagad tas ir atvērtā koda.

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

      1.    vīrietis teica

        Valla, paldies par informāciju 😀
        Apskatīšu

  19.   CSXNUMX Case Opening Site Reviews teica

    Kas var izveidot savu OS, tas var nomirt mierīgi, jo intelektuālais līmenis, kas viņam ar to jāsasniedz; Tas liek iztikt bez debesīm vai elles.
    Ievietošanas gabals.

    1.    Miguel teica

      līdz šim neviens, kā zināms, nav izgatavojis tikai kaut ko tādu, ko var teikt par pienācīgu operētājsistēmu, kas izgatavota no nulles, pat Linux Torvalds, kā jūs sakāt sākumā, jo tas sākās no Unix avotiem, un viss pārējais ir kopīgs ar vairāk vairāk nekā viena persona, dzīve ir ļoti īsa, un sākt no nulles nevienam nav iedomājams, pat ja vēlaties pretējo, tas ir pierādāms daudzās kļūdās, ko Linux Torvalds pieļāvis kopējot un ielīmējot

      1.    skarmiglione teica

        Unix avoti ir slēgti, minix izmantošana ... kas ir kaut kas cits.

      2.    Filips Robaina teica

        un tie kas taisīja QDOS?
        balstījās uz kaut ko?

  20.   Tesla teica

    Pēc tā, ko es redzu, kam nav savas operētājsistēmas, tas ir tāpēc, ka viņi to nevēlas, hahahaha.

    Tagad nopietni, ļoti interesanti! Daudz kas pārsniedz manas ierobežotās programmēšanas zināšanas, taču ar cerībām lasīšu pārējās šīs sērijas daļas.

    Paldies par ierakstu!

  21.   Manuels R teica

    Jūs atstājāt mani ar O_O seju ... bez nolūka nenovērtēt neviena ieguldījumu, tas ir visvairāk "pro", ko esmu redzējis pēdējā laikā. Sveicieni.

  22.   aitor_cz teica

    Ļoti labs raksts, Adrián. Lūdzu, turpiniet…

  23.   mj teica

    Vai jūs jokojat 0. aprīļa dienā?, Nedomājiet ar to: "Atdarināt Linusu Torvaldu: izveidojiet savu operētājsistēmu no jauna." Es nedomāju, ka tiem, kas karjeru veic kādā tehnoloģiju institūtā vai universitātē, nav grūti; bet man es esmu iesācējs lokšāvējs (ir tādi, kas mūs sauc par "Noob", bet es sevi vairāk uzskatu par iesācēju, kaut kā slinku), kas izklausās kā neuzkāpšana uz zemes. Jebkurā gadījumā ar šo rakstu tiek izveidots daudz zinātkārības un bez dubultas admirācijas un cieņas pret tās redaktoru, apsveicu; Pirmā lieta, ko es darīšu, ir mēģināt saprast vismaz nedaudz no šī vērtīgā materiāla.
    PALDIES Adrianam Arroyo Calle, izcilu darbu un cēlu zināšanu sniegšanu.

  24.   Blērs paskals teica

    LEL Excellent post, turpini to.

  25.   f3niX teica

    Lielisks ieraksts, tas ir tas, ko es palaidu garām desde linux. Brīnišķīgi.

  26.   rubīns teica

    Lielisks ieraksts, liels paldies.
    Es nesapratu, ko dara link.ld fails, vai kāds man to var izskaidrot?

    1.    AdrianArroyoStreet teica

      Fails link.ld norāda saitniekam (šajā gadījumā ld), kurā iegūtā faila pozīcijā jābūt katrai koda daļai. Mēs arī definējam ieejas punktu, jo, tā kā mums nav operētājsistēmas, mēs nevaram izmantot galveno kā parastu programmu, šajā gadījumā mēs izvēlamies sākuma funkciju.

  27.   Maxi teica

    Lieliski visi jūsu ieraksti! Gaidu 7! Ko darīt, ja man ir šaubas, piemēram, ja es tikai gribēju palaist algoritmu bez OS, kā es varu zināt, ko es varu izmantot un ko ne?

    1.    AdrianArroyoStreet teica

      Ja jūs to izmantojat šādi, jūs nevarētu izmantot neko no stdlib, ko praktiski izmanto visi (bez malloc, free, printf, scanf, strcmp utt.). Viss jāievieš tieši no atmiņas vai ASM. Varbūt kādā augstākā nodaļā es jums parādīšu, kā instalēt operētājsistēmas C bibliotēku. Ja izmantojat C ++, nevar izmantot izņēmumus un jaunos un dzēšamos operatorus (un, protams, vairāk).

    2.    pārslēdzējs teica

      ES domāju ESTO tas var sniegt labāku priekšstatu par to, kā to izdarīt.

  28.   Estebans teica

    Labdien, apmēram pirms 5 gadiem es sekoju līdzīgai publikācijai un izstrādāju mikrokodolu, kas sākas tāpat, tajā ir daži uzlabojami aspekti, taču tas var jūs interesēt, tas darbojas aizsargātā režīmā, izpilda daudzuzdevumus un veic atmiņas virtualizāciju, pēdējā laikā es strādāju pie tā diska draiveris un kompaktdisks, lai padarītu to instalējamu un ne tikai palaistu tiešraidē CD ... Sveicieni.

  29.   Johan teica

    Dārgais, man ir kļūda, izpildot komandu:
    gcc -o START.ELF kodols.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc

    link.ld: 5 sintakses kļūda
    collect2: kļūda: ld atgrieza 1 izejas statusu

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

    5. rindā es neredzu kļūdu, vai kāds tāpat?

    Es strādāju ar virtualizētu debiāna sēkšanu virtuālajā kastē

    1.    Julian Reyes Escrigas viettura attēls teica

      pievienojiet ";" beigās * (. multiboot_header)

  30.   Ēriks Orellana Romero teica

    Izcila iniciatīva, es noteikti sekošu šī ieraksta nodaļām, plānojot no tā daudz mācīties. Liels paldies, ka veltījāt laiku, lai mūs iemācītu. Atsevišķa detaļa šajā sakarā jāatzīmē, ka Linuss Torvalds nav nevienas operētājsistēmas radītājs, viņš izveidoja GNU / Linux sistēmas kodolu (tādu, kas ir izmantots citās OS), kas joprojām ir tā vērts, taču ir svarīgi piešķirt Ričardam Stallmanam nepieciešamo kredītu, lai izveidotu lielāko daļu OS.

    Liels paldies par ieguldījumu, un es ceru, ka jūs apsvērsit manu novērojumu.

  31.   Julian Reyes Escrigas viettura attēls teica

    Kādu laiku esmu jaucies ar šo tēmu, man radās interese, tiklīdz izlasīju virsrakstu. bet ziņa arvien tiek saņemta

    kļūda: nav atrasta vairāku sāknējumu galvene.
    kļūda, vispirms jāielādē kodols

    Esmu augšupielādējis to, ko paņēmu, repo vietnē github https://github.com/rkmax/GenyOS

    1.    Martins Villalba teica

      Tas pats notiek ar mani.Vai jūs atradāt risinājumu?

  32.   Carlos teica

    jautājums, kuru es sāku ieviest sintaksi, un menuentry līnija man saka komandu, kas nav atrasta, kurš varētu man pateikt, kāpēc
    to es daru

    BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
    menuentry: komanda nav atrasta

    1.    AdrianArroyoStreet teica

      Šī satura saturs nav jāievada komandrindā, bet gan izveidotajā failā ar nosaukumu grub.cfg

  33.   Nodetin teica

    Izcils raksts, paldies!

  34.   David teica

    Brīnišķīgi ... !! tas ir tāpat kā trūkstošā saite.

  35.   r.garciag teica

    Man patīk jūsu emitējošās LInus Torvalds apmācības, taču ir viens solis, kuru es nesaprotu, piemēram:
    Tagad mēs kopējam START.ELF uz / nākamo mapē, kas simulē mūsu operētājsistēmas sakni. Mēs ar konsoli dodamies uz jaunās operētājsistēmas saknes mapi un pārbaudām, vai ir divi faili: viens /boot/grub/grub.cfg un vēl viens /next/START.ELF.

    Mēs ejam uz augšējo direktoriju un ar GRUB izsaucam ISO izveides utilītu, ko sauc par grub-mkrescue

    Vai kāds man to varētu izskaidrot: p

    1.    AdrianArroyoStreet teica

      Vienkārši, lai ģenerētu minimālo ISO, kuru GRUB var ielādēt, kodolu kopējam uz (ISO /, jebkura mape) /next/START.ELF un GRUB konfigurācijas failu uz (/ ISO, jebkura mape) / boot / grub / grub.cfg. Kad tas ir izdarīts, mēs vēl neesam instalējuši GRUB uz ISO, un ir utilīta, kas ģenerē ISO no mapes un instalē GRUB ar nosaukumu grub-mkrescue. Tad mēs galu galā nonāktu ar sāknējamu ISO, kurā ir instalēts GRUB, kurš var nolasīt konfigurāciju, lai vēlāk pareizi izpildītu START.ELF. Es nezinu, vai esmu pats paskaidrojis, bet tas, ko mēs darām, ir sava veida viltus failu sistēma, ar kuru mēs ģenerējam ISO.

  36.   migels jose guevara atencio teica

    Buenísimo

  37.   Maikls Moreno teica

    Nu, tiešām paskatieties uz jaunu sistēmu ne tik daudz, bet, piemēram, uzlabojot Linux, izveidojiet linux exonucleus ar servera komponentu, kas, ja vēlaties, darbojas kā mikrolodziņš, tas ir, exo struktūra ar mikrokodolu uzvedību, kas būtu super un Linux.

    Otra lieta ir tā, ka es neesmu programmēšanas eksperts, tikai daži sieraini c ++ un daži java, man pietiktu, ja linux kodola programmai piešķirtu moduli, izķidātu to, modificētu utt.

  38.   Ziemas karavīrs53 teica

    Bez šaubām man tas jau jādara atvaļinājumā.

  39.   Fermīns teica

    Šis labs un kādā programmā to izstrādā un kodē?
    lūdzu, sniedziet man šo atbildi

  40.   Darkmind teica

    Sastādot no jūsu git, es saņemu:

    [jmponce @ jar build] $ cmake ..
    - NextRoot direktorijas izveide
    - ISO skripta ģenerēšana
    make DESTDIR = nākamā instalēšana
    ./iso.sh
    - Atrasts Doxygen: / usr / bin / doxygen (atrasta versija "1.8.9")
    - konfigurēšana pabeigta
    - ģenerēšana pabeigta
    - Build faili ir rakstīti uz: / home / jmponce / next-divel / build
    [jmponce @ jar build] $ make
    Mērķa START.ELF skenēšanas atkarības
    [7%] ASM-ATT objekta src / CMakeFiles / START.ELF.dir / start / boot.asm.o veidošana
    [14%] CXX objekta src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o veidošana
    [21%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o veidošana
    [28%] CXX objekta src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o veidošana
    [35%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o veidošana
    [42%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o veidošana
    [50%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o veidošana
    [57%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o veidošana
    [64%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o veidošana
    [71%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o veidošana
    [78%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o veidošana
    [85%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o veidošana
    [92%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o veidošana
    [100%] CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o veidošana
    Saistot CXX izpildāmo failu START.ELF
    / usr / bin / ld: Nesaderīgs /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a tiek izlaists, meklējot -lgcc
    / usr / bin / ld: nevar atrast -lgcc
    collect2: kļūda: ld atgriezās izejas statuss 1
    src / CMakeFiles / START.ELF.dir / build.make: 402: Neveiksmīgi norādījumi mērķim 'src / START.ELF'
    make [2]: *** [src / START.ELF] 1. kļūda
    CMakeFiles / Makefile2: 106: neizdevās norādījumi mērķim 'src / CMakeFiles / START.ELF.dir / all'
    make [1]: *** [src / CMakeFiles / START.ELF.dir / all] 2. kļūda
    Makefile: 117: kļūda norādījumos par mērķi “visi”
    make: *** [all] 2. kļūda

    1.    AdrianArroyoStreet teica

      Šķiet, ka kļūda ir tā, ka tā nevar atrast llibgcc, jo jums ir 64 bitu versija, un pašlaik kompilācijas sistēma ir spiesta izmantot 32 bitus. Izplatītājā vai labāk instalējiet saderības pakotni, izmantojiet 32 ​​bitu sistēmu.

      1.    Ronaldu Rodrigesu teica

        Man ir 32 biti, un parādās tā pati kļūda, vai jūs domājat operētājsistēmu vai arhitektūru? manējais ir 64 bitu, bet es izmantoju 32 bitu Ubuntu, nejautājiet, finansiālas problēmas, ar to es visu saku.

  41.   Jorge teica

    Izcila tēma, gaidot lielāku darbības jomu. Priekā

  42.   Jhon teica

    Lieliski, es ceru uz vēl vairāk

  43.   Izvairieties no pereza teica

    Sveiki, es esmu jauns vēstnieks, kurš vēlas izveidot operētājsistēmu, kas atbalsta visas programmas un platformas, lai izstrādātājiem datorā nebūtu jābūt jaudīgām mašīnām vai lietojumprogrammām vai programmām.
    Tāpēc mani interesē šī ziņa, taču, lejupielādējot jūsu git vai mēģinot to izveidot, viss darbojas, līdz izpildu komandu ./iso.sh vai grub-mkrescue -o nextdivel.iso nextroot, jūs saņemat šo kļūdu

    "Grub-mkrescue: brīdinājums: Jūsu xorriso neatbalsta" –grub2-boot-info ". Dažas funkcijas ir atspējotas. Izmantojiet xorriso 1.2.9 vai jaunāku versiju.
    grub-mkrescue: brīdinājums: Jūsu xorriso neatbalsta "–grub2-boot-info". Jūsu kodola attēls ir pārāk liels. Diska sāknēšana ir atspējota. Izmantojiet xorriso 1.2.9 vai jaunāku versiju .. »
    Man tiešām nav ne mazākās nojausmas, jo es daudz zinu par lietojumprogrammām un tīmekļiem, bet par grub neko nezinu

    1.    AdrianArroyoStreet teica

      Jums var būt nepieciešams atjaunināt xorriso programmu savā izplatītājā. Kādu distro un versiju jūs izmantojat?

      1.    Izvairieties no pereza teica

        Es izmantoju xubuntu 14.04lts un mēģinu palaist xorriso, bet čaula man saka, ka to nevar atrast, un es saņemu apt-get install xorriso, lai gan es patiesi gaidīju kādu atbildi, jo man bija slikta pieredze tādu lietu instalēšanā, kuras es nezinu Linux hehe . Es to tūlīt atjaunināšu un pastāstīšu, kas notika

      2.    AdrianArroyoStreet teica

        Pēc tam instalējiet xorriso no programmatūras centra vai vienkārši no termināla, veicot "sudo apt-get install xorriso"

      3.    Izvairieties no pereza teica

        Es jau izdarīju visu, ko man teici, un gan ar git, gan manu iegūstam šo xorriso 1.3.2: RockRidge failu sistēmas manipulators, libburnia projekts.

        Piedziņas strāva: -outdev 'stdio: nextdivel.iso'
        Multivides pašreizējā versija: stdio fails, pārrakstāms
        Multivides statuss: ir tukšs
        Multivides kopsavilkums: 0 sesiju, 0 datu bloku, 0 datu, 1901 m bez maksas
        Pievienots ISO attēlam: direktorija '/'='/tmp/grub.OEqSzV'
        xorriso: UPDATE: 546 faili tika pievienoti 1 sekundes laikā
        xorriso: FAILURE: Nevar noteikt avota faila '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot' atribūtus: Nav šāda faila vai direktorija
        xorriso: UPDATE: 546 faili tika pievienoti 1 sekundes laikā
        xorriso: aborting: -abort_on 'FAILURE' radās 'FAILURE'
        un velveta es nesaprotu, ka mana struktūra ir /nextroot/boot/grub/grub.cfg un nextroot / next / START.ELF

      4.    Izvairieties no pereza teica

        Paldies, es esmu gatavs iet uz priekšu, draugs man palīdzēja un pastāstīja, ko es nepareizi izdarīju, ir direktorija organizācija, tāpēc es to nokārtoju

      5.    erik teica

        Atvainojiet, vai jūs varat man pateikt, kādu procedūru esat veicis, jo kļūdas dēļ es neko neizdodu: nav šāda faila vai direktorija

        nav bootable ierīces.

  44.   Jose teica

    Priekā! Es gribēju lūgt jums labvēlību, ja jūs varētu nosūtīt man e-pastu ar to, ko jūs šeit izskaidrojat, es esmu mazliet sajaucies, un man jāsalīdzina tas, kas man ir, ar to, ko jūs izskaidrojat, iespējams, man nav skaidrs, vai grub.cfg izveidošana tiek veikta terminālā gcc vai kur tieši? liels paldies draugs!

    1.    AdrianArroyoStreet teica

      Jūs izveidojat failu grub.cfg ar jebkuru teksta redaktoru, un tas jāsaglabā mapē PROJECT_FOLDER / boot / grub / grub.cfg

  45.   Džuazano teica

    Sveiks, Adrian, pirmkārt, apsveicu jūs un paldies par ieguldījumu.

    Jūs zināt, ka to daru prakses nolūkos, un es sāku to salikt pēc jūsu apmācības, tomēr pēc sākuma es atradu pirmo kļūdu

    $ as -o kodols.o -c kodols.asm
    bash: as: komanda nav atrasta ...
    Līdzīgas komandas ir:
    "sa"
    "ac"

    Es strādāju pie fedora 20, un es nevaru atrast risinājumu šajā jautājumā. Es pateicos par jūsu norādījumiem par to, vai man vajadzētu kaut ko mainīt gcc vai gāzē

    iepriekš pateicos

    1.    AdrianArroyoStreet teica

      Jums jāinstalē GAS, lai es varētu redzēt kļūdas kodu. Man nav Fedora pie rokas, bet teorētiski, ja jūs instalējat gcc-c ++, jūs instalēsit visu GCC komplektu un GNU Kā parasti tas nāk.

  46.   Gastons Ramiress teica

    Es esmu ar tevi, es zinu kaut ko par C ++, C # (lai gan šis pēdējais šajā lietā nav ļoti noderīgs), slikti ir tas, ka man joprojām trūkst pieredzes, es nekad nepārzinu C valodu, jūsu publikācija ir lieliska, Man nav daudz ko teikt, ja man ir laiks, ko es redzu. Paldies.

  47.   Teresita del jeesus nah sanchez teica

    Liels paldies par lielisko palīdzību.

  48.   jky teica

    Man patīk Linux, tas ir labākais rajons, tur ir taisnība, ka maniem logiem ir atkritumi, un es zinu, ka Linux radītājs ir logu radītājs

  49.   Rode teica

    Sveiki, man kļūda grub saka
    kļūda: fails /next/START.ELF nav atrasts
    kļūda: vispirms ir jāielādē kodols

    Vai jūs varētu man palīdzēt un meklēt Google, bet es nevaru atrast

  50.   Enrike Avila teica

    Lūdzu, kā es varu likt tam parādīt ziņojumu HELLO WORLD? Es esmu iesācējs un es joprojām nezinu pietiekami daudz

  51.   KARLOSS GERRERO ALVAREZ teica

    Ar mani notiek šādi:
    gcc -o START.ELF kodols.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
    / usr / bin / ld: kernel.o: pārvietošanu R_X86_64_32 pret simbolu "kaudze" nevar izmantot, veidojot PIE objektu; pārkompilēt ar -fPIE
    / usr / bin / ld: neizdevās galīgā saite: nepārstāvējama izejas sadaļa
    collect2: kļūda: ld atgrieza 1 izejas statusu