Först och främst, kommentera att det här är min första artikel och att jag hoppas att ni alla gillar det.
I den här serien kommer vi att efterlikna Linus Torvalds, vi kommer att skapa vårt operativsystem från 0. I det här första avsnittet ska vi se boot och lägga en text på skärmen från vår kärna.
I mitt fall kallas operativsystemet NextDivel. Det första beslutet som vi måste fatta så snart vi överväger operativsystemet är vad kommer startladdaren att vara?
Här finns det flera varianter, och vi kan till och med skapa en själva; men i denna handledning ska jag använda GRUB, för de flesta vet mer eller mindre något om honom. Vi skapar en mapp som kommer att vara roten till vårt operativsystem och där skapar vi mappen / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Där skapar vi grub.cfg-filen enligt följande:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
I den här filen har vi sett hur GRUB kommer att ladda vår kärna, i det här fallet, i /next/START.ELF. Nu måste vi skapa vår kärna.
För detta behöver vi GCC y GAS (projektets samlare GNU, kommer vanligtvis med gcc). Så vi ska skapa kärnan.
Först skapar vi en fil som heter kernel.asm. Den här filen kommer att innehålla startpunkten för vår kärna och kommer också att definiera multiboot (en funktion för vissa bootloaders som GRUB). Innehållet i kernel.asm kommer att vara:
.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
Allt relaterat till multiboot är helt enkelt att följa specifikationen ingenting annat. Allt börjar i början, det kommer att kalla multiboot_entry, vi kommer att ha definierat multiboot-rubriken i de första 4k och vi kommer att lägga det (med movl).
Senare kallar vi NextKernel_Main som är vår kärna C-funktion. I slingan stoppar vi datorn. Detta sammanställs med:
as -o kernel.o -c kernel.asm
Nu ska vi gå in i programmering i C. Du kommer att tro att nu är allt en bit kaka, vi lägger en printf en huvudsakliga och det är det, vi har gjort det.
Jo nej, sedan printf y huvudsakliga de är funktioner som definieras av operativsystemet, men vi skapar dem! Vi kan bara använda de funktioner som vi själva definierar.
I senare kapitel kommer jag att prata om hur man lägger vårt eget C-bibliotek (glibc, bionic, newlibc) men då och då. Vi har pratat om att vi vill lägga text på skärmen, vi får se hur vi gör det.
Det finns två alternativ, ett är att ringa till BIOS och en annan är att hantera skärmminne direkt. Vi kommer att göra det senare eftersom det är tydligare från C och det kommer också att tillåta oss att göra det när vi går in i skyddat läge.
Vi skapar en fil som heter NextKernel_Main.c med följande innehåll:
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;
}
Med detta manipulerar vi minnet direkt VGA och karaktär för karaktär skriver vi den. Vi sammanställer genom att inaktivera stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Om du har kommit så här långt vill du prova ditt helt nya operativsystem nu, men vi är inte färdiga än. Vi behöver en liten fil som berättar att kompilatorn var i filen ska lämna varje avsnitt. Detta görs med ett länkskript. Vi skapar 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 = .;
}
Med detta definierar vi positionen för varje sektion och startpunkten, start, som vi har definierat i kernel.asm. Nu kan vi förena all denna sammansättning:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Nu kopierar vi START.ELF till / nästa inuti vår mapp som simulerar roten till vårt operativsystem. Vi går till rotmappen i vårt nya operativsystem med konsolen och verifierar att det finns två filer: en /boot/grub/grub.cfg och en annan /next/START.ELF.
Vi går till den övre katalogen och kallar ett ISO-skapande verktyg med GRUB kallat grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
När vi väl har gjort detta kommer vi att ha en ISO. Denna ISO kan öppnas på datorer x86 (64 bitar också) och virtuella maskiner. För att testa det ska jag använda QEMU. Vi ringer QEMU från kommandoraden:
qemu-system-i386 nextdivel.iso
Kommer att starta SeaBIOS och senare kommer vi att ha GRUB. Senare om allt är korrekt kommer vi att se vår fras.
Du kommer att tro att det här är svårt, svarar jag, ja det är det.
Att skapa ett operativsystem är svårt och att det här inte gör något användbart. I framtida kapitel kommer vi att se hur man hanterar färger på skärmen, reserverar minne och om jag kan, hur man hämtar data från tangentbordet.
Om någon inte vill kopiera allt här har jag ett arkiv på GitHub (mer detaljerad) med operativsystemet NextDivel. Om du vill kompilera NextDivel du måste bara ha git och 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
Jag uppmuntrar dig att samarbeta på NextDivel om du har tid och önskan att skapa ett operativsystem. Kanske till och med överlägsen Linux ... tiden kommer att visa.
:O
Torvalds tog Minix-operativsystemet (härledd från UNIX) till Andrew S. Tanenbaum och förbättrade det.
Tanenbaum har kämpat med Linus, de förolämpade varandra. Tanenbaum säger att Microkernel är framtiden (HURD, Minix ny kon Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Detta har varit det bästa inlägget jag har sett hittills på den här bloggen. Jag vill redan veta vad jag ska göra mer.
Var imponerad
Verkligen imponerande !!
FUUUUUUA!
Det är det nördaste inlägget jag någonsin har sett hehe. Grattis Adrián, en horartikel! hyper intressant !!! 🙂
Jag instämmer. Jag föreställer mig den här situationen:
GNU / Linux Power User (med ett glatt ansikte):
"Jag vet redan hur man kompilerar min Gentoo"
Nörd (föraktfullt): «pff, jag har skapat min egen distro ...»
Ja, jag kan skapa min egen Linux-distro. I själva verket utvecklar jag en initramfs och en kärna för inbäddad Linux. Det är inte samma sak att skapa ett operativsystem än en Linux-distro. Den första är mycket svårare, nästan omöjlig, den andra, som du har sagt, kan vara vad som helst, även Ubuntu med logotypen ändrad xD. Så jag skulle lämna det så här:
GNU / Linux Power User (med ett glatt ansikte)
- Jag vet redan hur jag ska kompilera min Gentoo
Halvnörd
- Pff, jag har följt en Linux från grunden och jag har gjort min egen distro
Nörd (med föraktfull attityd)
- pff, för jag har programmerat en kärna i assembler och i C
Saludos!
Detta är intressant för mig, i väntan på följande kapitel.
Jag såg den här handledningen för en tid sedan, den är för C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Tack för länken, jag tar en titt på den.
Jag skulle vilja ha ett operativsystem som är 100% kompatibelt med AMD-grafik: /
Windows
hahaha i Windows Catalyst har inte OpenGL-stöd, även om jag inte kan använda all grafisk kraft i Linux, jag väntar på att se vad som händer!
vänta bara på att ventilen torkar ut marknaden
Magiskt, perfekt, utmärkt bidrag, det ser ut som en fantastisk serie inlägg 🙂
Buah Jag skulle vilja veta hur man programmerar för att hjälpa dig, helt enkelt som ett sätt att öva med kunskapen att du lär dig och hjälper en. För tillfället lämnar jag dig mottot att uppmärksamma projektet när du är klar med det "Använd NextDivel, porr ser likadant ut (eller bättre).", Du kommer att svepa xD.
Mooooooolaaa !!!!
Mycket bra artikel, men bara nyfiken på varför du inte har följt Linux From Scratch-projektet?
hälsningar
Tja, Linux från Scratch är bra, och du kan säga att det är ditt, men det är verkligen mycket mekaniskt:
-Hämta teckensnitt
-Patch dem
-Sammanställa
-Installera
-Nästa
Här, även om resultatet till sist är sämre, kan du säga att du har granskat alla filer.
Som framgår av min tidigare kommentar, eftersom den inte har samma komplexitetsnivå. Dessutom är Linux från grunden inte riktigt, i motsats till dess namn, att skapa ett system från grunden. Att skapa ett system från grunden programmerar det själv, skriver din egen kärna, inte linuxkärnan, om möjligt även din egen bootloader istället för grub, lilo, syslinux, etc. Även om en LFS inte är en liten bedrift och är ganska komplex, kommer den inte ens nära att programmera din egen kärna ...
Dessutom håller jag med AdrianArroyo Calle om att den är för mekanisk, jag har läst den någon gång och du slutar ge upp på den sjätte sidan, de säger också att du ska använda vilka versioner av paketen eftersom annars kommer instruktionerna inte att fungera (att visar bristen på flexibilitet, enligt min mening). Jag tycker att det är bättre att ha något av din egen idé, kompilera de paket du vill ha, till och med programmera några, kompilera en Linux-kärna och i fred.
Saludos!
uuuoooohh !! Jag har aldrig fångat ett inlägg så mycket som det här gjorde.
Fortsätt 😀
Jag vet inte vad som är fel:
fel: ingen multiboot-rubrik hittades.
fel måste du först ladda kärnan
Om det är någon tröst, gjorde jag samma misstag. Försök att använda källorna i GitHub, där är felet redan löst. Hur som helst tror jag att om du ändrar grub.cfg-raden från "multiboot /next/START.ELF" till "kernel /next/START.ELF" kan det fungera. Jag vet inte exakt.
Först och främst magnifik entré 🙂
Jag har samma problem med att ladda kärnan från grub. Även med hjälp av GitHub-källor eller byte av multiboot för kärnan ...
fel: ingen multiboot-rubrik hittades.
fel: ingen laddad kärna
Använder du clang som kompilator? Ändra det för gcc
Har du kommit ihåg att använda länkerskriptet? Det är nödvändigt så att länkaren (ld i vårt fall) vet var i filen den ska lägga varje sak. I det här fallet måste multiboot-rubriken vara i början.
Använder du CMake-systemet? Om du använder det tror jag att det inte misslyckas.
Om det inte fungerar för dig försöker jag hitta en annan lösning.
[+100]
Bara bra !!!
Det är riktigt coolt 🙂
Jag tar av mig hatten. Imponerande inlägg. Grattis.
Wow!
Det vore jättebra om du kunde öppna applikationer gjorda i HTML5 och Javascript utan att behöva använda en webbläsare, är det möjligt?
Jag pratar om att de är som inbyggda applikationer.
Så det skulle vara enkelt att programmera för detta operativsystem 😀
I det här fallet kommer jag inte att göra det eftersom det tar mycket mer arbete bakom det men det finns ett operativsystem som heter "är" som gör vad du säger. I själva verket är kommandoraden JavaScript och windows ritas med JavaScript Canvas-funktioner. Nintendo-ingenjörer gjorde det och nu är det öppen källkod.
http://code.google.com/p/es-operating-system/
Valla, tack för informationen 😀
jag ska ta en titt
Den som kan skapa sitt eget operativsystem kan dö fredligt, eftersom den intellektuella nivån han måste uppnå med det; Det får dig att avstå från himlen eller helvetet.
Del av utstationering.
hittills är ingen känd för att ha skapat bara något som kan sägas vara ett anständigt operativsystem från grunden, inte ens Linux Torvalds som du säger i början, eftersom detta började från Unix-källor och allt annat är gemensamt författat till mer än en person är livet väldigt kort och från början är det otänkbart för alla, även om det motsatta är önskvärt, är det påvisbart i många misstag som kopieras och klistras in av Linux Torvalds
Unix-källorna är stängda, användningen av minix ... vilket är något annat.
och de som skapade QDOS vad?
var baserade på något?
Enligt vad jag ser, vem som inte har sitt eget operativsystem beror på att de inte vill hahahaha.
Nu på allvar, väldigt intressant! Mycket går bortom min begränsade programmeringskunskap, men jag kommer att läsa de andra delarna av denna serie med förväntan.
Tack för inlägget!
Du lämnade mig med ett O_O-ansikte ... utan avsikten att underskatta någonas bidrag, det är det mest "proffs" jag har sett nyligen. Hälsningar.
Mycket bra artikel, Adrián. Vänligen fortsätt…
Skämtar du på April Fools Day? Var inte elak "Emulera Linus Torvalds: Skapa ditt eget operativsystem från grunden." Jag tror inte att det är svårt för dem som bedriver en karriär inom något tekniskt institut eller universitet. men för mig är jag nybörjare (det finns de som kallar oss "Noob" men jag anser mig mer nybörjare som lite lat) som låter som att inte gå på land. Hur som helst, DENNA ARTIKEL SKAPAR MYCKET Nyfikenhet och utan tviveladministration och respekt för REDAKTÖREN, GRATTIS; Det första jag ska göra är att försöka förstå åtminstone lite av detta värdefulla material.
TACK Adrian Arroyo Calle, utmärkt arbete och ädla kunskapsleveranser.
LEL Utmärkt inlägg, fortsätt.
Vilket bra inlägg, det här har jag missat desde linux. Underbar.
Bra inlägg, tack så mycket.
Jag förstod inte vad link.ld-filen gör. Kan någon förklara det för mig?
Link.ld-filen berättar för länkaren (i det här fallet ld) var varje del av koden ska finnas i den resulterande filen. Vi definierar också ingångspunkten eftersom vi inte har ett operativsystem kan vi inte använda main som ett normalt program, i det här fallet väljer vi startfunktionen.
Bra alla dina inlägg! Väntar på 7! Vad händer om jag till exempel tvivlar om jag bara vill köra en algoritm utan operativsystem, hur vet jag vad jag kan använda och vad inte C?
Om du använder den så här skulle du inte kunna använda någonting från stdlib, vilket är praktiskt taget vad alla använder (inget malloc, gratis, printf, scanf, strcmp, etc). Allt måste implementeras direkt från minnet eller ASM. Kanske i ett högre kapitel kommer jag att visa dig hur du installerar ett C-bibliotek för operativsystemet. Om du använder C ++ kan du inte använda undantag och de nya och ta bort operatorerna (och säkert mer).
Jag tror detta det kan ge dig en bättre uppfattning om hur du gör det.
Hej, för ungefär 5 år sedan följde jag en liknande publikation och utvecklade en mikrokärna som startar på samma sätt, den har vissa aspekter att förbättra, men det kan intressera dig, den körs i skyddat läge, kör multitasking och utför minnesvirtualisering, nyligen arbetade jag på det diskdrivrutin och cd-enhet för att göra det installerbart och inte bara köras på live-cd ... Hälsningar.
Hej, jag har fel när kommandot körs:
gcc -o START.ELF-kärnan.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
link.ld: 5 syntaxfel
collect2: fel: ld returnerade 1 utgångsstatus
länk.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
I rad 5 ser jag inte felet, gör någon detsamma?
Jag arbetar med en virtualiserad debian wheezy i virtualbox
Lägg till ";" i slutet av * (. multiboot_header)
Utmärkt initiativ, jag kommer definitivt att följa kapitlen i detta inlägg och tänker lära mig mycket av det. Tack så mycket för att du tog dig tid att lära oss. En enda detalj i detta avseende, det bör noteras att Linus Torvalds inte är skaparen av något operativsystem, han skapade Kärnan i GNU / Linux-systemet (den som har använts i andra operativsystem), vilket fortfarande är värt, men det är Det är viktigt att kreditera Richard Stallman för att skapa det mesta av operativsystemet.
Tack så mycket för insatsen och jag hoppas att du överväger min iakttagelse.
Jag har trasslat med ämnet ett tag, jag blev intresserad så snart jag läste rubriken. men meddelandet fortsätter att bli
fel: ingen multiboot-rubrik hittades.
fel måste du först ladda kärnan
Jag har laddat upp det jag tar till en repo på github https://github.com/rkmax/GenyOS
Samma sak händer mig. Hittade du lösningen?
en fråga jag började introducera syntaksen och menyraden säger att kommandot inte hittade vem som kunde berätta varför
detta är vad jag gör
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: kommandot hittades inte
Innehållet i detta innehåll ska inte anges i kommandoraden, men i filen du skapar som heter grub.cfg
Utmärkt artikel, tack!
Spektakulär…!! det är precis som den saknade länken.
Jag älskar dina emulerande LInus Torvalds-handledning, men det finns ett steg som jag inte förstår, följande:
Nu kopierar vi START.ELF till / nästa inuti vår mapp som simulerar roten till vårt operativsystem. Vi går till rotmappen i vårt nya operativsystem med konsolen och verifierar att det finns två filer: en /boot/grub/grub.cfg och en annan /next/START.ELF.
Vi går till den övre katalogen och kallar ett verktyg för att skapa ISO: er med GRUB som heter grub-mkrescue
Kan någon förklara för mig: s
Helt enkelt för att generera ett minimum ISO som GRUB kan ladda kopierar vi kärnan till (av / ISO, vilken mapp som helst) / nästa / START.ELF och GRUB-konfigurationsfilen till (av / av ISO, vilken mapp som helst) / start / grub / grub.cfg. När det är klart har vi ännu inte installerat GRUB på ISO och det finns ett verktyg som genererar ISO från en mapp och installerar GRUB som heter grub-mkrescue. Då slutade vi äntligen med en startbar ISO som har GRUB installerat, som kan läsa konfigurationen för att senare utföra START.ELF korrekt. Jag vet inte om jag har förklarat mig själv, men vad vi gör är ett slags falskt filsystem som vi genererar en ISO med.
Terrific
Tja, titta verkligen på ett nytt system inte så mycket men om du till exempel förbättrar linux, skapa en linux exonukleus med en serverkomponent som fungerar som en micronucleus om du vill, det vill säga en exo struktur med micronucleus beteende som skulle vara super och Linux.
Den andra saken är att jag inte är expert på programmering, bara några ostliknande c ++ och lite java, det skulle räcka för mig att ge Linux-kärnprogrammet en modul, rensa det, ändra det, etc.
Utan tvekan måste jag redan göra på semester.
Den här bra och i vilket program designar den och kodar den?
snälla ge mig det svaret
När jag kompilerar från din git får jag:
[jmponce @ jar build] $ cmake ..
- Skapa NextRoot-katalog
- Generera ISO-skript
gör DESTDIR = nästa installation
./iso.sh
- Found Doxygen: / usr / bin / doxygen (hittad version "1.8.9")
- Konfigurera gjort
- Genererat gjort
- Byggfiler har skrivits till: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Skanningsberoenden för mål START.ELF
[7%] Bygga ASM-ATT-objekt src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Bygga CXX-objekt src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Länkar CXX körbar START.ELF
/ usr / bin / ld: Inkompatibel /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a hoppas över medan du letar efter -lgcc
/ usr / bin / ld: kan inte hitta -lgcc
collect2: fel: ld returnerade utgångsstatus 1
src / CMakeFiles / START.ELF.dir / build.make: 402: Misslyckade instruktioner för mål 'src / START.ELF'
make [2]: *** [src / START.ELF] Fel 1
CMakeFiles / Makefile2: 106: Fel på instruktionerna för målet 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Fel 2
Makefile: 117: Fel i instruktionerna för mål 'alla'
make: *** [alla] Fel 2
Felet verkar vara att det inte kan hitta llibgcc eftersom du har 64-bitarsversionen och för närvarande tvingas kompileringssystemet att använda 32-bitars. Du bör installera ett kompatibilitetspaket på din distro eller bättre, använd ett 32-bitars system.
Jag har 32 bitar och samma fel visas, menar du operativsystemet eller arkitekturen? min är 64-bitars, men jag använder 32-bitars Ubuntu, fråga inte, ekonomiska problem, med det säger jag allt.
Utmärkt ämne, väntar på större omfattning. Hälsningar
Bra jag hoppas på mer
Hej, jag är en ung ambassadör som vill skapa ett operativsystem som stöder alla program och plattformar så att utvecklare inte behöver ha kraftfulla maskiner eller applikationer eller program på en dator.
Det är därför jag är intresserad av det här inlägget, men när jag laddar ner din git eller försöker skapa den fungerar allt tills jag kör kommandot ./iso.sh eller grub-mkrescue -o nextdivel.iso nextroot får du det här felet
"Grub-mkrescue: varning: Din xorriso stöder inte" –grub2-boot-info ". Vissa funktioner har inaktiverats. Använd xorriso 1.2.9 eller senare ..
grub-mkrescue: varning: Din xorriso stöder inte "–grub2-boot-info". Din kärnbild är för stor. Diskstart har inaktiverats. Använd xorriso 1.2.9 eller senare .. »
Jag har verkligen ingen aning eftersom jag vet mycket om applikationer och webb men jag vet ingenting om grub
Du kan behöva uppdatera xorriso-programmet på din distro. Vilken distro och version använder du?
Jag använder xubuntu 14.04lts och försöker köra xorriso men skalet säger till mig att det inte hittar det och jag får apt-get install xorriso även om jag uppriktigt förväntade mig något svar eftersom jag hade en dålig erfarenhet av att installera saker som jag inte känner till i linux hehe . Jag uppdaterar det nu och berättar vad som hände
Installera sedan xorriso från programvarucentret eller helt enkelt från terminalen gör "sudo apt-get install xorriso"
Jag har redan gjort allt du sa till mig och med både git och min får jag den här xorriso 1.3.2: RockRidge filsystemmanipulator, libburnia-projektet.
Körström: -outdev 'stdio: nextdivel.iso'
Medieström: stdio-fil, överskrivbar
Mediestatus: är tom
Medieöversikt: 0 sessioner, 0 datablock, 0 data, 1901m gratis
Lagt till i ISO-avbildningen: katalog '/'='/tmp/grub.OEqSzV'
xorriso: UPPDATERING: 546 filer har lagts till på 1 sekund
xorriso: FAILURE: Kan inte bestämma attribut för källfilen '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Ingen sådan fil eller katalog
xorriso: UPPDATERING: 546 filer har lagts till på 1 sekund
xorriso: avbryter: -abort_on 'FAILURE' stötte på 'FAILURE'
och corduroy Jag förstår inte min struktur är /nextroot/boot/grub/grub.cfg och nextroot / next / START.ELF
Tack, jag är redo att gå vidare, en vän hjälpte mig och berättade för mig vad jag gjorde fel var organisationen av katalogen, så jag ordnade det och det är det.
Ursäkta mig, kan du berätta vilken procedur du utförde eftersom jag får felet ingenting att starta: ingen sådan fil eller katalog
ingen startbar enhet.
Hälsningar! Jag tänkte fråga dig om du kunde skicka ett mejl med det du förklarar här, jag har blivit lite förvirrad och jag måste jämföra vad jag har med vad du förklarar, kanske det som inte är klart för mig är om skapandet av grub. cfg görs i terminalen gcc eller var exakt? tack så mycket min vän!
Du skapar filen grub.cfg med valfri textredigerare och du måste spara den i PROJECT_FOLDER / boot / grub / grub.cfg
Hej Adrian, först och främst, gratulera dig och tack för ditt bidrag.
Du vet att jag gör det här för en övning och jag började sätta ihop det efter din handledning, men efter start hittade jag det första felet
$ som -o kernel.o -c kernel.asm
bash: as: kommandot hittades inte ...
Liknande kommandon är:
'sa'
'ac'
Jag jobbar med fedora 20, och jag kan inte hitta en lösning i detta avseende, jag skulle uppskatta din vägledning om jag skulle ändra något i gcc eller gas
tack på förhand
Du måste installera GAS så att jag kan se felkoden. Jag har inte Fedora till hands men i teorin om du installerar gcc-c ++ installerar du hela GCC-sviten och GNU Som vanligtvis kommer med det.
Jag är med dig, jag vet något om C ++, C # (även om den här sistnämnda inte är särskilt användbar i den här frågan) det dåliga är att jag fortfarande saknar erfarenhet, jag hanterar aldrig C-språk, din publikation är fantastisk, Jag har inte mycket att säga, om jag har tid ser jag det. Tack.
Tack så mycket för stor hjälp ....
Jag älskar Linux det är det bästa distriktet som finns, sanningen för mina fönster är skräp till en som jag vet att skaparen av Linux är skaparen av Windows
Hej jag får ett fel i grub säger
fel: fil /next/START.ELF Hittades inte
fel: du måste ladda kärnan först
Kan du hjälpa mig och googlade men jag kan inte hitta
Snälla, hur kan jag få det att visa meddelandet HELLO WORLD? Jag är nybörjare och vet fortfarande inte tillräckligt
Följande händer mig:
gcc -o START.ELF-kärnan.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
/ usr / bin / ld: kernel.o: omplacering R_X86_64_32 mot symbol `stack 'kan inte användas när du skapar ett PIE-objekt; kompilera om med -fPIE
/ usr / bin / ld: slutlig länk misslyckades: avsnitt som inte kan representeras på utdata
collect2: fel: ld returnerade 1 utgångsstatus