
はじめに
こんにちは、habrasociety! このトピックが誰かに役立つかどうかはわかりませんが、ここで何か新しいことを学ぶことを期待しています。 この記事の目的は、habrausersをCOSMOSプロジェクトに紹介し、ニーズに合わせて独自のOSを実装する方法を示すことです。 誰が気にする-私は猫をお願いします。
COSMOSに会う
ウィキペディアが伝えていることは次のとおりです。
Cosmosは、C#Open Source Managed Operating System(rus。「C#で管理されたオープンソースオペレーティングシステム」)の頭字語です。 コスモスは現在、本格的なオペレーティングシステムになることを目指していませんが、他の開発者が簡単かつ簡単に独自のオペレーティングシステムを作成したり、プロジェクトマネージャーの1人が言ったように「レゴ型オペレーティングシステム」として機能したりできるツールのセットです。 また、抽象化層としても機能し、内部ハードウェアの作業の大部分を隠します。
Cosmosは、低レベルのプログラミングから完全に抜け出し、純粋なC#で記述することができるコンストラクタです。
何が必要ですか?
まず、Microsoft Visual Studio 2010、できればProが必要です。 Expressバージョンを使用している場合は、Microsoft Visual Studio Shellをインストールする必要があります。 このすべてをダウンロードしてください:
Cosmos User Kit自体もダウンロードしてインストールする必要があります。 さらに、オペレーティングシステムをテストするために仮想マシンが必要です。 個人的には、QEMUとVirtual Boxを使用しています。
コーディングを開始
Visual Studioを明らかにし、[プロジェクトの作成...]をクリックすると、次のウィンドウが表示されます。

Cosmos C#Libraryを選択し、[OK]をクリックします。その後、
標準コードusing System; using System.Collections.Generic; using System.Text; using Sys = Cosmos.System; namespace CSharpKernel1 { public class Kernel : Sys.Kernel { protected override void BeforeRun() { Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back."); } protected override void Run() { Console.Write("Input: "); var input = Console.ReadLine(); Console.Write("Text typed: "); Console.WriteLine(input); } } }
ここで、オペレーティングシステムのロジックを記述します。 OSが正しく機能するためには、各プロジェクトでリリース構成を選択する必要があります! それ以外の場合は、単に機能しません。
標準コードは必要ないので、気軽にカットしてください! それでは、コードを直接書くことに取りかかりましょう。 Cosmosがサポートする.NET Frameworkライブラリのオブジェクトをコードで使用できることを忘れていました(オブジェクトをマシンコードまたはその各部分に変換することにより)。 Cosmosに組み込まれているライブラリを呼び出すこともできます。 始めるために、Kernelクラスを理解しましょう。
カーネル using System; using System.Collections.Generic; using System.Text; using Sys = Cosmos.System; namespace CSharpKernel1 { public class Kernel : Sys.Kernel { protected override void BeforeRun() { Console.ForegroundColor = ConsoleColor.Green;
これは、いわば、OSのフレームワークです。 ここで、CommandPromptクラスをプロジェクトに追加します。このクラスは、コマンドの入力と実行を担当します。
CommandPrompt using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ScorpionOS { class CommandPrompt { public static void Read() {
このクラスが正しく機能するには、Cosmos.Sys.Plugs.dllライブラリへのリンクを追加する必要があります。 ここにあります:C:\ cosmosUserKit_install_folder \\ Build \ VSIP。
少しだけ残っています:CommandPrompt.Read()メソッドの呼び出しをKernelクラスのRun()メソッドに追加します:
実行() protected override void Run() { CommandPrompt.Read();
以上です。 最も単純なOSコマンドを実装しましたが、今ではプロジェクトをコンパイルして仮想マシンで実行するだけです。
これを行うには、[ビルド]-> [ソリューションのビルド]をクリックし、プロジェクトを保存してVisual Studio 2010 Shellを開きます。 クリックしてプロジェクトを作成すると、次のウィンドウが表示されます。

Cosmosプロジェクトを作成し、参考文献に.dllへのリンクを追加します。これは、プロジェクトの構築の結果として判明したファイルです。 このdllは、最初のプロジェクト\ bin \ debugのフォルダーにあります。 重要! VMWarePlayerまたはWorkstationがインストールされていない場合は、以下に示すように、プロジェクトプロパティを開き、ISOイメージを選択します。

その後、クリックしてソリューションをビルドします。構築には比較的長い時間がかかるため、待機します。構築が成功したら、プロジェクトの保存を忘れずにVisual Studio Shellを閉じます。 その結果、2番目のプロジェクト\ bin \ debugのフォルダーに.isoファイルが見つかります。 ディスクまたはUSBフラッシュドライブに書き込み、OSを実際のハードウェアにロードできます。 仮想マシンでOSを実行して結果を楽しむことができます:)
まとめ
以上です! この記事を読んで、何か新しいことを学んでください。 不明な点がある場合は、コメントにあるすべての質問に答えようとします。