mozyのかきおき

mozyの読書感想文や思考置き場

30日でできるOS自作入門【12日目】

f:id:mozy_ok:20181130220523p:plain

概要

これはMozyの1人アドベントカレンダー 2018 の12日目の記事です。

adventar.org

書こうとした経緯は、こちら

mozy-ok.hatenablog.com

今日の内容

  • ついに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
  • bootpack.gasからbootpack.nasを作る
    bootpack.nas
[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を作る

    f:id:mozy_ok:20181212233956p:plain
    bootpack.obj

  • bootpack.objからbootpack.bimを作る

    f:id:mozy_ok:20181212234020p:plain
    bootpack.bim

  • bootpack.bimからbootpack.hrbを作る

    f:id:mozy_ok:20181212234043p:plain
    bootpack.hrb

  • これで機械語になったのでcopyコマンドでasmhead.binとbootpack.hrbをくっつけて

  • haribote.sysとする
    f:id:mozy_ok:20181212234127p:plain
    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.

真っ黒ー。起動はした。

f:id:mozy_ok:20181212234212p:plain
make run結果

ハマりポイント

それぞれの機械語の意味や変換していく部分を追っていったらこんな時間になってしまった。

知ったこと

C言語アセンブラ、バイナリ、機械語、オブジェクトファイル、イメージファイル。たくさん出てきてどんどんごちゃごちゃになってきた。。
明日はここら辺を整理して進めたい。

エンジニア向け オレオレ気分転換の方法

f:id:mozy_ok:20181212203721j:plain

経緯

エンジニアなみなさんはわかっていただけると思うのですが、プログラムを書いたり、ドキュメントを書いたり長時間PCに向かっていると頭も心も身体も疲れてきますよね。
そこで自分なりの気分転換の方法を最近編み出しつつあるので紹介しようかなと思って記事を書きました。

気分転換の方法論

まずは、気分転換って何だろうと思って調べてみると、前向きな気持ちに切り替えることとあります。また、行動が伴うこともあるようです。

気分転換
読み方:きぶんてんかん

ふさぎ込んだり不快になったりした気分を前向きな気持ちに切り替えること。または、そのための行動。

てなわけで、気持ちが切り替わって行動が伴うものオレオレベスト3の紹介です。

第3位 お菓子休憩

コーヒ片手に、チョコレートを食べたりクッキーを食べたりすると、脳の栄養である糖分も取れますし、コーヒのカフェインによって覚醒できたりします。
最近はネスカフェドルチェグストみたいなボタンをポチッと押すだけでいろんなフレーバーが楽しめるコーヒメーカーもあるのでおススメです。

第2位 散歩

行き詰まったら散歩最強説。歩きながら考えるのってとても良い気分転換になります。
散歩だけじゃ物足りなくなったらランニングでもいいと思います。
僕は、家の周りでだいたい1kmのコースを決めて15〜20分くらいでサーっと散歩やジョグをして戻ってきたりします。

第1位 アロマや香水の匂いを楽しむ

最近、これに気が付いたんですけど、人ってその場の香りで結構気分が変わるっぽいです。
カフェで作業をしているときに、あーなんかこのコーヒと、周囲の花の匂い?いいなぁとふと気づいたタイミングがあって、最近はどんな香りが一番気分転換ができるのかを試していたりします。

個人的オススメの香り

エアアロマっていうフランスのメーカのsencha(センチャ)って香りがオススメです。日本の緑茶にインスパイアされたとても繊細な香りで、うすーく緑茶のような香りもありますし、かつ優しく甘い香りなので安心感があります。

エアアロマ sencha(センチャ)13ml

エアアロマ sencha(センチャ)13ml

次にオススメなのは、サンタマリアノヴェッラ という、1221年にフィレンツェに移住してきたドメニコ修道僧によって創立された歴史あるメーカの香りです。

このフリージアという香りは、時間とともに香りが変化していき、最初は少し草の感覚がある、クセが強い香りですが、だんだんと、どこか懐かしい香りへとどんどん変化していきます。
こちらも花の香りに近いので嫌みがない香りなので、コーディングに戻った際にも香りが残り、それが時とともに変化していくため、とても気持ちがよく作業ができます。 www.santamarianovella.jp

このメーカは歴史上、薬剤、鎮痛剤を売るような薬局であったため、香水の香りなども自然の草花の香りが多くあります。中でも、フィレンツェの丘に今日も咲き続ける草花から作られる、ポプリ、
カテリーナ ディ メディチがフランスの女王として嫁ぐ際に彼女のために考案された、アックア デッラ レジーナなど大変有名な香りを産み出しているメーカでもあります。
18世紀の時点でロシアやインド、遠くは中国まで輸出されていたようです。
そんなこんなで、エンジニアと程遠い世界とは言われそうですが、長い歴史の中で人々の気分を魅惑し、民衆の気持ちや生きたかをも変えていった香水やアロマオイルなどを気分転換に楽しんでみてはいかがでしょうか?

てなわけで、まとまりがない記事でしたが、方法論に関して雑記してみました〜。
他の方法もそのうちまとめていきますね。
(最後のウンチクが書きたかっただけなんて言わないことw

【2018年版】今更 Fuel PHPをインストールしてプロジェクトを作成してみる

経緯

なんかPHPの他のフレームワークってどんな感じになっているのか気になったのでFuel PHPを試してみることにした。

というわけでセットアップをば

  1. クイックインストーラをインストールする
    $ curl https://get.fuelphp.com/oil | sh
    https://をつけないと動かなくなっていたので注意
    後、shする際にパスワードを打ちます。

  2. プロジェクト作成する
    $ oil create test
    なんかダーって動いて作成される
    ./fuel/app/ 以下が重要な感じだね

んで、作成された初期状態でのtreeは以下の通り。めっちゃデカイのでリンク先でみてね。(規模がデカすぎるよ!
Fuel PHP oil createした結果 · GitHub

眺めてみる

なるほど。こんな感じにViewに渡すのね。
github.com

そのうちLaravelとかと比較してみよう。

参考

qiita.com

30日でできるOS自作入門【11日目】

f:id:mozy_ok:20181130220523p:plain

概要

これはMozyの1人アドベントカレンダー 2018 の11日目の記事です。

adventar.org

書こうとした経緯は、こちら

mozy-ok.hatenablog.com

今日の内容

  • 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日目】

f:id:mozy_ok:20181130220523p:plain

概要

これはMozyの1人アドベントカレンダー 2018 の10日目の記事です。

adventar.org

書こうとした経緯は、こちら

mozy-ok.hatenablog.com

今日の内容

  • 画面モードの切り替えをしてみる

今日やったこと

OS本体の動作を作成してみる

  ORG  0xc200 ; このプログラムがどこに読み込まれるか
  MOV AL, 0x13
  MOV AH, 0x00
  INT 0x10
fin:
  HLT
  JMP fin
  • ビデオモードの設定
    • AH = 0x00
    • AL = モード
      • 0x03: 16色テキスト 80x25
      • 0x12: VGAグラフィックス 640x480x4bitカラー 独自プレーンアクセス
      • 0x13: VGAグラフィックス 320x200x8bitカラー バックドピクセル
      • 0x6a: 拡張VGAグラフィックス 800x200x4bitカラー 独自プレーンアクセス(ビデオカードによってはサポートされない)

今回は0x13なので8bitカラー 256色が使えるとな。
make run すると文字などは表示されず真っ黒の画面が表示された。

ハマりポイント

特になかった。この書籍結構丁寧だなぁ。
しかし進捗は悪い。。

知ったこと

ビデオモードの設定の切り替え方を学んだ。こうやって切り替えてるんだなぁ。

30日でできるOS自作入門【9日目】

f:id:mozy_ok:20181130220523p:plain

概要

これはMozyの1人アドベントカレンダー 2018 の9日目の記事です。

adventar.org

書こうとした経緯は、こちら

mozy-ok.hatenablog.com

今日の内容

  • OS本体を書き始める

今日やったこと

昨日まではブートセレクタを書いていたが、今日はOS本体を書いていく。 まずは、HLTだけをするプログラムを書いてmake でimageを作ってみる

fin:
    HLT
    JMP    fin

できたimageをバイナリエディタで開くとこんな感じになっている。

f:id:mozy_ok:20181209224937p:plain
0x002600付近
このあたりにファイル名などが記憶されているようです。

そして次は0x004200付近

f:id:mozy_ok:20181209225314p:plain
0x004200付近
ここにF4 EB FDがあるとな
そして次はimageをmakeして生成されたharibote.sysを見てみると
f:id:mozy_ok:20181209225521p:plain
haribote.sysの中身
おお!一致するぞ!

これをまとめると からのディスクに対して、ファイルを普通に書き込むと、 - ファイル名は0x002600以降に入るらしい。 - ファイルの中身は0x004200以降に入るらしい。

ということがわかった。
つまりは今後はブートセクタからこの部分以降を実行するように作って行けばいいってことだ。素晴らしい。

ハマりポイント

特になかった。順調順調
しかし書くのには時間がかかるな。

知ったこと

すげーOSの仕組みというか、どうやってブートしているのかが理解でき始めた。