Merk allereerst op dat dit mijn eerste artikel is en dat ik hoop dat jullie het allemaal leuk vinden.
In deze serie gaan we emuleren Linus Torvalds, we gaan ons besturingssysteem aanmaken vanaf 0. In deze eerste aflevering gaan we de boot bekijken en zullen we een tekst uit onze kernel op het scherm zetten.
In mijn geval heet het besturingssysteem Volgende Duik. De eerste beslissing die we moeten nemen zodra we het besturingssysteem overwegen, is: wat wordt de bootloader?
Hier zijn er meerdere varianten, en we zouden er zelfs zelf een kunnen maken; maar in deze tutorial ga ik gebruiken GRUB, omdat de meesten min of meer iets over hem weten. We maken een map die de root van ons besturingssysteem zal zijn en daar maken we de map / boot / grub aan
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Daar maken we het bestand grub.cfg als volgt aan:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
In dit bestand hebben we gezien hoe GRUB laadt onze kernel, in dit geval, in /next/START.ELF. Nu moeten we onze kernel maken.
Hiervoor hebben we de GCC y GAS (de samensteller van het project GNU, wordt meestal geleverd met de gcc). Dus we gaan de kernel maken.
Eerst maken we een bestand met de naam kernel.asm. Dit bestand bevat het startpunt van onze kernel en definieert ook de multiboot (een kenmerk van sommige bootloaders zoals GRUB). De inhoud van kernel.asm zal zijn:
.text
.globl start
start:
jmp multiboot_entry
.align 4
multiboot_header:
.long 0x1BADB002
.long 0x00000003
.long -(0x1BADB002+0x00000003)
multiboot_entry:
movl $(stack + 0x4000), %esp
call NextKernel_Main
loop: hlt
jmp loop
.section ".bss"
.comm stack,0x4000
Alles met betrekking tot multiboot is simpelweg om de specificatie te volgen, niets meer. Alles zal starten in het begin, het zal multiboot_entry aanroepen, we hebben de multiboot-header in de eerste 4k gedefinieerd en we zullen het plaatsen (met movl).
Later noemen we NextKernel_Main, wat onze kernel C-functie is. In de loop stoppen we om de computer te stoppen. Dit compileert met:
as -o kernel.o -c kernel.asm
Nu gaan we programmeren invoeren in C. Je zult denken dat nu alles een fluitje van een cent is, we zetten een printf en hoofd- en dat is het, we hebben het gedaan.
Nou nee, sinds printf y hoofd- het zijn functies die worden gedefinieerd door het besturingssysteem, maar wij maken ze! We kunnen alleen de functies gebruiken die we zelf definiëren.
In latere hoofdstukken zal ik het hebben over hoe we onze eigen C-bibliotheek (glibc, bionic, newlibc) kunnen plaatsen, maar van tijd tot tijd. We hebben besproken dat we tekst op het scherm willen zetten, nou we zullen zien hoe we dat doen.
Er zijn twee opties, een is om het BIOS en een andere is om het schermgeheugen direct te beheren. We gaan het laatste doen omdat het duidelijker is vanaf C en het ons ook in staat stelt om het te doen wanneer we de beschermde modus openen.
We maken een bestand met de naam NextKernel_Main.c met de volgende inhoud:
int NextKernel_Main()
{
char *str = "NextDivel says Hello World", *ch;
unsigned short *vidmem = (unsigned short*) 0xb8000;
unsigned i;
for (ch = str, i = 0; *ch; ch++, i++)
vidmem[i] = (unsigned char) *ch | 0x0700;
return 0;
}
Hiermee manipuleren we direct het geheugen VGA en karakter voor karakter schrijven we het. We compileren door de stdlib uit te schakelen:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Als je zover bent gekomen, wil je je gloednieuwe besturingssysteem nu proberen, maar we zijn nog niet klaar. We hebben een klein bestand nodig dat de compiler vertelt waar in het bestand elke sectie moet worden verlaten. Dit wordt gedaan met een linker script. We creëren link.ld:
ENTRY(start)
SECTIONS
{
. = 0x00100000;
.multiboot_header :
{
*(.multiboot_header)
}
.text :
{
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(4096);
}
.data :
{
data = .; _data = .; __data = .;
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .; _end = .; __end = .;
}
Hiermee definiëren we de positie van elke sectie en het startpunt, start, dat we hebben gedefinieerd in kernel.asm. Nu kunnen we al dit brouwsel verenigen:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Nu kopiëren we START.ELF naar / next in onze map die de root van ons besturingssysteem simuleert. We gaan met de console naar de hoofdmap van ons nieuwe besturingssysteem en controleren of er twee bestanden zijn: een /boot/grub/grub.cfg en een andere /next/START.ELF.
We gaan naar de bovenste map en bellen een ISO-aanmaakprogramma met de naam GRUB grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Zodra we dit hebben gedaan, hebben we een ISO. Deze ISO kan op computers worden geopend x86 (64 bits ook) en virtuele machines. Om het te testen, ga ik gebruiken QEMU. Wij bellen QEMU vanaf de opdrachtregel:
qemu-system-i386 nextdivel.iso
Zal beginnen ZeeBIOS en later zullen we hebben GRUB. Als later alles klopt, zullen we onze zin zien.
Je zult denken dat dit moeilijk is, ik antwoord je, ja dat is het.
Echt een besturingssysteem maken is moeilijk en dat dit hier niets nuttigs doet. In toekomstige hoofdstukken zullen we zien hoe om te gaan met kleuren op het scherm, geheugen te reserveren en, indien mogelijk, gegevens van het toetsenbord te krijgen.
Als iemand hier niet alles wil kopiëren, heb ik een repository op GitHub (uitgebreider) met het besturingssysteem Volgende Duik. Als je wilt compileren Volgende Duik je hoeft alleen git en cmake te hebben:
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
Ik moedig je aan om samen te werken aan NextDivel als je de tijd en de wens hebt om een besturingssysteem te maken. Misschien zelfs superieur aan Linux ... de tijd zal het leren.
:O
Torvalds bracht het Minix-besturingssysteem (afgeleid van UNIX) naar Andrew S. Tanenbaum en verbeterde het.
Tanenbaum heeft ruzie gehad met Linus, ze hebben elkaar beledigd. Tanenbaum zegt dat de Microkernel de toekomst is (HURD, Minix nieuwe kegel Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Dit is de beste post die ik tot nu toe op deze blog heb gezien. Ik wil al weten wat ik nog meer moet doen.
Wees onder de indruk
Erg indrukwekkend!!
FUUUUUUUU!
Het is de meest geekiest post die ik ooit heb gezien hehe. Gefeliciteerd Adrian, een hoerartikel! hyper interessant !!! 🙂
Ik ben het eens. Ik stel me deze situatie voor:
GNU / Linux Power User (met een blij gezicht):
"Ik weet al hoe ik mijn Gentoo moet samenstellen"
Nerd (met een minachtende houding): «pff, ik heb mijn eigen distro ...»
Ja, ik kan mijn eigen Linux-distro maken. In feite ontwikkel ik daarin een initramfs en een kernel voor embedded linux. Het is niet hetzelfde om een besturingssysteem te maken als een linux-distro. De eerste is veel moeilijker, bijna onmogelijk, de tweede kan, zoals je al zei, van alles zijn, zelfs Ubuntu met het logo veranderd xD. Dus ik zou het zo laten:
GNU / Linux Power User (met een blij gezicht)
- Ik weet al hoe ik mijn Gentoo moet samenstellen
Semi-nerd
- Pff, ik heb een linux vanaf nul gevolgd en ik heb mijn eigen distro gemaakt
Nerd (met minachtende houding)
- pff, omdat ik een kernel in assembler en in C heb geprogrammeerd
Saludos!
Dit is interessant voor mij, in afwachting van de volgende hoofdstukken.
Ik zag deze tutorial enige tijd geleden, het is voor C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Bedankt voor de link, ik zal er eens naar kijken.
Ik wil een besturingssysteem dat 100% compatibel is met AMD-graphics: /
Dakramen en raamkozijnen
hahaha in Windows Catalyst heeft geen OpenGL-ondersteuning, hoewel ik in Linux niet alle grafische kracht kan gebruiken, blijf ik wachten om te zien wat er gebeurt!
wacht gewoon tot de klep de markt wegvaagt
Magische, perfecte, uitstekende bijdrage, het ziet eruit als een geweldige reeks berichten 🙂
Buah, ik zou graag willen weten hoe ik moet programmeren om je te helpen, gewoon als een manier om te oefenen met de kennis die je aan het leren bent, en dat helpt. Voor nu laat ik je het motto achter om de aandacht te vestigen op het project zodra je het af hebt "Gebruik NextDivel, porno ziet er hetzelfde (of beter) uit.", Je zult xD vegen.
Mooooooolaaa !!!!
Zeer goed artikel, maar gewoon nieuwsgierig waarom je het Linux From Scratch-project niet hebt gevolgd?
groeten
Nou, Linux from Scratch is prima, en je kunt zien dat het van jou is, maar het is echt heel mechanisch:
-Download lettertypen
-Patch ze
-Compileren
-Installeren
-In aansluiting op
Hier kun je, zelfs als het resultaat uiteindelijk slechter is, zeggen dat je alle bestanden hebt bekeken.
Zoals duidelijk is uit mijn vorige opmerking, omdat het niet hetzelfde niveau van complexiteit heeft. Bovendien is linux vanaf het begin niet echt, in tegenstelling tot zijn naam, het creëren van een systeem vanaf het begin. Een systeem vanaf het begin maken is het zelf programmeren, je eigen kernel schrijven, niet de linux-kernel, indien mogelijk zelfs je eigen bootloader in plaats van grub, lilo, syslinux, enz. Hoewel een LFS geen sinecure is en behoorlijk complex is, komt het niet eens in de buurt van het programmeren van je eigen kernel ...
Bovendien ben ik het met AdrianArroyo Calle eens dat het te mechanisch is, ik heb het een keer gelezen en je geeft het op op de zesde pagina, ze vertellen je ook welke versies van de pakketten te gebruiken omdat anders de instructies niet werken (dat toont het gebrek aan flexibiliteit , Volgens mij ). Ik denk dat het beter is om iets van je eigen idee te hebben, de pakketten te compileren die je wilt, zelfs wat te programmeren, een linux-kernel te compileren en in alle rust.
Saludos!
uuuoooohh !! Ik heb nog nooit een bericht zo vaak vastgelegd als deze.
Ga verder 😀
Ik weet niet wat er mis is:
fout: geen multiboot-header gevonden.
fout moet je eerst de kernel laden
Als het enige troost is, ik heb dezelfde fout gemaakt. Probeer de bronnen te gebruiken die in GitHub staan, daar is de fout al opgelost. Hoe dan ook, ik denk dat als je de regel grub.cfg verandert van "multiboot /next/START.ELF" naar "kernel /next/START.ELF", het zou kunnen werken. Ik weet het niet precies.
Allereerst prachtige entree 🙂
Ik heb hetzelfde probleem met het laden van de kernel vanuit grub. Zelfs GitHub-bronnen gebruiken of multiboot voor kernel wijzigen ...
fout: geen multiboot-header gevonden.
fout: geen geladen kernel
Gebruik je clang als compiler? Verander het voor de gcc
Herinner je je eraan om het linker-script te gebruiken? Het is nodig zodat de linker (in ons geval ld) weet waar hij alles in het bestand gaat plaatsen. In dit geval moet de multiboot-header aan het begin staan.
Gebruikt u het CMake-systeem? Als je het gebruikt, denk ik dat het niet faalt.
Als het voor jou niet werkt, zal ik proberen een andere oplossing te vinden.
[+100]
Gewoon geweldig !!!
Het is echt gaaf 🙂
Ik neem mijn hoed af. Indrukwekkend bericht. Gefeliciteerd.
Whaha!
Het zou geweldig zijn als je applicaties gemaakt in HTML5 en Javascript zou kunnen openen zonder een browser te gebruiken, kan dat?
Ik heb het erover dat ze als native applicaties zijn.
Het zou dus gemakkelijk te programmeren zijn voor dit besturingssysteem 😀
In dit geval ga ik het niet doen omdat er veel meer werk achter nodig is, maar er is een besturingssysteem genaamd "is" dat doet wat je zegt. In feite is de opdrachtregel JavaScript en worden vensters getekend met JavaScript Canvas-functies. Nintendo-ingenieurs hebben het gedaan en nu is het open source.
http://code.google.com/p/es-operating-system/
Valla, bedankt voor de info 😀
ik zal kijken
Wie zijn eigen OS kan maken, kan vreedzaam sterven, aangezien hij het intellectuele niveau ermee moet bereiken; Het zorgt ervoor dat je de hemel of de hel achterwege laat.
Stukje posten.
tot dusverre heeft niemand bekend dat het alleen iets heeft gemaakt waarvan kan worden gezegd dat het een fatsoenlijk besturingssysteem is dat helemaal opnieuw is gemaakt, zelfs niet Linux Torvalds zoals je in het begin zei, aangezien dit begon met Unix-bronnen en al het andere is geschreven gemeenschappelijk voor meer dan één persoon, het leven is erg kort en helemaal opnieuw beginnen is voor niemand ondenkbaar, zelfs als het tegenovergestelde gewenst is, is het aantoonbaar in veel fouten die gemaakt zijn bij het kopiëren en plakken door Linux Torvalds
De unix-bronnen zijn gesloten, het gebruik van minix ... dat is iets anders.
en degenen die QDOS hebben gemaakt, wat?
waren ergens op gebaseerd?
Van wat ik zie, wie geen eigen besturingssysteem heeft, is omdat ze dat niet willen, hahahaha.
Nu serieus, heel interessant! Veel gaat mijn beperkte programmeerkennis te boven, maar ik zal de andere delen van deze serie met verwachting lezen.
Bedankt voor de post!
Je liet me achter met een O_O gezicht ... zonder de bedoeling de bijdragen van iemand te onderschatten, het is de meest "pro" die ik de laatste tijd heb gezien. Vriendelijke groeten.
Heel goed artikel, Adrián. Ga door, alsjeblieft…
Maak je een grapje op April Fools Day?, Doe niet zo gemeen "Linus Torvalds emuleren: maak je eigen besturingssysteem vanaf nul". Ik denk niet dat het moeilijk is voor degenen die een carrière nastreven in een of andere technische instelling of universiteit; maar voor mij ben ik een beginnende boogschutter (er zijn er die "Noob" zeggen, maar ik beschouw mezelf als een beetje lui als newbie) dat klinkt alsof ik niet aan land sta. Hoe dan ook, DIT ARTIKEL CREËERT VEEL NIEUWSGIERIGHEID EN ZONDER TWIJFEL BEWIJS EN RESPECT VOOR ZIJN UITGEVER, GEFELICITEERD; Het eerste dat ik zal doen, is proberen in ieder geval een beetje van dit waardevolle materiaal te begrijpen.
BEDANKT Adrian Arroyo Calle, uitstekend werk en nobele levering van kennis.
LEL Uitstekend bericht, ga zo door.
Wat een leuk bericht, dit heb ik gemist desde linux. Prachtig.
Geweldig bericht, heel erg bedankt.
Ik heb niet begrepen wat het link.ld-bestand doet, kan iemand het mij uitleggen?
Het link.ld-bestand vertelt de linker (in dit geval ld) waar elk deel van de code in het resulterende bestand moet staan. We definiëren ook het startpunt, aangezien we geen besturingssysteem hebben en we main niet als een normaal programma kunnen gebruiken, in dit geval selecteren we de startfunctie.
Geweldig al je post! Wachten op de 7! Wat als ik twijfel heb, bijvoorbeeld als ik alleen een algoritme wil draaien, zonder OS, hoe weet ik dan wat ik wel en wat niet kan gebruiken C?
Als je het op deze manier gebruikt, kun je niets van stdlib gebruiken, wat praktisch iedereen gebruikt (geen malloc, gratis, printf, scanf, strcmp, enz.). Alles moet rechtstreeks vanuit het geheugen of ASM worden geïmplementeerd. Misschien zal ik u in een hoger hoofdstuk laten zien hoe u een C-bibliotheek voor het besturingssysteem installeert. Als je C ++ gebruikt, kun je geen uitzonderingen gebruiken en de nieuwe en delete-operators (en zeker meer).
Denk ik ESTO het kan u een beter idee geven van hoe u het moet doen.
Hallo, ongeveer 5 jaar geleden volgde ik een soortgelijke publicatie en ontwikkelde ik een microkernel die op dezelfde manier begint, enkele aspecten heeft om te verbeteren, maar het kan je interesseren, het werkt in beschermde modus, voert multi-tasking uit en voert geheugenvirtualisatie uit, de laatste tijd heb ik eraan gewerkt disk driver en cd drive om het installeerbaar te maken en niet alleen op live cd te draaien ... Gegroet.
Beste, ik heb een fout bij het uitvoeren van de opdracht:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -fvrijstaand -lgcc
link.ld: 5 syntaxisfout
collect2: error: ld heeft 1 exit-status geretourneerd
link.ld
= 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
In regel 5 zie ik de fout niet, doet iemand hetzelfde?
Ik werk met een gevirtualiseerde Debian-piep in virtualbox
voeg de ";" aan het einde van * (. multiboot_header)
Uitstekend initiatief, ik zal zeker de hoofdstukken van dit bericht volgen, met de bedoeling er veel van te leren. Heel erg bedankt dat je de tijd hebt genomen om ons les te geven. Een enkel detail in dit verband, er moet worden opgemerkt dat Linus Torvalds niet de maker is van een besturingssysteem, hij heeft de kernel van het GNU / Linux-systeem gemaakt (het systeem dat in andere besturingssystemen is gebruikt), wat nog steeds de moeite waard is, maar het is Het is belangrijk Richard Stallman te noemen voor het maken van het grootste deel van het besturingssysteem.
Heel erg bedankt voor de input en ik hoop dat je mijn observatie in overweging neemt.
Ik rommelde al een tijdje met het onderwerp, ik raakte geïnteresseerd zodra ik de kop las. maar de boodschap blijft maar komen
fout: geen multiboot-header gevonden.
fout moet je eerst de kernel laden
Ik heb geüpload wat ik meeneem naar een opslagplaats op github https://github.com/rkmax/GenyOS
Hetzelfde gebeurt met mij: heb je de oplossing gevonden?
een vraag die ik begon met het introduceren van de syntaxis en de menu-invoerregel vertelt me commando niet gevonden wie me zou kunnen vertellen waarom
dit is wat ik doe
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: commando niet gevonden
De inhoud van deze inhoud moet niet worden ingevoerd in de opdrachtregel, maar in het bestand dat u maakt met de naam grub.cfg
Uitstekend artikel, bedankt!
Spectaculair… !! het is net als de ontbrekende schakel.
Ik ben dol op je tutorials over Emuleren van LInus Torvalds, maar er is een stap die ik niet begrijp, de volgende:
Nu kopiëren we START.ELF naar / next in onze map die de root van ons besturingssysteem simuleert. We gaan met de console naar de hoofdmap van ons nieuwe besturingssysteem en controleren of er twee bestanden zijn: een /boot/grub/grub.cfg en een andere /next/START.ELF.
We gaan naar de bovenste map en bellen een ISO-aanmaakprogramma met GRUB genaamd grub-mkrescue
Kan iemand het mij uitleggen: p
Om eenvoudig een minimum ISO te genereren die GRUB kan laden, kopiëren we de kernel naar (de / van de ISO, elke map) /next/START.ELF en het GRUB-configuratiebestand naar (de / van de ISO, elke map) / boot /grub/grub.cfg. Zodra dat is gebeurd, hebben we GRUB nog niet op de ISO geïnstalleerd en is er een hulpprogramma dat de ISO genereert vanuit een map en GRUB installeert genaamd grub-mkrescue. Dan zouden we uiteindelijk eindigen met een opstartbare ISO waarop GRUB is geïnstalleerd, die de configuratie kan lezen om later START.ELF correct uit te voeren. Ik weet niet of ik het mezelf heb uitgelegd, maar wat we doen is een soort vals bestandssysteem waarmee we een ISO genereren.
Terrific
Nou, kijk niet zozeer naar een nieuw systeem, maar als je linux verbetert, bijvoorbeeld door een linux exonucleus te maken met een servercomponent die indien gewenst als een microkernel fungeert, dat wil zeggen een exo-structuur met micronucleusgedrag dat super en linux zou zijn.
Het andere ding is dat ik geen expert ben in programmeren, slechts een paar goedkope c ++ en wat java, het zou voor mij voldoende zijn om het linux-kernelprogramma een module te geven, het te verwijderen, het aan te passen, enz.
Zonder twijfel moet ik het al doen op vakantie.
Deze goede en in welk programma ontwerpt en codeert hij deze?
geef me alsjeblieft dat antwoord
Bij het compileren vanuit je git krijg ik:
[jmponce @ jar build] $ cmake ..
- Aanmaken van een NextRoot-directory
- Genereren van ISO-script
make DESTDIR = volgende installatie
./iso.sch
- Gevonden Doxygen: / usr / bin / doxygen (gevonden versie "1.8.9")
- Configureren gedaan
- Genereren klaar
- Build-bestanden zijn geschreven naar: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Scannen van afhankelijkheden van doel START.ELF
[7%] ASM-ATT-object src / CMakeFiles / START.ELF.dir / start / boot.asm.o bouwen
[14%] CXX-object src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o bouwen
[21%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o bouwen
[28%] CXX-object src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o bouwen
[35%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o bouwen
[42%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o bouwen
[50%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o bouwen
[57%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o bouwen
[64%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o bouwen
[71%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o bouwen
[78%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o bouwen
[85%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o bouwen
[92%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o bouwen
[100%] CXX-object src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o bouwen
Koppeling CXX uitvoerbaar START.ELF
/ usr / bin / ld: Incompatibel /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a wordt overgeslagen tijdens het zoeken naar -lgcc
/ usr / bin / ld: kan -lgcc niet vinden
collect2: error: ld retourneerde exitstatus 1
src / CMakeFiles / START.ELF.dir / build.make: 402: mislukte instructies voor doel 'src / START.ELF'
make [2]: *** [src / START.ELF] Fout 1
CMakeFiles / Makefile2: 106: mislukte instructies voor doel 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Fout 2
Makefile: 117: mislukking in instructies voor doel 'alles'
make: *** [all] Fout 2
De fout lijkt te zijn dat het llibgcc niet kan vinden aangezien je de 64-bits versie hebt en momenteel wordt het compilatiesysteem gedwongen 32-bits te gebruiken. U moet een compatibiliteitspakket op uw distro installeren of beter, een 32-bits systeem gebruiken.
Ik heb 32 bits en dezelfde fout verschijnt, bedoel je het besturingssysteem of de architectuur? de mijne is 64 bit, maar ik gebruik 32 bit Ubuntu, vraag het niet, financiële problemen, daarmee zeg ik het allemaal.
Uitstekend onderwerp, wachtend op meer reikwijdte. Proost
Geweldig, ik hoop op meer
Hallo, ik ben een jonge ambassadeur die een besturingssysteem wil creëren dat alle programma's en platforms ondersteunt, zodat ontwikkelaars geen krachtige machines of applicaties of programma's op een pc hoeven te hebben.
Daarom ben ik geïnteresseerd in dit bericht, maar wanneer ik je git download of probeer het te maken, gaat alles goed totdat ik het commando ./iso.sh of grub-mkrescue -o nextdivel.iso nextroot uitvoer, krijg je deze fout
"Grub-mkrescue: waarschuwing: Uw xorriso ondersteunt" –grub2-boot-info "niet. Sommige functies zijn uitgeschakeld. Gebruik xorriso 1.2.9 of hoger.
grub-mkrescue: waarschuwing: Uw xorriso ondersteunt "–grub2-boot-info" niet. Uw kernelimage is te groot. Schijf opstarten is uitgeschakeld. Gebruik xorriso 1.2.9 of hoger .. »
Ik heb echt geen idee, want ik weet veel over applicaties en webs, maar ik weet niets van grub
Mogelijk moet u het xorriso-programma op uw distro bijwerken. Welke distro en versie gebruik je?
Ik gebruik xubuntu 14.04lts en probeer xorriso uit te voeren, maar de shell vertelt me dat het het niet kan vinden en ik krijg apt-get install xorriso, hoewel ik oprecht een reactie verwachtte omdat ik een slechte ervaring had met het installeren van dingen die ik niet ken in linux hehe. Ik zal het nu updaten en je vertellen wat er is gebeurd
Installeer vervolgens xorriso vanuit het softwarecentrum of doe gewoon vanaf de terminal "sudo apt-get install xorriso"
Ik heb al alles gedaan wat je me vertelde en met zowel git als de mijne krijg ik deze xorriso 1.3.2: RockRidge-bestandssysteemmanipulator, libburnia-project.
Drive huidige: -outdev 'stdio: nextdivel.iso'
Media stroom: stdio-bestand, overschrijfbaar
Mediastatus: is leeg
Media samenvatting: 0 sessies, 0 datablokken, 0 data, 1901m vrij
Toegevoegd aan ISO-image: directory '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 bestanden toegevoegd in 1 seconde
xorriso: FAILURE: Kan attributen van bronbestand '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot' niet bepalen: bestand of directory bestaat niet
xorriso: UPDATE: 546 bestanden toegevoegd in 1 seconde
xorriso: aborting: -abort_on 'FAILURE' heeft 'FAILURE' aangetroffen
en corduroy Ik begrijp niet dat mijn structuur /nextroot/boot/grub/grub.cfg en nextroot / next / START.ELF is
Bedankt, ik ben klaar om verder te gaan, een vriend hielp me en vertelde me dat wat ik verkeerd deed de organisatie van de directory was, dus ik heb het opgelost en dat is alles.
Pardon, kunt u me vertellen welke procedure u hebt uitgevoerd, aangezien ik de foutmelding niets om op te starten krijg: niet zo'n bestand of map
geen opstartbaar apparaat.
Proost! Ik wilde je om een gunst vragen als je me een e-mail zou kunnen sturen met wat je hier uitlegt, ik ben een beetje in de war geraakt en ik moet wat ik heb vergelijken met wat je uitlegt, misschien is wat mij niet duidelijk is of het ontstaan van de rups. cfg wordt gedaan in de terminal gcc of waar precies? heel erg bedankt vriend!
U maakt het bestand grub.cfg met een willekeurige teksteditor en u moet het opslaan in PROJECT_FOLDER / boot / grub / grub.cfg
Hallo Adrian, allereerst gefeliciteerd en bedankt voor je bijdrage.
Je weet dat ik dit voor een praktijk doe en ik ben het na je studie gaan samenstellen, maar nadat ik was begonnen, vond ik de eerste fout
$ als -o kernel.o -c kernel.asm
bash: as: commando niet gevonden ...
Vergelijkbare commando's zijn:
'sa'
'ac'
Ik werk aan fedora 20, en ik kan in dit opzicht geen oplossing vinden, ik zou je advies op prijs stellen over of ik iets in gcc of gas moet veranderen
dank bij voorbaat
U moet GAS installeren zodat ik de foutcode kan zien. Ik heb Fedora niet bij de hand, maar in theorie, als je gcc-c ++ installeert, installeer je de hele GCC-suite en GNU zoals gewoonlijk wordt meegeleverd.
Ik ben bij je, ik weet iets over C ++, C # (hoewel deze laatste niet erg nuttig is in deze kwestie) het slechte is dat ik nog steeds geen ervaring heb, ik behandel nooit C-taal, je publicatie is geweldig, ik heb niet veel te zeggen, als ik tijd heb, zie ik. Dank je.
Heel erg bedankt voor de geweldige hulp….
Ik hou van linux, het is de beste wijk die er is, de waarheid voor mijn windows is rotzooi tot een dat ik weet dat de maker van linux de maker van windows is
Hallo, ik krijg een foutmelding in grub zegt
fout: bestand /next/START.ELF Niet gevonden
fout: je moet eerst de kernel laden
Kun je me helpen en googlen maar ik kan het niet vinden
Alsjeblieft, hoe kan ik ervoor zorgen dat de boodschap HALLO WORLD wordt weergegeven? Ik ben een beginner en ik weet nog steeds niet genoeg
Het volgende overkomt mij:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -fvrijstaand -lgcc
/ usr / bin / ld: kernel.o: verplaatsing R_X86_64_32 tegen symbool `stack 'kan niet worden gebruikt bij het maken van een PIE-object; hercompileren met -fPIE
/ usr / bin / ld: laatste link mislukt: niet-representatieve sectie over uitvoer
collect2: error: ld heeft 1 exit-status geretourneerd