BETA

『30日でできる!OS自作入門』をやってみる 1日目

投稿日:2019-09-08
最終更新:2019-09-08

環境

Ubuntu 18.04

サンプルのダウンロード

電子書籍で購入したのでCD-ROMが付いておらず、 出版社のページ からサンプルをダウンロードした。zipを展開するとisoだったので sudo mount -o loop HariboteOS.iso /mnt/iso で展開した。

helloos.img の作成

書籍通りにhelloos.imgを手で書いてみようと sudo apt install hexcurse でバイナリエディタの hexcurse をインストール。しかしどうやってバイナリファイルを作成すればいいのかわからなかったので、 fallocate -l 1474560 helloos.img ですべて0のバイナリファイルを作成し、 hexcurse helloos.img で編集することにした。保存して、正しく書けたか diff helloos.img /mnt/iso/projects/01_day/helloos0/helloos.img で確認したところ、相違点があるとのこと。どこが異なるか調べるために sudo apt install hexdiffで hexdiff をインストール。 hexdiff helloos.img /mnt/iso/projects/01_day/helloos0/helloos.img で相違点をみつけ修正した。

USB メモリに書き込み

Raspbian の書き込みに使っていた balenaEtcher を使った。

実機で起動

Fujitsu LIFEBOOK WS1(型名 FMVWWS17)に USB メモリを挿して電源を入れてみたが、「選択したデバイスから起動できませんでした」と画面に表示される。 このページ を見て、 Secure Boot とかが原因かなあ、と思ったので、 lenovo ThinkPad X61 を引っ張り出してきて、こちらで起動。
BIOS(?) の時計がリセットされていて起動できなかったので、 BIOS で時計をセットしてリスタートすると、起動した。

QEMU

こちらのページあるように qemu-kvm パッケージをインストールした。

アセンブラ

書籍では nask を使っているが、サンプルにあるのは Windows のバイナリだし、 サポートページにある Linux 用バイナリ も 32bit 用だし、 opennask 使ってやっていくぞなんて気概もないし、 nasm パッケージを apt でインストールしてやっていくことにした。たいして違いはないようだし 、わりとやっている人いそうなので。

コード

https://github.com/marcie001/HariboteOS/tree/day01

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@marcie001の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!