質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • C

    3664questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • OS

    207questions

    OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

  • アセンブリ言語

    106questions

    アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

macでOSを作る際の環境設定

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 516

osamurai3

score 4

macで自分でosを作りたいのですが環境設定をどうすれば良いのかよくわからないので、教えてください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • KSwordOfHaste

    2017/04/09 16:41

    OSとは一般にMachintoshに既に搭載されているMac OS Xのようなものを指します。質問者さんがいっておられる「OS」はその言葉どおりの意味ではないと思います。もう少し何を作りたいのか詳しく正確に述べることはできますか?

    キャンセル

  • osamurai3

    2017/04/10 13:44

    linuxのようなOSを作りたいです

    キャンセル

回答 4

+7

はっきり言いますが、本気でOSを作りたいのであれば、マシンの環境設定などを自分でできることが絶対の前提となります。

今でこそ仮想マシンが普及してきたので、その中で行えば実機を壊す心配もないですが、マシンについての一定水準以上の理解が必要になります。

少なくとも、OS作りは、「誰かに教えてもらってできる」ようなプログラミングではありません。「仕事として行う」か、「よほどの情熱を注げる」ような前提がないと成立しないでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+3

macに限らない回答になります。
まずはお使いのパソコンで動作するLinuxディストリビューションを入れると良いと思います。
Linuxには開発環境が入っていますし、Linuxそのものが開発するOSのベースになります。

  1. Linux(Linuxディストリビューション)を入れる。
  2. Linuxのなかで、Linuxカーネルをソースからビルドし、そのカーネルで起動できるようになる。
  3. Linuxのなかで、Linuxカーネルのソースを編集してシステムコールを追加してビルドし、そのカーネルで起動できるようになる。そのシステムコールを呼び出してちゃんと動くことを確認する。
  4. 多数のシステムコールを追加・変更して独自の特徴をもったカーネルをつくる。
  5. ゼロから自分のカーネルやOSを作る。
  • 私の大学では 3のシステムコールの追加がカリキュラムになっていました。 OSに興味がある人は、OS作成の入門として3を最初の目標にすると良いと思います。
  • 1 と 2 は学習に時間はかかるかもしれませんが、やる気さえ続けば確実に出来るようになるので、調べながら徐々にやってみてください。
  • なぜLinuxかというと、オープンソースだからです。 オープンソースであれば、Linuxである必然性はありませんが、情報の多さなどの点でLinuxはおすすめです。
  • システムコールの追加については、たとえばこんな記事があります http://softwaretechnique.jp/Linux/SystemCall/sc_03.html
  • こちらの筑波大学の授業資料も参考になりそうです。 http://www.coins.tsukuba.ac.jp/~yas/coins/os2-2010/2010-12-07/
  • 他にも、「linux kernel システムコール 追加」などで検索してみてください。 インターネットには多くの記事がありますので、インターネットや書籍で調べながらすすめ、つまったらメーリングリストやteratailやstack overflowで聞いてみるといいでしょう。
  • 既存のOSよりも良いOSを作ろうとすれば、それは非常に難しく困難な、決して一人では達成できないプロジェクトになるでしょう。既存のカーネルをいじっていて、もし本気でOSを作る気になったら、OSについて学ぶことができる大学の研究室を目指すことになると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/10 00:11

    す、すばらしい!
    感激でごわす><

    キャンセル

  • 2017/04/10 00:16 編集

    ありがとうございます。

    これは私がかじった授業の受け売りのようなものです。
    さきほど調べた感じでは、筑波大学の授業でも同じような感じでシステムコールの追加からはじめるようでした。
    もしかしたら、システムコールの追加からはじめるのが、OS作成学習の標準的なカリキュラムなのかもしれません。

    キャンセル

+2

あえてちょっと違うレベルのことをコメントします。もし質問者さんがOSの仕組みについての解説などを見て「これはなかなか面白い」と感じ「ちょっと作ってみたくなった」と仮定すると、違うアプローチが考えられます。

それは「CPU, I/Oデバイス, メモリー」など本物のハードウェアを扱う」ものではなく「それらハードウェアを単純な仕様にしたOS的なもののエミュレーションプログラム」というものです。

いわゆるvirtual machineの簡易版ですね。そのOSは実用に耐えることを目的とするものではなくてOSの動きをなぞってそれっぽく動くこと自体を楽しむという意味合いのものです。

そうしたものならCのみで作れることでしょう。I/Oは多分CUIディスプレーに1文字印字するとかキーボードから一文字入力するといった単純化した機械語命令を直接作ることになるでしょう。またコンパイラーなどは望むべくもないのでそのOSで実験的に動かすためのアプリケーションは仮想的な機械語で直接書くことになるでしょう。

そのレベルの物を作るにしてもおそらくはかるく何百行、(ちょっと欲張ると何千行)オーダーのコードになると思います。情報処理試験で用いられるCASLよりさらに単純化したものだとこのくらいではないでしょうか。ただハードの正確な仕様はしらなくても自分でいくらでも単純化したものとして設計できるのでOSに大きな興味があるなら動くところまではいける可能性があると思います。


そういうことではなく、いわゆる本物のOSを作るとなるとmaisumakunさんがおっしゃるとおりと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

maisumakunさんも言っていますが、結構レベルが高いと思います。
どのようなosを作りたいのかわかりませんが、
Linux系統のものを使うのなら、macのマシンでデゥアルブート環境を構築した方がいいと思いますし、OS自作入門(有名な本)みたいのなら、仮想マシンが良いのではないでしょうか・・・?

macでやったことはないのですが・・・
ブートストラップローダ領域でHello, World!
参考にどうぞ!
これを外部メディアから起動できるのであれば、そこからゴリゴリ書いていけば、できるかもしれません。

macのbios的なものがどうなってるのかを調べる必要があると思います。
頑張って下さい!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C

    3664questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • OS

    207questions

    OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

  • アセンブリ言語

    106questions

    アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。