30日でできるOS自作入門【12日目】
概要
これはMozyの1人アドベントカレンダー 2018 の12日目の記事です。
書こうとした経緯は、こちら
今日の内容
- ついにC言語の世界に突入した
今日やったこと
- bootに関する部分を作る
bootpack.c
void HariMain(void) { fin: /* ここにHLTを入れたいが、C言語ではHLTが使えない */ goto fin; }
機械語への変化のながれ
- bootpack.cからbootpack.gasを作る
bootpack.gas
.file "bootpack.c" .text .balign 2 .globl _HariMain .def _HariMain; .scl 2; .type 32; .endef _HariMain: pushl %ebp movl %esp, %ebp L2: jmp L2
[FORMAT "WCOFF"] [INSTRSET "i486p"] [OPTIMIZE 1] [OPTION 1] [BITS 32] [FILE "bootpack.c"] [SECTION .text] GLOBAL _HariMain _HariMain: PUSH EBP MOV EBP,ESP L2: JMP L2
bootpack.nasからbootpack.objを作る
bootpack.objからbootpack.bimを作る
bootpack.bimからbootpack.hrbを作る
これで機械語になったのでcopyコマンドでasmhead.binとbootpack.hrbをくっつけて
- haribote.sysとする
実行結果
$ make run make -r img make -r haribote.img ../../z_tools/nask ipl10.nas ipl10.bin ipl10.lst ../../z_tools/nask asmhead.nas asmhead.bin asmhead.lst ../../z_tools/gocc1 -I../../z_tools/haribote/ -Os -Wall -quiet -o bootpack.gas bootpack.c ../../z_tools/gas2nask -a bootpack.gas bootpack.nas ../../z_tools/nask bootpack.nas bootpack.obj bootpack.lst ../../z_tools/obj2bim @../../z_tools/haribote/haribote.rul out:bootpack.bim stack:3136k map:bootpack.map \ bootpack.obj ../../z_tools/bim2hrb bootpack.bim bootpack.hrb 0 cat asmhead.bin bootpack.hrb > haribote.sys ../../z_tools/edimg imgin:../../z_tools/fdimg0at.tek \ wbinimg src:ipl10.bin len:512 from:0 to:0 \ copy from:haribote.sys to:@: \ imgout:haribote.img cp haribote.img ../../z_tools/qemu/fdimage0.bin make -r -C ../../z_tools/qemu qemu-system-i386 -L . -m 32 -localtime -vga std -fda fdimage0.bin qemu-system-i386: -localtime: warning: This option is deprecated, use '-rtc base=localtime' instead. WARNING: Image format was not specified for 'fdimage0.bin' and probing guessed raw. Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. Specify the 'raw' format explicitly to remove the restrictions.
真っ黒ー。起動はした。
ハマりポイント
それぞれの機械語の意味や変換していく部分を追っていったらこんな時間になってしまった。
知ったこと
C言語、アセンブラ、バイナリ、機械語、オブジェクトファイル、イメージファイル。たくさん出てきてどんどんごちゃごちゃになってきた。。
明日はここら辺を整理して進めたい。
エンジニア向け オレオレ気分転換の方法
経緯
エンジニアなみなさんはわかっていただけると思うのですが、プログラムを書いたり、ドキュメントを書いたり長時間PCに向かっていると頭も心も身体も疲れてきますよね。
そこで自分なりの気分転換の方法を最近編み出しつつあるので紹介しようかなと思って記事を書きました。
気分転換の方法論
まずは、気分転換って何だろうと思って調べてみると、前向きな気持ちに切り替えることとあります。また、行動が伴うこともあるようです。
気分転換 読み方:きぶんてんかん ふさぎ込んだり不快になったりした気分を前向きな気持ちに切り替えること。または、そのための行動。
てなわけで、気持ちが切り替わって行動が伴うものオレオレベスト3の紹介です。
第3位 お菓子休憩
コーヒ片手に、チョコレートを食べたりクッキーを食べたりすると、脳の栄養である糖分も取れますし、コーヒのカフェインによって覚醒できたりします。
最近はネスカフェのドルチェグストみたいなボタンをポチッと押すだけでいろんなフレーバーが楽しめるコーヒメーカーもあるのでおススメです。
第2位 散歩
行き詰まったら散歩最強説。歩きながら考えるのってとても良い気分転換になります。
散歩だけじゃ物足りなくなったらランニングでもいいと思います。
僕は、家の周りでだいたい1kmのコースを決めて15〜20分くらいでサーっと散歩やジョグをして戻ってきたりします。
第1位 アロマや香水の匂いを楽しむ
最近、これに気が付いたんですけど、人ってその場の香りで結構気分が変わるっぽいです。
カフェで作業をしているときに、あーなんかこのコーヒと、周囲の花の匂い?いいなぁとふと気づいたタイミングがあって、最近はどんな香りが一番気分転換ができるのかを試していたりします。
個人的オススメの香り
エアアロマっていうフランスのメーカのsencha(センチャ)って香りがオススメです。日本の緑茶にインスパイアされたとても繊細な香りで、うすーく緑茶のような香りもありますし、かつ優しく甘い香りなので安心感があります。
- 出版社/メーカー: エアアロマ ジャパン株式会社
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る
次にオススメなのは、サンタマリアノヴェッラ という、1221年にフィレンツェに移住してきたドメニコ修道僧によって創立された歴史あるメーカの香りです。
このフリージアという香りは、時間とともに香りが変化していき、最初は少し草の感覚がある、クセが強い香りですが、だんだんと、どこか懐かしい香りへとどんどん変化していきます。
こちらも花の香りに近いので嫌みがない香りなので、コーディングに戻った際にも香りが残り、それが時とともに変化していくため、とても気持ちがよく作業ができます。
www.santamarianovella.jp
このメーカは歴史上、薬剤、鎮痛剤を売るような薬局であったため、香水の香りなども自然の草花の香りが多くあります。中でも、フィレンツェの丘に今日も咲き続ける草花から作られる、ポプリ、
カテリーナ ディ メディチがフランスの女王として嫁ぐ際に彼女のために考案された、アックア デッラ レジーナなど大変有名な香りを産み出しているメーカでもあります。
18世紀の時点でロシアやインド、遠くは中国まで輸出されていたようです。
そんなこんなで、エンジニアと程遠い世界とは言われそうですが、長い歴史の中で人々の気分を魅惑し、民衆の気持ちや生きたかをも変えていった香水やアロマオイルなどを気分転換に楽しんでみてはいかがでしょうか?
てなわけで、まとまりがない記事でしたが、方法論に関して雑記してみました〜。
他の方法もそのうちまとめていきますね。
(最後のウンチクが書きたかっただけなんて言わないことw
【2018年版】今更 Fuel PHPをインストールしてプロジェクトを作成してみる
経緯
なんかPHPの他のフレームワークってどんな感じになっているのか気になったのでFuel PHPを試してみることにした。
というわけでセットアップをば
クイックインストーラをインストールする
$ curl https://get.fuelphp.com/oil | sh
https://をつけないと動かなくなっていたので注意
後、shする際にパスワードを打ちます。プロジェクト作成する
$ oil create test
なんかダーって動いて作成される
./fuel/app/
以下が重要な感じだね
んで、作成された初期状態でのtreeは以下の通り。めっちゃデカイのでリンク先でみてね。(規模がデカすぎるよ!
Fuel PHP oil createした結果 · GitHub
眺めてみる
なるほど。こんな感じにViewに渡すのね。
github.com
そのうちLaravelとかと比較してみよう。
参考
30日でできるOS自作入門【11日目】
概要
これはMozyの1人アドベントカレンダー 2018 の11日目の記事です。
書こうとした経緯は、こちら
今日の内容
- 32bitモードへの準備をしたぞ
今日やったこと
- 32bit対応をするメリットを学んだ
16bitモードではおかしな機械語に遭遇しても誤動作しないような保護モードは使用できないが、32bitモードなら可能
しかし、32bitモードではもうBIOSは利用できない。なぜなら、BIOSは16bitの機械語で書いてあるため (32にしても16に戻す方法もあるけどこの書籍では踏み入らないとのこと - 画面モードの設定をメモリに格納する 追記した部分
MOV BYTE [VMODE], 8 ;画面モードをメモする MOV WORD [SCRNX], 320 MOV WORD [SCRNY], 200 MOV DWORD [VRAM], 0x000a0000 ; キーボードの状態をBIOSに教えてもらう MOV AH, 0x12 INT 0x16 ; keyboard BIOS MOV [LEDS], AL
ハマりポイント
特になし。めちゃくちゃわかりやすいぞ。
知ったこと
BIOSからキーボードの状態とか教えてもらうことできるんだなって知った。
次回から、ついにC言語を導入するようで楽しみです。
【解決】circleci で registry with id 'XXXXXXXXXXXX' already has the maximum allowed number of images which is '1000' とか言われた時
経緯
circleci でCIを回していたら、以下のようなエラーがでて止まった。
denied: The repository with name 'mozy/app-name' in registry with id 'XXXXXXXXXXXX' already has the maximum allowed number of images which is '1000' Exited with code 1
原因と解決方法
なるほど。ECRのリポジトリごとのimage数の上限って、1000個なのね。
Maximum number of images per repository : 1,000
Amazon ECR Service Limits - Amazon ECR
そのためコンソールに入ってimageをぽちぽち消して行けば解消する。
もしくは緩和申請をすれば解決する。
そもそも、CIを回した時に消すような設定にしておけばこんなことは起こらない😪
30日でできるOS自作入門【10日目】
概要
これはMozyの1人アドベントカレンダー 2018 の10日目の記事です。
書こうとした経緯は、こちら
今日の内容
- 画面モードの切り替えをしてみる
今日やったこと
OS本体の動作を作成してみる
ORG 0xc200 ; このプログラムがどこに読み込まれるか MOV AL, 0x13 MOV AH, 0x00 INT 0x10 fin: HLT JMP fin
- ビデオモードの設定
今回は0x13なので8bitカラー 256色が使えるとな。
make run すると文字などは表示されず真っ黒の画面が表示された。
ハマりポイント
特になかった。この書籍結構丁寧だなぁ。
しかし進捗は悪い。。
知ったこと
ビデオモードの設定の切り替え方を学んだ。こうやって切り替えてるんだなぁ。
30日でできるOS自作入門【9日目】
概要
これはMozyの1人アドベントカレンダー 2018 の9日目の記事です。
書こうとした経緯は、こちら
今日の内容
- OS本体を書き始める
今日やったこと
昨日まではブートセレクタを書いていたが、今日はOS本体を書いていく。 まずは、HLTだけをするプログラムを書いてmake でimageを作ってみる
fin: HLT JMP fin
できたimageをバイナリエディタで開くとこんな感じになっている。
このあたりにファイル名などが記憶されているようです。
そして次は0x004200付近
ここにF4 EB FDがあるとな
そして次はimageをmakeして生成されたharibote.sys
を見てみると
おお!一致するぞ!
これをまとめると からのディスクに対して、ファイルを普通に書き込むと、 - ファイル名は0x002600以降に入るらしい。 - ファイルの中身は0x004200以降に入るらしい。
ということがわかった。
つまりは今後はブートセクタからこの部分以降を実行するように作って行けばいいってことだ。素晴らしい。
ハマりポイント
特になかった。順調順調
しかし書くのには時間がかかるな。
知ったこと
すげーOSの仕組みというか、どうやってブートしているのかが理解でき始めた。