macで自分でosを作りたいのですが環境設定をどうすれば良いのかよくわからないので、教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/10 04:44
回答4件
0
はっきり言いますが、本気でOSを作りたいのであれば、マシンの環境設定などを自分でできることが絶対の前提となります。
今でこそ仮想マシンが普及してきたので、その中で行えば実機を壊す心配もないですが、マシンについての一定水準以上の理解が必要になります。
少なくとも、OS作りは、「誰かに教えてもらってできる」ようなプログラミングではありません。「仕事として行う」か、「よほどの情熱を注げる」ような前提がないと成立しないでしょう。
投稿2017/04/09 08:05
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
macに限らない回答になります。
まずはお使いのパソコンで動作するLinuxディストリビューションを入れると良いと思います。
Linuxには開発環境が入っていますし、Linuxそのものが開発するOSのベースになります。
- Linux(Linuxディストリビューション)を入れる。
- Linuxのなかで、Linuxカーネルをソースからビルドし、そのカーネルで起動できるようになる。
- Linuxのなかで、Linuxカーネルのソースを編集してシステムコールを追加してビルドし、そのカーネルで起動できるようになる。そのシステムコールを呼び出してちゃんと動くことを確認する。
- 多数のシステムコールを追加・変更して独自の特徴をもったカーネルをつくる。
- ゼロから自分のカーネルや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総合スコア59
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/09 15:11
2017/04/09 23:15 編集
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総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
maisumakunさんも言っていますが、結構レベルが高いと思います。
どのようなosを作りたいのかわかりませんが、
Linux系統のものを使うのなら、macのマシンでデゥアルブート環境を構築した方がいいと思いますし、OS自作入門(有名な本)みたいのなら、仮想マシンが良いのではないでしょうか・・・?
macでやったことはないのですが・・・
ブートストラップローダ領域でHello, World!
参考にどうぞ!
これを外部メディアから起動できるのであれば、そこからゴリゴリ書いていけば、できるかもしれません。
macのbios的なものがどうなってるのかを調べる必要があると思います。
頑張って下さい!
投稿2017/04/09 14:15
総合スコア651
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。