x86系のPCをブートさせて遊んでみようと思います。
OSを作ろうとか、大それたことは言いません。技術力も知識も能力も全く足りないですから。
そもそもOSを作るのって、とっても
めんどくさい。
興味がわいたネタをそこそこの時間で楽しもうと思ったら、ブートだけに絞るのがいい感じかなぁ。
OS云々はちょっと置いといて、ブートさえ出来れば、あとは基本的にソフトウェアの領域になります。ソフトウェアの領域であれば、いろいろ派生とかもできるんじゃないか、とか思うわけです。うん、遊ぶネタが増えそうというか、幅が広がりそう。
で、いろいろ調べてみると、同じテーマでいろんな人が書いていますね。今更感マシマシなんですが、わたしにとっては新しかったりするので、ワークショップ系というか、実際に動かして確認する系の記事を参考に進めていこうと思います。
テキストは『OSを書く:初歩から一歩ずつ』です。ざっと目を通してみたんですが、それほどボリュームないし、解説もそれなりにあるし、これなら1日あれば確認できるかなと。チュートリアルだしねw
といううわけで『ブートで遊ぼっ!』、始めます。
前提条件
テキストがDebianを前提にしているので、それに乗っかります。
今回のわたしの環境は
Intel Core i7
Windows10
VMwera Workstation 17 Plyer
Debian 12.4
です。Debianはこのために新規で入れました。ほとんど、まっさらです。
テキストで『nasm』『build-essential』『qemu』が必要だというのでインストールします。
Debianを起動してターミナルエミュレーターを実行し、以下を入力します。
$ sudo apt-get install nasm build-essential qemu
む!
E: パッケージ 'qemu' にはインストール候補がありません
とか返ってきた。
どうしよう、どうする?
テキストは2016年とか2017年に書かれたものだし、今は2024年だし、8年もあれば生まれた子供も小学校3年生?になるし、パッケージ構成が変わっててもおかしくはないなぁ。
ともあれ、これでお終いにするってのは、あまりに情けなさすぎる。どうしたものか。
少し調べてみたら、色々な情報がありました。余計なものをインストールしても邪魔にならなければいいんだけれど、できるなら最小限の構成にしたいなぁ。
なので、これでどうだっ!
$ sudo apt-get install nasm build-essential qemu-kvm
インストールは成功。
ではソースを書きましょう。
ファイル名は『boot.asm』です。
; boot.asm hang: jmp hang times 510-($-$$) db 0 ; This is a comment db 0x55 db 0xAA
PlayWithBoot.1
コードの解説はテキストに任せて、書かれたとおりにオペレーションします。
$ nasm -f bin boot.asm -o boot.bin
問題ないですね。
$ qemu-system-x86_64 boot.bin
動きました。こんな感じです。
これで前提条件が終了です。
なんか、思ったより先が長そう…
《2024/4/17 0:04:09》