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

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

新規登録して質問してみよう
ただいま回答率
85.48%
アセンブリ言語

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

C

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

OS

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

Q&A

解決済

4回答

1304閲覧

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

osamurai3

総合スコア12

アセンブリ言語

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

C

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

OS

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

0グッド

1クリップ

投稿2017/04/09 07:36

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KSwordOfHaste

2017/04/09 07:41

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

2017/04/10 04:44

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

回答4

0

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

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

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

投稿2017/04/09 08:05

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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/09 14:53

編集2017/04/09 15:13
acevif

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2017/04/09 15:11

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

2017/04/09 23:15 編集

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

0

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

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

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

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

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


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

投稿2017/04/09 10:21

編集2017/04/09 23:30
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2017/04/09 14:15

strike1217

総合スコア651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問