30日でできる!OS自作入門
かなり時間が経っているが、引き続きやっていることをメモする。正直やりたいことがだいたい終わってるし他にやりたいことがたくさんあるので、ここから先は進めるかどうか悩んでいる。C言語がわかっていないのでかなり厳しいが、今のところやれるところまで…
20日目の後半。前回までのなんとかアプリケーションを動かす(文字を表示させる)というところから、さらにわかりやすく、使いやすく(?)しようとしている。やることはあまり難しくないが、いつものことながら内容の理解が大変。 まずharib17eから。 IDTに…
すっかりのんびりしているが、自作OSの続き。ようやく3分の2まで完了させることができた。ただ、この辺りまでで自分が知りたかったことはだいたいやってみたと思う。(理解できたかどうかはともかく)そろそろまた最初からやり直すかと考えたが、やはり一度…
また間が空いたため、18日目を読み返しながら進めている。感覚的には、実際の自分の理解度は5日目辺りで止まっているので、なかなか進まない。 前回はimgファイルの中身を見る前に他のファイルを追加しなかったので、ファイルリストを出力してもHaribote OS…
また間が空いたので、17日目を読み返しながら編集。 現時点でbootpack.cのワーニングがいくつか出ていて、動作しつつも気になっていた。一応起動はできてるが、確認したところやはりbootpack.hの修正ができてなかった。また、ちょっとしたタイプミスでよけい…
今回はやっていることが過去のおさらいのような感じで、比較的わかりやすい。しかしC言語はあいかわらずよくわかってないので、やったことと引っかかったことを書いておく。 今回でカウンタを消去、さらにtask_bにさよならして、console_taskに書き換え。har…
本書を読んでそういうものとして次に進んだけど、やっぱり納得できなくてもう一度調べ直したもの。引用箇所を自分用にわかりやすくまとめています。徐々に増やしていく予定。 ●全体言語を基準にした目次http://hrb.osask.jp/wiki/?prog_index 前に出てきた命…
USBメモリでブートする実機での起動がどうしてもできず諦めかけていたが、なんとか見つけた。 以下を参照して、ipl10.asmにそのままコピペした。 os自作入門のusbブート - Qiita とても丁寧に解説されていてとてもありがたい。感謝です。しかし内容は、自分…
11日目に各ファイルに追記する箇所がわかりやすくなったと書いたが、嘘だった。13日目あたりから、またかなりの修正が必要だった。しかたないのでタイプミス(だと思われる)のエラーが起こったときはコピペした。 それと13日目の-enable-kvmをつけて動くよ…
タイマの話の前に、いつものプログラムの長さ見直し。 harib10aとbでbootpack.cのみ編集。本書を見ながらでは全部修正できないので、CD-ROMのデータを参照。最終的に204行になればOKだが、最初間違えて2,3箇所そのままでmake runしてしまった。それでも普通…
かなり間が空いたので、振り返りつつ進める。(これは別途ページ作成予定)11日目以降から、各ファイルに追記する箇所がわかりやすくなってきた。が、微妙に違う箇所もあるので油断は禁物。一応CD-ROMの内容と比較して見るほうがいい。 それとUbuntu上でやっ…
11日目の前半、どうしても気になったので、参考になるサイトがないか探しまくった。結局、探し方を変えて「SHTCTL」で検索すると意外と出てきた。 図も合わせて丁寧に解説されていて、とてもわかりやすくて助かったのは以下のブログ。 OS学習メモ10(30日OS自…
今回はbootpack.cとsheet.cの微妙な修正が多く、できるだけ手書きで進めていたが、途中でタイプミスのエラーが多くなったため、コピペに変更。いつもよりは内容は難しく無いので、問題ないと思われる。 しかしカウンタウィンドウの追加以外は大きな変更がな…
先日のメモリ表示は、makeコマンドで「-m 32」のオプションを付ければ32MBになることがわかった。ここでは表示だけの問題で特に動作に影響はなさそうだが、念のため付けるようにする。 Makefileの該当箇所は以下。 run : make img qemu-system-i386 -m 32 -f…
ここまで来ると具体的な内容は読んでいくしかない。 今回は最初に.cファイルをマウスとキーボードの部分を分割。その前に、現在のフォルダをharibote_bak4にバックアップしておいた。 その後bootpack.cを書き換えたが、他にもbootpack.hとint.cを編集し、mak…
その前に、前回の画面の文字が出ない&化ける問題について。bootpack.cの sprintf(s, "%02X", i); のところ、%02Xを%xにして小文字で表示されるようになった。難しい話ではなく、単に変数の型の問題だった。多少本書と表示は変わるが、キーボードとマウスの…
harib04aを参照してmake runしたが、最初のエラー。 int.c: In function ‘inthandler21’:int.c:34:9: warning: implicit declaration of function ‘io_in8’; did you mean ‘io_out8’? [-Wimplicit-function-declaration]data = io_in8(PORT_KEYDAT); ^~~~~~ …
Makefileは独自のルールでやってきたので、いざbootpack.cを分割すると言われると対応に混乱するが、手順は本書の通りに進める。 とにかくbootpack.cを分ける。bootpack.h:ヘッダファイルgraphic.c : 画面表示dsctbl.c: descriptor table関係 bootpack.c: …
今回はharib02fから。その前に、このところmake runすると普通に画面は出るけどワーニングが多かった。よく見ると、intt_screenやputfont8など、あとで追加した関数が最初のところ(void)で宣言されてなかった。(このミスは最後まで尾を引いた)bootpack.cを…
4日目終了時点での振り返り現在の自分の作業フォルダ:~/tolset/haribote$ 上記内で作業中のファイル Makefile bootpack.c har.ld(gcc用リンカファイル) haribote.nas nasmfunc.nas asmhead.nas ipl.nas 作業はHariboteOS/prjects/05_days/harib02aフォル…
本書の通りに nasmfunc.nasとbootpack.cを書き換える。make runすると白い画面が出るはずが、まだ黒いままだった。細々としたところを書き直したが、結局のところリンカスクリプトを変えたら白い画面になった。 最終的に書き換えたというかコピペしてきたhar…
本書の内容よりも、Ubuntu上でどうC言語を扱って進めていくかの問題になる。 ホームのtolsetフォルダに、HariboteOS/projects/03_dayのharib00iをコピー。harib00iから、asmhead.nasとbootpack.cをコピーしてきて中身を確認。Ubuntu上でC言語を使うために、…
ipl.nasとharibote.nasはharib00g.nasまで写経。しかし最初はエラーが出たり、前と同じ「Booting from Floppy…」としか出てこない。なにかおかしいと思ったら、ipl.nasでかなりミスタイプと行の間違いをしていた。これを修正。 他の方が使っていたのでただな…
今回やったことは、主に本家のファイルと本書を参考にしながら、ひたすらipl.nasファイルを写経。 ホームのtolsetフォルダに、HariboteOS/projects/03_dayにあるharib00aフォルダをコピー。ipl.nasファイルのみにする。2日目に作ったMakefileもコピー。ファ…
2日目の項目は一通り終わらせたけど、Ubuntu用に少しよけいなことも検証しておく。 他の方の環境を参照して、サポートページからリンクのあったLinux版開発セットを使わないようにMakefileをカスタム。要するに、exeファイルではなくできるだけLinuxのコマン…
エディタの紹介があるが、自分の環境ではVisual Studio Codeを使用中。最近Ubuntuにインストールしたので、活用したいため。 1日目の後半と同じく、前半はアセンブラ言語についての解説が中心。ほとんど頭に入ってないので、後からかなり読み返すことになる…
今更だが、本書の公式ページから付属CD-ROMのデータをダウンロードしておいた。HaribiteOSフォルダの中から、tolsetフォルダのみをホームディレクトリに置いた。また、 リンクを辿ったらサポートページにLinux版開発セットもあったので、それもダウンロード…
作業用に、ホームディレクトリではなく本書に倣って「helloos0」というフォルダを作成。この中に作成したファイルを入れる。 最初にバイナリデータを力技で作成。手動で入力するにはあまりにもデータが多いため、ここだけはちょっとズルをする。Python のプ…
書籍を購入してからかなり経ってから始めました。かなり前に書かれたものなので、現状に合うように情報収集をしっかりしてから…と思ったんだけど、やってる人は基本的なところはよくわかってて、非常に自由な独自の環境でやってるので逆にわからなくなったと…