Prije svega, komentirajte da je ovo moj prvi članak i da želim da vam se svidi.
U ovoj seriji oponašat ćemo se Linus Torvalds, stvorit ćemo svoj operativni sustav od 0. U ovoj prvoj epizodi vidjet ćemo boot i stavit ćemo tekst na zaslon iz naše jezgre.
U mom se slučaju zove operativni sustav NextDivel. Prva odluka koju moramo donijeti čim razmotrimo operativni sustav je kakav će biti bootloader?
Ovdje postoji više varijanti, a čak bismo je mogli i sami stvoriti; međutim u ovom uputstvu ću se poslužiti GRUB, jer većina zna više ili manje nešto o njemu. Stvorimo mapu koja će biti korijen našeg operativnog sustava i tamo kreiramo mapu / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Tamo kreiramo datoteku grub.cfg kako slijedi:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
U ovoj smo datoteci vidjeli kako GRUB će učitati naš kernel, u ovom slučaju, u /next/START.ELF. Sada moramo stvoriti svoj kernel.
Za ovo će nam trebati GCC y GAS (montažer projekta GNU, obično dolazi s gcc-om). Dakle, mi ćemo stvoriti jezgru.
Prvo napravimo datoteku zvanu kernel.asm. Ova će datoteka sadržavati početnu točku našeg jezgra i također će definirati multiboot (značajka nekih bootloadera poput GRUB). Sadržaj kernel.asm bit će:
.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
Sve što je vezano za multiboot jednostavno je slijediti specifikacije i ništa drugo. Sve će početi u startu, zvat će multiboot_entry, definirat ćemo zaglavlje multiboot-a u prvih 4k i stavit ćemo ga (s movl).
Kasnije zovemo NextKernel_Main koja je naša funkcija jezgre C. U petlji zaustavljamo računalo. Ovo se sastavlja sa:
as -o kernel.o -c kernel.asm
Sad ćemo ući u programiranje na C. Pomislit ćete da je sada sve samo kolač, stavili smo printf en glavni i to je to, uspjeli smo.
Pa ne, budući da printf y glavni to su funkcije koje definira operativni sustav, ali mi ih stvaramo! Možemo se koristiti samo funkcijama koje sami definiramo.
U kasnijim poglavljima govorit ću o tome kako staviti vlastitu C biblioteku (glibc, bionic, newlibc), ali s vremena na vrijeme. Razgovarali smo da želimo staviti tekst na ekran, pa ćemo vidjeti kako ćemo to učiniti.
Dvije su mogućnosti, jedna je nazvati BIOS a drugo je izravno upravljanje memorijom zaslona. Učinit ćemo ovo drugo jer je jasnije iz C-a, a također će nam omogućiti da uđemo u zaštićeni način.
Stvaramo datoteku pod nazivom NextKernel_Main.c sa sljedećim sadržajem:
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;
}
Ovim izravno manipuliramo pamćenjem VGA i lik po lik pišemo. Kompajliramo onemogućavanjem stdliba:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Ako ste stigli toliko daleko, morat ćete isprobati svoj potpuno novi operativni sustav sada, ali još nismo završili. Treba nam mala datoteka koja kompajleru govori gdje u datoteci treba napustiti svaki odjeljak. To se radi pomoću povezivačke skripte. Izrađujemo 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 = .;
}
Ovim definiramo položaj svakog odjeljka i ulaznu točku, start, koju smo definirali u kernel.asm. Sada možemo ujediniti svu ovu izmišljotinu:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Sada kopiramo START.ELF u / next unutar naše mape koja simulira korijen našeg operativnog sustava. S konzolom idemo u korijensku mapu našeg novog operativnog sustava i provjeravamo postoje li dvije datoteke: jedna /boot/grub/grub.cfg i druga /next/START.ELF.
Idemo u gornji direktorij i pozivamo uslužni program za stvaranje ISO-a s GRUB-om grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Nakon što to učinimo imat ćemo a ISO. Ovaj se ISO može otvoriti na računalima x86 (64 bita također) i virtualni strojevi. Da bih ga testirao, koristit ću QEMU. Mi zovemo QEMU iz naredbenog retka:
qemu-system-i386 nextdivel.iso
Početi će SeaBIOS a kasnije ćemo imati GRUB. Kasnije, ako je sve točno, vidjet ćemo našu frazu.
Mislit ćete da je ovo teško, odgovaram, da jeste.
Stvarno je stvaranje operativnog sustava teško i ovaj ovdje ne čini ništa korisno. U budućim ćemo poglavljima vidjeti kako se rukuje bojama na zaslonu, rezervira memorija i, ako mogu, kako se dobivaju podaci s tipkovnice.
Ako netko ne želi sve ovdje kopirati, imam spremište na GitHub (detaljnije) s operativnim sustavom NextDivel. Ako želite sastaviti NextDivel jednostavno morate imati git i 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
Potičem vas da surađujete na NextDivelu ako imate vremena i želje za izradom operativnog sustava. Možda čak i superiorniji od Linuxa ... vrijeme će pokazati.
:O
Torvalds je odnio operativni sustav Minix (izveden iz UNIX-a) Andrewu S. Tanenbaumu i poboljšao ga.
Tanenbaum se potukao s Linusom, vrijeđali su jedni druge. Tanenbaum kaže da je Microkernel budućnost (HURD, Minix novi stožac Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Ovo je najbolji post koji sam do sada vidio na ovom blogu. Već želim znati što drugo učiniti.
Budite impresionirani
Stvarno impresivno !!
FUUUUUUA!
to je geekiest post koji sam ikad vidio hehe. Čestitamo Adriáne, članak o kurvi! hiper zanimljivo !!! 🙂
Slažem se. Zamišljam ovu situaciju:
GNU / Linux Power User (sa sretnim licem):
"Već znam kako sastaviti svoj Gentoo"
Nerd (prezirno): «pff, stvorio sam vlastiti distro ...»
Da, mogu stvoriti vlastiti distribucijski sustav za Linux. Zapravo u njemu razvijam initramfs i kernel za ugrađeni linux. Nije isto stvoriti operativni sustav nego linux distribuciju. Prvi je puno teži, gotovo nemoguć, drugi, kao što ste rekli, može biti bilo što, čak i Ubuntu s promijenjenim logotipom xD. Pa bih ostavio ovako:
Korisnik GNU / Linuxa (sa sretnim licem)
- Već znam kako sastaviti svoj Gentoo
Polu-Nerd
- Pff, pratio sam linux od nule i napravio sam vlastiti distro
Štreber (s prezirnim stavom)
- pff, jer sam programirao kernel u asembleru i na C-u
Saludos!
Ovo mi je zanimljivo, u očekivanju sljedećih poglavlja.
Ovaj sam tutorial vidio prije nekog vremena, on je za C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Hvala na linku, pogledati ću ga.
Želio bih operativni sustav 100% kompatibilan s AMD grafikom: /
Windows
hahaha u sustavu Windows Catalyst nema podršku za OpenGL, iako u Linuxu ne mogu iskoristiti svu grafičku snagu koju ću čekati da vidim što će se dogoditi!
samo pričekajte da ventil zbriše tržište
Magičan, savršen, izvrstan doprinos, izgleda kao sjajna serija objava 🙂
Buah, volio bih znati kako programirati da ti pomogne, jednostavno kao način vježbanja sa znanjem koje učiš i pomažeš mu. Za sada vam ostavljam moto da skrenete pozornost na projekt nakon što ga završite "Koristite NextDivel, pornografija izgleda isto (ili bolje).", Pometat ćete xD.
Mooooooolaaa !!!!
Vrlo dobar članak, ali samo znatiželjan zašto niste pratili projekt Linux From Scratch?
pozdravi
Pa, Linux iz Scratcha je u redu i možete reći da je vaš, ali stvarno je vrlo mehanički:
-Preuzmi fontove
-Popravi ih
-Sastaviti
-Instalirati
-Praćenje
Ovdje, iako je rezultat na kraju lošiji, možete reći da ste pregledali sve datoteke.
Kao što je jasno iz mog prethodnog komentara, jer nema istu razinu složenosti. Nadalje, linux od nule zapravo nije, suprotno njegovom imenu, stvaranje sustava od nule. Stvaranje sustava od nule programirate ga sami, pišete vlastiti kernel, a ne linux kernel, ako je moguće čak i vlastiti bootloader umjesto grub, lilo, syslinux itd. Iako LFS nije mali podvig i prilično je složen, nije ni blizu programiranju vlastite jezgre ...
Osim toga, slažem se s AdrianArroyo Calleom da je previše mehanički, pročitao sam ga nekada i na kraju odustanete od šeste stranice, također vam kažu da koristite koje verzije paketa jer inače upute neće raditi (to pokazuje nedostatak fleksibilnosti, po mom mišljenju). Mislim da je bolje imati nešto po svojoj vlastitoj zamisli, kompajlirati pakete koje želite, čak i programirati neke, kompilirati linux kernel i to u miru.
Saludos!
uuuoooohh !! Nikad nisam toliko zabilježio post kao ovaj.
Molimo nastavite 😀
Ne znam što nije u redu:
pogreška: nije pronađeno zaglavlje s više pokreta.
pogreška prvo trebate učitati kernel
Ako je neka utjeha, i ja sam pogriješio. Pokušajte upotrijebiti izvore koji se nalaze u GitHubu, tamo je pogreška već riješena. U svakom slučaju mislim da ako promijenite liniju u grub.cfg iz "multiboot /next/START.ELF" u "kernel /next/START.ELF" to bi moglo funkcionirati. Ne znam točno.
Prije svega, veličanstveni ulaz 🙂
Imam isti problem s učitavanjem kernela iz grub-a. Čak i korištenje GitHub izvora ili promjena višestrukog pokretanja za kernel ...
pogreška: nije pronađeno zaglavlje s više pokreta.
pogreška: nema učitane jezgre
Koristite li clang kao prevoditelj? Promijenite ga za gcc
Jeste li se sjetili koristiti skriptu povezivača? To je neophodno kako bi povezivač (ld u našem slučaju) znao gdje će u datoteku staviti svaku stvar. U ovom slučaju zaglavlje s više pokreta mora biti na početku.
Koristite li sustav CMake? Ako ga koristite, mislim da neće uspjeti.
Ako vam ne uspije, pokušat ću pronaći drugo rješenje.
[+100]
Baš odlično !!!
Stvarno je super 🙂
Skidam kapu. Impresivan post. Čestitamo.
vau!
Bilo bi sjajno kada biste mogli otvarati programe izrađene u HTML5 i Javascriptu bez potrebe za korištenjem preglednika, je li to moguće?
Govorim o njima kao o izvornim aplikacijama.
Tako bi bilo lako programirati za ovaj operativni sustav 😀
U ovom slučaju to neću učiniti, jer treba puno više posla, ali postoji operativni sustav nazvan "je" koji radi ono što vi kažete. Zapravo je naredbeni redak JavaScript, a prozori se crtaju pomoću funkcija Canvas JavaScript. Nintendovi inženjeri to su učinili i sada je to otvoreni izvor.
http://code.google.com/p/es-operating-system/
Valla, hvala na informacijama 😀
Pogledat ću
Tko može izraditi vlastiti OS, može mirno umrijeti od intelektualne razine koju mora postići njime; Zbog toga se odričete raja ili pakla.
Komad knjiženja.
Do sada se nije znalo da je izradio samo nešto za što se može reći da je pristojan operativni sustav napravljen od nule, čak ni Linux Torvalds kao što ste rekli na početku, budući da je ovo počelo iz Unix izvora, a sve ostalo je zajedničko autoru više od jedne osobe život je vrlo kratak i započinjanje ispočetka je nezamislivo za bilo koga, čak i ako se želi suprotno, vidljivo je u mnogim pogreškama koje je Linux Torvalds počinio kopirati i lijepiti
Unix izvori su zatvoreni, upotreba minixa ... što je nešto drugo.
i oni koji su napravili QDOS što?
bili zasnovani na nečemu?
Koliko vidim, tko nema svoj operativni sustav je zato što to ne želi, hahahaha.
Sad ozbiljno, vrlo zanimljivo! Mnogo je toga što je izvan mog ograničenog znanja o programiranju, ali s iščekivanjem ću pročitati ostale dijelove ove serije.
Hvala na postu!
Ostavio si me s O_O licem ... bez namjere da podcijenim bilo čiji doprinos, to je najviše "za" koje sam vidio u posljednje vrijeme. Pozdrav.
Vrlo dobar članak, Adrián. Molim te nastavi…
Šalite li se na Prvi aprilski dan? Ne budite zlobni "Oponašanje Linusa Torvaldsa: Stvorite vlastiti operativni sustav od nule." Mislim da onima koji nastavljaju karijeru na nekom tehnološkom institutu ili sveučilištu nije teško; ali ja sam za sebe streličar početnik (ima onih koji nas zovu "Noob", ali smatram se Newbieom pomalo lijenim) što zvuči kao da se ne korača na kopno. U svakom slučaju, OVAJ ČLANAK STVARA PUNO ZNATELJOSTI I BEZ SUMNJENOG DIVENJA I POŠTOVANJA UREDNIKA, ČESTITAMO; Prvo što ću učiniti jest pokušati razumjeti barem malo ovog vrijednog materijala.
HVALA Adrian Arroyo Calle, izvrstan rad i plemenita isporuka znanja.
LEL Izvrsno, nastavi tako.
Kakav sjajan post, ovo mi je nedostajalo desde linux. Predivno.
Sjajan post, puno vam hvala.
Nisam razumio što radi datoteka link.ld, može li mi netko to objasniti?
Datoteka link.ld govori povezivaču (u ovom slučaju ld) gdje bi svaki dio koda trebao biti u rezultirajućoj datoteci. Također definiramo ulaznu točku, budući da nemamo operativni sustav, ne možemo koristiti main kao normalan program, u ovom slučaju odabiremo funkciju pokretanja.
Izvrsno za sve vaše objave! Čeka se 7! Što ako sumnjam, na primjer, ako sam samo htio pokrenuti algoritam, bez OS-a, kako mogu znati što mogu koristiti, a što ne C?
Ako ga koristite ovako, ne biste mogli koristiti ništa od stdliba, što je praktički ono što svi koriste (bez malloca, besplatnog, printf, scanf, strcmp, itd.). Sve se mora implementirati izravno iz memorije ili ASM-a. Možda ću vam u višem poglavlju pokazati kako instalirati C knjižnicu za operativni sustav. Ako koristite C ++, ne možete koristiti iznimke i nove i delete operatore (i sigurno više).
mislim ovo može vam dati bolju ideju kako to učiniti.
Pozdrav, prije otprilike 5 godina slijedio sam sličnu publikaciju i razvio mikro jezgru koja započinje na isti način, ima neke aspekte koje treba poboljšati, ali možda vas zanima, radi u zaštićenom načinu, izvršava više zadataka i vrši virtualizaciju memorije, u posljednje sam vrijeme radio na njemu pogonitelj diska i cd pogon kako bih ga mogao instalirati, a ne samo raditi na CD-u uživo ... Pozdrav.
Poštovani, imam pogrešku prilikom izvršavanja naredbe:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -samostojeći -lgcc
link.ld: 5 sintaksnih pogrešaka
collect2: pogreška: ld vratio 1 izlazni status
veza.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
U retku 5 ne vidim pogrešku, da li netko isto?
Radim s virtualiziranim debianovim wheezyem u virtualboxu
dodajte ";" na kraju * (. multiboot_header)
Izvrsna inicijativa, sigurno ću slijediti poglavlja ovog posta, namjeravam puno naučiti iz njega. Puno vam hvala što ste odvojili vrijeme da nas podučite. Kao jedan detalj u vezi s tim, valja napomenuti da Linus Torvalds nije tvorac nijednog operativnog sustava, on je stvorio jezgru GNU / Linux sustava (onu koja je korištena u drugim OS-ima), što još uvijek vrijedi, ali važno je zahvaliti Richardu Stallmanu za stvaranje većine OS-a.
Puno vam hvala na doprinosu i nadam se da ćete uzeti u obzir moje zapažanje.
Neko sam se vrijeme zezao s tom temom, zainteresirao sam se čim sam pročitao naslov. ali poruka nastavlja dobivati
pogreška: nije pronađeno zaglavlje s više pokreta.
pogreška prvo trebate učitati kernel
Prenio sam ono što uzmem u repo na github https://github.com/rkmax/GenyOS
Isto se događa i meni. Jeste li pronašli rješenje?
pitanje koje sam započeo s uvođenjem sintakse, a meni menuentry kaže da naredba nije pronađena tko bi mi mogao reći zašto
ovo je ono što radim
CRNO @ CRNO-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: naredba nije pronađena
Sadržaj ovog sadržaja ne smije se unijeti u naredbeni redak, već u datoteku koju kreirate pod nazivom grub.cfg
Odličan članak, hvala!
Spektakularan…!! to je poput karike koja nedostaje.
Sviđaju mi se vaši emulacijski vodiči za LInus Torvalds, ali jedan je korak koji ne razumijem, sljedeći:
Sada kopiramo START.ELF u / next unutar naše mape koja simulira korijen našeg operativnog sustava. S konzolom idemo u korijensku mapu našeg novog operativnog sustava i provjeravamo postoje li dvije datoteke: jedna /boot/grub/grub.cfg i druga /next/START.ELF.
Idemo u gornji direktorij i pozivamo uslužni program za stvaranje ISO-a s GRUB-om koji se zove grub-mkrescue
Može li mi netko objasniti: str
Jednostavno da generiramo minimalni ISO koji GRUB može učitati, kopiramo kernel u (/ od ISO-a, bilo koju mapu) /naprijed/START.ELF i GRUB datoteku za konfiguraciju u (/ od ISO-a, bilo koju mapu) / boot / grub / grub.cfg. Kad je to gotovo, još nismo instalirali GRUB na ISO i postoji uslužni program koji generira ISO iz mape i instalira GRUB nazvan grub-mkrescue. Tada bismo konačno završili s pokretačkim ISO-om na koji je instaliran GRUB, koji može pročitati konfiguraciju kako bi kasnije ispravno izvršio START.ELF. Ne znam jesam li si objasnio, ali ono što radimo je vrsta lažnog datotečnog sustava pomoću kojeg generiramo ISO.
Sjajno
Pa izgledajte stvarno novi sustav, ne toliko, ali ako poboljšavate linux, na primjer, stvarate linux exonucleus s poslužiteljskom komponentom koja djeluje kao mikro jezgra ako se to želi, to jest exo struktura s ponašanjem mikrozrcala koja bi bila super i linux.
Druga stvar je da nisam stručnjak za programiranje, samo nekoliko sirastih c ++-a i malo jave, bilo bi mi dovoljno da linux kernel programu dam modul, uništavam ga, modificiram itd.
Bez sumnje već moram na godišnji odmor.
Ova dobra i u kojem programu je dizajnira i kodira?
molim vas dajte mi taj odgovor
Pri kompajliranju iz vašeg gita dobivam:
[jmponce @ build jar] $ cmake ..
- Stvaranje direktorija NextRoot
- Generiranje ISO skripte
napravi DESTDIR = sljedeću instalaciju
./iso.sh
- Pronađeni kisik: / usr / bin / doxygen (pronađena verzija "1.8.9")
- Konfiguracija je gotova
- Generiranje gotovo
- Datoteke gradnje napisane su na: / home / jmponce / next-divel / build
[jmponce @ build jar] $ make
Skeniranje ovisnosti cilja START.ELF
[7%] Izgradnja ASM-ATT objekta src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Izgradnja CXX objekta src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Izgradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Povezivanje izvršne datoteke CXX START.ELF
/ usr / bin / ld: Nekompatibilno /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a preskače se dok se traži -lgcc
/ usr / bin / ld: ne mogu pronaći -lgcc
collect2: pogreška: ld vratio status izlaza 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Neuspjele upute za cilj 'src / START.ELF'
make [2]: *** [src / START.ELF] Pogreška 1
CMakeFiles / Makefile2: 106: Neuspjele upute za cilj 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Pogreška 2
Makefile: 117: Neuspjeh u uputama za cilj "svi"
make: *** [all] Pogreška 2
Čini se da je pogreška u tome što ne može pronaći llibgcc jer imate 64-bitnu verziju i trenutno je sustav gradnje prisiljen koristiti 32-bitnu. Trebali biste instalirati paket kompatibilnosti na vaš distro sustav ili bolje, koristite 32-bitni sustav.
Imam 32 bita i dobivam istu pogrešku, mislite li na operativni sustav ili arhitekturu? moj je 64-bitni, ali koristim 32-bitni Ubuntu, ne pitajte, financijski problemi, s tim da kažem sve.
Izvrsna tema, čeka se veći opseg. Živjeli
Sjajno nadam se još
Pozdrav, ja sam mladi veleposlanik koji želi stvoriti operativni sustav koji podržava sve programe i platforme tako da programeri ne moraju imati moćne strojeve ili programe ili programe na računalu.
zato me zanima ovaj post, ali kad preuzmem vaš git ili ga pokušam stvoriti, sve ide dobro dok ne izvršim naredbu ./iso.sh ili grub-mkrescue -o nextdivel.iso nextroot dobijete ovu pogrešku
"Grub-mkrescue: upozorenje: vaš xorriso ne podržava" –grub2-boot-info ". Neke su značajke onemogućene. Koristite xorriso 1.2.9 ili noviji ..
grub-mkrescue: upozorenje: Vaš xorriso ne podržava "–grub2-boot-info". Vaša je slika jezgre prevelika. Onemogućeno je pokretanje diska. Koristite xorriso 1.2.9 ili noviji .. »
Zaista nemam pojma jer znam puno o aplikacijama i mrežama, ali ne znam ništa o grubu
Možda ćete trebati ažurirati program xorriso na vašem distro-u. Koji distro i verziju koristite?
Koristim xubuntu 14.04lts i pokušavam pokrenuti xorriso, ali ljuska mi kaže da ga ne može pronaći i dobivam apt-get install xorriso iako sam iskreno očekivao neki odgovor jer sam imao loše iskustvo s instaliranjem stvari koje ne znam u linuxu hehe . Odmah ću ga ažurirati i reći vam što se dogodilo
Zatim instalirajte xorriso iz softverskog centra ili jednostavno s terminala napravite "sudo apt-get install xorriso"
Već sam učinio sve što ste mi rekli i s git-om i s mojim dobivam ovaj xorriso 1.3.2: manipulator datotečnog sustava RockRidge, projekt libburnia.
Pogonska struja: -outdev 'stdio: nextdivel.iso'
Medijska struja: stdio datoteka, prepisljiva
Status medija: prazno
Sažetak medija: 0 sesija, 0 podatkovnih blokova, 0 podataka, 1901 m besplatno
Dodano u ISO sliku: direktorij '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 datoteka dodano u 1 sekundi
xorriso: FAILURE: Nije moguće utvrditi atribute izvorne datoteke '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Nema takve datoteke ili direktorija
xorriso: UPDATE: 546 datoteka dodano u 1 sekundi
xorriso: aborting: -abort_on 'FAILURE' nađen je 'FAILURE'
i Velvet ne razumijem da je moja struktura /nextroot/boot/grub/grub.cfg i nextroot / next / START.ELF
Hvala, spreman sam za naprijed, prijatelj mi je pomogao i rekao mi je što sam pogriješio u organizaciji imenika, pa sam to sredio i to je to
Oprostite, možete li mi reći koji ste postupak izveli jer nisam dobio pogrešku za pokretanje: nema takve datoteke ili direktorija
nema uređaja za pokretanje.
Živjeli! Htio sam te zamoliti za uslugu ako mi možeš poslati e-mail s onim što ovdje objašnjavaš, malo sam se zbunio i moram usporediti ono što imam s onim što objašnjavaš, možda mi nije jasno je li stvaranje grub. cfg vrši se u terminalu gcc ili gdje točno? puno hvala prijatelju!
Datoteku grub.cfg kreirate bilo kojim uređivačem teksta i morate je spremiti u PROJECT_FOLDER / boot / grub / grub.cfg
Pozdrav Adrian, prije svega, čestitam ti i zahvaljujem na doprinosu.
Znate da ovo radim za praksu i počeo sam to sastavljati slijedeći vaše poduke, no nakon početka pronašao sam prvu pogrešku
$ kao -o kernel.o -c kernel.asm
bash: as: naredba nije pronađena ...
Slične su naredbe:
'sa'
'ac'
Radim na Fedori 20 i ne mogu pronaći rješenje u tom pogledu, zahvalan bih na vašim uputama da li bih trebao nešto promijeniti u gcc-u ili plinu
hvala unaprijed
Morate instalirati GAS kako bih mogao vidjeti kod pogreške. Nemam pri ruci Fedoru, ali u teoriji ako instalirate gcc-c ++, instalirat ćete čitav GCC paket, a on obično dolazi s GNU As.
Ja sam s vama, znam nešto o C ++, C # (iako ovaj posljednji u ovom pitanju nije previše koristan) loša stvar je što mi još uvijek nedostaje iskustva, nikad ne radim jezik C, vaša je publikacija sjajna, Nemam puno za reći, ako imam vremena vidim. Hvala vam.
Puno vam hvala na velikoj pomoći….
Volim linux, to je najbolji distrikt koji postoji, istina za moj Windows je smeće za koje znam da je tvorac linuxa kreator prozora
Pozdrav, dobivam pogrešku u grub kaže
pogreška: datoteka /sljedeća/START.ELF Nije pronađena
pogreška: prvo morate učitati kernel
Možete li mi pomoći i poguglati, ali ne mogu pronaći
Molim vas, kako mogu učiniti da se prikaže poruka POZDRAV SVIJET? Početnik sam i još uvijek ne znam dovoljno
Meni se događa sljedeće:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -samostojeći -lgcc
/ usr / bin / ld: kernel.o: premještanje R_X86_64_32 protiv simbola `stog 'ne može se koristiti prilikom izrade PIE objekta; rekompajlirati sa -fPIE
/ usr / bin / ld: konačna veza nije uspjela: nereprezentativni odjeljak na izlazu
collect2: pogreška: ld vratio 1 izlazni status