Vispirms komentējiet, ka šis ir mans pirmais raksts un ka es ceru, ka jums visiem tas patiks.
Š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.
:O
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
Š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.
Esi pārsteigts
Tiešām iespaidīgi !!
FUUUUUUA!
Tas ir geekiest ieraksts, ko esmu redzējis hehe. Apsveicu Adrián, raksts par prostitūtu! hiper interesanti !!! 🙂
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 ...»
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!
Tas man ir interesanti, gaidot šādas nodaļas.
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
Paldies par saiti, es to apskatīšu.
Es gribētu, lai operētājsistēma būtu 100% saderīga ar AMD grafiku: /
Windows
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!
vienkārši pagaidiet, kamēr vārsts iznīcinās tirgu
Maģisks, ideāls, lielisks ieguldījums, tas izskatās kā lieliska ziņu sērija 🙂
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)".
Mooooooolaaa !!!!
Ļoti labs raksts, bet vienkārši interesanti, kāpēc jūs neesat sekojis projektam Linux From Scratch?
Sveicieni
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.
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!
uuuoooohh !! Es nekad neesmu iemūžinājis tik daudz ziņu kā šis.
Lūdzu, turpiniet 😀
Es nezinu, kas par vainu:
kļūda: nav atrasta vairāku sāknējumu galvene.
kļūda, vispirms jāielādē kodols
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.
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
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.
[+100]
Vienkārši lieliski !!!
Tas ir tiešām forši 🙂
Es noņemu cepuri. Iespaidīgs ieraksts. Apsveicu.
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 😀
Š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/
Valla, paldies par informāciju 😀
Apskatīšu
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.
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
Unix avoti ir slēgti, minix izmantošana ... kas ir kaut kas cits.
un tie kas taisīja QDOS?
balstījās uz kaut ko?
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!
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.
Ļoti labs raksts, Adrián. Lūdzu, turpiniet…
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.
LEL Excellent post, turpini to.
Lielisks ieraksts, tas ir tas, ko es palaidu garām desde linux. Brīnišķīgi.
Lielisks ieraksts, liels paldies.
Es nesapratu, ko dara link.ld fails, vai kāds man to var izskaidrot?
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.
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?
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).
ES domāju ESTO tas var sniegt labāku priekšstatu par to, kā to izdarīt.
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.
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ē
pievienojiet ";" beigās * (. multiboot_header)
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.
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
Tas pats notiek ar mani.Vai jūs atradāt risinājumu?
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
Šī satura saturs nav jāievada komandrindā, bet gan izveidotajā failā ar nosaukumu grub.cfg
Izcils raksts, paldies!
Brīnišķīgi ... !! tas ir tāpat kā trūkstošā saite.
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
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.
Buenísimo
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.
Bez šaubām man tas jau jādara atvaļinājumā.
Šis labs un kādā programmā to izstrādā un kodē?
lūdzu, sniedziet man šo atbildi
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
Šķ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.
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.
Izcila tēma, gaidot lielāku darbības jomu. Priekā
Lieliski, es ceru uz vēl vairāk
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
Jums var būt nepieciešams atjaunināt xorriso programmu savā izplatītājā. Kādu distro un versiju jūs izmantojat?
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
Pēc tam instalējiet xorriso no programmatūras centra vai vienkārši no termināla, veicot "sudo apt-get install xorriso"
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
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
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.
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!
Jūs izveidojat failu grub.cfg ar jebkuru teksta redaktoru, un tas jāsaglabā mapē PROJECT_FOLDER / boot / grub / grub.cfg
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
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.
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.
Liels paldies par lielisko palīdzību.
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
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
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
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