🐺

【30days自作OS開発記録】2日目-Part2:Makefileという魔法アイテムを活用してOSを作る。

2024/06/16に公開1

はじめに

こんにちは!タクーシュだワン!

ここ最近、ニコニコ動画やKADOKAWAなど名だたるITサービスや基幹システムのシステム障害が話題になっているが、他人事のように見ているエンジニアはもしその事態が起こった時にどう対応するか考える癖をつけないといざという時の対応に困るので、しっかりネガティブシミュレーションをしておくのだ。

さて、これまではコマンドを一個一個入力しながらOSを立ち上げていた訳ですが、これをやっているとビルドするファイル数が増えた時ににっちもさっちもいかずかなり時間がかかってめんどくあさいと思わない?

どうせなら、入力しているコマンドをバッチファイルのように複数のコマンドを一つのファイルで発動させて、今まで一個ずつ入力していたものをMakefileとmakeコマンドを使って、やっちゃえば簡易版OSの起動もめちゃくちゃ楽になるのだ。

ちなみに、Makefileはコンパイラ型のプログラミング言語を使う人は学んでおくと非常に便利なのでこの機会にしっかり学んでおくのだ。

Makefileとは?

Makefile(メイクファイル)は、ソフトウェアのビルド(作成)プロセスを自動化するための指示書のようなものであるけど、いまいちシェルスクリプトやバッチファイルと違いが分からない人もいるため、以下の通り違いを解説するワン。

シェルスクリプトやバッチファイルとどう違う?

シェルスクリプト(Shell Script):

  • Unix/Linuxの環境で使われる。
  • 一連のコマンドを順番に実行するためのテキストファイル。
  • ファイルの拡張子は通常.sh。

バッチファイル(Batch File):

  • Windowsの環境で使われる。
  • シェルスクリプトと同じく、一連のコマンドを実行するテキストファイル。
  • ファイルの拡張子は通常.bat。

Makefile:

  • 主にソフトウェア開発で使われる。
  • 複数のコマンドやタスクを自動化するが、特定の条件に基づいて実行される。
  • 特定のソフトウェア(make)によって読み込まれる。

Makefileは、たくさんのコマンドやタスクを自動化するための特別なルールを定めたファイルであり、シェルスクリプトやバッチファイルとは違い、特定の条件や依存関係に基づいてコマンドを実行するため、特にソフトウェア開発を行う上でかなり役立つのは間違いなし!!

Makefileを使うことで、面倒な作業を簡単に自動化することができるのが優れてるワン。

Makefileの書き方について

っというわけで、さっそくMakefileの書き方について解説していくのだが、少しややこしいので以下のサンプルコードを参照しながら、解説するのだ。

run: helloos.img
	qemu-system-i386 -fda $^

helloos.img: helloos.nas
	nasm -o $@ $^

clean:
	rm -rf helloos.img

上記のMakefileのうち、以下の2つのコードの部分を解説するワン!

helloos.img: helloos.nas
	nasm -o $@ $^

このコードは、生成するファイルとそのファイルを生成するのに必要なファイル、そしてそれらを組み合わせることにより下の行に実際に発動するコマンドを入力しているのだ。

  • helloos.img:生成するファイル
  • helloos.nas:対象ファイルを生成するのに必要なファイル
  • nasm -o $@ $^:実際に発動するコマンド

では、次に以下のコードを見ていこうではないか。

run: helloos.img
	qemu-system-i386 -fda $^

このコードは、生成するコマンドとそのコマンドを発動するのに必要なファイル、そしてそれらが揃った時、下の行に発動されるコマンドが書かれているのだ。

  • run:発動するコマンド
  • helloos.img:対象のコマンドを発動するのに必要なファイル
  • qemu-system-i386 -fda $^:実際発動するコマンド内容

っといった感じで、Makefileで上手に組み合わせながら生成するファイルとコマンドを上手に一つのファイルで完結させれば、makeコマンドのみでOSの起動を全て行うことが出来るという優れモノのアイテムに化けるのだ。

すごいだろ?

MakefileでOSを立ち上げるのに必要な準備

さて、MakefileでOSを立ち上げるには、makeコマンドをwslを用いてインストールする必要があるので、Windows環境の人はwslを付けて以下のコマンドを入力してインストールするのだ。

sudo apt update
sudo apt install make

これでMakefileを用いて、makeコマンドでMakefileに記載しているコマンドを発動できるようになったので、以下のコードを上から順序立ててmakeコマンドを入力しましょう。

make helloos.img
make run

これを入力すると、1日目と同様に以下の画像を表示するのだ。

まさに、某リフォーム番組の 「なんということでしょう~!!」 という言葉が思わず出ちゃうほどに感動するのだ。

最後に

今回の記事では、入力するコマンドの数も少なかったので、もしかしたらMakefileの魅力が十二分に伝わらなかったかもしれないけど、これがコマンド数が増えると開発環境が異なればチーム開発を行う上で非常にやりにくくなるので、そのために覚えておくのも良いでしょう。

そんなわけで、3日目はこれをガンガン用いてついにOS開発にC言語を使うことになるので、次回の記事をお楽しみにしてほしいワン!!

To be continued...

Discussion