<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Archives des CosmosOS - Custom Protocol</title>
	<atom:link href="https://www.customprotocol.com/tags/cosmosos/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.customprotocol.com/tags/cosmosos/</link>
	<description>Site d&#039;hack-tualité et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, émulation...)</description>
	<lastBuildDate>Thu, 18 May 2017 08:47:11 +0000</lastBuildDate>
	<language>fr-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</title>
		<link>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/</link>
					<comments>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/#respond</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Thu, 18 May 2017 08:47:11 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Cosmos]]></category>
		<category><![CDATA[Cosmos (C# Open Source Managed Operating System)]]></category>
		<category><![CDATA[CosmosOS]]></category>
		<category><![CDATA[FileSystem]]></category>
		<category><![CDATA[OSDev]]></category>
		<category><![CDATA[système de fichiers]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=12963</guid>
					<description><![CDATA[<p>Suite du premier tutoriel sur Cosmos, le système d'exploitation écrit en C#. Vous allez ici apprendre à utiliser un système de fichiers&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/">[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Voici une suite au <a href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">premier tutoriel</a> (mis à jour à la suite de cette deuxième partie, n'hésitez pas à y faire un tour au cas où&nbsp;:P) sur comment créer et lancer sur une machine virtuelle son premier système d'exploitation. Sous forme de console pour l'instant, le système n'est pas pourvu d'un système de fichiers (créer des dossiers/fichiers, se déplacer dans les dossiers, etc.). Nous allons donc ici voir comment faire cela. Faites place au tutoriel&#8239;!</p>
<figure id="attachment_12292" aria-describedby="caption-attachment-12292" style="width: 700px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmos.png"><img fetchpriority="high" decoding="async" class="wp-image-12292 size-full" src="https://www.customprotocol.com/medias/2017/01/cosmos.png" width="700" height="448" srcset="https://www.customprotocol.com/medias/2017/01/cosmos.png 700w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos-370x237.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos-270x173.png 270w, https://www.customprotocol.com/medias/2017/01/cosmos-470x300.png 470w, https://www.customprotocol.com/medias/2017/01/cosmos-570x365.png 570w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192@2x.png 600w" sizes="(max-width: 700px) 100vw, 700px" /></a><figcaption id="caption-attachment-12292" class="wp-caption-text">Logo de <strong>Cosmos</strong></figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Utilisation du système de fichiers</strong></span></h4>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">A. Présentation du VFS</span><br /></strong></h5>
<p style="text-align: justify;">Comme défini plus haut, un système de fichiers va vous permettre de créer des fichiers et dossiers depuis votre système d'exploitation et vous déplacer, ouvrir, supprimer ces fichiers, dossiers, etc. Comme pour l'instant l'utilisation de <strong>Cosmos</strong> ne se fait essentiellement que sur machine virtuelle et non sur un support physique, nous allons utiliser ce qu'on appelle un système de fichiers virtuel (VFS) ou comme Wikipédia le définit&nbsp;: "Une couche d'abstraction au-dessus d'un système de fichiers plus concret".</p>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">B. Utilisation du VFS</span><br /></strong></h5>
<p style="text-align: justify;">Lancez <em>Visual Studio</em>, créez un projet ou ouvrez votre projet <em>Cosmos C#</em>. Rendez-vous maintenant dans le fichier <em>Kernel.cs</em>.</p>
<h6 style="text-align: justify;">Initialisation<strong><br /></strong></h6>
<p style="text-align: justify;">Avant d'utiliser le système de fichiers virtuel, il va falloir l'initialiser depuis la boucle <em>BeforeRun()</em> de votre projet (<a href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">voir le premier tutoriel</a> à la partie 2B pour plus d'informations). Voici le code à utiliser&nbsp;:</p>
<pre class="lang:c# decode:true">FS&nbsp;=&nbsp;new Sys.FileSystem.CosmosVFS();
Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);</pre>
<p style="text-align: justify;">Il est bon de savoir que le système de fichiers utilisé par <strong>Cosmos</strong> ressemble à celui de <em>Windows</em>, chaque lecteur a sa propre lettre et le répertoire par défaut est "0:\" comme "C:\" sur <em>Windows</em>.</p>
<p style="text-align: justify;">La variable <em>dossier_actuel</em> sera par défaut définie par&nbsp;:</p>
<pre class="lang:c# decode:true">string dossier_actuel&nbsp;=&nbsp;"0:\\";</pre>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Il faut impérativement utiliser une double barre oblique ("\\") inversée pour écrire une simple "\".</div>
<h6 style="text-align: justify;"><strong>Commande pour créer un fichier<br /></strong></h6>
<pre class="lang:c# decode:true">var f&nbsp;=&nbsp;File.Create(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt"); //Créer un fichier pour chemin dossier_actuel\fichier.txt
f.Close();</pre>
<h6 style="text-align: justify;"><strong>Commande pour lire un fichier<br /></strong></h6>
<pre class="lang:c# decode:true">string texte&nbsp;=&nbsp;File.ReadAllText(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt"); //La variable 'texte' contiendra le texte contenu dans le fichier</pre>
<h6 style="text-align: justify;"><strong>Commande pour supprimer un fichier<br /></strong></h6>
<pre class="lang:c# decode:true ">File.Delete(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt");</pre>
<h6 style="text-align: justify;"><strong>Commande pour créer un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;"\\nomdudossier");</pre>
<h6 style="text-align: justify;"><strong>Commande pour supprimer un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">Directory.Delete(dossier_actuel&nbsp;+&nbsp;"\\dossier", true); // 'true' signifie que le contenu du dossier va être également supprimé</pre>
<h6 style="text-align: justify;"><strong>Commande pour se déplacer vers un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">if (input.StartsWith("cd ")) //L'utilisateur entre 'cd nomdudossier'
            {
                var newdir&nbsp;=&nbsp;input.Remove(0, 3); //On extrait le nom du dossier
                if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;newdir))
                //On vérifie si le dossier existe.
                {
                    Directory.SetCurrentDirectory(dossier_actuel);
                    dossier_actuel&nbsp;=&nbsp;dossier_actuel&nbsp;+&nbsp;newdir&nbsp;+&nbsp;"\\";
                }
                else
                {
                    Console.WriteLine("Ce dossier n'existe pas&#8239;!");
                }
            }</pre>
<h6 style="text-align: justify;"><strong>Commande pour se déplacer vers un dossier parent (retour)<br /></strong></h6>
<pre class="lang:default decode:true">var dir&nbsp;=&nbsp;FS.GetDirectory(dossier_actuel);
dossier_actuel&nbsp;=&nbsp;dir.mParent.mFullPath;</pre>
<h6 style="text-align: justify;"><strong>Commande pour lister les dossiers et fichiers du dossier ouvert<br /></strong></h6>
<pre class="lang:c# decode:true">Console.WriteLine("Type\t     Nom");
                foreach (var dir in Directory.GetDirectories(dossier_actuel))
                {
                    Console.WriteLine("&lt;Dossier&gt;\t"&nbsp;+&nbsp;dir);
                }
                foreach (var file in Directory.GetFiles(dossier_actuel))
                {
                    Console.WriteLine("&lt;Fichier&gt;\t"&nbsp;+&nbsp;file);
                }</pre>
<h6 style="text-align: justify;"><strong>Commande pour lister les lecteurs disponibles<br /></strong></h6>
<pre class="lang:c# decode:true ">var vols&nbsp;=&nbsp;FS.GetVolumes();
                Console.WriteLine("Nom\tTaille\tParent");
                foreach (var vol in vols)
                {
                    Console.WriteLine(vol.mName&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;vol.mSize&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;vol.mParent);
                }</pre>
<p style="text-align: justify;">Voilà voilà, vous avez pu voir une liste de différentes commandes utiles à la création d'un système d'exploitation, si vous voulez voir l'application réelle de ces commandes, vous pouvez aller voir la méthode <a href="https://github.com/valentinbreiz/Ode-OS/blob/master/Ode%20OS/Kernel.cs#L505">I<em>nterpredCMD</em></a> d'un petit système d'exploitation réalisé par mes soins, où ces commandes y sont inscrites (Ctrl&nbsp;+&nbsp;F pour rechercher dans la page&#8239;;) ).</p>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">C. Exemple d'implémentation du système de fichiers</span><br /></strong></h5>
<p style="text-align: justify;">Maintenant, depuis votre console, vous pouvez implémenter différentes commandes. Voici un algorithme basique qui va pouvoir interpréter les commandes transmises depuis l'utilisateur (comme depuis le CMD sur <em>Windows</em>) et permettre la création et suppression d'un dossier. Ensuite, à vous d'implémenter vos propres commandes&#8239;!</p>
<pre class="lang:c# decode:true">using System;
using Sys&nbsp;=&nbsp;Cosmos.System;
using System.IO;
using Cosmos.System.FileSystem;
// Ceci permet d'importer des références.
namespace Custom_Protocol
{
    public class Kernel&nbsp;: Sys.Kernel
    {
        string dossier_actuel&nbsp;=&nbsp;"0:\\";
        public CosmosVFS FS { get; private set; }
        protected override void BeforeRun()
        //Ceci est le code exécuté avant l'exécution du programme.
        {
            Console.Clear();
            //Permet de nettoyer la console des logs de démarrage.
            //On met le clavier en français
            Sys.KeyboardManager.SetKeyLayout(new Sys.ScanMaps.FR_Standard());
            //Initialisation du système de fichier.
            FS&nbsp;=&nbsp;new Sys.FileSystem.CosmosVFS();
            Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);
            //Fin de l'initialisation
            Console.WriteLine("Tutoriel de customprotocol.com");
            Console.WriteLine("Cosmos a demarre avec succes.");
            //Ceci permet d'écrire une ligne.
        }
        protected override void Run()
        //Ceci est le code exécuté pendant l'exécution du programme, il se répétera indéfiniment.
        {
            Console.Write("commande&gt; ");
            //Ceci permet d'écrire une ligne ou l'on peut écrire sur la même ligne.
            var input&nbsp;=&nbsp;Console.ReadLine();
            //Ceci est une variable qui permet de lire le texte écrit par l'utilisateur.
            InterpretCMD(input);
            //Ceci permet de lancer la méthode qui va interpréter la commande (input)
        }
        private void InterpretCMD(string input)
        //Ceci est la méthode qui interprète la commande envoyée (d'où le "string input") 
        {
            if (input.StartsWith("dir -c ")) //Si la commande commence par dir -c
            {
                string dir&nbsp;=&nbsp;input.Remove(0, 7); //On extrait la commande
                if (!Directory.Exists(dossier_actuel&nbsp;+&nbsp;dir)) //Si le dossier n'existe pas (! symbole de négation)
                {
                    FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;dir); //On créer le dossier
                    Console.WriteLine("Dossier cree&#8239;!");
                }
                else if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;dir)) //Sinon si le dossier existe alors
                {
                    Console.WriteLine("Le dossier existe deja&#8239;!");
                    Console.WriteLine("Dossier cree&#8239;!");
                    FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;dir&nbsp;+&nbsp;"-1"); //On créer tout de même un dossier avec comme nom 'nomdudossier-1'
                }
            }
            else if (input.StartsWith("dir -r ")) //Si la commande commence par dir -r alors
            {
                string dirr&nbsp;=&nbsp;input.Remove(0, 7); //On extrait le nom du dossier de la commande
                if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;dirr)) //Si le dossier existe alors
                {
                    Directory.Delete(dossier_actuel&nbsp;+&nbsp;dirr, true); //On le supprime
                    Console.WriteLine("Le dossier '"&nbsp;+&nbsp;dirr&nbsp;+&nbsp;"' a ete supprime&#8239;!");
                }
                else //Si il n'existe pas
                {
                    Console.WriteLine("Le dossier '"&nbsp;+&nbsp;dirr&nbsp;+&nbsp;"' n'existe pas&#8239;!");
                }
            }
            else if (input == "dir -l") //Si la commande est égale à dir -l
            {
                Console.WriteLine("Type\t     Nom");
                foreach (var dir in Directory.GetDirectories(dossier_actuel)) //On récupere tous les dossiers
                {
                    Console.WriteLine("&lt;Dossier&gt;\t"&nbsp;+&nbsp;dir); //On affiche tous les dossiers
                }
            }
            else if (input == "hello")
            { //Si la commande est égale à hello alors
                Console.WriteLine("Bonjour!"); //Afficher "Bonjour!".
            }
            else if (input == "bye")
            { //Sinon si la commande est égale à bye
                Sys.Power.Shutdown(); //Éteindre le système.
            }
            else
            { //Sinon (si la commande n'est ni hello ni bye)
                Console.WriteLine("Erreur&nbsp;: Commande inconnue"); //Afficher la commande est inconnue.
            }
        }
    }
}</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Conclusion</strong></span></h4>
<p style="text-align: justify;">À travers ce tutoriel, vous avez pu voir comment utiliser un système de fichiers dans votre projet <strong>Cosmos</strong>. Amusez-vous, développez et partagez votre projet&#8239;! Si vous manquez d'inspiration, voici même une page comprenant plusieurs projets sous <strong>Cosmos</strong>&nbsp;: <em><a href="https://github.com/CosmosOS/Cosmos/wiki/Cosmos-Projects">Cosmos Projects</a></em>.</p>
<p style="text-align: justify;">D'autres tutoriels à propos de <strong>Cosmos</strong> arriveront sur <strong>Custom Protocol</strong> bientôt, si vous avez besoin de quoi que ce soit vous pouvez poser une question en commentaire ou sur la <a href="https://gitter.im/CosmosOS/Cosmos">conversation Gitter</a> du projet <strong>Cosmos</strong>&#8239;!&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/">[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</title>
		<link>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/</link>
					<comments>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/#comments</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Sun, 08 Jan 2017 14:01:46 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Cosmos]]></category>
		<category><![CDATA[Cosmos (C# Open Source Managed Operating System)]]></category>
		<category><![CDATA[CosmosOS]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=12233</guid>
					<description><![CDATA[<p>Dans ce premier tutoriel vous allez apprendre à créer votre premier système d'exploitation avec le projet Cosmos&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><div align="center" class="alert alert-success ">Ce tutoriel fut mise à jour le 18/05/2017, avec une autre méthode d'installation <em>dev-kit</em> bien plus pratique et efficace&#8239;! N'hésitez pas à re-suivre cette procédure au cas où&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>À travers ce tutoriel et une future suite de tutoriels, nous allons apprendre à créer notre propre <em>OS</em>, ou plutôt <strong>le vôtre</strong> ! Nous n'allons évidemment pas surpasser<em> Windows</em> ou <em>Ubuntu</em>, ce sera un petit OS fait maison <strong>pour les passionnés et débutants en programmation</strong>&#8239;! Nous n'allons pas utiliser de langage assembleur, ne créerons un noyau, nous le programmerons simplement en <em>C#</em> avec l'aide du projet <strong>Cosmos</strong>, magnifique non&#8239;?</p>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2017/01/cosmos.png"><img decoding="async" class="aligncenter size-full wp-image-12292" src="https://www.customprotocol.com/medias/2017/01/cosmos.png" alt="cosmos" width="700" height="448" srcset="https://www.customprotocol.com/medias/2017/01/cosmos.png 700w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos-370x237.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos-270x173.png 270w, https://www.customprotocol.com/medias/2017/01/cosmos-470x300.png 470w, https://www.customprotocol.com/medias/2017/01/cosmos-570x365.png 570w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192@2x.png 600w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<hr />
<p style="text-align: justify;">Une petite présentation de notre support s'impose, comme ce tutoriel est ciblé aux débutants et que je ne suis pas expert en programmation, je vais m'appuyer sur le super, que dis-je, le magnifique <a href="https://github.com/CosmosOS/Cosmos">projet <strong>Cosmos</strong></a>.</p>
<p style="text-align: justify;"><strong>Cosmos</strong> est un système d'exploitation, ou plutôt un "kit de construction", basé sur <em>SysLinux</em> autour du compilateur <em>IL2CPU</em> (créé par les mêmes développeurs que <strong>CosmosOS</strong>). <em>COSMOS</em> signifie d'ailleurs <em>C# Open Source Managed Operating System</em>.</p>
<p style="text-align: justify;">Bref,<strong> Cosmos</strong> n'est donc pas un système d'exploitation à proprement parler, mais plutôt un «&nbsp;kit de création de système d'exploitation&nbsp;». <strong>Cosmos</strong> va vous permettre de créer des systèmes d'exploitation sur <em>Visual Studio</em> et en <em>C#</em> (ou <em>Visual Basic</em>). Le véritable point fort de <em>Cosmos</em> réside dans le fait qu'il est intégré à <em>Visual Studio</em>, ce qui va permettre un développement sous <em>Windows</em> accompagné d'éléments essentiels. En effet, <em>Visual Studio</em> (avec <strong>Cosmos</strong>) va débugger et générer votre <em>OS</em> avant de l'envoyer à une machine virtuelle.</p>
<figure id="attachment_12273" aria-describedby="caption-attachment-12273" style="width: 488px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png"><img decoding="async" class="wp-image-12273 size-full" title="cosmos" src="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png" alt="Logo CosmosOS" width="488" height="100" srcset="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png 488w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-300x61.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-370x76.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-270x55.png 270w" sizes="(max-width: 488px) 100vw, 488px" /></a><figcaption id="caption-attachment-12273" class="wp-caption-text">Logo officiel de <b>Cosmos</b></figcaption></figure>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>1) Installation de Cosmos (dev-kit)<br /></strong></span></h4>
<p>La dernière version officielle du projet <strong>Cosmos</strong> étant parue il y a déjà plusieurs années, il va falloir mettre à jour celle que vous avez déjà installée et si ce n'est pas déjà fait, l'installer. Car depuis, il y a eu plusieurs corrections de <em>bugs</em>, d'ajouts, qui améliorent fortement l'expérience utilisateur.</p>
<p>Il existe deux kits pour <strong>Cosmos</strong>, l'<em>user-kit</em> et le <em>dev-kit</em>. C'est ce dernier que nous allons compiler pour pouvoir profiter des mises à jour (dont beaucoup sur le système de fichiers que nous verrons un peu plus tard&nbsp;:P).</p>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>A. Pré-requis</strong></span></h5>
<ul>
<li style="text-align: justify;">Un minimum de connaissances en algorithmique (C# ou VB par exemple)&#8239;;</li>
<li style="text-align: justify;">Être sous <em>Windows 7</em> au minimum&#8239;;</li>
<li style="text-align: justify;"><em>Visual Studio Community 2015</em> (à <a href="http://www.01net.com/telecharger/windows/Programmation/creation/fiches/134695.html">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;">.<em>NET Framework 4.5</em> (à <a href="https://www.microsoft.com/fr-FR/download/details.aspx?id=30653">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;"><em>VMWare Player</em> (version gratuite) (à <a href="https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;"><em>.NET Framework 3.5 SP1</em>, quelques composants requérant cette version (à <a href="https://www.microsoft.com/fr-FR/download/details.aspx?id=22">télécharger ici</a>).<strong><br /></strong></li>
</ul>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>B. Installation de Cosmos</strong></span></h5>
<p style="text-align: justify;">Premièrement, commencez par télécharger <a href="https://github.com/CTPBenchmark/Cosmos">ce répertoire</a> (cliquez sur le bouton vert '<em>Clone or Download</em>' puis '<em>Download ZIP</em>') que je vous ai moi-même concocté, comprenant de nombreux correctifs et quelques ajouts. Décompressez ensuite l'archive ZIP sur votre bureau par exemple ou dans un dossier dédié (parce que c'est plus propre).</p>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Assurez-vous que ni <em>Visual Studio 2015</em> ni <em>VMWare</em> ne sont en cours d’utilisation&#8239;!</p>
<p style="text-align: justify;">Et assurez-vous que vous n’êtes pas en train de faire des mises à jour <em>Windows</em>, ce qui pourrait éteindre votre ordinateur, ou quelque chose d’autre de stupide.&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
<p style="text-align: justify;">Lancez maintenant le fichier "<span class="css-truncate css-truncate-target">install-VS2015.bat</span>".</p>
<p style="text-align: justify;"><div align="center" class="alert alert-info ">Si <strong>Cosmos</strong> est déjà installé sur votre machine, il n'y a rien à faire&#8239;! La compilation du <em>dev-kit</em> va automatiquement supprimer les anciennes versions.</div>
<figure id="attachment_13117" aria-describedby="caption-attachment-13117" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/05/installation-cosmos.png"><img decoding="async" class="wp-image-13117 size-medium" src="https://www.customprotocol.com/medias/2017/05/installation-cosmos-500x261.png" width="500" height="261" /></a><figcaption id="caption-attachment-13117" class="wp-caption-text">Console d'installation de <strong>Cosmos</strong> made in <strong>CTP</strong>&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<p>Une fois le programme d'installation lancé, il va tout effectuer tout seul et vous pourrez voir les résultats dans cette fenêtre&nbsp;:</p>
<figure id="attachment_13084" aria-describedby="caption-attachment-13084" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/05/cosmos-devkit-installer.png"><img decoding="async" class="wp-image-13084 size-medium" src="https://www.customprotocol.com/medias/2017/05/cosmos-devkit-installer-500x353.png" width="500" height="353" /></a><figcaption id="caption-attachment-13084" class="wp-caption-text">La compilation de <strong>Cosmos</strong> a réussie, on passe à l'installation (<em>Running Setup</em>)&#8239;!</figcaption></figure>
<p style="text-align: justify;">L'installation n'a normalement pas dû prendre de temps et si tout s'est bien passé, <em>Visual Studio</em> s'est lancé en ouvrant la solution "Cosmos" (où vous pouvez éditer ou voir le code source si vous êtes curieux) et le programme d'installation affiche alors en vert&nbsp;: <em>Build Complete!</em></p>
<p>&nbsp;</p>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;">2) Créer son premier OS</span></h4>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>A. Création du projet</strong></span></h5>
<p style="text-align: justify;">Lancez <em>Visual Studio</em>, appuyez sur "Nouveau projet...", cette fenêtre se lance alors&nbsp;:</p>
<figure id="attachment_12253" aria-describedby="caption-attachment-12253" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmosprojet.png"><img decoding="async" class="wp-image-12253 size-medium" src="https://www.customprotocol.com/medias/2017/01/cosmosprojet-500x310.png" alt="Fenêtre créer un nouveau projet" width="500" height="310" /></a><figcaption id="caption-attachment-12253" class="wp-caption-text">Fenêtre "créer un nouveau projet"</figcaption></figure>
<p style="text-align: justify;">Créez un nouveau projet comme n'importe quel projet <em>C#</em>, mais sélectionnez <strong>Cosmos</strong> comme type de projet. Vous pouvez ensuite choisir de programmer votre <em>OS</em> en<em> C#</em> ou en <em>Visual Basic</em> (je conseille le <em>C#</em> mais <em>Visual Basic</em> est tout aussi bien).</p>
<p style="text-align: justify;">Renseignez ensuite le nom de votre projet, ici "Custom Protocol". Appuyez ensuite sur "OK".</p>
<p style="text-align: justify;">Oh, diable, du code&#8239;! Ne vous inquiétez&nbsp;: tout va être expliqué.</p>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>B. Le code</strong></span></h5>
<p style="text-align: justify;">Tout d'abord, on peut remarquer que votre nouveau projet ressemble beaucoup à une application console <em>C #</em> standard.</p>
<p><a href="https://www.customprotocol.com/medias/2017/01/explorateur.png"><img decoding="async" class="alignleft wp-image-12256 size-full" src="https://www.customprotocol.com/medias/2017/01/explorateur.png" alt="explorateur" width="240" height="136" /></a></p>
<p style="text-align: justify;">Pour l'instant, il faudra rester dans <em>"C# Custom Protocol"</em> et non dans "Custom ProtocolBoot".</p>
<p style="text-align: justify;">Le fichier <em>Kernel.cs</em> contient le code d'amorçage et d'exécution de votre OS.</p>
<p style="text-align: justify;">Quant au fichier <em>AssemblyInfos.cs</em>, il contient des informations relatives à votre programme.</p>
<p style="text-align: justify;"> </p>
<hr />
<p style="text-align: justify;">Voici le<em> code source</em> de votre OS, j'ai traduit le texte pour plus de compréhension (vous pouvez copier coller celui-là)&nbsp;:</p>
<pre class="lang:c# decode:true">using System;
using System.Collections.Generic;
using System.Text;
using Sys&nbsp;=&nbsp;Cosmos.System;
// Ceci permet d'importer des références.
namespace Custom_Protocol
{
    public class Kernel&nbsp;: Sys.Kernel
    {
        protected override void BeforeRun() 
        //Ceci est le code exécuté avant l'exécution du programme
        {
            Console.Clear();
            //Permet de nettoyer la console des logs de démarrage
            Console.WriteLine("Tutoriel de customprotocol.com");
            Console.WriteLine("Cosmos a démarré avec succès. Tapez une ligne de texte pour la faire revenir."); 
            //Ceci permet d'écrire une ligne
        }
        protected override void Run() 
        //Ceci est le code exécuté pendant l'exécution du programme, il se répétera indéfiniment.
        {
            Console.Write("Votre texte: "); 
            //Ceci permet d'écrire une ligne ou l'on peut écrire sur la même ligne.
            var texteutilisateur&nbsp;=&nbsp;Console.ReadLine(); 
            //Ceci est une variable qui permet de lire le texte écrit par l'utilisateur
            Console.Write("Texte ecrit: ");
            //Ceci écrit une ligne
            Console.WriteLine(texteutilisateur); 
            //Ceci écrit le texte que l'utilisateur a écrit.
        }
    }
}
</pre>
<figure id="attachment_12261" aria-describedby="caption-attachment-12261" style="width: 279px" class="wp-caption alignright"><img decoding="async" class="wp-image-12261 size-full" src="https://www.customprotocol.com/medias/2017/01/demarrer.png" alt="demarrer" width="279" height="32" srcset="https://www.customprotocol.com/medias/2017/01/demarrer.png 279w, https://www.customprotocol.com/medias/2017/01/demarrer-270x31.png 270w" sizes="(max-width: 279px) 100vw, 279px" /><figcaption id="caption-attachment-12261" class="wp-caption-text">Lets' go&#8239;!</figcaption></figure>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>C. Votre premier boot&#8239;!</strong></span></h5>
<p style="text-align: justify;">Vous pouvez maintenant appuyer sur le petit bouton vert "Démarrer", il se situe sur la barre du haut de <em>Visual Studio</em>.</p>
<p style="text-align: justify;">Si votre code n'a pas d'erreurs, et si <em>VMWare</em> est bien installé, la génération va commencer. Voici une <a href="https://www.youtube.com/watch?v=zfY5ZYq6haw">petite vidéo</a> d'exemple de génération. </p>
<p style="text-align: justify;">Après que <em>VMWare</em> se soit lancé, vous devriez normalement voir du texte défiler (il correspond à <em>l'initialisation</em> de l'<em>ISO</em> dans <em>VMWare</em>). Et après tout ceci, si vous avez correctement copié-collé le code plus haut, vous devriez obtenir ceci&nbsp;:</p>
<figure id="attachment_12270" aria-describedby="caption-attachment-12270" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/ctpos.png"><img decoding="async" class="wp-image-12270 size-medium" src="https://www.customprotocol.com/medias/2017/01/ctpos-500x323.png" alt="Voici le CTPOS&#8239;! XD" width="500" height="323" /></a><figcaption id="caption-attachment-12270" class="wp-caption-text">Voici le <em>CustomProtcolOS</em>&#8239;! XD</figcaption></figure>
<p style="text-align: justify;">Voilà, vous venez de créer la première version de votre premier <em>OS </em>en<em> 32 bit</em>s, bravo&#8239;! Vous pouvez évidemment continuer à le développer, avec l'aide de plusieurs tutoriels qui vont arriver très bientôt ou de la <a href="https://github.com/CosmosOS/Cosmos/wiki">documentation officielle</a> du projet <strong>Cosmos</strong>.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>

