Najprej komentirajte, da je to moj prvi članek in upam, da je vsem všeč.
V tej seriji bomo posnemali Linus Torvalds, svoj operacijski sistem bomo ustvarili od 0. V tej prvi epizodi si bomo ogledali zagonski sistem in na jedro bomo dali besedilo na zaslon.
V mojem primeru se pokliče operacijski sistem NextDivel. Prva odločitev, ki jo moramo sprejeti takoj, ko pomislimo na operacijski sistem, je, kakšen bo zagonski nalagalnik?
Tu obstaja več različic in eno bi lahko celo ustvarili sami; vendar bom v tej vadnici uporabil GRUB, ker večina ve več ali manj nekaj o njem. Ustvarimo mapo, ki bo koren našega operacijskega sistema, in tam ustvarimo mapo / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Tam ustvarimo datoteko grub.cfg, kot sledi:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
V tej datoteki smo videli, kako GRUB bo naše jedro naložil v tem primeru v /next/START.ELF. Zdaj moramo ustvariti svoje jedro.
Za to bomo potrebovali GCC y GAS (monter projekta GNU, ponavadi je priložen gcc). Torej bomo ustvarili jedro.
Najprej naredimo datoteko z imenom kernel.asm. Ta datoteka bo vsebovala začetno točko našega jedra in bo opredeljevala tudi večzagon (značilnost nekaterih zagonskih nalagalnikov, kot je npr. GRUB). Vsebina kernel.asm bo:
.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
Vse, kar je povezano z multibootom, je preprosto slediti specifikaciji nič drugega. Vse se bo začelo v startu, poklicalo bo multiboot_entry, v prvih 4k bomo definirali glavo več zagonov in ga postavili (z movl).
Kasneje pokličemo NextKernel_Main, ki je naša funkcija jedra C. V zanki ustavimo računalnik. To je sestavljeno iz:
as -o kernel.o -c kernel.asm
Zdaj bomo vstopili v programiranje v C. Mislili boste, da je zdaj vse skupaj, smo postavili printf en Glavni in to je to, to smo že storili.
No ne, saj printf y Glavni so funkcije, ki jih določa operacijski sistem, vendar jih ustvarjamo! Uporabljamo lahko samo funkcije, ki jih določimo sami.
V naslednjih poglavjih bom govoril o tem, kako postaviti lastno knjižnico C (glibc, bionic, newlibc), vendar občasno. Razpravljali smo o tem, da želimo postaviti besedilo na zaslon, pa bomo videli, kako bomo to storili.
Obstajata dve možnosti, ena je, da pokličete BIOS drugo pa je neposredno upravljanje pomnilnika zaslona. Slednje bomo storili, ker je bolj jasno od C in nam bo to tudi omogočilo, ko vstopimo v zaščiten način.
Ustvarimo datoteko z imenom NextKernel_Main.c z naslednjo vsebino:
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;
}
S tem neposredno manipuliramo s spominom VGA in znak za znakom pišemo. Zberemo tako, da onemogočimo stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Če ste prišli tako daleč, boste zdaj želeli preizkusiti svoj popolnoma nov operacijski sistem, vendar še nismo končali. Potrebujemo majhno datoteko, ki prevajalniku pove, kje v datoteki naj zapusti vsak odsek. To se naredi s povezovalnim skriptom. Ustvarimo 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 = .;
}
S tem določimo položaj vsakega odseka in vstopno točko, start, ki smo jo določili v kernel.asm. Zdaj lahko združimo vso to domislico:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Zdaj kopiramo START.ELF v / zraven v našo mapo, ki simulira koren našega operacijskega sistema. S konzolo odpremo korensko mapo našega novega operacijskega sistema in preverimo, ali obstajata dve datoteki: ena /boot/grub/grub.cfg in druga /next/START.ELF.
Gremo v zgornji imenik in pokličemo pripomoček za ustvarjanje ISO s klicem GRUB grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Ko bomo to storili, bomo imeli ISO. Ta ISO je mogoče odpreti v računalnikih x86 (Tudi 64 bitov) in navidezni stroji. Da ga preizkusim, bom uporabil QEMU. Mi kličemo QEMU iz ukazne vrstice:
qemu-system-i386 nextdivel.iso
Bo začel SeaBIOS in kasneje bomo imeli GRUB. Kasneje, če je vse pravilno, bomo videli naš stavek.
Mislili boste, da je to težko, odgovorim, da je.
Resnično je ustvariti operacijski sistem težko in da ta tukaj ne naredi nič koristnega. V prihodnjih poglavjih bomo videli, kako ravnati z barvami na zaslonu, si rezervirati pomnilnik in, če lahko, kako pridobiti podatke s tipkovnice.
Če nekdo ne želi vsega kopirati tukaj, imam na tem mestu skladišče GitHub (bolj dodelano) z operacijskim sistemom NextDivel. Če želite prevesti NextDivel samo imeti moraš git in 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
Svetujem vam, da sodelujete pri NextDivelu, če imate čas in željo po ustvarjanju operacijskega sistema. Morda celo boljši od Linuxa ... čas bo pokazal.
:O
Torvalds je operacijski sistem Minix (izpeljan iz UNIX-a) prevzel Andrewa S. Tanenbauma in ga izboljšal.
Tanenbaum se je sprl z Linusom, drug drugega sta žalila. Tanenbaum pravi, da je Microkernel prihodnost (HURD, Minix novi stožec Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
To je bila najboljša objava, ki sem jo doslej videl na tem blogu. Že želim vedeti, kaj naj še storim.
Bodite navdušeni
Res impresivno !!
FUUUUUUA!
To je najbolj geeki objava, kar sem jih kdaj videl. Čestitam, Adrián, članek o kurbi! hiper zanimivo !!! 🙂
Strinjam se. Predstavljam si to situacijo:
Uporabnik GNU / Linux Power (z veselim obrazom):
"Gentoo že znam sestaviti"
Nerd (zaničljivo): «pff, ustvaril sem svoj distro ...»
Da, lahko ustvarim svoj distribucijski sistem linux. Pravzaprav v njem razvijam initramfs in jedro za vdelani linux. Ustvarjanje operacijskega sistema ni enako kot distribucija linuxa. Prvi je veliko težji, skoraj nemogoč, drugi je, kot ste že rekli, lahko karkoli, tudi Ubuntu s spremenjenim logotipom xD. Tako bi pustil takole:
Uporabnik GNU / Linux Power (z veselim obrazom)
- Že vem, kako sestaviti svoj Gentoo
Pol-Nerd
- Pff, sledil sem Linuxu od začetka in naredil svoj distro
Nerd (s prezirljivo držo)
- pff, ker sem programiral jedro v asemblerju in v C-ju
Saludos!
To je zame zanimivo do naslednjih poglavij.
To vadnico sem videl že pred časom, je za C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Hvala za povezavo, si jo bom ogledal.
Želel bi, da bi bil operacijski sistem 100% združljiv z grafiko AMD: /
Windows
hahaha v sistemu Windows Catalyst nima podpore za OpenGL, čeprav v Linuxu ne morem uporabiti vse grafične moči, ki jo bom čakal, da vidim, kaj se bo zgodilo!
samo počakajte, da ventil zbriše trg
Čaroben, popoln, odličen prispevek, izgleda kot odlična serija objav 🙂
Buah, rad bi vedel, kako programirati, da ti pomaga, preprosto kot način vadbe z znanjem, ki se ga učiš, in eden pomaga. Za zdaj vam prepuščam geslo, da opozorite na projekt, ko ga končate "Uporabi NextDivel, porno je videti enako (ali bolje).", Pometali boste xD.
Mooooooolaaa !!!!
Zelo dober članek, a le radoveden, zakaj niste spremljali projekta Linux From Scratch?
pozdrav
No, Linux iz Scratcha je v redu in lahko ugotovite, da je vaš, vendar je res zelo mehaničen:
-Prenos pisav
-Popravi jih
-Sestavi
-Namestite
-Sledim
Tudi če je rezultat na koncu slabši, lahko rečete, da ste pregledali vse datoteke.
Kot je razvidno iz mojega prejšnjega komentarja, ker nima enake stopnje zapletenosti. Poleg tega linux iz nič v resnici v nasprotju z njegovim imenom ne ustvarja sistema iz nič. Ustvarjanje sistema iz nič ga programirate sami, pišete svoje jedro, ne jedra linuxa, če je le mogoče, tudi lastni zagonski nalagalnik namesto grub, lilo, syslinux itd. Čeprav LFS ni majhen podvig in je precej zapleten, niti približno ne programira lastnega jedra ...
Poleg tega se strinjam z AdrianArroyo Calle, da je preveč mehaničen, nekoč sem ga že prebral in na koncu odnehaš na šesti strani, prav tako ti rečejo, da uporabiš katere različice paketov, ker druga navodila ne bodo delovala (da kaže premalo prilagodljivosti, po mojem mnenju). Mislim, da je bolje imeti nekaj po svoji zamisli, sestaviti pakete, ki jih želite, celo nekatere programirati, sestaviti jedro linux in v miru.
Saludos!
uuuoooohh !! Nikoli še nisem zajel objave tako kot ta.
Nadaljujte 😀
Ne vem, kaj je narobe:
napaka: glave z več zagoni ni mogoče najti.
Napako morate najprej naložiti jedro
Če mi je v tolažbo, sem storil isto napako. Poskusite uporabiti vire v GitHubu, tam je napaka že odpravljena. Vseeno mislim, da če spremenite vrstico grub.cfg iz "multiboot /next/START.ELF" v "kernel /next/START.ELF", bo to morda delovalo. Ne vem natančno.
Najprej čudovit vhod 🙂
Imam enako težavo pri nalaganju jedra iz grub. Tudi z uporabo virov GitHub ali spreminjanjem večzagonov za jedro ...
napaka: glave z več zagoni ni mogoče najti.
napaka: ni naloženega jedra
Ali uporabljate clang kot prevajalnik? Spremeni za gcc
Ste se spomnili uporabiti povezovalni skript? To je potrebno, da povezovalnik (ld v našem primeru) ve, kam v datoteko bo shranil vsako stvar. V tem primeru mora biti glava z več zagoni na začetku.
Ali uporabljate sistem CMake? Če ga uporabljate, mislim, da ne uspe.
Če vam ne bo uspelo, bom poskusil najti drugo rešitev.
[+100]
Res super !!!
Res je kul 🙂
Slečem klobuk. Impresivna objava. Vse čestitke.
vau!
Odlično bi bilo, če bi lahko odprli programe, izdelane v HTML5 in Javascript, ne da bi morali uporabljati brskalnik, ali je to mogoče?
Govorim o njih kot o izvornih aplikacijah.
Tako bi bilo enostavno programirati za ta operacijski sistem 😀
V tem primeru tega ne bom storil, ker za sabo zahteva veliko več dela, vendar obstaja operacijski sistem, imenovan "is", ki naredi to, kar rečete. Dejansko je ukazna vrstica JavaScript in okna se narišejo s funkcijami JavaScript Canvas. Inženirji Nintenda so to storili in zdaj so odprtokodni.
http://code.google.com/p/es-operating-system/
Valla, hvala za informacije 😀
Bom pogledal
Kdor si lahko ustvari svoj OS, lahko umre mirno, saj mora z njim doseči intelektualno raven; Zaradi tega se odreče nebesom ali peklu.
Košček objave.
Do zdaj še nihče ni vedel, da je naredil le nekaj, za kar bi lahko rekli, da je dostojen operacijski sistem, narejen iz nič, niti Linux Torvalds, kot pravite na začetku, saj se je to začelo iz virov Unixa, vse ostalo pa je skupno več kot pri eni osebi je življenje zelo kratko in začeti od začetka je za vsakogar nepredstavljivo, četudi se želi ravno nasprotno, je to razvidno iz številnih napak pri kopiranju in lepljenju Linuxa Torvaldsa
Viri unixa so zaprti, uporaba minixa ... kar je nekaj drugega.
in tisti, ki so naredili QDOS kaj?
so temeljili na nečem?
Kar vidim, kdo nima svojega operacijskega sistema, je zato, ker tega noče, hahahaha.
Zdaj resno, zelo zanimivo! Veliko presega moje omejeno znanje programiranja, vendar bom ostale dele te serije prebral s pričakovanjem.
Hvala za prispevek!
Pustil si me z obrazom O_O ... brez namena podcenjevanja prispevkov kogar koli, je najbolj "profesionalen", kar sem jih videl v zadnjem času. S spoštovanjem.
Zelo dober članek, Adrián. Nadaljujte…
Se hecate na prvi aprilski dan?, Ne bodite zlobni "Posnemanje Linusa Torvaldsa: Ustvarite svoj operacijski sistem iz nič." Mislim, da tistim, ki nadaljujejo kariero na kakšnem tehnološkem inštitutu ali univerzi, ni težko; ampak zame sem lokostrelec začetnik (obstajajo tisti, ki nas kličejo "Noob", vendar se imam za bolj začetnika, ki je nekoliko len), kar zveni, kot da ne stopim na kopno. Kakorkoli že TA ČLEN USTVARJA VELIKO ZANIMLJIVOSTI IN BREZ Dvomljivega občudovanja in spoštovanja do njegovega urednika, ČESTITKE; Najprej bom poskusil vsaj malo razumeti to dragoceno gradivo.
HVALA Adrian Arroyo Calle, odlično delo in plemenito podajanje znanja.
LEL Odlična objava, tako nadaljujte.
Kako odlična objava, to je tisto, kar sem pogrešal desde linux. čudovito
Odlična objava, najlepša hvala.
Nisem razumel, kaj počne datoteka link.ld, mi lahko kdo razloži?
Datoteka link.ld poveže povezovalcu (v tem primeru ld), kje naj bo vsak del kode v nastali datoteki. Določimo tudi vstopno točko, ker ker nimamo operacijskega sistema, main-a ne moremo uporabljati kot običajni program, v tem primeru izberemo funkcijo za zagon.
Odlično vse vaše prispevke! Čakam na 7! Kaj če dvomim, na primer, če sem hotel zagnati samo algoritem, brez OS, kako naj vem, kaj lahko uporabim in česa ne C?
Če jo uporabljate tako, ne bi mogli uporabiti ničesar od stdlib, kar je praktično tisto, kar vsi uporabljajo (brez malloc, free, printf, scanf, strcmp itd.). Vse je treba izvesti neposredno iz pomnilnika ali ASM. Mogoče vam v zgornjem poglavju pokažem, kako namestiti knjižnico C za operacijski sistem. Če uporabljate C ++, ne morete uporabiti izjem in operaterjev new in delete (in zagotovo več).
mislim to lahko vam da boljše predstave o tem, kako to storiti.
Pozdravljeni, pred približno petimi leti sem spremljal podobno publikacijo in razvil mikrojedro, ki se začne na enak način, nekatere vidike je treba izboljšati, vendar vas morda zanima, deluje v zaščitenem načinu, izvaja večopravilnost in virtualizacijo pomnilnika, v zadnjem času sem delal na njem gonilnik diska in cd pogon, da ga je mogoče namestiti in ne samo zagnati na CD-ju v živo ... Lep pozdrav.
Spoštovani, pri izvajanju ukaza imam napako:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -samostojni -lgcc
link.ld: 5 sintaksnih napak
colle2: napaka: ld je vrnil 1 status izhoda
povezava.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
V vrstici 5 ne vidim napake, ali je kdo enak?
Delam z navideznim debianovim piskanjem v virtualboxu
dodajte ";" na koncu * (. multiboot_header)
Odlična pobuda, zagotovo bom sledil poglavjem tega prispevka, nameravam se iz njega veliko naučiti. Najlepša hvala, ker ste si vzeli čas in nas učili. V zvezi s tem je treba omeniti samo eno podrobnost, da Linus Torvalds ni ustvarjalec nobenega operacijskega sistema, ustvaril je jedro sistema GNU / Linux (tisto, ki je bilo uporabljeno v drugih OS), kar je še vedno vredno, vendar je pomembno, da Richardu Stallmanu priznamo, da je ustvaril večino operacijskega sistema.
Najlepša hvala za prispevek in upam, da upoštevate moje opažanje.
Že nekaj časa se zezam s temo, zanimalo me je takoj, ko sem prebral naslov. vendar sporočilo še naprej dobiva
napaka: glave z več zagoni ni mogoče najti.
Napako morate najprej naložiti jedro
Naložil sem tisto, kar vzamem v repo na github https://github.com/rkmax/GenyOS
Z menoj se zgodi isto. Ste našli rešitev?
vprašanje, ki sem ga začel uvajati sintakso, in menijska vstopna vrstica mi pove, da ukaz ni bil najden, kdo bi mi lahko povedal, zakaj
to počnem
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: ukaza ni mogoče najti
Vsebine te vsebine ne smete vnašati v ukazno vrstico, temveč v datoteko, ki jo ustvarite, imenovano grub.cfg
Odličen članek, hvala!
Spektakularno ... !! tako kot manjkajoča povezava.
Všeč so mi vaje o posnemanju LInusa Torvaldsa, toda korak, ki ga ne razumem, je naslednji:
Zdaj kopiramo START.ELF v / zraven v našo mapo, ki simulira koren našega operacijskega sistema. S konzolo odpremo korensko mapo našega novega operacijskega sistema in preverimo, ali obstajata dve datoteki: ena /boot/grub/grub.cfg in druga /next/START.ELF.
Gremo v zgornji imenik in pokličemo pripomoček za ustvarjanje ISO z GRUB, imenovan grub-mkrescue
Bi mi lahko kdo razložil: str
Preprosto, da ustvarimo najmanjši ISO, ki ga lahko GRUB naloži, kopiramo jedro v (/ ISO, katero koli mapo) /next/START.ELF in konfiguracijsko datoteko GRUB v (/ ISO, katero koli mapo) / boot / grub / grub.cfg. Ko je to končano, GRUB-a še nismo namestili v ISO in obstaja pripomoček, ki ustvari ISO iz mape in namesti GRUB, imenovan grub-mkrescue. Potem bi končno končali z zagonskim ISO-jem, v katerem je nameščen GRUB, ki lahko prebere konfiguracijo, da pozneje pravilno izvede START.ELF. Ne vem, ali sem si razložil, toda to, kar počnemo, je nekakšen lažni datotečni sistem, s katerim ustvarimo ISO.
Buenísimo
No, res ne glejte toliko novega sistema, ampak če izboljšate linux, na primer ustvarite linux exonucleus s strežniško komponento, ki po želji deluje kot mikronukleus, to je ekso struktura z vedenjem mikronukleusa, ki bi bila super in linux.
Druga stvar je, da nisem strokovnjak za programiranje, le nekaj sirastega c ++ in nekaj jave, dovolj bi mi bilo, da dam jedru linux modul, ga drobim, spreminjam itd.
Brez dvoma moram že na dopustu.
Ta dobra in v katerem programu jo oblikujete in kodirate
prosim, dajte mi ta odgovor
Pri sestavljanju iz vašega gita dobim:
[jmponce @ jar build] $ cmake ..
- Ustvarjanje imenika NextRoot
- Ustvarjanje skripta ISO
naredite DESTDIR = naslednjo namestitev
./iso.sh
- Najden kisik: / usr / bin / doxygen (najdena različica "1.8.9")
- Konfiguriranje končano
- Ustvarjanje končano
- Datoteke gradnje so bile napisane na: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Skeniranje odvisnosti cilja START.ELF
[7%] Gradnja predmeta ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Gradnja predmeta CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Izdelava predmeta CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Izdelava predmeta CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Gradnja predmeta CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Gradnja objekta CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Gradnja predmeta CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Izdelava predmeta CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Povezovanje izvedljivega programa CXX START.ELF
/ usr / bin / ld: Nezdružljivo /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a je med iskanjem -lgcc preskočeno
/ usr / bin / ld: -lgcc ni mogoče najti
collect2: napaka: ld vrnil status izhoda 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Napačna navodila za cilj 'src / START.ELF'
make [2]: *** [src / START.ELF] Napaka 1
CMakeFiles / Makefile2: 106: Napačna navodila za cilj 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Napaka 2
Makefile: 117: Neuspeh v navodilih za ciljno "vse"
make: *** [vse] Napaka 2
Zdi se, da je napaka v tem, da ne more najti llibgcc, saj imate 64-bitno različico in je trenutno sistem prevajanja prisiljen uporabljati 32-bitno. Na svoj distribucijski sistem namestite paket združljivosti ali bolje, uporabite 32-bitni sistem.
Imam 32 bitov in dobim isto napako, ali mislite na operacijski sistem ali arhitekturo? moj je 64-bitni, vendar uporabljam 32-bitni Ubuntu, ne sprašujte, finančne težave, s tem povem vse.
Odlična tema, čaka na večji obseg. Na zdravje
Super upam na več
Pozdravljeni, sem mladi veleposlanik, ki želi ustvariti operacijski sistem, ki podpira vse programe in platforme, tako da razvijalcem ni treba imeti na računalniku zmogljivih strojev ali aplikacij ali programov.
zato me zanima ta objava, toda ko prenesem vaš git ali ga poskusim ustvariti, gre vse dobro, dokler ne izvedem ukaza ./iso.sh ali grub-mkrescue -o nextdivel.iso nextroot, dobite to napako
"Grub-mkrescue: opozorilo: vaš xorriso ne podpira" –grub2-boot-info ". Nekatere funkcije so onemogočene. Uporabite xorriso 1.2.9 ali novejšo različico.
grub-mkrescue: opozorilo: Vaš xorriso ne podpira "–grub2-boot-info". Vaša slika jedra je prevelika. Zagon diska je onemogočen. Uporabite xorriso 1.2.9 ali novejšo različico .. »
Resnično nimam pojma, saj vem veliko o aplikacijah in spletnih straneh, o grubu pa ne vem ničesar
Morda boste morali posodobiti program xorriso na vašem distribucijskem sistemu. Kateri distro in različico uporabljate?
Uporabljam xubuntu 14.04lts in poskušam zagnati xorriso, vendar mi lupina pove, da ga ne najde in dobim apt-get install xorriso, čeprav sem iskreno pričakoval kakšen odziv, ker sem imel slabe izkušnje z namestitvijo stvari, ki jih v Linuxu ne poznam hehe . Takoj ga posodobim in vam povem, kaj se je zgodilo
Nato namestite xorriso iz programskega centra ali preprosto s terminala naredite "sudo apt-get install xorriso"
Vse, kar ste mi povedali, sem že naredil in tako z gitom kot z mojim dobim ta xorriso 1.3.2: manipulator datotečnega sistema RockRidge, projekt libburnia.
Pogonski tok: -outdev 'stdio: nextdivel.iso'
Mediji: datoteka stdio, prepisljiva
Stanje medija: prazno
Povzetek medija: 0 sej, 0 podatkovnih blokov, 0 podatkov, 1901 m brezplačno
Dodano v sliko ISO: direktorij '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: v 546 sekundah je dodanih 1 datotek
xorriso: FAILURE: Ne morem določiti atributov izvorne datoteke '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Takšne datoteke ali imenika ni
xorriso: UPDATE: v 546 sekundah je dodanih 1 datotek
xorriso: aborting: -abort_on "FAILURE" je naletel na "FAILURE"
in Velvet ne razumem, moja struktura je /nextroot/boot/grub/grub.cfg in nextroot / next / START.ELF
Hvala, pripravljen sem iti naprej, prijatelj mi je pomagal in mi povedal, kaj sem naredil narobe, da je organizacija imenika, zato sem ga uredil in to je to
Oprostite, ali mi lahko poveste, kakšen postopek ste izvedli, ker se napaka ne zažene: nobena datoteka ali imenik
ni naprave za ponovni zagon.
Na zdravje! Hotel bi vas prositi za uslugo, če bi mi lahko poslali e-poštno sporočilo s tem, kar tukaj razlagate, sem se nekoliko zmedel in moram primerjati to, kar imam, s tem, kar pojasnjujete, morda mi ni jasno, ali ustvarjanje grub. cfg se izvede v terminalu gcc ali kje točno? najlepša hvala prijatelju!
Datoteko grub.cfg ustvarite s katerim koli urejevalnikom besedil in jo morate shraniti v PROJECT_FOLDER / boot / grub / grub.cfg
Pozdravljeni Adrian, najprej vam čestitam in se zahvaljujem za vaš prispevek.
Veste, da to počnem za vajo in sem jo začel sestavljati po vaših vajah, vendar sem po začetku našel prvo napako
$ kot -o kernel.o -c kernel.asm
bash: as: ukaza ni mogoče najti ...
Podobni ukazi so:
'sa'
'ac'
Delam na Fedori 20 in v zvezi s tem ne najdem rešitve. Hvaležen bi bil za vaše napotke, ali naj kaj spremenim v gcc ali plinu
vnaprej hvala
Namestiti morate GAS, da bom lahko videl kodo napake. Nimam Fedore pri roki, vendar teoretično, če namestite gcc-c ++, boste namestili celoten paket GCC in GNU, kot je običajno priložen.
Z vami sem, vem nekaj o C ++, C # (čeprav ta zadnji v tej zadevi ni zelo uporaben) slabo je, da mi še vedno primanjkuje izkušenj, jezika C nikoli ne obvladam, vaša objava je super, Nimam kaj dosti povedati, če imam čas, ki ga vidim. Hvala vam.
Najlepša hvala za veliko pomoč….
Všeč mi je linux, to je najboljše okrožje, resnica za moja okna je smeti, za katere vem, da je ustvarjalec linux ustvarjalec oken
Pozdravljeni, prišlo je do napake v grub
napaka: datoteka /next/START.ELF Ni mogoče najti
napaka: najprej morate naložiti jedro
Bi mi lahko pomagali in poguglali, vendar ne najdem
Prosim, kako naj prikažem sporočilo HELLO WORLD? Sem začetnik in še vedno ne vem dovolj
Zgodi se mi naslednje:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -samostojni -lgcc
/ usr / bin / ld: kernel.o: premestitev R_X86_64_32 proti simbolu `stack 'ni mogoče uporabiti pri izdelavi predmeta PIE; ponovno prevedite s -fPIE
/ usr / bin / ld: končna povezava ni uspela: odsek na izhodu ni predstavljiv
colle2: napaka: ld je vrnil 1 status izhoda