Ubuntu 20.04 LTS でゼロからの自作OS入門

OS自作入門

ゼロからの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

コメント

タイトルとURLをコピーしました