30日でできる! OS自作入門 ~1日目~ その1

はじめに

「30日でできる!」という文言に惹かれて以下の本を購入しました.

book.mynavi.jp


実は一度挫折しているので,今回もどうなるかわかりません.

書いている人間の技術力が低いので,間違った記述が多々出てくると思われます.その際は優しく指摘してください.


環境

本の中ではWindowsを開発環境として話が進んでいますが,自分はUbuntu 18.04 の 64bitで作業を進めて行きたいと思います.理由は自分の持っているPCのOSがUbuntuだからというだけです.

$ uname -a
Linux ubuntu 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux


作業

1. とにかくやるのだぁ

バイナリエディタを使用するのでインストール

$ sudo apt install ghex

バイナリエディタで1,474,560バイトを入力し続けるのはさすがに心が折れるので,先にPythonで1,474,560バイトのファイルを作成します.

$ python -c 'print("\x00"*1474560)' > helloos.img
$ du -b helloos.img 
1474561    helloos.img

これだと,1バイト大きいみたい. なので,1バイト減らします.

$ python -c 'print("\x00"*1474559)' > helloos.img
$ du -b helloos.img 
1474560    helloos.img

その後,バイナリエディタを使って必要な部分を書き換えます. せっかくなのでhello, worldの1文字目を大文字で. Hは16進数で0x48なので0x68 -> 0x48へ変更.

f:id:m412u:20190319115909p:plain

実行

エミュレータをインストール.

$ sudo apt install qemu

実行

$ qemu-system-i386 -fda helloos.img

f:id:m412u:20190319120015p:plain
実行画面


まとめ

Markdownに慣れていないので,記事を書く方に時間がかかってしまった.

参考

30日でできる! OS自作入門 | マイナビブックス

OSの動作原理を勉強する | OS自作入門 1日目 【Linux】 | サラリーマンがハッカーを真剣に目指す