607

私が常にやりたかったことの 1 つは、独自のオペレーティング システムを開発することです (必ずしも Linux や Windows のように凝っているわけではありませんが、既に行った単純なブート ローダーよりは優れています)。

単純な「Hello World」OS を作成するためのリソースやガイドを見つけるのに苦労しています。

Linux や BSD を検討することを勧める人が多いことはわかっています。しかし、そのようなシステムのコード ベースは (おそらく) 非常に大きいため、どこから始めればよいかわかりません。

助言がありますか?

更新: Google からこの投稿にたどり着いた人が簡単に利用できるように、OS 開発リソースをいくつか紹介します。

その他のリソース:

「 MikeOSは、単純な OS がどのように機能するかを示すための学習ツールです。複雑なドライバーを必要としないように、BIOS アクセスに 16 ビット リアル モードを使用します」という素晴らしいリソースを見つけました。

2008 年 11 月 14 日更新

Freebyte's Guide to...Free and non-free Operating Systemsで、OSKit や ExOS ライブラリなどのキットにリンクしているリソースを見つけました。これらは、OS 開発を始めるのに非常に便利なようです。

2009 年 2 月 23 日更新

Ric Tokyoは、この質問でnanoosを推薦しました。Nanoos は C++ で書かれた OS です。

2009 年 3 月 9 日更新

Dinah は、意欲的な OS 開発者のスタック オーバーフローに関する有益な議論をいくつか提供してくれました。カスタム オペレーティング システムを作成する際の障害については、OS の開発中に遭遇する可能性のある落とし穴について説明しており、OS 開発はより一般的な議論です。

2009 年 7 月 9 日更新

LB は、OS 開発を学ぶ学生向けに設計された教育用 OS であるPintos Projectへのリンクを提供しました。

2009 年 7 月 27 日に更新 (まだ勢いがあります!)

私は、23 の講義を特徴とするバークレーのオンライン OS コースに出くわしました。

TomOSは、小さなメモリ マネージャーとマウス サポートを含むMikeOSのフォークです。MikeOS として、教育プロジェクトとして設計されています。NASM アセンブラで書かれています。

2009 年 8 月 4 日更新

スライドやその他の資料は、上記のバークレーのオンライン レクチャーに付随するものであることがわかりました。

2009 年 8 月 23 日更新

stackoverflow でosdev とタグ付けされたすべての質問

OS/161は、シミュレートされたハードウェア上で動作する c 言語で書かれたアカデミック OS です。この OS は Nachos に似ています。ありがとうノベロクラット!

tangurena は、組み込みシステム向けに設計された OS であるhttp://en.wikipedia.org/wiki/MicroC/OS-IIを推奨しています。コンパニオンブックもあります。

Robert Love によるLinux Kernel Developmentは、Anders によって提案されています。これは、「広く評価されている内部関係者による Linux カーネルの考察」です。

2009 年 9 月 18 日更新

完全に c# で記述された OS であるCosmosについて教えてくれた Tim S. Van Haren に感謝します。

tgiphil は、マネージド オペレーティング システム アライアンス (MOSA) フレームワーク、「共通中間言語に基づくマネージド オペレーティング システムの開発を促進するためのツール、仕様、およびソース コードのセット」について語っています。

2009 年 9 月 24 日更新

Steve は、Visual Studio を使用して Windows で開発するためのリソースをいくつか見つけました。BrokenThorn のガイドのセットアップと VS 2005またはOSDev の VS セクションを参照してください。

2012 年 9 月 5 日更新

kerneltrap.org は利用できなくなりました。Linux カーネル v0.01 は、kernel.orgから入手できます。

2012 年 12 月 21 日更新学期のプロジェクトとして設計され た基本的な OS 開発チュートリアル。基本的なコンポーネントを使用して OS を構築する方法について説明します。初心者にとって非常に良いスタートです。関連論文. ありがとうスルジャン!

2013 年 11 月 15 日更新

シンプルなオペレーティング システムをゼロから作成する. ありがとうジェームズ・ムーア!

2013 年 12 月 8 日更新

コンピューターのオペレーティング システム の作り方 ありがとう ddtoni!

2014 年 3 月 18 日更新

ToAruOS GUIも含めほぼゼロから構築したOS

2016 年 9 月 12 日更新

独自のおもちゃのオペレーティング システムを作成する

2016 年 12 月 10 日更新

単純なオペレーティング システムの作成 — スクラッチから(@Tyler C に感謝)

4

28 に答える 28

97

X86 プラットフォーム用の OS の作成に関するこの簡単な概要の後に、多くのリンクがあります。

最も有望と思われるリンク (www.nondot.org/sabre/os/articles) は利用できなくなったため、Archive.org のバージョンにアクセスして読む必要があります。

一日の終わりに、ブートローダーはカーネルのマシン コードを取得し、それをメモリに配置してジャンプします。必要なマシンコードをカーネルに入れることができますが、ほとんどの C プログラムは OS を想定しているため、コンパイラにそのすべてがないことを伝えるか、ブートローダーがその一部を作成する必要があります。

次に、カーネルがすべての面倒な作業を行います。これが、必要なサンプル カーネルだと思います。しかし、「Hello world」と言うカーネルから、コマンド インタープリタをロードし、ディスク サービスを提供し、プログラムをロードして管理するカーネルまでには、長い道のりがあります。

古い文献にアクセスするには、ACM を購読することを検討してください。80 年代後半から 90 年代前半にかけて、初期のコンピューティング マガジンには、代替 OS の作成方法に関する記事がたくさんあります。この時代の絶版本もあるだろう。それらの雑誌のインデックス (そのサイトで入手できます - 雑誌名の近くにある [インデックス] をクリックします) を調べて、コピーを持っている人に尋ねることで、同じ情報を無料で入手できる場合があります。

最後に、usenet が死んでいることは知っていますが (インターネット破滅の予言者はそう言っています)、その時代のゴツゴツした古い専門家の多くがまだそこに住んでいることがわかります。Google グループを検索する必要があります (dejanews の古いリポジトリがあります)。10 年または 1.5 年前にあなたが今尋ねているのと同じ質問をしている多くの人が見つかると思います。Linus Torvalds はもともと Linux を開発していたので、助けを求める多くの質問に出くわすかもしれません。検索しても何も出てこない場合は、適切なニュースグループで質問してください (おそらく comp.arch で始まりますが、名前に OS が含まれているものを検索してください)。

于 2008-09-05T12:38:38.060 に答える
36

Minixははるかに小さく、学習目的で設計されており、付属の本も優れています。

更新: Minix 3 は少し別の目標だと思いますが、Minix 2 (そしてもちろん最初のバージョン) は教育目的でした。

于 2008-09-04T04:30:31.923 に答える
34

リアルタイム マルチタスク オペレーティング システムをゼロから作成した人として...

キーボード デバウンス ルーチン、キーボード ドライバー、ディスク ドライバー、ビデオ ドライバー、ファイル システム、そして最後にブートローダー - そして何もすることなく初めて起動するだけです!

... ハードウェアに慣れることの重要性はいくら強調してもしすぎることはありません。これは、他の誰かがすでにあなたのためにレイアウトした原始的なシステムを単に拾うのではなく、本当にすべて自分でやりたい場合に特に当てはまります. たとえば、Intel に連絡して、お使いのタイプの CPU に対応する CPU カードを入手してください! これにより、「ピン配置」、割り込み、オペコードなどのレイアウトが作成されます。

ハードウェアがすべてを可能にすることを忘れないでください。ハードウェアを研究します。後悔することはありません。

.

于 2008-10-20T05:09:44.110 に答える
19

マイクロコントローラ OS を作成します。x86 ベースのマイクロコントローラーをお勧めします。最新の OS は巨大です。まずは基本を学びましょう。

于 2008-10-20T05:47:42.723 に答える
17

独自の OS の開発に関するすべての情報を入手できる 1 つの場所があればいいのにと思います。それに最も近いのはOS Dev WikiForumsです。セットアップ、開発、およびデバイスのハードウェア情報に関する多くの優れた情報を提供します。

また、BoneFideにはいくつかの優れたチュートリアルがあります。私はBranによる入門チュートリアルを使用しましたが、現在、彼のRoll your own toy UNIX-clone OSというタイトルに基づいた、より最近のチュートリアルを見ています。

次にチェックアウトします:「オペレーティングシステム:設計と実装」

また、Windows で開発したい場合は、jolson のブログ投稿をチェックしてください

編集: Visual Studio を使用した Windows での開発については、BrokenThorn のガイドまたはOSDev の wikiを参照してください。

于 2008-09-23T17:29:38.167 に答える
12

また、C#で記述しているオペレーティングシステムであるSharpOSも確認することをお勧めします。

于 2008-09-04T06:20:56.200 に答える
10

書籍には、オペレーティング システムの基礎に関する優れたリソースがあります。新しい OS をゼロから作成する必要はあまりないため、インターネット上で愛好家タイプの情報を大量に見つけることはできません。

Tanenbaum 著の標準テキスト「Modern Operating Systems」をお勧めします。また、Calingaert の「Operating System Elements」も役に立つかもしれません。これは、設計者の観点から OS とは何かを大まかに説明した本の概要です。

リアルタイム システムに少しでも興味がある場合 (そして、少なくともリアルタイム OS の違いと理由を理解する必要がある場合) には、Labrosse の「MicroC/OS-II」もお勧めします。

編集:

「より技術的」とはどういう意味ですか? これらの書籍は疑似コードの実装の詳細を示していますが、OS の例や特定のマシン/言語のコード スニペットをお探しですか?

-アダム

于 2008-09-04T04:33:04.320 に答える
8

RobertLoveのLinuxカーネル開発は非常に興味深いものでした。Linuxカーネルのさまざまなサブシステムが非常に現実的な方法でどのように機能するかについて説明します。ソースが利用可能であるため、Linuxはハッキングするものの第一候補です。

于 2009-08-22T14:31:59.860 に答える
8

別の質問から来ただけです。Pintosについて言及したいと思います... Nachos に関する OS コースを思い出しました。Pintos は、x86 で実行できるものと同じ種類のようです。

于 2009-07-08T12:52:35.673 に答える
7

このディスカッションに組み込む価値のある他のStackOverflowページを次に示します。

カスタムオペレーティングシステムを作成する際の障害
x86アーキテクチャ用のオペレーティングシステムの開発

于 2009-03-09T18:07:13.140 に答える
7

学部でのオペレーティング システムのコースでは、OS/161 用の多数のサブシステムを構築しました。OS/161は、基本の一部を提供する一方で、高レベルのサービスを実装する際にさまざまな設計空間の決定を探求する自由を残した、単純な BSD に似たカーネルです。

于 2009-08-22T13:44:11.133 に答える
7

Minix でハッキングを開始します。Linux よりもはるかに小さく (明らかに)、教育目的を念頭に置いて設計されています (少なくとも一部は)。Minix 3 ではありませんが、それはまったく別の話です。

于 2009-09-25T00:26:32.513 に答える
5

すでに答えていますが、私が大学でオペレーティング システムを学んだとき、初期の Linux カーネルから始めて、単純化された最新の機能 (基本的なファイル システム、仮想メモリ、マルチタスク、ミューテックス) を追加しました。楽しい。プロテクトモードとページテーブルをいじるために、本当にクレイジーな低レベルアセンブリのみのものをスキップすることができますが、それでもいくつかの根性を学びます。

http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2

于 2008-09-05T13:35:48.063 に答える
4

linuxfromscratchを確認することをお勧めします。

Linux From Scratch(LFS)は、完全にソースコードから独自のカスタムLinuxシステムを構築するためのステップバイステップの手順を提供するプロジェクトです。

于 2008-09-04T06:25:45.190 に答える
4

学期のプロジェクトとして設計された、シンプルで基本的な OS 開発チュートリアル。基本的なコンポーネントを使用して OS を構築する方法について説明します。初心者にとって非常に良いスタートです。関連論文はこちら

于 2012-12-21T03:53:27.787 に答える
3

調査するのに適度に単純なOSの1つは、µC/OSです。この本には、出典が記載されたフロッピーがあります。

http://en.wikipedia.org/wiki/MicroC/OS-II

于 2009-08-22T14:20:15.947 に答える
3

前述のように、OSDev Wikiは (断然) OS 開発の最良のソースです。ドイツ語を話す人には、lowlevel.eu Wiki も最適です。比較的知られていないIncitatus OS、ユーザー空間アプリの小さなセットを備えた単純なカーネル。OS 開発の複雑なトピックに入るのに最適です。

于 2014-02-06T16:22:32.390 に答える
3

www.mosa-project.orgでマネージド オペレーティング システム アライアンス (MOSA) プロジェクトを確認してください。彼らは AOT/JIT コンパイラと完全に管理されたオペレーティング システムを C# で設計しています。一部の開発者は、非アクティブな SharpOS プロジェクトの出身です。

于 2009-09-18T04:18:59.317 に答える
3

私は、「CIL 準拠の言語で完全に実装されたオペレーティング システム プロジェクト」であるCosmosをいじりました。それは C# で書かれているので、まさに私の好みでした。私のようにオペレーティング システムを構築したことがない人にとって、「Hello World」オペレーティング システムをすぐに実行できるというのは、実際には非常にクールなことでした。

于 2009-09-18T04:26:47.113 に答える
2

Movitzは、Common Lisp で書かれた Lisp 環境であり、「金属上」で実行されます。残念ながら、Movitz のメイン ページの一部のリンクはアクセスを拒否していますが、 trac ページからソース コードをダウンロードしてコンパイルする方法についての説明を見つけることができます。また、準備完了の画像は、このページのアーカイブにあります。

これは、現在利用可能なハードウェアでLisp マシンの概念を復活させるので、非常に興味深いものです。商業的には失敗しましたが、これはアイデアが悪かったことを私に証明するものではありません.

Unix ヘイターズ ハンドブックは、Unix とその派生物の概念を半ば真剣に非難する楽しい本です。多くのセクションでは、Lisp マシンの概念がいかに優れているかについて議論しています。

于 2011-07-28T09:39:04.490 に答える
2

x86 JS シミュレーターARM シミュレーターは、さまざまなハードウェアの動作を理解し、お気に入りのブラウザーを終了せずにテストを行うのにも非常に役立ちます。

于 2014-06-27T15:03:43.813 に答える
1

基本的なオペレーティング システムを作成すると、GUI の作成やライブラリの移植に関するリソースがあまりないため、継続するのは実際には困難です。しかし、ToAruOSを見てみると大いに役立つと思います!

その OS の表面下にあるコードは非常に単純です。しかし同時に、彼は cairo、python、(まだではありませんがすぐに) sdl などを移植し、共有メモリを作成し、独自のウィジェット ツールキットも作成しました。すべてCで書かれています。

別の興味深い OS はpedigreeOSです。これは、JamesM ( jamesM のカーネル チュートリアルの背後にいる人物) によって作成されました。ToaruOSよりも多くの機能を備えていますが、サイズが大きく、より複雑です。

とにかく、これらの 2 つの OS は、特に ToAruOS で大いに役立ちます。

于 2014-03-15T13:39:12.547 に答える
1

基本的なオペレーティング システムの作業を開始したとき、基本的なオペレーティング システムの飛び石のような基本的なガイドが必要でした。頭が緩まないので助かりました。

絶対に何もないところから作りたい場合(純粋なアセンブリコード)

于 2014-07-16T18:18:49.953 に答える
1

プログラマーにとって興味深い質問です。Windows や Mac のような OS をビルドするには長い長い時間がかかりますが、単純なものをビルドしたい場合は、最善を尽くすことができます。

  1. アセンブリ言語、C および C++ に集中する必要があります。これらの言語に精通している必要があります。
  2. 最初にOSの仕組みに関する良い本を読んで[Google it]、次にWiki OSからすべての情報を読んでください。
  3. YouTubeで「アセンブリ言語で独自のOSを作成する方法」を検索して、ビデオを見てください。ビデオ
  4. Linux OS のソース コードをダウンロードして自分でコンパイルし、自分でコードを変更してみてください
  5. 経験豊富な OS エディターになりました。MinixQNXをダウンロードして開発を開始し、ここからドキュメントを入手してください。Minix DocQNX Doc

これで、OS の作成で修士号を取得しました (完全にはあと少しではありません)。この知識を友人に配布し、彼らの助けを借りて、Mac、Linux、または Windows と同じくらい強力な OS を作成してみてください。

于 2013-02-05T12:24:34.100 に答える