Nejprve poznamenejte, že toto je můj první článek a že doufám, že se vám všem líbí.
V této sérii budeme napodobovat Linus Torvalds, vytvoříme náš operační systém od 0. V této první epizodě uvidíme boot a vložíme text na obrazovku z našeho jádra.
V mém případě se volá operační systém DalšíDivel. První rozhodnutí, které musíme učinit, jakmile vezmeme v úvahu operační systém, je to, co bude bootloader?
Zde existuje několik variant a jednu bychom si dokonce mohli vytvořit sami; nicméně v tomto tutoriálu budu používat GRUB, protože většina o něm ví víceméně něco. Vytvoříme složku, která bude kořenem našeho operačního systému, a tam vytvoříme složku / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Tam vytvoříme soubor grub.cfg následovně:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
V tomto souboru jsme viděli jak GRUB načte naše jádro, v tomto případě do /next/START.ELF. Nyní musíme vytvořit naše jádro.
K tomu budeme potřebovat GCC y GAS (asembler projektu GNU, obvykle přichází s gcc). Takže vytvoříme jádro.
Nejprve vytvoříme soubor s názvem kernel.asm. Tento soubor bude obsahovat počáteční bod našeho jádra a bude také definovat multiboot (funkce některých bootloaderů, jako je GRUB). Obsah souboru kernel.asm bude:
.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
Vše, co souvisí s multibootem, je jednoduše sledovat specifikaci, nic víc. Všechno začne na začátku, zavolá multiboot_entry, v první 4k budeme mít definovanou hlavičku multiboot a dáme ji (s movl).
Později zavoláme NextKernel_Main, což je naše funkce jádra C. Ve smyčce zastavíme počítač. Toto se kompiluje s:
as -o kernel.o -c kernel.asm
Nyní se chystáme vstoupit do programování v C. Budete si myslet, že teď je všechno hračka, dali jsme a printf en hlavní a to je vše, dokázali jsme to.
No, protože printf y hlavní jsou to funkce, které jsou definovány operačním systémem, ale vytváříme je! Můžeme používat pouze funkce, které sami definujeme.
V dalších kapitolách budu hovořit o tom, jak dát svou vlastní knihovnu C (glibc, bionic, newlibc), ale čas od času. Mluvili jsme, že chceme umístit text na obrazovku, uvidíme, jak to uděláme.
Existují dvě možnosti, jedna je zavolat na BIOS a další je přímá správa paměti obrazovky. Uděláme to druhé, protože je to jasnější z C a také nám to umožní, když vstoupíme do chráněného režimu.
Vytvoříme soubor s názvem NextKernel_Main.c s následujícím obsahem:
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;
}
Tím přímo manipulujeme s pamětí VGA a znak po znaku to píšeme. Zkompilovali jsme deaktivací stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Pokud jste se dostali až sem, budete chtít vyzkoušet svůj zbrusu nový operační systém hned, ale ještě jsme neskončili. Potřebujeme malý soubor, který řekne kompilátoru, kde v souboru opustí každou sekci. To se provádí pomocí linkerového skriptu. Vytvoříme 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 = .;
}
Tímto definujeme pozici každé sekce a vstupního bodu, start, který jsme definovali v kernel.asm. Nyní můžeme spojit všechny tyto výmysly:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Nyní zkopírujeme START.ELF do / další uvnitř naší složky, která simuluje kořen našeho operačního systému. Pomocí konzoly přejdeme do kořenové složky našeho nového operačního systému a ověříme, zda existují dva soubory: jeden /boot/grub/grub.cfg a další /next/START.ELF.
Přejdeme do horního adresáře a zavoláme nástroj pro vytváření ISO s názvem GRUB grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Jakmile to uděláme, budeme mít ISO. Tuto ISO lze otevřít na počítačích x86 (64 bitů příliš) a virtuální stroje. Abych to otestoval, použiji QEMU. Voláme QEMU z příkazového řádku:
qemu-system-i386 nextdivel.iso
Začne SeaBIOS a později budeme mít GRUB. Později, pokud je vše v pořádku, uvidíme naši frázi.
Budete si myslet, že je to obtížné, odpovídám, ano, je.
Skutečné vytvoření operačního systému je obtížné a že tento zde nedělá nic užitečného. V dalších kapitolách uvidíme, jak zacházet s barvami na obrazovce, rezervovat paměť a pokud mohu, jak získávat data z klávesnice.
Pokud sem někdo nechce všechno kopírovat, mám úložiště na GitHub (propracovanější) s operačním systémem DalšíDivel. Pokud chcete kompilovat DalšíDivel stačí mít git a 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
Doporučuji vám spolupracovat na NextDivel, pokud máte čas a chuť vytvořit operační systém. Možná dokonce lepší než Linux ... čas ukáže.
:O
Torvalds převzal operační systém Minix (odvozený od UNIXu) Andrewovi S. Tanenbaumovi a vylepšil jej.
Tanenbaum bojoval s Linusem, uráželi se navzájem. Tanenbaum říká, že Microkernel je budoucnost (HURD, Minix nový kužel Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
Toto byl zatím nejlepší příspěvek, který jsem na tomto blogu viděl. Už chci vědět, co jiného mám dělat.
Buďte ohromeni
Opravdu působivé !!
FUUUUUUA!
Je to nejvtipnější příspěvek, jaký jsem kdy viděl. Gratulujeme Adriánovi, kurva! velmi zajímavé !!! 🙂
Souhlasím. Představuji si tuto situaci:
GNU / Linux Power User (se šťastnou tváří):
„Už vím, jak sestavit své Gentoo“
Nerd (pohrdavě): «pff, vytvořil jsem si vlastní distro ...»
Ano, mohu si vytvořit vlastní linuxovou distribuci. Ve skutečnosti v něm vyvíjím initramfs a jádro pro vložený linux. Vytvoření operačního systému není totéž jako linuxová distribuce. První je mnohem obtížnější, téměř nemožný, druhý, jak jste řekli, může být cokoli, dokonce i Ubuntu se změnou loga xD. Takže bych to nechal takhle:
GNU / Linux Power User (se šťastnou tváří)
- Už vím, jak sestavit své Gentoo
Poloblbeček
- Pff, sledoval jsem linux od nuly a vytvořil jsem si vlastní distribuci
Nerd (s pohrdavým přístupem)
- pff, protože jsem naprogramoval jádro v assembleru a v C
Saludos!
To je pro mě zajímavé, čekám na další kapitoly.
dávno jsem viděl tento tutoriál, je pro C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Díky za odkaz, podívám se na to.
Chtěl bych 100% kompatibilní operační systém s grafikou AMD: /
Windows
hahaha ve Windows Catalyst nemá podporu OpenGL, i když v Linuxu nemohu využít veškerou grafickou sílu, budu čekat, co se stane!
jen počkejte, až ventil vymaže trh
Kouzelný, dokonalý, vynikající příspěvek, vypadá to jako skvělá série příspěvků 🙂
Buah, chtěl bych vědět, jak ti programovat, abych ti pomohl, jednoduše jako způsob, jak cvičit s vědomím, že se učíš, a jeden pomáhá. Prozatím vám nechávám heslo upozornit na projekt, jakmile jej dokončíte „Použijte NextDivel, porno vypadá stejně (nebo lépe).“, Zametnete xD.
Mooooooolaaa !!!!
Velmi dobrý článek, ale jen zvědavé, proč jste nesledovali projekt Linux From Scratch?
pozdravy
Linux od Scratch je v pořádku a můžete říct, že je váš, ale je opravdu velmi mechanický:
-Stáhnout písma
-Patch je
-Kompilovat
-Nainstalujte
-Další
Tady, i když je výsledek nakonec horší, můžete říci, že jste zkontrolovali všechny soubory.
Jak je zřejmé z mého předchozího komentáře, protože nemá stejnou úroveň složitosti. Kromě toho linux od nuly ve skutečnosti není, na rozdíl od jeho názvu, vytváření systému od nuly. Vytváření systému od nuly je jeho programování sami, psaní vlastního jádra, nikoli linuxového jádra, pokud možno i vlastního bootloaderu místo grubu, lilo, syslinux atd. Ačkoli LFS není žádná maličkost a je poměrně složitý, nepřibližuje se ani k programování vlastního jádra ...
Kromě toho souhlasím s AdrianArroyo Calle, že je to příliš mechanické, přečetl jsem si to někdy a nakonec se vzdáte na šesté stránce, také vám řeknou, abyste použili jaké verze balíčků, protože jinak pokyny nefungují (že ukazuje nedostatek flexibility, podle mého názoru). Myslím, že je lepší mít nějaký vlastní nápad, sestavit balíčky, které chcete, dokonce si některé naprogramovat, zkompilovat linuxové jádro a v klidu.
Saludos!
uuuoooohh !! Nikdy jsem nezachytil příspěvek tolik jako tento.
Pokračujte prosím 😀
Nevím, co se děje:
chyba: nebylo nalezeno žádné záhlaví pro více spuštění.
Chyba musíte nejprve načíst jádro
Pokud je to útěcha, udělal jsem stejnou chybu. Zkuste použít zdroje, které jsou v GitHubu, tam je chyba již vyřešena. Každopádně si myslím, že pokud změníte řádek grub.cfg z „multiboot /next/START.ELF“ na „kernel /next/START.ELF“, může to fungovat. Nevím přesně.
Za prvé, nádherný vstup 🙂
Mám stejný problém s načítáním jádra z grub. Dokonce i použití zdrojů GitHub nebo změna multibootu pro jádro ...
chyba: nebylo nalezeno žádné záhlaví pro více spuštění.
chyba: žádné načtené jádro
Používáte clang jako překladač? Změňte to za gcc
Pamatovali jste si, že jste použili linkerový skript? Je to nutné, aby linker (v našem případě ld) věděl, kam do souboru vše umístí. V tomto případě musí být záhlaví multiboot na začátku.
Používáte systém CMake? Pokud jej použijete, myslím, že nezklame.
Pokud to nefunguje pro vás, pokusím se najít jiné řešení.
[+100]
Prostě skvělé !!!
Je to opravdu skvělé 🙂
Sundám klobouk. Působivý příspěvek. Gratulujeme.
Páni!
Bylo by skvělé, kdybyste mohli otevírat aplikace vytvořené v HTML5 a Javascript, aniž byste museli používat prohlížeč, je to možné?
Mluvím o tom, že jsou jako nativní aplikace.
Pro tento operační systém by tedy bylo snadné programovat 😀
V tomto případě to nebudu dělat, protože to vyžaduje mnohem více práce, ale existuje operační systém s názvem „is“, který dělá to, co říkáte. Ve skutečnosti je příkazový řádek JavaScript a okna jsou kreslena pomocí funkcí JavaScript Canvas. Inženýři Nintendo to dokázali a nyní je to open source.
http://code.google.com/p/es-operating-system/
Valla, děkuji za informace 😀
podívám se
Kdokoli si může vytvořit svůj vlastní OS, může pokojně zemřít, protože intelektuální úroveň, kterou je třeba dosáhnout; Nutí vás to upustit od nebe nebo pekla.
Kus příspěvku.
zatím nikdo neví, že vytvořil jen něco, o čem lze říci, že je to slušný operační systém od nuly, dokonce ani Linux Torvalds, jak říkáte na začátku, protože to začalo ze zdrojů Unixu a vše ostatní je vytvořeno společně pro více než jeden člověk, život je velmi krátký a začínat od nuly je pro kohokoli nemyslitelné, i když se chce opak, je prokazatelné na mnoha chybách při kopírování a vkládání Linuxem Torvalds
Zdroje unixu jsou uzavřeny, použití minix ... což je něco jiného.
a ti, kdo vyrobili QDOS co?
byly založeny na něčem?
Z toho, co vidím, kdo nemá svůj vlastní operační systém, je, že nechtějí, hahahaha.
Nyní vážně, velmi zajímavé! Hodně přesahuje mé omezené znalosti programování, ale další části této série budu číst s očekáváním.
Díky za příspěvek!
Nechal jsi mě s tváří O_O ... bez úmyslu podcenit příspěvky kohokoli, je to ten nejvíce „pro“, jaký jsem v poslední době viděl. Pozdravy.
Velmi dobrý článek, Adriáne. Prosím pokračujte…
Děláte si legraci z Prvního dubna?, Nemyslete na to „Emulace Linuse Torvaldse: Vytvořte si svůj vlastní operační systém od nuly.“ Nemyslím si, že je to těžké pro ty, kteří se věnují kariéře na nějakém technologickém institutu nebo univerzitě; ale pro mě jsem začínající lukostřelec (jsou ti, kteří nám říkají „Noob“, ale považuji se za více nováčka, poněkud líný), což zní jako nešlapání po zemi. TENTO ČLÁNEK V každém případě VYTVÁŘÍ SPOUSTU ZVĚDAVOSTI A BEZ DVOJITÉ ADMIRACE A REŠPEKTU JEJÍHO EDITORA, GRATULUJEME; První věc, kterou udělám, je pokusit se alespoň trochu porozumět tomuto cennému materiálu.
DĚKUJEME Adrian Arroyo Calle, vynikající práce a ušlechtilý předávání znalostí.
LEL Vynikající příspěvek, jen tak dál.
Skvělý příspěvek, tohle mi chybělo desde linux. Báječné.
Skvělý příspěvek, moc děkuji.
Nechápal jsem, co dělá soubor link.ld, může mi to někdo vysvětlit?
Soubor link.ld sděluje linkeru (v tomto případě ld), kde by měla být každá část kódu ve výsledném souboru. Definujeme také vstupní bod, protože protože nemáme operační systém, nemůžeme použít main jako normální program, v tomto případě vybereme funkci start.
Skvělé všechny vaše příspěvky! Čekání na 7! Co když mám pochybnosti, například kdybych chtěl spustit pouze algoritmus bez OS, jak poznám, co mohu použít a co ne C?
Pokud to použijete takto, nebudete moci použít nic ze stdlib, což je prakticky to, co všichni používají (žádný malloc, free, printf, scanf, strcmp atd.). Vše musí být implementováno přímo z paměti nebo ASM. Možná vám ve vyšší kapitole ukážu, jak nainstalovat knihovnu C pro operační systém. Pokud používáte C ++, nemůžete použít výjimky a operátory new a delete (a určitě další).
Myslím toto může vám poskytnout lepší představu o tom, jak to udělat.
Dobrý den, asi před 5 lety jsem sledoval podobnou publikaci a vyvinul mikrokernel, který začíná stejným způsobem, má některé aspekty ke zlepšení, ale může vás zajímat, běží v chráněném režimu, provádí více úkolů a provádí virtualizaci paměti, v poslední době jsem pracoval na tom ovladač disku a cd disk, aby bylo možné jej nainstalovat a ne jen běžet na živém CD ... Zdravím.
Vážení, mám chybu při provádění příkazu:
gcc -o jádro START.ELF.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
link.ld: 5 chyba syntaxe
collect2: chyba: ld vrátil 1 stav ukončení
odkaz.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
V řádku 5 nevidím chybu, je někdo stejný?
Pracuji s virtualizovaným debianem pískajícím ve virtuální schránce
přidat ";" na konci * (. multiboot_header)
Skvělá iniciativa, určitě se budu řídit kapitolami tohoto příspěvku a hodlám se z toho hodně naučit. Velice vám děkujeme, že jste si našli čas a naučili nás to. Jediný detail v tomto ohledu, je třeba poznamenat, že Linus Torvalds není tvůrcem žádného operačního systému, vytvořil jádro systému GNU / Linux (ten, který byl použit v jiných OS), což je stále hodné, ale je důležité připočítat Richardu Stallmanovi za vytvoření většiny OS.
Moc děkuji za vstup a doufám, že zvážíte můj postřeh.
Nějakou dobu jsem si s tématem pohrával, hned jsem se začal zajímat, jakmile jsem přečetl nadpis. ale zpráva se stále zobrazuje
chyba: nebylo nalezeno žádné záhlaví pro více spuštění.
Chyba musíte nejprve načíst jádro
Na github jsem nahrál to, co jsem vzal do repo https://github.com/rkmax/GenyOS
Totéž se stalo mně. Našli jste řešení?
otázka, kterou jsem začal představovat syntaxi a řádek menuentry mi říká commandnot found who could tell me why
tohle je to co dělám
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: příkaz nebyl nalezen
Obsah tohoto obsahu se nezadává do příkazového řádku, ale do souboru, který vytvoříte a který se nazývá grub.cfg
Výborný článek, děkuji!
Okázalý…!! je to jako chybějící odkaz.
Líbí se mi vaše výukové programy Emulace LInus Torvalds, ale je tu jeden krok, kterému nerozumím, následující:
Nyní zkopírujeme START.ELF do / další uvnitř naší složky, která simuluje kořen našeho operačního systému. Pomocí konzoly přejdeme do kořenové složky našeho nového operačního systému a ověříme, zda existují dva soubory: jeden /boot/grub/grub.cfg a další /next/START.ELF.
Přejdeme do horního adresáře a zavoláme nástroj pro vytváření ISO s GRUBem s názvem grub-mkrescue
Mohl by mi to někdo vysvětlit: str
Jednoduše vygenerujeme minimální ISO, které může GRUB načíst, zkopírujeme jádro do (/ ISO, libovolné složky) / další / START.ELF a konfigurační soubor GRUB do (/ ISO, libovolné složky) / boot / grub / grub.cfg. Jakmile to uděláme, ještě jsme nenainstalovali GRUB na ISO a existuje nástroj, který generuje ISO ze složky a nainstaluje GRUB s názvem grub-mkrescue. Nakonec bychom skončili se zaváděcím ISO, které má nainstalovaný GRUB, který může číst konfiguraci a později správně spustit START.ELF. Nevím, jestli jsem vysvětlil sám sebe, ale to, co děláme, je jakýsi falešný souborový systém, pomocí kterého generujeme ISO.
Úžasný
Opravdu se na nový systém tolik nehledejte, ale pokud například zlepšíte linux, vytvořte linuxový exonukleus se serverovou komponentou, která bude fungovat jako mikronukleus, pokud si přejete, tj. Struktura exo s chováním mikrojader, která by byla super a linux.
Další věc je, že nejsem odborník na programování, jen pár kýčovitých c ++ a java, stačilo by mi dát linuxovému jádrovému modulu modul, vykuchat ho, upravit atd.
Bezpochyby už musím dělat na dovolené.
Tento dobrý a v jakém programu to navrhuje a kóduje?
prosím, dej mi tu odpověď
Při kompilaci z vašeho git dostanu:
[jmponce @ jar build] $ cmake ..
- Vytvoření adresáře NextRoot
- Generování skriptu ISO
make DESTDIR = další instalace
./iso.sh
- Nalezený Doxygen: / usr / bin / doxygen (nalezená verze „1.8.9“)
- Konfigurace hotová
- Generování hotovo
- Soubory sestavení byly zapsány do: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Skenování závislostí cíle START.ELF
[7%] Budování objektu ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Budování objektu CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Propojení spustitelného souboru CXX START.ELF
/ usr / bin / ld: Nekompatibilní /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a je při hledání -lgcc přeskočen
/ usr / bin / ld: nelze najít -lgcc
collect2: chyba: ld vrátil stav ukončení 1
src / CMakeFiles / START.ELF.dir / build.make: 402: neúspěšné pokyny pro cíl 'src / START.ELF'
make [2]: *** [src / START.ELF] Chyba 1
CMakeFiles / Makefile2: 106: Neúspěšné pokyny pro cíl 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Chyba 2
Makefile: 117: Selhání pokynů pro cíl 'all'
make: *** [vše] Chyba 2
Zdá se, že chyba spočívá v tom, že nemůže najít llibgcc, protože máte 64bitovou verzi a v současné době je systém sestavení nucen používat 32bitovou verzi. Měli byste na svůj distro nebo lepší nainstalovat balíček kompatibility, použijte 32bitový systém.
Mám 32 bitů a objeví se stejná chyba, máte na mysli operační systém nebo architekturu? moje je 64 bit, ale používám 32 bit Ubuntu, neptejte se, finanční problémy, s tím říkám všechno.
Vynikající téma, čeká se na větší rozsah. pozdravy
Skvělé, doufám v další
Dobrý den, jsem mladý velvyslanec, který chce vytvořit operační systém, který podporuje všechny programy a platformy, aby vývojáři nemuseli mít na počítači výkonné stroje nebo aplikace nebo programy.
Proto se o tento příspěvek zajímám, ale když si stáhnu váš git nebo se ho pokusím vytvořit, vše funguje, dokud neprovedu příkaz ./iso.sh nebo grub-mkrescue -o nextdivel.iso nextroot, dostanete tuto chybu
„Grub-mkrescue: varování: Vaše xorriso nepodporuje„ –grub2-boot-info “. Některé funkce byly deaktivovány. Použijte xorriso 1.2.9 nebo novější.
grub-mkrescue: varování: Vaše xorriso nepodporuje "–grub2-boot-info". Váš obraz jádra je příliš velký. Spuštění disku bylo zakázáno. Použijte xorriso 1.2.9 nebo novější .. »
Opravdu netuším, protože vím hodně o aplikacích a webech, ale nevím nic o grub
Možná budete muset na svém distro aktualizovat program xorriso. Jakou distribuci a verzi používáte?
Používám xubuntu 14.04lts a zkusím spustit xorriso, ale shell mi říká, že to nemůže najít a dostávám apt-get install xorriso, i když jsem upřímně očekával nějakou odpověď, protože jsem měl špatnou zkušenost s instalací věcí, které neznám v linuxu hehe . Právě to aktualizuji a povím vám, co se stalo
Poté nainstalujte xorriso ze softwarového centra nebo jednoduše z terminálu proveďte „sudo apt-get install xorriso“
Už jsem udělal všechno, co jste mi řekli, a jak s git, tak s mým dostávám tento xorriso 1.3.2: manipulátor souborového systému RockRidge, projekt libburnia.
Aktuální proud: -outdev 'stdio: nextdivel.iso'
Aktuální médium: soubor stdio, přepisovatelný
Stav média: je prázdné
Souhrn médií: 0 relací, 0 datových bloků, 0 dat, 1901 m zdarma
Přidáno do ISO obrazu: adresář '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 souborů přidaných za 1 sekundu
xorriso: FAILURE: Nelze určit atributy zdrojového souboru '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Žádný takový soubor nebo adresář neexistuje
xorriso: UPDATE: 546 souborů přidaných za 1 sekundu
xorriso: aborting: -abort_on 'FAILURE' narazil na 'FAILURE'
A manšestr nerozumím mé struktuře je /nextroot/boot/grub/grub.cfg a nextroot / next / START.ELF
Díky, jsem připraven jít vpřed, kamarád mi pomohl a řekl mi, co jsem udělal špatně, byla organizace adresáře, tak jsem to upravil a je to
Promiňte, můžete mi říct, jaký postup jste provedli, protože jsem dostal chybu nic ke spuštění: žádný takový soubor nebo adresář
žádné zaváděcí zařízení.
Pozdravy! Chtěl jsem vás požádat o laskavost, pokud mi můžete poslat e-mail s tím, co zde vysvětlíte, trochu jsem se zmátl a musím porovnat, co mám s tím, co vysvětlujete, možná mi není jasné, zda vytvoření grub. cfg se provádí v terminálu gcc nebo kde přesně? Děkuji ti mnohokrát příteli!
Soubor grub.cfg vytvoříte pomocí libovolného textového editoru a musíte jej uložit do složky PROJECT_FOLDER / boot / grub / grub.cfg
Ahoj Adrian, především ti blahopřeji a děkuji za příspěvek.
Víte, že to dělám pro praxi a začal jsem to dávat dohromady podle vašeho doučování, ale po spuštění jsem našel první chybu
$ jako -o kernel.o -c kernel.asm
bash: as: příkaz nebyl nalezen ...
Podobné příkazy jsou:
‚je '
'ac'
Pracuji na Fedoře 20 a nemohu v tomto ohledu najít řešení, ocenil bych vaše pokyny, zda mám něco změnit v GCC nebo v plynu
díky předem
Musíte nainstalovat GAS, abych viděl chybový kód. Nemám Fedoru po ruce, ale teoreticky, pokud nainstalujete yc gcc-c ++, nainstalujete si celou sadu GCC a GNU As s ní obvykle přichází.
Jsem s vámi, vím něco o C ++, C # (i když tento poslední není v této věci příliš užitečný) špatná věc je, že mi stále chybí zkušenosti, nikdy nezvládám jazyk C, vaše publikace je skvělá, Nemám moc co říci, pokud budu mít čas, vidím. Děkuji.
Moc děkuji za skvělou pomoc….
Miluji linux, je to nejlepší čtvrť, která existuje, pravdou pro moje okna je smetí a vím, že tvůrce linuxu je tvůrcem oken
Dobrý den, zobrazí se chyba v grub
chyba: soubor /next/START.ELF nebyl nalezen
chyba: musíte nejprve načíst jádro
Mohl byste mi pomoci a googlit, ale nemohu najít
Prosím, jak to můžu nechat ukázat zprávu HELLO WORLD? Jsem začátečník a stále toho nevím dost
Stává se mi toto:
gcc -o jádro START.ELF.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
/ usr / bin / ld: kernel.o: přemístění R_X86_64_32 proti symbolu `stack 'nelze použít při vytváření objektu PIE; překompilovat s -fPIE
/ usr / bin / ld: finální odkaz selhal: nereprezentovatelná část na výstupu
collect2: chyba: ld vrátil 1 stav ukončení