Skip to content
No description, website, or topics provided.
C Makefile Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
biobin_poc
fs
lib
tools
.gitignore
Makefile
README.md

README.md

同人誌「バイナリ生物学入門」PoCサンプル

これは、同人誌「バイナリ生物学入門」で紹介したPoC実装です。

設計や実行結果などは同人誌の方で説明していますのでそちらをご覧ください。

ビルド環境/動作環境

本プログラムはDebianあるいはUbuntuのLinux環境上でビルド/実行可能です。(筆者の環境は「Debian GNU/Linux 9.11 (stretch)」)

ビルド/実行には以下のパッケージが必要です。

  • build-essential
  • qemu-system-x86
  • ovmf

以下のようにインストールしてください。

$ sudo apt install build-essential qemu-system-x86 ovmf

また、このプログラムでは、ovmfパッケージに含まれるファームウェアバイナリがホームディレクトリ直下に配置されていることを想定しています。

ovmfパッケージインストール後、以下のコマンドでホームディレクトリ直下にファームウェアバイナリを配置してください。

$ cp -r /usr/share/OVMF ~/

ビルド方法

以下のコマンドでビルドできます。

$ cd intelligent_life_in_the_binary_samples/
$ make

ビルドが成功すると、fsというディレクトリに以下のようにファイルが配置されています。

intelligent_life_in_the_binary_samples/
|-- ...
`-- fs/
    |-- efi/
    |   `-- boot/
    |       `-- bootx64.efi
    |-- fs.img
    `-- kernel.bin

実行方法

QEMUで実行

同梱のMakefileにQEMU実行用のターゲットrunを用意していますので、以下のコマンドで実行可能です。

$ make run

実機で実行

fsディレクトリ以下をUSBフラッシュメモリ等のストレージへコピーし、そのストレージから起動することで実機での実行も可能です。(ただし、筆者は自分のPCでしか試せていないため、もしかしたら上手く動作できないPCもあるかもしれません。)

なお、ストレージは予めFATあるいはGPTでフォーマットしておいてください。(ここで使用している自作のブートローダーはUEFI上で動作するのですが、UEFIFATあるいはGPTのファイルシステムを認識するためです。)

参考情報

同梱のbootx64.efikernel.binという2つのバイナリが、それぞれ「ブートローダー」と「カーネル」です。

これらの実装については、下記の同人誌で説明しています。

  • 「フルスクラッチで作る!UEFIベアメタルプログラミング」シリーズ
    • PCのUEFIファームウェアを直接制御してブートローダーを作る
    • パート1: UEFIの機能を呼び出してOSっぽいものを作る
    • パート2: ブートローダーとしてLinuxをブートする等のTIPS本
  • 「フルスクラッチで作る!x86_64自作OS」シリーズ
    • ブートされる側であるカーネルを作る
    • パート1: ベースとなるシングルタスクOSを作る
    • パート2: スケジューラを実装しマルチタスク対応
    • パート3: システムコールを実装しカーネルとアプリをバイナリレベルで分離
    • パート4: NICドライバを実装しイーサネットフレーム送受信
    • パート5: マルチコア対応

これらも全て筆者のウェブページで公開しています。

You can’t perform that action at this time.