Tout d'abord, dites que c'est mon premier article et que j'espère que vous l'aimerez tous.
Dans cette série, nous allons émuler Linus Torvalds, nous allons créer notre système d'exploitation à partir de 0. Dans ce premier épisode nous allons voir le boot et nous mettrons un texte à l'écran depuis notre noyau.
Dans mon cas, le système d'exploitation s'appelle SuivantDivel. La première décision que nous devons prendre dès que nous considérons le système d'exploitation est de savoir quel sera le chargeur de démarrage?
Ici, il existe plusieurs variantes, et nous pourrions même en créer une nous-mêmes; cependant dans ce tutoriel je vais utiliser GRUB, parce que la plupart savent plus ou moins quelque chose sur lui. Nous créons un dossier qui sera la racine de notre système d'exploitation et là nous créons le dossier / boot / grub
mkdir nextroot && cd nextroot
mkdir -p boot/grub
Là, nous créons le fichier grub.cfg comme suit:
menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}
Dans ce fichier, nous avons vu comment GRUB chargera notre noyau, dans ce cas, dans /next/START.ELF. Maintenant, nous devons créer notre noyau.
Pour cela, nous aurons besoin du GCC y GAS (l'assembleur du projet GNU, est généralement fourni avec le gcc). Nous allons donc créer le noyau.
Nous créons d'abord un fichier appelé kernel.asm. Ce fichier contiendra le point de départ de notre noyau et définira également le multiboot (une fonctionnalité de certains bootloaders comme GRUB). Le contenu de kernel.asm sera:
.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
Tout ce qui concerne le multiboot est simplement de suivre la spécification rien d'autre. Tout commencera au début, il appellera multiboot_entry, nous aurons défini l'en-tête multiboot dans les 4 premiers kilomètres et nous le mettrons (avec movl).
Plus tard, nous appelons NextKernel_Main qui est notre fonction C du noyau. Dans la boucle, nous nous arrêtons pour arrêter l'ordinateur. Cela compile avec:
as -o kernel.o -c kernel.asm
Maintenant, nous allons entrer dans la programmation en C. Vous allez penser que maintenant tout est un morceau de gâteau, nous mettons un printf en principal et c'est tout, nous l'avons fait.
Eh bien non, depuis printf y principal ce sont des fonctions qui sont définies par le système d'exploitation, mais nous les créons! Nous ne pouvons utiliser que les fonctions que nous définissons nous-mêmes.
Dans les chapitres suivants, je parlerai de la façon de mettre notre propre bibliothèque C (glibc, bionic, newlibc) mais de temps en temps. Nous avons dit que nous voulons mettre du texte à l'écran, eh bien nous verrons comment nous le faisons.
Il existe deux options, l'une consiste à appeler le BIOS et une autre consiste à gérer directement la mémoire d'écran. Nous allons faire ce dernier car il est plus clair à partir de C et cela nous permettra également de le faire lorsque nous entrerons en mode protégé.
Nous créons un fichier appelé NextKernel_Main.c avec le contenu suivant:
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;
}
Avec cela, nous manipulons directement la mémoire VGA et caractère par caractère, nous l'écrivons. Nous compilons en désactivant le stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding
Si vous êtes arrivé jusqu'ici, vous voudrez essayer votre tout nouveau système d'exploitation maintenant, mais nous n'avons pas encore terminé. Nous avons besoin d'un petit fichier qui indique au compilateur où dans le fichier quitter chaque section. Cela se fait avec un script de l'éditeur de liens. Nous créons 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 = .;
}
Avec cela, nous définissons la position de chaque section et le point d'entrée, start, que nous avons défini dans kernel.asm. Maintenant, nous pouvons unir toute cette concoction:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
Maintenant, nous copions START.ELF dans / next dans notre dossier qui simule la racine de notre système d'exploitation. Nous allons dans le dossier racine de notre nouveau système d'exploitation avec la console et vérifions qu'il y a deux fichiers: un /boot/grub/grub.cfg et un autre /next/START.ELF.
Nous allons dans le répertoire supérieur et appelons un utilitaire de création ISO avec GRUB appelé grub-mkrescue
grub-mkrescue -o nextdivel.iso nextroot
Une fois que nous aurons fait cela, nous aurons un ISO. Cet ISO peut être ouvert sur des ordinateurs x86 (64 bits aussi) et des machines virtuelles. Pour le tester, je vais utiliser QEMU. Nous appelons QEMU depuis la ligne de commande:
qemu-system-i386 nextdivel.iso
Va commencer BIOS de la mer et plus tard nous aurons GRUB. Plus tard, si tout est correct, nous verrons notre phrase.
Vous penserez que c'est difficile, je réponds que oui.
Créer vraiment un système d'exploitation est difficile et que celui-ci ici ne fait rien d'utile. Dans les prochains chapitres, nous verrons comment gérer les couleurs à l'écran, réserver de la mémoire et si je peux, comment obtenir des données à partir du clavier.
Si quelqu'un ne veut pas tout copier ici, j'ai un référentiel à GitHub (plus élaboré) avec le système d'exploitation SuivantDivel. Si vous souhaitez compiler SuivantDivel il vous suffit d'avoir git et 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
Je vous encourage à collaborer sur NextDivel si vous avez le temps et le désir de créer un système d'exploitation. Peut-être même supérieur à Linux ... le temps le dira.
:O
Torvalds a apporté le système d'exploitation Minix (dérivé d'UNIX) à Andrew S. Tanenbaum et l'a amélioré.
Tanenbaum s'est disputé avec Linus, ils se sont insultés. Tanenbaum dit que le Microkernel est l'avenir (HURD, Minix new cône Microkernel).
http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html
C'est le meilleur article que j'ai vu jusqu'à présent sur ce blog. Je veux déjà savoir quoi faire d'autre.
Être impressionné
Vraiment impressionnant!!
FUUUUUUUA !
C'est le post le plus geek que j'ai jamais vu hehe. Bravo Adrián, un article de pute! hyper intéressant !!! 🙂
Je suis d'accord. J'imagine cette situation:
Power User GNU / Linux (avec un visage heureux):
"Je sais déjà comment compiler ma Gentoo"
Nerd (avec mépris): «pff, j'ai créé ma propre distribution ...»
Oui, je peux créer ma propre distribution Linux. En fait, je développe un initramfs et un noyau pour Linux embarqué. Ce n'est pas la même chose de créer un système d'exploitation qu'une distribution Linux. Le premier est beaucoup plus difficile, presque impossible, le second, comme vous l'avez dit, peut être n'importe quoi, même Ubuntu avec le logo xD changé. Alors je laisserais ça comme ça:
Power User GNU / Linux (avec un visage heureux)
- Je sais déjà comment compiler ma Gentoo
Semi-Neld
- Pff, j'ai suivi un linux à partir de zéro et j'ai fait ma propre distribution
Nerd (avec une attitude méprisante)
- pff, car j'ai programmé un noyau en assembleur et en C
Saludos!
C'est intéressant pour moi, en attendant les chapitres suivants.
J'ai vu ce tutoriel il y a quelque temps, c'est pour C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Merci pour le lien, je vais y jeter un œil.
Je souhaite un système d'exploitation 100% compatible avec les graphiques AMD: /
Windows
hahaha dans Windows Catalyst ne prend pas en charge OpenGL, bien que sous Linux je ne puisse pas utiliser toute la puissance graphique, je continuerai d'attendre pour voir ce qui se passe!
attendez juste que la valve élimine le marché
Magique, parfait, excellente contribution, cela ressemble à une belle série de messages 🙂
Buah je voudrais savoir comment programmer pour vous aider, simplement comme une manière de pratiquer avec la connaissance que vous apprenez et aidez un. Pour l'instant, je vous laisse la devise d'attirer l'attention sur le projet une fois que vous l'avez terminé "Utilisez NextDivel, le porno a la même apparence (ou mieux).", Vous allez balayer xD.
Mooooooolaaa !!!!
Très bon article, mais simplement curieux de savoir pourquoi vous n'avez pas suivi le projet Linux From Scratch?
salutations
Eh bien, Linux from Scratch va bien, et vous pouvez dire que c'est le vôtre, mais c'est vraiment très mécanique:
-Télécharger les polices
-Attrapez-les
-Compiler
-Installer
-Suivant
Ici, même si le résultat est pire au final, vous pouvez dire que vous avez revu tous les fichiers.
Comme il ressort de mon commentaire précédent, car il n'a pas le même niveau de complexité. De plus, linux à partir de zéro n'est pas vraiment, contrairement à son nom, créer un système à partir de zéro. Créer un système à partir de zéro signifie le programmer vous-même, écrire votre propre noyau, pas le noyau linux, si possible même votre propre chargeur de démarrage au lieu de grub, lilo, syslinux, etc. Bien qu'un LFS ne soit pas une mince affaire et soit assez complexe, il ne se rapproche même pas de la programmation de votre propre noyau ...
De plus, je suis d'accord avec AdrianArroyo Calle que c'est trop mécanique, je l'ai lu parfois et vous finissez par abandonner sur la sixième page, ils vous disent également d'utiliser quelles versions des packages car sinon les instructions ne fonctionnent pas (cela montre le manque de flexibilité , À mon avis ). Je pense qu'il vaut mieux avoir quelque chose de votre propre idée, compiler les paquets que vous voulez, même en programmer certains, compiler un noyau Linux et en paix.
Saludos!
uuuoooohh !! Je n'ai jamais capturé un message autant que celui-ci.
Veuillez continuer 😀
Je ne sais pas ce qui ne va pas:
erreur: aucun en-tête multiboot trouvé.
erreur vous devez d'abord charger le noyau
Si c'est une consolation, j'ai fait la même erreur. Essayez d'utiliser les sources qui sont dans GitHub, là l'erreur est déjà résolue. Quoi qu'il en soit, je pense que si vous changez la ligne grub.cfg de "multiboot /next/START.ELF" à "kernel /next/START.ELF" cela pourrait fonctionner. Je ne sais pas exactement.
Tout d'abord, magnifique entrée 🙂
J'ai le même problème lors du chargement du noyau depuis grub. Même en utilisant des sources GitHub ou en changeant le multiboot pour le noyau ...
erreur: aucun en-tête multiboot trouvé.
erreur: pas de noyau chargé
Utilisez-vous clang comme compilateur? Changez-le pour le gcc
Vous êtes-vous souvenu d'utiliser le script de l'éditeur de liens? Il est nécessaire que l'éditeur de liens (ld dans notre cas) sache où dans le fichier il va mettre chaque chose. Dans ce cas, l'en-tête multiboot doit être au début.
Utilisez-vous le système CMake? Si vous l'utilisez, je pense que cela n'échoue pas.
Si cela ne fonctionne pas pour vous, je vais essayer de trouver une autre solution.
[+100]
Simplement génial !!!
C'est vraiment cool 🙂
Chapeau. Message impressionnant. Toutes nos félicitations.
Waouh !
Ce serait formidable si vous pouviez ouvrir des applications en HTML5 et Javascript sans avoir à utiliser de navigateur, est-ce possible?
Je parle d'eux comme des applications natives.
Il serait donc facile de programmer pour ce système d'exploitation 😀
Dans ce cas, je ne vais pas le faire parce que cela demande beaucoup plus de travail, mais il y a un système d'exploitation appelé "est" qui fait ce que vous dites. En fait, la ligne de commande est JavaScript et les fenêtres sont dessinées à l'aide des fonctions JavaScript Canvas. Les ingénieurs de Nintendo l'ont fait et maintenant c'est open source.
http://code.google.com/p/es-operating-system/
Valla, merci pour l'info 😀
Je regarderai
Quiconque peut fabriquer son propre OS peut mourir paisiblement, compte tenu du niveau intellectuel qu'il doit atteindre avec lui; Cela vous fait vous passer du paradis ou de l'enfer.
Morceau d'affichage.
jusqu'à présent, personne à notre connaissance n'a fait que quelque chose qui peut être considéré comme un système d'exploitation décent fait à partir de zéro, pas même Linux Torvalds comme vous le dites au début, car cela a commencé à partir de sources Unix et tout le reste est écrit en commune à plus d'une personne, la vie est très courte et repartir de zéro est impensable pour quiconque, même si le contraire est voulu, cela se démontre dans de nombreuses erreurs de copier-coller par Linux Torvalds
Les sources unix sont fermées, l'utilisation de minix ... ce qui est autre chose.
et ceux qui ont fait QDOS quoi?
étaient basés sur quelque chose?
D'après ce que je vois, qui n'a pas son propre système d'exploitation, c'est parce qu'il ne le veut pas, hahahaha.
Maintenant sérieusement, très intéressant! Beaucoup dépasse mes connaissances limitées en programmation, mais je lirai les autres parties de cette série avec anticipation.
Merci pour le post!
Vous m'avez laissé un visage O_O ... sans l'intention de sous-estimer les contributions de qui que ce soit, c'est le plus "pro" que j'ai vu ces derniers temps. Cordialement.
Très bon article, Adrián. Continuez s'il vous plaît…
Vous plaisantez le jour du poisson d'avril?, Ne soyez pas méchant "Émulation de Linus Torvalds: Créez votre propre système d'exploitation à partir de zéro." Je ne pense pas que ce soit difficile pour ceux qui poursuivent une carrière dans un institut de technologie ou une université; mais pour moi, je suis un archer novice (il y a ceux qui nous appellent "Noob" mais je me considère plus Newbie un peu paresseux) qui ressemble à ne pas marcher sur la terre ferme. Quoi qu'il en soit, CET ARTICLE CRÉE BEAUCOUP DE CURIOSITÉ ET SANS DOUTE ADMIRATION ET RESPECT DE SON RÉDACTEUR, FÉLICITATIONS; La première chose que je vais faire est d'essayer de comprendre au moins un peu de ce précieux matériel.
MERCI Adrian Arroyo Calle, excellent travail et noble transmission de connaissances.
LEL Excellent post, continuez comme ça.
Quel superbe article, c'est ce qui m'a manqué desde linux. Quelle merveille.
Excellent message, merci beaucoup.
Je n'ai pas compris ce que fait le fichier link.ld, quelqu'un peut-il me l'expliquer?
Le fichier link.ld indique à l'éditeur de liens (dans ce cas ld) où chaque partie du code doit se trouver dans le fichier résultant. Nous définissons également le point d'entrée car comme nous n'avons pas de système d'exploitation, nous ne pouvons pas utiliser main comme programme normal, dans ce cas nous sélectionnons la fonction de démarrage.
Super tout votre message! En attendant le 7! Et si j'ai un doute, par exemple, si je voulais seulement exécuter un algorithme, sans OS, comment savoir ce que je peux utiliser et ce que je ne peux pas utiliser?
Si vous l'utilisez comme ça, vous ne pourrez rien utiliser de stdlib, qui est pratiquement ce que tout le monde utilise (pas de malloc, free, printf, scanf, strcmp, etc.). Tout doit être implémenté directement à partir de la mémoire ou de l'ASM. Peut-être que dans un chapitre supérieur, je vous montrerai comment installer une bibliothèque C pour le système d'exploitation. Si vous utilisez C ++, vous ne pouvez pas utiliser d'exceptions et les opérateurs new et delete (et sûrement plus).
Je pense que esto cela peut vous donner une meilleure idée de la façon de procéder.
Bonjour, il y a environ 5 ans j'ai suivi une publication similaire et développé un micro-noyau qui démarre de la même manière, il a quelques aspects à améliorer, mais cela peut vous intéresser, il fonctionne en mode protégé, exécute le multitâche et effectue la virtualisation de la mémoire, dernièrement j'ai travaillé dessus pilote de disque et lecteur de cd pour le rendre installable et non seulement fonctionner sur live cd ...
Cher, j'ai une erreur lors de l'exécution de la commande:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
link.ld: erreur de syntaxe 5
collect2: erreur: ld a renvoyé 1 statut de sortie
lien.ld
. = 0x00100000;
.multiboot_header: {
* (. multiboot_header)
}
À la ligne 5, je ne vois pas l'erreur, est-ce que quelqu'un est pareil?
Je travaille avec un debian wheezy virtualisé dans virtualbox
ajouter le ";" à la fin de * (. multiboot_header)
Excellente initiative, je suivrai certainement les chapitres de cet article, dans l'intention d'en apprendre beaucoup. Merci beaucoup d'avoir pris le temps de nous enseigner. Un seul détail à cet égard, il faut noter que Linus Torvalds n'est le créateur d'aucun système d'exploitation, il a créé le noyau du système GNU / Linux (celui qui a été utilisé dans d'autres OS), ce qui en vaut toujours la peine, mais c'est Il est important de donner à Richard Stallman le crédit nécessaire pour créer la plupart des OS.
Merci beaucoup pour votre contribution et j'espère que vous tiendrez compte de mon observation.
Je déconne le sujet depuis un moment, je me suis intéressé dès que j'ai lu le titre. mais le message continue de passer
erreur: aucun en-tête multiboot trouvé.
erreur vous devez d'abord charger le noyau
J'ai téléchargé ce que je prends dans un dépôt sur github https://github.com/rkmax/GenyOS
La même chose m'arrive, avez-vous trouvé la solution?
une question que j'ai commencé à présenter la syntaxe et la ligne d'entrée de menu me dit commandnot found qui pourrait me dire pourquoi
c'est ce que je fais
BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
menuentry: commande introuvable
Le contenu de ce contenu ne doit pas être entré dans la ligne de commande, mais dans le fichier que vous créez appelé grub.cfg
Excellent article, merci!
Spectaculaire…!! c'est comme le chaînon manquant.
J'adore vos tutoriels sur l'émulation de LInus Torvalds, mais il y a une étape que je ne comprends pas, la suivante:
Maintenant, nous copions START.ELF dans / next dans notre dossier qui simule la racine de notre système d'exploitation. Nous allons dans le dossier racine de notre nouveau système d'exploitation avec la console et vérifions qu'il y a deux fichiers: un /boot/grub/grub.cfg et un autre /next/START.ELF.
Nous allons dans le répertoire supérieur et appelons un utilitaire pour créer des ISO avec GRUB appelé grub-mkrescue
Quelqu'un pourrait-il me l'expliquer: p
Simplement pour générer un ISO minimum que GRUB peut charger, nous copions le noyau dans (le / de l'ISO, n'importe quel dossier) /next/START.ELF et le fichier de configuration GRUB dans (le / de l'ISO, n'importe quel dossier) / boot /grub/grub.cfg. Une fois que cela est fait, nous n'avons pas encore installé GRUB sur l'ISO et il existe un utilitaire qui génère l'ISO à partir d'un dossier et installe GRUB appelé grub-mkrescue. Ensuite, nous finirions par obtenir un ISO amorçable sur lequel GRUB est installé, qui peut lire la configuration pour exécuter ultérieurement START.ELF correctement. Je ne sais pas si je me suis expliqué, mais ce que nous faisons est une sorte de faux système de fichiers avec lequel nous générons un ISO.
Hottie
Eh bien, regardez vraiment un nouveau système, pas tellement, mais si vous améliorez Linux, par exemple en créant un exonucléus Linux avec un composant serveur qui agit comme un micronoyau si vous le souhaitez, c'est-à-dire une structure exo avec un comportement micronoyau qui serait super et linux.
L'autre chose est que je ne suis pas un expert en programmation, juste quelques c ++ ringards et quelques java, il me suffirait de donner un module au programme du noyau linux, de le vider, de le modifier etc.
Sans aucun doute je dois déjà le faire en vacances.
Ce bon et dans quel programme le conçoit-il et le code?
s'il vous plaît donnez-moi cette réponse
Lors de la compilation à partir de votre git, j'obtiens:
[jmponce @ jar build] $ cmake ..
- Création du répertoire NextRoot
- Génération de script ISO
make DESTDIR = installation suivante
./iso.sh
- Doxygen trouvé: / usr / bin / doxygen (version trouvée "1.8.9")
- Configuration terminée
- Génération terminée
- Les fichiers de construction ont été écrits dans: / home / jmponce / next-divel / build
[jmponce @ jar build] $ make
Analyse des dépendances de la cible START.ELF
[7%] Construction de l'objet ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
[14%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
[21%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
[28%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
[35%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
[42%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
[50%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
[57%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
[64%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
[71%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
[78%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
[85%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
[92%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
[100%] Construction de l'objet CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
Lier l'exécutable CXX START.ELF
/ usr / bin / ld: Incompatible /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a est ignoré lors de la recherche de -lgcc
/ usr / bin / ld: impossible de trouver -lgcc
collect2: erreur: ld a renvoyé l'état de sortie 1
src / CMakeFiles / START.ELF.dir / build.make: 402: échec des instructions pour la cible 'src / START.ELF'
make [2]: *** [src / START.ELF] Erreur 1
CMakeFiles / Makefile2: 106: échec des instructions pour la cible 'src / CMakeFiles / START.ELF.dir / all'
make [1]: *** [src / CMakeFiles / START.ELF.dir / all] Erreur 2
Makefile: 117: Échec des instructions pour la cible «tous»
make: *** [all] Erreur 2
L'erreur semble être qu'il ne peut pas trouver llibgcc puisque vous avez la version 64 bits et actuellement le système de construction est obligé d'utiliser 32 bits. Vous devez installer un pack de compatibilité sur votre distribution ou, mieux, utiliser un système 32 bits.
J'ai 32 bits et j'obtiens la même erreur, voulez-vous dire le système d'exploitation ou l'architecture? le mien est 64 bits, mais j'utilise Ubuntu 32 bits, ne demandez pas, des problèmes financiers, avec ça je dis tout.
Excellent sujet, en attente d'une plus grande portée. À votre santé
Super j'espère plus
Bonjour, je suis un jeune ambassadeur qui souhaite créer un système d'exploitation prenant en charge tous les programmes et plates-formes afin que les développeurs n'aient pas à avoir des machines ou applications ou programmes puissants sur un PC.
C'est pourquoi je suis intéressé par cet article, mais lorsque je télécharge votre git ou que j'essaie de le créer, tout fonctionne jusqu'à ce que j'exécute la commande ./iso.sh ou grub-mkrescue -o nextdivel.iso nextroot vous obtenez cette erreur
"Grub-mkrescue: avertissement: Votre xorriso ne prend pas en charge" –grub2-boot-info ". Certaines fonctionnalités ont été désactivées. Utilisez xorriso 1.2.9 ou version ultérieure.
grub-mkrescue: avertissement: votre xorriso ne prend pas en charge "–grub2-boot-info". Votre image de noyau est trop grande. Le démarrage du disque a été désactivé. Utilisez xorriso 1.2.9 ou version ultérieure .. »
Je n'ai vraiment aucune idée car je connais beaucoup les applications et les sites Web mais je ne sais rien de grub
Vous devrez peut-être mettre à jour le programme xorriso sur votre distribution. Quelle distribution et quelle version utilisez-vous?
J'utilise xubuntu 14.04lts et j'essaye d'exécuter xorriso mais le shell me dit qu'il ne peut pas le trouver et j'obtiens apt-get install xorriso bien que j'attendais sincèrement une réponse car j'ai eu une mauvaise expérience en installant des choses que je ne connais pas sous linux hehe. Je vais le mettre à jour maintenant et vous dire ce qui s'est passé
Ensuite, installez xorriso depuis le centre logiciel ou simplement depuis le terminal, faites "sudo apt-get install xorriso"
J'ai déjà fait tout ce que vous m'avez dit et avec git et le mien, j'obtiens ce xorriso 1.3.2: manipulateur du système de fichiers RockRidge, projet libburnia.
Courant du lecteur: -outdev 'stdio: nextdivel.iso'
Media current: fichier stdio, écrasable
État du support: vide
Résumé média: 0 session, 0 blocs de données, 0 données, 1901m gratuits
Ajouté à l'image ISO: répertoire '/'='/tmp/grub.OEqSzV'
xorriso: UPDATE: 546 fichiers ajoutés en 1 seconde
xorriso: FAILURE: Impossible de déterminer les attributs du fichier source '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': aucun fichier ou répertoire de ce type
xorriso: UPDATE: 546 fichiers ajoutés en 1 seconde
xorriso: abandon: -abort_on 'FAILURE' a rencontré 'FAILURE'
et velours côtelé Je ne comprends pas ma structure est /nextroot/boot/grub/grub.cfg et nextroot / next / START.ELF
Merci, je suis prêt à avancer, un ami m'a aidé et m'a dit que ce que j'avais fait de mal était l'organisation du répertoire, alors je l'ai ajusté et c'est tout
Excusez-moi, pouvez-vous me dire quelle procédure vous avez effectuée car je reçois l'erreur rien à démarrer: aucun fichier ou répertoire
aucun périphérique amorçable.
À votre santé! J'allais vous demander la faveur si vous pouviez m'envoyer un email avec ce que vous expliquez ici, je suis un peu confus et j'ai besoin de comparer ce que j'ai avec ce que vous expliquez, peut-être que ce qui n'est pas clair pour moi est de savoir si la création du grub. cfg se fait dans le terminal gcc ou où exactement? Merci beaucoup mon ami!
Vous créez le fichier grub.cfg avec n'importe quel éditeur de texte et vous devez l'enregistrer dans PROJECT_FOLDER / boot / grub / grub.cfg
Bonjour Adrian, tout d'abord féliciter et merci pour votre contribution.
Vous savez que je fais cela pour une pratique et j'ai commencé à le mettre en place suite à votre tutorat, mais après avoir commencé j'ai trouvé la première erreur
$ comme -o kernel.o -c kernel.asm
bash: as: commande introuvable ...
Les commandes similaires sont:
'sa'
'ac'
Je travaille sur fedora 20, et je ne trouve pas de solution à cet égard, j'apprécierais vos conseils pour savoir si je dois changer quelque chose dans gcc ou gas
merci d'avance
Vous devez installer GAS pour que je puisse voir le code d'erreur. Je n'ai pas Fedora sous la main mais en théorie, si vous installez yum gcc-c ++, vous installerez toute la suite GCC et elle est généralement fournie avec GNU As.
Je suis avec vous, je sais quelque chose sur C ++, C # (bien que ce dernier ne soit pas très utile en la matière) le mauvais est que je manque encore d'expérience, je ne gère jamais le langage C, votre publication est géniale, je n'ai pas grand chose à dire, si j'ai le temps, je vois. Je vous remercie.
Merci beaucoup pour votre aide précieuse….
J'adore linux c'est le meilleur quartier il y a la vérité car mes fenêtres sont des ordures à un que je sais que le créateur de linux est le créateur de windows
Bonjour, je reçois une erreur dans grub dit
erreur: fichier /next/START.ELF introuvable
erreur: vous devez d'abord charger le noyau
Pourriez-vous m'aider et googler mais je ne trouve pas
S'il vous plaît, comment puis-je lui faire afficher le message HELLO WORLD? Je suis un débutant et je n'en sais toujours pas assez
Ce qui m'arrive:
gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
/ usr / bin / ld: kernel.o: relocalisation R_X86_64_32 contre le symbole `stack 'ne peut pas être utilisé lors de la création d'un objet PIE; recompiler avec -fPIE
/ usr / bin / ld: échec du lien final: section non représentable en sortie
collect2: erreur: ld a renvoyé 1 statut de sortie