X



64bitOSを作ろう さっきゅん編
0002さっきゅん
垢版 |
2008/05/16(金) 12:03:00
数年前、OS板のあるスレッドで「64bitOSの踏み台になる」という目標の元、「おれんじぺこ」は誕生しました。
その後、おれんじぺこプロジェクトは一定の成果をあげ、当初の目標であった「64bitのDOS」と呼べそうなレベルまで完成しました。
しかし、その後の方針を巡ってプロジェクト内部で対立があり、迷走を続けたまま消滅してしまいました。

それから数年、自作OS界隈で新しい64bitOSが誕生したという噂を聞きません。
当時より64bit環境も整い始め、敷居は下がってるはずなのに、です。

★決まっていること★

★カーネル★
おれんじぺこの対立の焦点になったのは、元々オープンソースを想定していなかったカーネルをオープンソース化するための手段を巡ってでした。
なぜ、カーネルをそのままオープンへ移行できなかったのか?
実は当時のカーネルは「64bit時代のDOS」というより「64bitで実装されたDOS」と言った方がしっくりくるようなコードでした。
当初、カーネルのすべてのコードはアセンブリ言語で記述されていましたが、徐々に多くのコードが高級言語で置き換えられました。
しかし、DOSサブシステムには無意味にDOSを意識した構造が多くあり、高級言語への置き換えは大変困難でした。
そういう問題がおきないよう、最初からオープンで高級言語を想定して進めようと思います。

★ブートローダー★
「OSを作りたいならブートローダーを作るべきではない」という格言があるので、独自のローダーは当面考えないことにします。
汎用ローダーとして有名なものにMultiboot仕様とgrubがあり、32bitのOSならばそれらに対応させておけば楽でいいわけですが、どうやら64bitを考慮した汎用ローダーというのは存在しないようです。
64bitモードへ移行する32bitのコードが必要になり、色々と面倒です。
ということで、64bitのカーネルを直接起動できる bijou を当面使用することにします。
ただし、bijou は将来完全に置き換える事を前提にいくつかの完全でない機能を残したまま開発が凍結されているので、いつかはブートローダーも置き換えたいです。
0003Be名無しさん
垢版 |
2008/05/16(金) 16:30:21
例によっておれんじぺことmegosの中の人
0005Be名無しさん
垢版 |
2008/05/17(土) 09:13:54
えっと
さっそく質問

EFIのブートについてはサーベイした?
0007さっきゅん
垢版 |
2008/05/18(日) 07:33:03
>>5
以前調べたときはx64の事を考慮していなかったようなのでパス
最近はちゃんとx64に対応してるんですかね?EFI環境がないのでわからないです><

>>6
あの頃は忙しくて維持が困難だったので;;
あと日記形式で続けるのは若干無理があったかなと・・・
0008さっきゅん
垢版 |
2008/05/18(日) 09:11:22
★カーネルファイルの構造と初期ステート★
カーネルと称していますが、よく読めばわかるようにカーネル本体ではありません。
当面はこのファイルを生成することを目標にします。

★メインヘッダー
bijouで64bitモードを認識させるためにCOM64を採用します。

★サブヘッダー
Multibootへの対応とビデオモードの指定のためにMultibootヘッダーをつけます。

★想定するビデオモード
VGAモード3(いわゆる一般的なテキストモード)を想定します。

★構造
カーネルを収めたファイルは最終的に次の4つの部分からなる構造になります。
・COM64ヘッダーと64bitモードカーネルローダー(メインローダー)
・Multibootヘッダーと32bitモードから64bitモードへ遷移するコード(Multiboot用)
・リアルモードから32bitモードへ遷移するコード(自力ブート用)
・カーネル本体と初期化に必要なデータを格納するアーカイブ
0011さっきゅん
垢版 |
2008/05/19(月) 18:45:47
>>10
ありがとー!


今回作るOSと直接関係ないけど色々整理してたら例の奴を発見したので置いときますね
ttp://meg-os.jp/bin/os/os071104_hello.zip
ttp://meg-os.jp/bin/os/os071105_gdt.zip
ttp://meg-os.jp/bin/os/os071115_gpf.zip
0012Be名無しさん
垢版 |
2008/05/19(月) 19:36:41
>>11
ブログの連載のファイルですね。
幸いログが全部手元に残っています。
とても良い記事なので死蔵させるのはもったいないです。
0013さっきゅん
垢版 |
2008/05/19(月) 22:33:42
>>12
ああいう記事を作るならもっと構成を考えないとダメだと思いました。(´・ω・`)
日記で連載するのは難しいと思いました。
ファイルは準備してたけどうpする機会ないまま終わっちゃったんですよね(´;ω;`)
0014Be名無しさん
垢版 |
2008/05/20(火) 01:21:43
何だろう
最初は鳥取砂丘とかただの厨房だと思ってたけど、ぐり氏が消え、Mona関係も変な方向に行って、
タダだからって理由だけでLinuxに異常に固執する厨房しか見当たらない昨今、さっきゅんが愛すべき存在に見えて仕方がない。
0015Be名無しさん
垢版 |
2008/05/20(火) 12:05:17
さっきゅんと一緒にOSを作ってみたいな。
でもごめん、まだ俺の準備が出来てない。
あと2年くらいは勉強しないと・・・。
0018さっきゅん
垢版 |
2008/05/21(水) 12:41:03
>>17
カーネル!デバドラ!シェル!そう!ほら!やればできるじゃない!


とりあえずOSのコンセプトを決めようか。

名前を安価にするほどスレの勢いがないから何個か案出して投票がいいのかな?

完全に64bitのOSはデバイスドライバが揃っていれば理想的できれいだけど、現実的には一部の処理をBIOSに依存せざるをえない。
ロングモードには仮想86モードがないので、BIOSを呼び出すためには
・リアルモードに戻る
・32bitのサブカーネルの上で仮想86モードを呼び出す
・エミュレータを乗せる
という解決方法が考えられる。どれも一長一短で色々問題がある。
それとも思い切って64bit以外完全切り捨てのほうがいいのかな?(´・ω・`)
0019Be名無しさん
垢版 |
2008/05/21(水) 19:11:55
とりあえず「64bitOSの踏み台になる」っていう目的を重視するとしたら、
BIOS使わない方向でとりあえずやってみるのがいいかも。
BIOSを使おうとするとそこからソースが汚くなりそうだし。
BIOS使わなくてもFDとATAとATAPIくらいはいけるでしょ。
BIOS使ってもnetwork使えるわけじゃないしさ。
0020Be名無しさん
垢版 |
2008/05/21(水) 19:22:05
すごいなぁ、おもしろそう
どういうところから勉強すれば話が理解できるかすらわかんないけど
応援してます
0021Be名無しさん
垢版 |
2008/05/21(水) 23:16:26
じゃあ俺コンパイラ作るわ










・・・・・え?gccがあるって?
0022Be名無しさん
垢版 |
2008/05/22(木) 03:24:37
さっきゅんと一緒に物語を作ってみたいな。
でもごめん、まだ心の準備が出来てない。
あと2ヶ月くらいはアナル開発しないと・・・。
0023Be名無しさん
垢版 |
2008/05/22(木) 22:38:28
オックスフォードをもじってシックスフォード
0026Be名無しさん
垢版 |
2008/05/24(土) 17:32:03
たった8バイトでOSなんて書けるのか?>>1って天才!
0027さっきゅん
垢版 |
2008/05/26(月) 11:16:33
最近ちょっと暇が無くてレスできませんでしたpq

>>19
やっぱりそうすか(´・ω・`)

>>20
がんばれ。

>>21
gcc超えてくれ

>>22
がんばれ。

>>23
略称は64d?

>>24
がんばる。

>>25
  _, ._
( ゚ Д゚)

>>26
"OS"は2バイトですよっと。
0029Be名無しさん
垢版 |
2008/05/28(水) 04:56:48
64bit用汎用ローダーを作ることよりもカーネル作りに没頭する理由はなんで?
0030Be名無しさん
垢版 |
2008/05/28(水) 17:04:59
64bitOS作るためのいい本ありませんか?
0031Be名無しさん
垢版 |
2008/05/28(水) 20:14:46
bit数が違うと本が違ってくるのかw
0034Be名無しさん
垢版 |
2008/05/31(土) 05:43:16
>>31
x86-64の「はじめて読む486」みたいな本はあってもいいかなと思ったり。

売れねえと思うが。
0035さっきゅん
垢版 |
2008/05/31(土) 06:17:02
スレ立てといてあんまり進んでなくてごめん><
現在予想外のトラブル対処中;;
そろそろ何かブツを出したいよー

>>28
定期ありがとー

>>29
そこにCPUがあるから

>>30
ないのでぼくがOSを作るの><

>>31
ロングモードの基礎概念はプロテクトモードとだいたい同じだけど、細かいところが違うので参考程度にしかならんです。
初めて読む486の内容が古すぎるというのもあるけど。
ちなみに、30日本はページングを全く使わずセグメンテーションだけでメモリ管理してるけど、ロングモードは逆にページングしか使えないので30日本のメモリ管理もあまり参考にならないのだ。

>>32
名前の案かな?

>>33
ありがとー

>>34
そういう本ないっすねー
0036Be名無しさん
垢版 |
2008/06/02(月) 07:48:07
Twenty fourにあやかって Sixty fourでよくね?名前。
0037Be名無しさん
垢版 |
2008/06/09(月) 01:25:47
不定期応援っと
0042さっきゅん
垢版 |
2008/09/17(水) 10:37:26
こんにちは。
今月末にmeg-os.jpのドメインが期限切れになります。
去年に引き続き自力で維持する余裕がありません。
去年は有志によるカンパで何とか維持できましたがその後成果を上げる事ができていないため、
不本意ではありますがドメイン破棄の方向で検討しています。(汎用JP高いです。。。)
移転後のURLについては現在検討中です。
0043Be名無しさん
垢版 |
2008/09/17(水) 16:57:37
VDならドメイン代くらい何とかなるだろ
送金機能だってあるんだしw
0045Be名無しさん
垢版 |
2008/09/17(水) 21:13:36
>>42
お久しぶりです。去年寒波に参加した人です。
今年もやりますよ〜。去年のメアドはまだ生きてます。

私の方はサクっとコンパイラを作ってBijouを移植しようと思っていたのですが、
工程の見積もりが甘くてサクっとどころか1年以上掛かってしまいました。
とりあえず動くようにはなったのですが、テスト不足ですし、
最適化が皆無なため吐き出すコードが異常に冗長です。
ですので残念ながらまだBijouを移植できる段階には達していません。

32bitコンパイラに振り回されるとは情けない限りですが、
64bitに逝く前にARMに寄り道したくなった今日この頃です。
ARMの命令が32bit固定長なのを昨日知ったばかりの初心者ですが・・・。
0046Be名無しさん
垢版 |
2008/09/17(水) 22:25:49
>>44
暗に送金用の垢あれば送金してにゃんよってことじゃね?
0047さっきゅん
垢版 |
2008/09/18(木) 01:35:12
意外に見てる人多いんすね
>>42にあるとおりこの一年成果上げれてないので寒波募集するのに抵抗が・・・
0048さっきゅん
垢版 |
2008/10/07(火) 12:51:52
遅くなりましたが、無事にドメインの期限を更新できたようです。
カンパありがとうございました。
期待に沿えるようにがんばりたいです。。。

毎年こういう事になるのは色々と面倒なのでもっと安いドメイン(gTLD?)に乗り換えて
広告収入等で運用できないか検討中です。
0049さっきゅん
垢版 |
2008/10/25(土) 06:00:42
Multiboot対応のOSってなんかないすか。。。
0050Be名無しさん
垢版 |
2008/11/15(土) 01:01:59
GRUBのMultibootならNetBSDが対応していたような気がしますです。
0051さっきゅん
垢版 |
2008/11/15(土) 14:21:42
>>50さん
調べてみましたがインストールイメージはmultiboot対応してないようですますです。
インストールしてカーネル再構築までして検証するのはさすがに。。。(´・ω・`)ボショーン
0052さっきゅん
垢版 |
2008/11/24(月) 20:45:31
現在、おれんじぺこを改修中です。
これによっておれんじぺこを復活させるというわけではありませんが、
このまま埋もれて失われてしまうのはもったいないので
再公開をもって正式に開発終了ということになりました。
いくつか気になる点を修正しているので公開までもう少しお待ちください。
0053さっきゅん
垢版 |
2008/11/28(金) 02:36:40
tp://meg-os.org/bin/op05_081127.zip
tp://meg-os.org/wiki/?Doc/OP_leaf

とりあえず気になった点をいくつか修正しました。
数年ぶりのリリースでベースになっているソースも最新版なのかどうかよくわからないので
後退してる機能があったりするかもしれません。。。
おれんじぺこの時代にはなかったものとして、最近はCOM64 GREやぐいぐい01といった
OS非依存APIセットがあるのでランタイムも移植しました。
efg01(abcdw005)についてはソースに全く手を加えることなく移植できてしまいました。。。
0054さっきゅん
垢版 |
2008/12/01(月) 00:20:04
//meg-os.org/bin/op05_081201.zip

マイナー修正版をリリースしました。

RC-1からbetaに降格したのは、日本語表示に関して後退してると思ったからです。。。
昔のドライバの実装が汚かったのでうまい方法がないか検討してる最中ですが、
どうしても思いつかなかった場合は以前のような実装で我慢する事になるかもしれません。

GREのアプリはどうやって作るのかという問い合わせがあったので、
おれんじぺこの件が落ち着いたらSDK公開の作業にかかることになると思われます。
0055さっきゅん
垢版 |
2008/12/09(火) 17:04:29
おれんじぺこの状況がわかりにくいようなので補足します。

現在公開されているものは昔おれんじぺこと呼ばれていたもののforkです。
(現実的にはソースをもってるぼく以外にforkは不可能ですが、直系の最終バージョン
がどうなったのか不明なのでforkという扱いにします。)

設計や実装の様々な問題によりぼくの志していたものとは程遠く、根本的に作り直した
方がいいという判断に至り、破棄される事が決まりました。
その件に関するごたごたでオリジナルのおれんじぺこは消滅してしまったようです。

しかしながら、ある程度のアプリケーションを動かす事が出来る数少ないx64対応の
OS環境がこのまま埋もれて失われてしまうのは少しもったいないのではないかという
話が出てきました。

設計が成熟していない失敗作が世に広まるというのは、作者としては不本意です。
しかし、現在の設計をすべて捨ててしまうのであれば、数少ない64bit環境という貴
重なサンプルとして歴史に残すのもいいのではないかという事になりました。

このまま破棄してしまうのであればソースツリーをそのままアップロードするのでも
十分という話も出てたのですが、経年による環境の変化で作者ですらビルド不可能な
ソースツリーをそのまま公開するのは無責任すぎると思い、手直しをはじめました。

おれんじぺこを凍結することになった頃と現在では様々な状況が変化し、当時は不可
能だった機能修正も現在では可能になったものもあります。
現在のアップデートはそれらの修正作業であり、開発再開ではありません。
0057さっきゅん
垢版 |
2008/12/14(日) 19:39:54
//meg-os.org/bin/op05_081214.zip

2週間ぶりのリリースです。
大規模変更の途中でなかなかリリースできませんでした。
主にソースツリーの整理をしました。
まだ途中ですがそろそろGRE関係に取り掛かろうと思います。。。

>>56さん
リリースエンジニアリングっていうんすか
0060Be名無しさん
垢版 |
2008/12/14(日) 22:45:08
超良スレ保守
0061さっきゅん
垢版 |
2008/12/19(金) 19:53:49
/meg-os.org/bin/meg081219.zip
/meg-os.org/wiki/?Doc%2FCOM64%2FGRE

MEG-OS Embryo のアプリケーションは COM64 GRE という規格に準拠しており特定の
OS に依存しません。
数年前から仕様が存在していましたが認知度が低すぎて「はりぼて実装でいいからと
りあえず動かせるものをリリースしたほうがよい」という助言をもらい、既に実装が
あったおれんじぺこをベースに公開することになりました。
まだC言語向けの環境が整っていないので近日整備します。

このアーカイブに付属のrungre.comはCOM64plusの初期α版に対応しています。
hello.com と chars.com が COM64 バージョンで、 hello+.com と chars+.com が
COM64plus バージョンです。
一時期「ぐいぐい01」のアプリケーションより小さいバイナリになりましたが、その
後すごい勢いで改良されてしまったのでもうサイズで勝てないかもしれません。
0062Be名無しさん
垢版 |
2008/12/28(日) 22:43:21
こんな良スレがちゃんとあるから2chは成り立っているんだな〜
とっても応援してます!
頑張ってください!
0063さっきゅん
垢版 |
2009/01/24(土) 11:39:30
そろそろメインPCの老朽化が気になったのでPC買いました。話題の某15K鯖です。
実はここ数年経済的な理由でAMD64の実機もってなかったりしたのですが
これで実機で動作確認できるようになりましたです。

早速動かしてみたらきちんと動いてないようです(。・ω・)
0064Be名無しさん
垢版 |
2009/01/28(水) 09:56:16
>>63
「話題の某15K鯖」
これはどれのことですか? 教えてください。
0065さっきゅん
垢版 |
2009/01/29(木) 00:12:11
 〃∩∧_∧
⊂⌒(  ・ω・) ML115でググレカス
 `ヽ_っ⌒/⌒c
0066Be名無しさん
垢版 |
2009/01/29(木) 10:04:22
>>65
なんで「カス」なんですか? そんなに有名なんですかね。
0067Be名無しさん
垢版 |
2009/01/29(木) 18:05:01
ググレカスはいまや2chでは普通に使う言葉なので、ジョークの一環だと考えてもらえたらいいです。。。
0069さっきゅん
垢版 |
2009/01/30(金) 00:44:26
ググレカスにそこまで突っかかられるとは思ってなかった
今は反省してる(´・ω・`)
0070さっきゅん
垢版 |
2009/01/30(金) 12:38:59
今回の軽率な行動を深く反省し当面の間活動を自粛する事にします。
0071Be名無しさん
垢版 |
2009/01/30(金) 12:50:49
深く反省するのは好感が持てるが
活動の自粛が>>64への贖罪になるのか疑問
むしろたとえばこれから3ヶ月に渡って毎月のリリースを約束してくれたほうが・・・
0072Be名無しさん
垢版 |
2009/01/30(金) 20:39:05
できる範囲でいいので、活発な保守と安定性の高い製品の製作が、>>64氏への償いとなるでしょう。
なぜなら、>>64氏は、ここでの製品に大変期待をこめてこのスレを開いたんでしょうからね。

ちょっとえらそうですみません
0073Be名無しさん
垢版 |
2009/02/04(水) 20:10:08
さっきゅんアニメ化決定
ttp://www.takeshobo.co.jp/sp/yuru/
0074Be名無しさん
垢版 |
2009/02/15(日) 15:06:56
64bitなんてケチ臭いこと言ってないで128bitOS作ればいいんだよ
0075Be名無しさん
垢版 |
2009/02/15(日) 17:57:20
いいや、256bit、いや、512bit、
1024bit?2048bit??4096bit?!??!!
ちょっと無理か。
0077Be名無しさん
垢版 |
2009/02/17(火) 12:11:32
当たり前の話だがレジスタ一個辺りのサイズが64bitになる
0078Be名無しさん
垢版 |
2009/02/17(火) 12:27:08
そもそも64bitレジスタ名すら把握してないんで
0079Be名無しさん
垢版 |
2009/02/18(水) 21:09:44
32bitでも高級言語しか使ったことが無い。
8bitとか16bitリアルモードならアセンブラでカリカリプログラム作っていたけど。
0084Be名無しさん
垢版 |
2009/05/01(金) 02:00:11
ん? 本当に嘘なの? 本当なら嬉しいと思っていたのに。
0088Be名無しさん
垢版 |
2009/06/27(土) 09:10:23
>>86
今頃トリップの付け方を覚えるとは・・・で、進捗具合はどうでしょう?
0089Be名無しさん
垢版 |
NGNG?2BP(0)
wktkあげ
0090さっきゅん
垢版 |
2009/08/02(日) 23:51:22
 ∧||∧
(  ⌒ ヽ Atom買っちゃった・・・
 ∪  ノ
  ∪∪
0091さっきゅん
垢版 |
2009/08/04(火) 00:51:26
 ∧||∧
(  ⌒ ヽ 安くて小さくて省電力でこの性能ですか・・・
 ∪  ノ
  ∪∪
0092Be名無しさん
垢版 |
2009/08/04(火) 06:58:23
meg-osをマルチコア化する作業に戻るんだ!
0093さっきゅん
垢版 |
2009/08/04(火) 19:22:10
 ∧||∧
(  ⌒ ヽ マルチコアのやり方がよくわからんとです・・・
 ∪  ノ  そんなことよりこのスレ一年以上ほとんど機能してなかったのですか
  ∪∪
0094Be名無しさん
垢版 |
2009/08/04(火) 19:53:49
本人が動かなきゃ誰も動かないよ。
基本的にオチして囃し立てるだけだから。
でもね、オチされてるだけでも幸せだよ?
見向きもされないプロジェクトだってあるんだから…
0095さっきゅん
垢版 |
2009/08/04(火) 20:13:39
 ∧||∧
(  ⌒ ヽ 色々と忙しくてそれどころじゃなかったの・・・
 ∪  ノ
  ∪∪
0096Be名無しさん
垢版 |
2009/08/04(火) 20:24:31
こういっちゃなんだが
所詮は個人プロジェクトだ。
きばらず、のんびりやんなよ。
0097さっきゅん
垢版 |
2009/08/05(水) 01:35:02
 ∧||∧
(  ⌒ ヽ 32bitOSにVMware入れたら64bitゲスト無効って言われたお
 ∪  ノ  罠だお・・・
  ∪∪
0100さっきゅん
垢版 |
2009/08/05(水) 18:58:06
 ∧||∧
(  ⌒ ヽ VTと64bit両方対応したAtomは存在しないから罠ですよね・・・
 ∪  ノ
  ∪∪
レスを投稿する


ニューススポーツなんでも実況