ゼロからのOS自作入門を Ubuntu 20.04 LTS で動かしてみます。
Ansible は使わないでやります。
ゼロからのOS自作入門 – 2021/3/22
ゼロからのOS自作入門(内田公太著)サポートサイト
https://zero.osdev.jp
準備
git のインストール
$ sudo apt-get install git
mikanos のクローン
$ cd $ git clone https://github.com/uchan-nos/mikanos.git
mikanos-build のクローン
$ cd $ git clone https://github.com/uchan-nos/mikanos-build.git
QEMUインストール
以下を参考にQEMUをインストール
ubuntu で kvm qemu インストール
https://takuya-1st.hatenablog.jp/entry/2021/01/06/164842
qemu kvm と libvirtd をインストールする。
$ sudo apt -y install qemu-kvm libvirt-daemon-system \ libvirt-daemon virtinst bridge-utils libguestfs-tools virt-top
hello.efiを起動
$ cd ~/mikanos-build/day01/bin/ $ ~/mikanos-build/devenv/run_qemu.sh hello.efi
QEMUからHello World OSが起動したらOK
C++のソースからコンパイル
$ cd ~/mikanos-build/day01/c/
$ sudo apt install -y make $ sudo apt install -y clang
-> clang 10 とか llvm 10 とかが入るっぽい
$ sudo apt install lld
-> /usr/bin/lld-link-10 がインストールされる
Makefile 内の lld-link を lld-link-10 に書き換える
$ make
hello.efi が生成
$ ~/mikanos-build/devenv/run_qemu.sh hello.efi
QEMUからHello World OSが起動したらOK
EDK2を使ってコンパイル
UEFIファームウェアやアプリの開発環境は OSS (EDK2)として公開されています。
$ sudo apt install -y build-essential uuid-dev iasl nasm
–recursive つけないといけない
$ git clone --recursive https://github.com/tianocore/edk2.git
$ cd ~/edk2 $ source edksetup.sh
edk2 以下に MikanLoaderPkd のシンボリックリンクを貼る
$ cd ~/edk2 $ ln -s ~/mikanos/MikanLoaderPkg ./
edk2/Conf/target.txt を編集
ACTIVE_PLATFORM MikanLoaderPkg/MikanLoaderPkg.dsc TARGET DEBUG TARGET_ARCH X64 TOOL_CHAIN_TAG CLANG38
$ build
RegisterFilterLib is not found エラー
MikanLoaderPkg/MikanLoaderPkg.dscの LibratyClasses に
以下を追加することでビルドできるようになります。
RegisterFilterLib|MdePkg/Library/RegisterFilterLibNull/RegisterFilterLibNull.inf
$ build
llvm-ar not found エラー
$ sudo apt install -y llvm
llvm 1:10.0-50 が入る
$ build
BaseTools C Tool binary was not found (GenFw) エラー 対策
% make -C ~/edk2/BaseTools/Source/C
$ build
$ cd ~/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64 $ ~/mikanos-build/devenv/run_qemu.sh Loader.efi
Faild to open file kernel.elf Not found って出たらOK
コメント