Először is kommentáld, hogy ez az első cikkem, és remélem, hogy mindannyian kedvelni fogjátok.
Ebben a sorozatban fogunk utánozni Linus Torvalds, 0-tól fogjuk létrehozni az operációs rendszerünket. Ebben az első epizódban megnézzük a rendszerindítást, és egy szöveget teszünk fel a képernyőre a kernelünkből.
Nálam az operációs rendszert hívják NextDivel. Az első döntés, amelyet meg kell hoznunk, amint megfontoljuk az operációs rendszert, mi lesz a bootloader?
Itt többféle változat létezik, és akár magunk is létrehozhatnánk egyet; azonban ebben az oktatóanyagban használni fogom GRUB, mert a többség többé-kevésbé tud róla valamit. Létrehozunk egy mappát, amely az operációs rendszerünk gyökere lesz, és ott létrehozzuk a / boot / grub mappát
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Itt hozzuk létre a grub.cfg fájlt az alábbiak szerint:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Ebben a fájlban láttuk, hogyan GRUB a kernelünket ebben az esetben a /next/START.ELF fájlba tölti be. Most létre kell hoznunk a kernelünket.
Ehhez szükségünk lesz a GCC y GAS (a projekt összeállítója GNÚ, általában a gcc-vel jár). Tehát létrehozni fogjuk a kernelt.
Először készítünk egy kernel.asm nevű fájlt. Ez a fájl tartalmazza a kernelünk kiindulási pontját, és meghatározza a multibootot is (néhány bootloader egyik jellemzője, például GRUB). A kernel.asm tartalma a következő lesz:
.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
Minden, ami a multiboot-hoz kapcsolódik, egyszerűen csak a specifikáció követése. Minden elölről indul, multiboot_entry-t fog hívni, az első 4k-ban definiáltuk a multiboot fejlécet és feltesszük (movl-lel).
Később a NextKernel_Main nevet kapjuk, amely a kernel C függvényünk. A hurokban leállítjuk a számítógép leállítását. Ez összeállítja:
as -o kernel.o -c kernel.asm
Most belépünk a programozásba C-ben. Azt fogja gondolni, hogy most minden egy darab sütemény, beleteszünk egy printf en fő- és ennyi, megtettük.
Hát nem, azóta printf y fő- ezek olyan funkciók, amelyeket az operációs rendszer határoz meg, de mi létrehozzuk őket! Csak azokat a függvényeket használhatjuk, amelyeket magunk határozunk meg.
A későbbi fejezetekben arról fogok beszélni, hogyan lehet saját C könyvtárunkat (glibc, bionikus, newlibc) elhelyezni, de időről időre. Megbeszéltük, hogy szöveget akarunk felvenni a képernyőre, és meglátjuk, hogyan csináljuk.
Két lehetőség van, az egyik a BIOS a másik pedig a képernyő memóriájának közvetlen kezelése. Ez utóbbit fogjuk megtenni, mert ez egyértelműbb a C-től, és ez lehetővé teszi számunkra is, hogy amikor védett módba lépünk.
Létrehozunk egy NextKernel_Main.c nevű fájlt a következő tartalommal:
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;
}
Ezzel közvetlenül manipuláljuk a memóriát VGA és karakterenként írjuk. Az stdlib letiltásával állítjuk össze:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Ha eddig elérted, akkor most kipróbálhatod a vadonatúj operációs rendszeredet, de még nem készült el. Szükségünk van egy kis fájlra, amely megmondja a fordítónak, hogy a fájl hol hagyja el az egyes szakaszokat. Ez egy linker szkript segítségével történik. Létrehozunk 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 = .;
}
Ezzel meghatározzuk az egyes szakaszok helyzetét és a belépési pontot (start), amelyet a kernel.asm fájlban definiáltunk. Most egyesíthetjük ezt a főzetet:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Most átmásoljuk a START.ELF fájlt a következő könyvtárba, amely az operációs rendszer gyökerét szimulálja. A konzollal megyünk új operációs rendszerünk gyökérmappájába, és ellenőrizzük, hogy van-e két fájl: egy /boot/grub/grub.cfg és egy másik /next/START.ELF.
Menjünk a felső könyvtárba, és meghívunk egy ISO létrehozó segédprogramot, amelynek GRUB-ja van grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Ha ezt megtettük, akkor a ISO. Ez az ISO számítógépeken megnyitható x86 (64 bit is) és virtuális gépek. A teszteléshez használni fogom QEMU. Hívjuk QEMU a parancssorból:
qemu-system-i386 nextdivel.iso
Kezdődni fog SeaBIOS és később meglesz GRUB. Később, ha minden helyes, látni fogjuk a kifejezésünket.
Azt gondolja, hogy ez nehéz, válaszolok, igen.
Az operációs rendszer valóban nehéz létrehozni, és ez itt nem tesz semmi hasznosat. A következő fejezetekben megtudhatjuk, hogyan kell kezelni a színeket a képernyőn, lefoglalni a memóriát, és ha tudok, hogyan lehet adatokat szerezni a billentyűzetről.
Ha valaki nem akar mindent ide másolni, van egy tárhelyem a címen GitHub (részletesebben) az operációs rendszerrel NextDivel. Ha össze akarsz állítani NextDivel csak git és cmake kell:
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
Arra bátorítalak, hogy működjön együtt a NextDivel, ha van ideje és vágya operációs rendszer létrehozására. Talán még felülmúlja a Linuxot ... az idő megmondja.
:O
Torvalds elvitte a Minix (UNIX-ból származó) operációs rendszert Andrew S. Tanenbaumhoz, és továbbfejlesztette.
Tanenbaum összeveszett Linusszal, sértegették egymást. Tanenbaum szerint a mikrokernel a jövő (HURD, Minix új kúpú mikrokernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Ez volt a legjobb bejegyzés, amit eddig láttam ezen a blogon. Már tudni akarom, mit tegyek.
Legyen lenyűgözve
Tényleg lenyűgöző !!
FUUUUUUUUA!
Ez a geekiest poszt, amit valaha láttam hehe. Gratulálunk Adriánnak, egy kurvacikk! hiper érdekes !!! 🙂
Egyetértek. Elképzelem ezt a helyzetet:
GNU / Linux Power User (boldog arccal):
"Már tudom, hogyan állítsam össze a Gentoo -imat"
Nerd (megvetően): «pff, létrehoztam a saját disztribúciómat ...»
Igen, létrehozhatom saját linux disztróm. Valójában egy initramfs-t és egy kernelt fejlesztek a beágyazott linux számára. Nem ugyanaz az operációs rendszer létrehozása, mint a linux disztribúció. Az első sokkal nehezebb, szinte lehetetlen, a második, mint mondtad, bármi lehet, még az xD logóval ellátott Ubuntu is. Tehát így hagynám:
GNU / Linux Power User (boldog arccal)
- Már tudom, hogyan állítsam össze a Gentoo -imat
Félig Nerd
- Pff, a semmiből követtem egy linuxot, és elkészítettem saját disztrót
Nerd (megvető hozzáállással)
- pff, mert egy kernelt programoztam az assemblerben és a C-ben
Saludos!
Ez érdekes számomra a következő fejezetekig.
Valamikor láttam ezt az oktatóanyagot, a C ++ - hoz készült
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Köszönöm a linket, megnézem.
Szeretnék 100% -osan kompatibilis operációs rendszert az AMD grafikával: /
Windows
hahaha a Windows Catalyst-ban nem rendelkezik OpenGL támogatással, bár Linux alatt nem tudom felhasználni az összes grafikus erőt, tovább várok, hogy mi történjen!
csak várja meg, amíg a szelep kiirtja a piacot
Varázslatos, tökéletes, kiváló közreműködés, remek bejegyzéssorozatnak tűnik 🙂
Buah Szeretném tudni, hogyan kell programozni, hogy segítsek neked, egyszerűen gyakorlás módjaként azzal a tudattal, hogy tanulsz, és az egyik segít. Most hagyom neked a mottót, hogy felhívd a figyelmet a projektre, miután befejezted "Használd a NextDivel, a pornó ugyanúgy (vagy jobban néz ki)."
Mooooooolaaa !!!!
Nagyon jó cikk, de csak kíváncsi, miért nem követte a Linux From Scratch projektet?
Üdvözlet
Nos, a Scratch Linux-ja rendben van, és elmondhatja, hogy a tiéd, de valójában nagyon mechanikus:
-Töltse le a betűtípusokat
-Patch őket
-Összed össze
-Telepítés
-Következő
Még akkor is, ha az eredmény végül rosszabb, azt mondhatja, hogy áttekintette az összes fájlt.
Ahogy az előző megjegyzésemből is kiderül, mert ennek nincs ugyanolyan összetettsége. Továbbá, a linux a semmiből valójában nem a nevével ellentétben a rendszer létrehozása a semmiből. A rendszer nulláról történő létrehozása maga a programozás, a saját kernel írása, nem a linux kernel, ha lehetséges, még a saját bootloader is a grub helyett, lilo, syslinux stb. Bár egy LFS nem kis teljesítmény és meglehetősen összetett, még csak közel sem áll a saját kernel programozásához ...
Ezen túlmenően egyetértek AdrianArroyo Calle-val abban, hogy túl mechanikus, olvastam valamikor, és végül a hatodik oldalon adod fel, azt is mondják, hogy a csomagok mely verzióit használd, mert különben az utasítások nem működnek (ez a rugalmasság hiányát mutatja, véleményem szerint). Szerintem jobb, ha van saját ötletünk, lefordítjuk a kívánt csomagokat, sőt programozunk is néhányat, lefordítunk egy linuxos kernelt és békében.
Saludos!
uuuoooohh !! Még soha nem készítettem annyi bejegyzést, mint ez.
Kérjük, folytassa 😀
Nem tudom mi a baj:
hiba: nem található multiboot fejléc.
hiba, először be kell töltenie a kernelt
Ha ez vigasztal, ugyanezt a hibát követtem el. Próbálja meg használni a GitHubban található forrásokat, ott a hiba már megoldódott. Egyébként úgy gondolom, hogy ha megváltoztatja a grub.cfg sort "multiboot /next/START.ELF" -ről "kernel /next/START.ELF" -re, akkor működhet. Nem tudom pontosan.
Először is csodálatos bejárat 🙂
Ugyanez a probléma a kernel grub-ból történő betöltésével. Még a GitHub források használata vagy a multiboot módosítása a kernel számára ...
hiba: nem található multiboot fejléc.
hiba: nincs betöltve a kernel
A clang-ot fordítónak használja? Változtassa meg a gcc-vel
Emlékeztek már a linker szkript használatára? Szükséges, hogy a linker (esetünkben ld) tudja, hogy az egyes fájlok hova kerülnek a fájlban. Ebben az esetben a multiboot fejlécnek az elején kell lennie.
A CMake rendszert használja? Ha használod, azt hiszem, nem fog kudarcot vallani.
Ha ez nem megy neked, megpróbálok más megoldást találni.
[+100]
Szuper !!!
Nagyon klassz 🙂
Leveszem a kalapomat. Lenyűgöző poszt. Gratulálunk.
Hűha!
Nagyon jó lenne, ha HTML5 és Javascript alkalmazásokat nyithatna meg böngésző használata nélkül. Lehetséges ez?
Arról beszélek, hogy olyanok, mint a natív alkalmazások.
Tehát könnyű lenne programozni erre az operációs rendszerre 😀
Ebben az esetben nem fogom megtenni, mert sokkal több munkát igényel mögötte, de van egy "is" nevű operációs rendszer, amely megteszi, amit mond. Valójában a parancssor JavaScript, és az ablakok a Canvas JavaScript funkciók segítségével rajzolódnak ki. A Nintendo mérnökei megcsinálták, és most nyílt forráskódú.
http://code.google.com/p/es-operating-system/
Valla, köszönöm az infót 😀
Megnézem
Aki elkészítheti saját operációs rendszerét, békésen meghalhat, mivel az intellektuális szintet el kell érnie vele; Ez elhagyja a mennyet vagy a poklot.
Darab kiküldetés.
Eddig senki sem tudott arról, hogy csak olyat készített volna, amiről azt lehet mondani, hogy tisztességes, a semmiből készült operációs rendszer, még a Linux Torvalds sem, ahogy az elején mondja, mivel ez Unix forrásokból indult, és minden más közösen szerződik mint egy ember, az élet nagyon rövid, és a semmiből való kiindulás senki számára sem képzelhető el, még ha az ellenkezőjét is akarják, a Linux Torvalds sok másolásában és beillesztésében elkövetett sok hibában kimutatható
Az unix források zárva vannak, a minix használata ... ami valami más.
és azok, akik QDOS-t készítettek?
valamin alapultak?
Amit látok, akinek nincs saját operációs rendszere, az azért van, mert nem akarja, hahahaha.
Most komolyan, nagyon érdekes! Sok minden meghaladja a korlátozott programozási ismereteimet, de a sorozat többi részét várakozással el fogom olvasni.
Köszönöm a bejegyzést!
O_O arccal hagytál engem ... anélkül, hogy bárki hozzájárulását lekicsinyelném, ez az egyik legprofibb, amit az utóbbi időben láttam. Üdvözlettel.
Nagyon jó cikk, Adrián. Kérem folytassa…
Viccelsz az április bolondok napján?, Ne értsd: "Linus Torvalds utánzása: Készítse el saját operációs rendszerét a semmiből." Nem hinném, hogy nehéz azok számára, akik valamilyen technológiai intézetben vagy egyetemen karriert folytatnak; de számomra kezdő íjász vagyok (van, aki "Noobnak" hív minket, de kissé lustábbnak tartom magam Newbie-nek), ami úgy hangzik, mintha nem lépnék szárazföldre. Mindenesetre ez a cikk rengeteg kíváncsiságot hoz létre, kétségtelen csodálat és szerkesztő tiszteletben tartása nélkül, GRATULÁLOK; Először megpróbálok legalább egy kicsit megérteni ezt az értékes anyagot.
KÖSZÖNÖM Adrian Arroyo Calle, kiváló munkát és nemes tudásszolgáltatást.
LEL Kiváló poszt, csak így tovább.
Milyen jó poszt, ez az, amiről lemaradtam desde linux. Csodálatos.
Remek poszt, köszönöm szépen.
Nem értettem, hogy mit csinál a link.ld fájl, meg tudja magyarázni nekem valaki?
A link.ld fájl megmondja a linkelőnek (ebben az esetben az ld-nek), hogy a kapott fájlban melyik pozícióban kell lennie a kód egyes részeinek. Meghatározzuk a belépési pontot is, mivel mivel nincs operációs rendszerünk, ezért a mainot nem használhatjuk normál programként, ebben az esetben a start funkciót választjuk.
Remek az összes hozzászólásod! Várakozás a 7-re! Mi van, ha kétségeim vannak például, ha csak algoritmust akartam futtatni, operációs rendszer nélkül, honnan tudhatnám, hogy mit használhatok, és mi nem a C?
Ha így használod, akkor nem használhatsz semmit az stdlib-ből, amit gyakorlatilag mindenki használ (nincs malloc, free, printf, scanf, strcmp stb.). Mindent közvetlenül a memóriából vagy az ASM-ből kell megvalósítani. Talán egy magasabb fejezetben bemutatom, hogyan kell telepíteni a C könyvtárat az operációs rendszerhez. A C ++ használata esetén nem használhat kivételeket, valamint az új és a törlendő operátorokat (és biztosan többet).
gondolom ezt jobb képet kaphat arról, hogyan kell csinálni.
Helló, körülbelül 5 évvel ezelőtt követtem egy hasonló kiadványt, és kifejlesztettem egy mikrokernelt, amely ugyanúgy indul, van néhány szempontja, amelyeket javítani lehet, de érdekes lehet, hogy védett módban fut, multitaskingot hajt végre és memória-virtualizációt hajt végre rajta a meghajtó és a cd meghajtó, hogy telepíthető legyen, és ne csak élő CD-n fusson ... Üdvözlet.
Kedves, hibám van a parancs végrehajtásakor:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
link.ld: 5 szintaxis hiba
gyűjt2: hiba: ld 1 kilépési állapotot adott vissza
link.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
Az 5. sorban nem látom a hibát, valaki ugyanezt?
Egy virtualizált debian wheezy-vel dolgozom a virtualboxban
adja hozzá a ";" * végén (. multiboot_header)
Kiváló kezdeményezés, minden bizonnyal követem ennek a bejegyzésnek a fejezeteit, sokat szándékozom tanulni belőle. Köszönöm szépen, hogy időt szakított arra, hogy megtanítson minket. Egyetlen részlet ebben a tekintetben meg kell jegyezni, hogy Linus Torvalds nem egy operációs rendszer létrehozója, ő hozta létre a GNU / Linux rendszer kerneljét (amelyet más operációs rendszerekben használtak), ami még mindig érdemes, de fontos Fontos megadni Richard Stallman-nak a szükséges hitelt az operációs rendszer nagy részének létrehozásához.
Nagyon köszönöm a hozzászólást, és remélem, hogy figyelembe veszi észrevételemet.
Egy ideje vacakoltam a témával, amint elolvastam a címsort, érdekelt. de az üzenet folyamatosan érkezik
hiba: nem található multiboot fejléc.
hiba, először be kell töltenie a kernelt
A github repo-jába feltöltöttem a felvetteket https://github.com/rkmax/GenyOS
Ugyanez történik velem is. Megtalálta a megoldást?
egy kérdés, amit elkezdtem bevezetni a szintaxist, és a menuentry sor megmondja, hogy nem találtam meg, aki meg tudná mondani, miért
ez az amit csinálok
FEKETE @ FEKETE-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: a parancs nem található
A tartalom tartalmát nem a parancssorba kell beírni, hanem a létrehozott fájlba, amelyet grub.cfg
Kiváló cikk, köszönöm!
Látványos…!! pont olyan, mint a hiányzó láncszem.
Szeretem az emuláló LInus Torvalds oktatóanyagokat, de van egy lépés, amelyet nem értek, a következő:
Most átmásoljuk a START.ELF fájlt a következő könyvtárba, amely az operációs rendszer gyökerét szimulálja. A konzollal megyünk új operációs rendszerünk gyökérmappájába, és ellenőrizzük, hogy van-e két fájl: egy /boot/grub/grub.cfg és egy másik /next/START.ELF.
Menjünk a felső könyvtárba, és hívunk egy ISO létrehozó segédprogramot a GRUB-szal, grub-mkrescue néven
Meg tudná valaki magyarázni nekem: p
Egyszerűen egy minimális ISO generálásához, amelyet a GRUB betölthet, átmásoljuk a kernelt (az ISO /, bármely mappa / / next / START.ELF fájljába, a GRUB konfigurációs fájlt pedig az (ISO, bármely mappa / könyvtárába) / boot / grub / grub.cfg. Miután ez megtörtént, még nem telepítettük a GRUB-ot az ISO-ra, és van egy segédprogram, amely egy mappából állítja elő az ISO-t, és telepíti a GRUB-t, az úgynevezett grub-mkrescue. Aztán végül egy olyan bootolható ISO-val állunk elő, amelyre telepítve van a GRUB, amely kiolvassa a konfigurációt, hogy később helyesen hajtsa végre a START.ELF-et. Nem tudom, magyaráztam-e magam, de amit csinálunk, az egyfajta hamis fájlrendszer, amellyel ISO-t állítunk elő.
Remek
Nos, valóban ne egy új rendszert nézzünk, hanem ha javítunk a linuxon, például létrehozunk egy linux exonukleust egy szerver komponenssel, amely kívánság szerint mikronukleusként működik, vagyis egy olyan exo struktúrát, amelynek mikronukleus viselkedése szuper és linux lenne.
A másik dolog az, hogy nem vagyok a programozás szakértője, csak néhány sajtos c ++ és némi java, nekem elég lenne, ha a linux kernel programnak adnék egy modult, kibelezve, módosítva stb.
Kétségtelen, hogy már nyaralni kell.
Ezt a jót és milyen programban tervezi és kódolja
kérlek, add meg nekem ezt a választ
Amikor a gitből állítom össze, a következőket kapom:
[jmponce @ jar build] $ cmake ..
- A NextRoot könyvtár létrehozása
- ISO szkript létrehozása
make DESTDIR = következő telepítés
./iso.sh
- Megtalált Doxygen: / usr / bin / doxygen (megtalált "1.8.9" verzió)
- Konfigurálás kész
- Generálás kész
- A build fájlokat a következő könyvtárba írták: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
A cél START.ELF szkennelési függőségei
[7%] ASM-ATT objektum építése src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] CXX objektum építése src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
A CXX futtatható START.ELF összekapcsolása
/ usr / bin / ld: Inkompatibilis /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a átugorva, miközben a -lgcc keresést végzi
/ usr / bin / ld: nem található a -lgcc
gyűjt2: hiba: ld visszaadta az 1. kilépési állapotot
src / CMakeFiles / START.ELF.dir / build.make: 402: Sikertelen utasítások az „src / START.ELF” célhoz
make [2]: *** [src / START.ELF] 1. hiba
CMakeFiles / Makefile2: 106: Az 'src / CMakeFiles / START.ELF.dir / all' cél utasításainak meghibásodása
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] 2. hiba
Makefile: 117: Hiba az „all” célra vonatkozó utasításokban
make: *** [all] 2. hiba
Úgy tűnik, hogy a hiba az, hogy nem találja a llibgcc-t, mivel a 64 bites verzióval rendelkezik, és jelenleg a build rendszer kénytelen 32 biteset használni. Telepítsen egy kompatibilitási csomagot a terjesztőjére, vagy jobb, 32 bites rendszert használjon.
32 bitem van, és ugyanazt a hibát kapom, az operációs rendszerre vagy az architektúrára gondolsz? az enyém 64 bites, de én 32 bites Ubuntut használok, ne kérdezz, pénzügyi problémákat, ezzel elmondom az egészet.
Kiváló téma, nagyobb terjedelemre vár. Egészségére
Remek, még többre remélem
Helló, fiatal nagykövet vagyok, aki olyan operációs rendszert akar létrehozni, amely támogatja az összes programot és platformot, hogy a fejlesztőknek ne kelljen erőteljes gépekkel, alkalmazásokkal vagy programokkal rendelkezniük a pc-n.
Ezért érdekel ez a bejegyzés, de amikor letöltöm a gitedet, vagy megpróbálom létrehozni, minden addig működik, amíg végre nem hajtom a ./iso.sh vagy grub-mkrescue -o nextdivel.iso nextroot parancsot.
"Grub-mkrescue: figyelmeztetés: Az xorriso nem támogatja a" –grub2-boot-info "fájlt. Néhány funkció le van tiltva. Használja az xorriso 1.2.9 vagy újabb verziót.
grub-mkrescue: figyelmeztetés: Az xorriso nem támogatja a "–grub2-boot-info" fájlt. A rendszermag képe túl nagy. A lemez indítása le van tiltva. Használja az xorriso 1.2.9 vagy újabb verziót .. »
Valójában fogalmam sincs, mivel sokat tudok az alkalmazásokról és a webekről, de a grubról semmit sem tudok
Lehet, hogy frissítenie kell az xorriso programot a terjesztőn. Milyen terjesztést és verziót használsz?
Az xubuntu 14.04lts-t használom, és megpróbálom futtatni az xorriso-t, de a shell azt mondja nekem, hogy nem találja meg, és kapok apt-get install xorriso-t, bár őszintén vártam valamilyen választ, mert rossz tapasztalatom volt olyan dolgok telepítésével, amelyeket nem ismerek a linuxban hehe . Most frissítem, és elmondom, mi történt
Ezután telepítse az xorriso szoftvert a szoftverközpontból, vagy egyszerűen a terminálról. "Sudo apt-get install xorriso"
Már mindent megtettem, amit mondott, és mind a git-mel, mind az enyémmel megkapom ezt az xorriso 1.3.2: RockRidge fájlrendszer-manipulátort, libburnia projektet.
Meghajtó áram: -outdev 'stdio: nextdivel.iso'
Média aktuális: stdio fájl, felülírható
Média állapota: üres
Média összefoglaló: 0 munkamenet, 0 adatblokk, 0 adat, 1901m szabad
Hozzáadva az ISO képhez: '/'='/tmp/grub.OEqSzV könyvtár
xorriso: UPDATE: 546 fájl hozzáadva 1 másodperc alatt
xorriso: HIBA: A "/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot" forrásfájl attribútumai nem határozhatók meg: Nincs ilyen fájl vagy könyvtár
xorriso: UPDATE: 546 fájl hozzáadva 1 másodperc alatt
xorriso: aborting: -abort_on 'FAILURE' találkozott 'FAILURE'
és kordbársony Nem értem, hogy a szerkezetem /nextroot/boot/grub/grub.cfg és nextroot / next / START.ELF
Köszönöm, készen állok a továbblépésre, egy barátom segített nekem, és elmondta, hogy mit csináltam rosszul, az a könyvtár szervezése volt, ezért módosítottam és ennyi
Elnézést, meg tudná mondani, hogy milyen eljárást hajtott végre, mivel a hibát nem kapom: nincs ilyen fájl vagy könyvtár
nincs bootolható eszköz.
Egészségére! Megkértem a szívességet, ha küldhetne nekem egy e-mailt azzal, amit itt megmagyaráz, kissé összezavarodtam, és össze kell hasonlítanom, hogy mi van azzal, amit megmagyaráz, talán az nem világos számomra, a grub. cfg létrehozása a gcc terminálban történik, vagy pontosan hol? nagyon szépen köszönöm, barátom!
A grub.cfg fájlt bármilyen szövegszerkesztővel létrehozza, és el kell mentenie a PROJECT_FOLDER / boot / grub / grub.cfg könyvtárba.
Helló Adrian, először is gratulálok és köszönöm a hozzájárulását.
Tudod, hogy egy gyakorlás miatt csinálom, és elkezdtem összerakni a korrepetálásod nyomán, azonban az indulás után megtaláltam az első hibát
$ as -o kernel.o -c kernel.asm
bash: as: parancs nem található ...
Hasonló parancsok:
'sa'
„ac”
A fedora 20-on dolgozom, és nem találok megoldást erre a kérdésre, nagyra értékelném az útmutatásodat arról, hogy változtassak-e valamit gcc-ben vagy gázban
köszönet előre
Telepítenie kell a GAS-t, hogy lássam a hibakódot. Nincs kéznél a Fedora, de elméletileg, ha telepíti a gcc-c ++ szoftvert, akkor telepíti a teljes GCC programcsomagot és a GNU-t, ahogy az általában vele jár.
Veled vagyok, tudok valamit a C ++ -ról, a C # -ról (bár ez az utolsó nem túl hasznos ebben a kérdésben) a rossz az, hogy még mindig nincs tapasztalatom, soha nem kezelem a C nyelvet, a kiadványod nagyszerű, Nincs sok mondanivalóm, ha van időm, látom. Köszönöm.
Köszönöm szépen a nagy segítséget.
Imádom a linuxot, ez a legjobb kerület, a Windows-nak az az igazsága, hogy szemetet dobok, és tudom, hogy a linux készítője a Windows
Helló, kapok egy hibát a grub-ban
hiba: /next/START.ELF fájl nem található
hiba: először be kell töltenie a kernelt
Tudna nekem segíteni és guglizni, de nem találom
Kérem, hogyan tudjam elérni, hogy a HELLO WORLD üzenet jelenjen meg? Kezdő vagyok, és még mindig nem ismerem eléggé
A következő történik velem:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -freestanding -lgcc
/ usr / bin / ld: kernel.o: Az R_X86_64_32 áthelyezés a "stack" szimbólumhoz nem használható PIE objektum készítésekor; fordítsd újra az -fPIE-vel
/ usr / bin / ld: a link nem sikerült: nem reprezentálható szakasz a kimeneten
gyűjt2: hiba: ld 1 kilépési állapotot adott vissza