Giter Site home page Giter Site logo

mikanos-build's Introduction

mikanos-build

このリポジトリは uchan が開発している教育用 OS MikanOS をビルドする手順およびツールを収録しています。 Ubuntu 18.04 で動作を確認しています。

ここで紹介する手順は Linux のコマンド操作にある程度慣れていることを前提に書かれています。 Linux のコマンドに不慣れな方は、まず これだけは知っておきたい Linux コマンド を読むことをお勧めします。

MikanOS のビルド手順は大きく次の 4 段階です。

  1. ビルド環境の構築
  2. MikanOS のソースコードの入手
  3. ブートローダーのビルド
  4. MikanOS のビルド

ビルド環境の構築

ブートローダーおよび MikanOS 本体のビルドに必要なツールやファイルを揃えます。

リポジトリのダウンロード

まずは Git をインストールして,mikanos-build リポジトリをダウンロードします。

$ sudo apt update
$ sudo apt install git
$ cd $HOME
$ git clone https://github.com/uchan-nos/mikanos-build.git osbook

mikanos-build 最新版は Ubuntu 22.04 をサポートしています。ただし、導入される lld-14 を使うとリンクアドレスがズレることにより OS やアプリが誤動作することが分かっています。

lld-7 を使いたい場合は Ubuntu 18.04 か 20.04 をお使いください。Ubuntu 18.04 や 20.04 向けには次のコマンドを実行して古い mikanos-build を利用してください。

$ cd osbook
$ git checkout 8d4882122ec548ef680b6b5a2ae841a0fd4d07a1

開発ツールの導入

次に Clang,Nasm といった開発ツールや,EDK IIのセットアップを行います。 ansible_provision.yml に必要なツールが記載されています。 Ansible を使ってセットアップを行うと楽です。

注意)ansible_provision.yml は LLVM7 をデフォルトに設定します。これは Ubuntu の alternatives という仕組みを使い、/usr/bin 以下にリンクを張ることで実現しています。

$ sudo apt install ansible
$ cd $HOME/osbook/devenv
$ ansible-playbook -K -i ansible_inventory ansible_provision.yml

セットアップが上手くいけば iasl というコマンドがインストールされ,$HOME/edk2 というディレクトリが生成されているはずです。 これらがなければセットアップが失敗しています。

$ iasl -v
$ ls $HOME/edk2

WSL 上の Ubuntu で上記のコマンドを実行すると,$HOME/.profileDISPLAY 環境変数の設定が追加されることがあります。 この設定を有効にするにはターミナルを再起動するか,次のコマンドを実行する必要があります。

$ source $HOME/.profile

標準ライブラリのライセンスについて

加えて,上記の ansible-playbook コマンドはビルド済みの標準ライブラリを $HOME/osbook/devenv/x86_64-elf にダウンロードします。

このディレクトリに含まれるファイルは Newliblibc++FreeType をビルドしたものです。 それらのライセンスはそれぞれのライブラリ固有のライセンスに従います。 MikanOS や mikanos-build リポジトリ全体のライセンスとは異なりますので注意してください。

次のファイル群は Newlib 由来です。ライセンスは x86_64-elf/LICENSE.newlib を参照してください。

x86_64-elf/lib/
    libc.a
    libg.a
    libm.a
x86_64-elf/include/
    c++/ を除くすべて

次のファイル群は libc++ 由来です。ライセンスは x86_64-elf/LICENSE.libcxx を参照してください。

x86_64-elf/lib/
    libc++.a
    libc++abi.a
    libc++experimental.a
x86_64-elf/include/c++/v1/
    すべて

次のファイル群は FreeType 由来です。ライセンスは x86_64-elf/LICENSE.freetype を参照してください。

x86_64-elf/lib/
    libfreetype.a
x86_64-elf/include/freetype2/
    すべて

MikanOS のソースコードの入手

Git で入手できます。

$ git clone https://github.com/uchan-nos/mikanos.git

最後の git clone によって、カレントディレクトリに mikanos ディレクトリが生成され、そこに MikanOS のソースコードがダウンロードされます。

ブートローダーのビルド

EDK II のディレクトリに MikanOS ブートローダーのディレクトリをリンクします。

⚠️ 以下の /path/to/mikanos はご自身の環境に適した文字列に置き換えてください。
『ゼロからのOS自作入門』にしたがって実験している場合は ln -s $HOME/workspace/mikanos/MikanLoaderPkg ./ となるはずです。
$ cd $HOME/edk2
$ ln -s /path/to/mikanos/MikanLoaderPkg ./

/path/to/mikanos は先ほど git clone でダウンロードした mikanos ディレクトリへのパスを指定します。 ブートローダーのソースコードが正しく見えればリンク成功です。

$ ls MikanLoaderPkg/Main.c

次に,edksetup.sh を読み込むことで EDK II のビルドに必要な環境変数を設定します。

$ source edksetup.sh

edksetup.sh ファイルを読み込むと,環境変数が設定される他に Conf/target.txt が自動的に生成されます。 このファイルをエディタで開き,次の項目を修正します。

設定項目 設定値
ACTIVE_PLATFORM MikanLoaderPkg/MikanLoaderPkg.dsc
TARGET DEBUG
TARGET_ARCH X64
TOOL_CHAIN_TAG CLANG38

設定が終わったらブートローダーをビルドします。

$ build
  • 「ModuleNotFoundError: No module named 'distutils.util'」というエラーが出る場合は、sudo apt install python3-distutils を実行してから再度 build を実行すると上手くいく可能性があります。試してみてください。
  • 「Instance of library class [RegisterFilterLib] is not found」というエラーが出てビルドが失敗する場合は RegisterFilterLib 関係のエラーで MikanLoaderPkg がビルドできません を参照してください。

Loader.efi ファイルが出力されていればビルド成功です。

$ ls Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi

MikanOS のビルド

ビルドに必要な環境変数を読み込みます。

$ source $HOME/osbook/devenv/buildenv.sh

ビルドします。

$ cd /path/to/mikanos
$ ./build.sh

QEMU で起動するには ./build.shrun オプションを指定します。

$ ./build.sh run

apps ディレクトリにアプリ群を入れ、フォントなどのリソースをも含めたディスクイメージを作るには APPS_DIR と RESOURCE_DIR 変数を指定します。

$ APPS_DIR=apps RESOURCE_DIR=resource ./build.sh run

mikanos-build's People

Contributors

shouhei avatar uchan-nos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mikanos-build's Issues

day03以降カーネルの起動まで進めない問題の対処方法

前提

  • Ubuntu22を利用している
  • 本リポジトリのmasterブランチを利用し、開発ツールの導入を実行した

背景

uchan-nos/os-from-zero#134 にある通り、ansibleによってインストールされるlld14だとday03以降のコードで不具合が生じる。そのため、lld7を利用するように変更する

手順

$ sudo apt remove -y clang-14 lld-14
$ curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-7.1.0/clang+llvm-7.1.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
$ tar xvf clang+llvm-7.1.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
$ sudo apt install -y libncurses5 # 実行しないとerror while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directoryのエラーになる

あとはMakefileのld.lldとclang++を/path/to/clang+llvm-7.1.0-x86_64-linux-gnu-ubuntu-14.04/bin/ld.lld/path/to/clang+llvm-7.1.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++に変更すればOK

zshだと `$CPPFLAGS` が展開されないためコンパイル出来ない.

zshの場合デフォルトだと環境変数内の空白が展開されないためコンパイルに失敗します.

$ clang++ $CPPFLAGS -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -c main.cpp
clang: error: no such file or directory: '    -I/home/jun/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/jun/osbook/devenv/x86_64-elf/include -I/home/jun/osbook/devenv/x86_64-elf/include/freetype2     -I/home/jun/edk2/MdePkg/Include -I/home/jun/edk2/MdePkg/Include/X64     -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS     -DEFIAPI='__attribute__((ms_abi))''

bashとzsh変数展開の違い(変数内にある空白での分割について

解決方法としては, 上記のサイトに書いている通り, ${=CPPFLAGS} という風に書くか以下の設定を ~/.zshrc に書き込む必要がありそうです.

setopt SH_WORD_SPLIT

既に自分の方では解決しているのですが, 同じように詰まりそうな人がいそうだなと思いIssueを作成しました. もしかしたらREADMEかどこかに注意書きを書いた方が良いかも知れません.

Ubuntu 18.04 のminimal からインストールを開始するとdistutilsが無いためブートローダーのビルドに失敗する

こちらに記載のある minimalのisoを利用して、Ubuntuをインストールし、Readmeの手順に沿って構築を進めたところ以下のようなエラーが出てブートローダーのビルドに失敗しました。

shouhei@ubuntu:~/edk2$ build
Traceback (most recent call last):
  File "/home/shouhei/edk2/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py", line 32, in <module>
    from AutoGen.PlatformAutoGen import PlatformAutoGen
  File "/home/shouhei/edk2/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py", line 21, in <module>
    from AutoGen.ModuleAutoGen import ModuleAutoGen
  File "/home/shouhei/edk2/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py", line 20, in <module>
    from . import GenC
  File "/home/shouhei/edk2/BaseTools/Source/Python/AutoGen/GenC.py", line 20, in <module>
    from .StrGather import *
  File "/home/shouhei/edk2/BaseTools/Source/Python/AutoGen/StrGather.py", line 15, in <module>
    from .UniClassObject import *
  File "/home/shouhei/edk2/BaseTools/Source/Python/AutoGen/UniClassObject.py", line 15, in <module>
    import distutils.util
ModuleNotFoundError: No module named 'distutils.util'

MikanOSのビルド中にエラー

MikanOSのビルド中にエラーが発生しました。
発生状況は以下の通りです。

image

環境はWSL2+Ubuntu20.04

エラーの該当箇所をコメントアウトした結果、ビルド、実行ともにうまくいきました。
ただ、なぜエラーが発生したのか、コメントアウトしたままでよいのかが分かりません。

分かる方いらっしゃいましたら教えてください。

ブートローダ起動エラー「 failed to open file '\kernel.elf' : Not Found 」

解決方法をご教授頂きたいです。

osbook_day06b の写経終了後、ブートローダを起動したところ、下記エラーが発生しました。
クローンしたmikanosでも同じ現象が起きます(day6, 5 にて、設定ファイルを書き直し、ビルドもやり直した)

2週間前の時点では、osbook_day5までは、問題なく実行できていました。

---試したこと---
写径した他のチャプターでも再実行。
クローンしたコードのday6, day5で実行。
PC再起動、再度上を実施。

----この2週間、動作PCで行ったこと---
A5SQLとPostgreSQLのインストール。
VisualStudioをアップグレード。

---エラー発生時のQEMU---

image

---クローンした「osbook_day06b」の、エラー発生個所---

image

ansible_provision.ymlでインストールするパッケージが404エラー

WSL2のUbuntu20.04.3 LTS (Focal Fossa)の環境で ansible-playbook -K -i ansible_inventory ansible_provision.yml を実行するとlatestのパッケージを取得しに行かず、404エラーを返してしまう。

  • 環境
cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
  • 実行コマンドとエラーメッセージ
$ sudo apt update
Hit:1 https://download.docker.com/linux/ubuntu focal InRelease
Hit:2 https://baltocdn.com/helm/stable/debian all InRelease
Hit:3 https://packages.microsoft.com/repos/azure-cli focal InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal InRelease
Get:5 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Reading package lists... Done
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease is not valid yet (invalid for another 11h 44min 18s). Updates for this repository will not be applied.
E: Release file for http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease is not valid yet (invalid for another 11h 43min 23s). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease is not valid yet (invalid for another 11h 45min 40s). Updates for this repository will not be applied.

$ ansible-playbook -K -i ansible_inventory ansible_provision.yml
BECOME password:

PLAY [all] *******************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [ensure development tools are at the latest version] ********************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"cache_update_time": 1659861544, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\"      install 'llvm-7-dev' 'lld-7' 'clang-7' 'nasm' 'acpica-tools' 'uuid-dev' 'qemu-system-x86' 'qemu-utils' -o APT::Install-Recommends=no' failed: E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_15.2.14-0ubuntu0.20.04.2_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_15.2.14-0ubuntu0.20.04.2_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-data_4.2-3ubuntu6.21_all.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?\n", "rc": 100, "stderr": "E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_15.2.14-0ubuntu0.20.04.2_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_15.2.14-0ubuntu0.20.04.2_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-data_4.2-3ubuntu6.21_all.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]\nE: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?\n", "stderr_lines": ["E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_15.2.14-0ubuntu0.20.04.2_amd64.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_15.2.14-0ubuntu0.20.04.2_amd64.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-data_4.2-3ubuntu6.21_all.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_4.2-3ubuntu6.21_amd64.deb  404  Not Found [IP: 185.125.190.36 80]", "E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?"], "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nThe following packages were automatically installed and are no longer required:\n  golang-1.13 golang-1.13-doc golang-1.13-go golang-1.13-race-detector-runtime\n  golang-1.13-src golang-doc golang-go golang-race-detector-runtime golang-src\n  liblua5.2-0 libnl-genl-3-200 libqt5multimedia5 libqt5multimedia5-plugins\n  libqt5multimediagsttools5 libqt5multimediawidgets5 libqt5opengl5 libsbc1\n  libsmi2ldbl libsnappy1v5 libspandsp2 libspeexdsp1 libssh-gcrypt-4\n  libwireshark-data libwireshark13 libwiretap10 libwsutil11 pkg-config\n  wireshark-common wireshark-qt\nUse 'sudo apt autoremove' to remove them.\nThe following additional packages will be installed:\n  acl ipxe-qemu ipxe-qemu-256k-compat-efi-roms libboost-iostreams1.71.0\n  libboost-thread1.71.0 libbrlapi0.7 libcacard0 libclang-common-7-dev\n  libclang1-7 libfdt1 libibverbs1 libiscsi7 libllvm7 libpcsclite1 libpmem1\n  librados2 librbd1 librdmacm1 libslirp0 libspice-server1 libusbredirparser1\n  libuuid1 libvirglrenderer1 llvm-7 llvm-7-runtime qemu-block-extra\n  qemu-system-common qemu-system-data seabios\nSuggested packages:\n  pcscd gstreamer1.0-plugins-ugly samba vde2 debootstrap\nRecommended packages:\n  libomp-7-dev ibverbs-providers gstreamer1.0-plugins-good qemu-system-gui\n  ovmf cpu-checker sharutils\nThe following NEW packages will be installed:\n  acl acpica-tools clang-7 ipxe-qemu ipxe-qemu-256k-compat-efi-roms\n  libboost-iostreams1.71.0 libboost-thread1.71.0 libbrlapi0.7 libcacard0\n  libclang-common-7-dev libclang1-7 libfdt1 libibverbs1 libiscsi7 libllvm7\n  libpcsclite1 libpmem1 librados2 librbd1 librdmacm1 libslirp0\n  libspice-server1 libusbredirparser1 libvirglrenderer1 lld-7 llvm-7\n  llvm-7-dev llvm-7-runtime nasm qemu-block-extra qemu-system-common\n  qemu-system-data qemu-system-x86 qemu-utils seabios uuid-dev\nThe following packages will be upgraded:\n  libuuid1\n1 upgraded, 36 newly installed, 0 to remove and 103 not upgraded.\nNeed to get 14.2 MB/74.9 MB of archives.\nAfter this operation, 429 MB of additional disk space will be used.\nErr:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 librados2 amd64 15.2.14-0ubuntu0.20.04.2\n  404  Not Found [IP: 185.125.190.36 80]\nErr:2 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 librbd1 amd64 15.2.14-0ubuntu0.20.04.2\n  404  Not Found [IP: 185.125.190.36 80]\nIgn:3 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-block-extra amd64 1:4.2-3ubuntu6.21\nIgn:4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-common amd64 1:4.2-3ubuntu6.21\nIgn:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-data all 1:4.2-3ubuntu6.21\nIgn:6 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-x86 amd64 1:4.2-3ubuntu6.21\nIgn:7 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-utils amd64 1:4.2-3ubuntu6.21\nErr:3 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-block-extra amd64 1:4.2-3ubuntu6.21\n  404  Not Found [IP: 185.125.190.36 80]\nErr:4 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-common amd64 1:4.2-3ubuntu6.21\n  404  Not Found [IP: 185.125.190.36 80]\nErr:5 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-data all 1:4.2-3ubuntu6.21\n  404  Not Found [IP: 185.125.190.36 80]\nErr:6 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-x86 amd64 1:4.2-3ubuntu6.21\n  404  Not Found [IP: 185.125.190.36 80]\nErr:7 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-utils amd64 1:4.2-3ubuntu6.21\n  404  Not Found [IP: 185.125.190.36 80]\n", "stdout_lines": ["Reading package lists...", "Building dependency tree...", "Reading state information...", "The following packages were automatically installed and are no longer required:", "  golang-1.13 golang-1.13-doc golang-1.13-go golang-1.13-race-detector-runtime", "  golang-1.13-src golang-doc golang-go golang-race-detector-runtime golang-src", "  liblua5.2-0 libnl-genl-3-200 libqt5multimedia5 libqt5multimedia5-plugins", "  libqt5multimediagsttools5 libqt5multimediawidgets5 libqt5opengl5 libsbc1", "  libsmi2ldbl libsnappy1v5 libspandsp2 libspeexdsp1 libssh-gcrypt-4", "  libwireshark-data libwireshark13 libwiretap10 libwsutil11 pkg-config", "  wireshark-common wireshark-qt", "Use 'sudo apt autoremove' to remove them.", "The following additional packages will be installed:", "  acl ipxe-qemu ipxe-qemu-256k-compat-efi-roms libboost-iostreams1.71.0", "  libboost-thread1.71.0 libbrlapi0.7 libcacard0 libclang-common-7-dev", "  libclang1-7 libfdt1 libibverbs1 libiscsi7 libllvm7 libpcsclite1 libpmem1", "  librados2 librbd1 librdmacm1 libslirp0 libspice-server1 libusbredirparser1", "  libuuid1 libvirglrenderer1 llvm-7 llvm-7-runtime qemu-block-extra", "  qemu-system-common qemu-system-data seabios", "Suggested packages:", "  pcscd gstreamer1.0-plugins-ugly samba vde2 debootstrap", "Recommended packages:", "  libomp-7-dev ibverbs-providers gstreamer1.0-plugins-good qemu-system-gui", "  ovmf cpu-checker sharutils", "The following NEW packages will be installed:", "  acl acpica-tools clang-7 ipxe-qemu ipxe-qemu-256k-compat-efi-roms", "  libboost-iostreams1.71.0 libboost-thread1.71.0 libbrlapi0.7 libcacard0", "  libclang-common-7-dev libclang1-7 libfdt1 libibverbs1 libiscsi7 libllvm7", "  libpcsclite1 libpmem1 librados2 librbd1 librdmacm1 libslirp0", "  libspice-server1 libusbredirparser1 libvirglrenderer1 lld-7 llvm-7", "  llvm-7-dev llvm-7-runtime nasm qemu-block-extra qemu-system-common", "  qemu-system-data qemu-system-x86 qemu-utils seabios uuid-dev", "The following packages will be upgraded:", "  libuuid1", "1 upgraded, 36 newly installed, 0 to remove and 103 not upgraded.", "Need to get 14.2 MB/74.9 MB of archives.", "After this operation, 429 MB of additional disk space will be used.", "Err:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 librados2 amd64 15.2.14-0ubuntu0.20.04.2", "  404  Not Found [IP: 185.125.190.36 80]", "Err:2 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 librbd1 amd64 15.2.14-0ubuntu0.20.04.2", "  404  Not Found [IP: 185.125.190.36 80]", "Ign:3 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-block-extra amd64 1:4.2-3ubuntu6.21", "Ign:4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-common amd64 1:4.2-3ubuntu6.21", "Ign:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-data all 1:4.2-3ubuntu6.21", "Ign:6 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-x86 amd64 1:4.2-3ubuntu6.21", "Ign:7 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 qemu-utils amd64 1:4.2-3ubuntu6.21", "Err:3 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-block-extra amd64 1:4.2-3ubuntu6.21", "  404  Not Found [IP: 185.125.190.36 80]", "Err:4 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-common amd64 1:4.2-3ubuntu6.21", "  404  Not Found [IP: 185.125.190.36 80]", "Err:5 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-data all 1:4.2-3ubuntu6.21", "  404  Not Found [IP: 185.125.190.36 80]", "Err:6 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-system-x86 amd64 1:4.2-3ubuntu6.21", "  404  Not Found [IP: 185.125.190.36 80]", "Err:7 http://security.ubuntu.com/ubuntu focal-updates/main amd64 qemu-utils amd64 1:4.2-3ubuntu6.21", "  404  Not Found [IP: 185.125.190.36 80]"]}

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

Ubuntu 20.04.2 LTS上でansible-playbook -K -i ansible_inventory ansible_provision.ymlが失敗する

プログラミング、Linux共に初心者です。
Ubuntu20.04.2 LTS上で開発環境の構築をしていて、

ansible-playbook -K -i ansible_inventory ansible_provision.yml

を実行すると

Traceback (most recent call last): File "/usr/bin/ansible-playbook", line 34, in <module> from ansible import context ModuleNotFoundError: No module named 'ansible'

となり、sudoをつけて

sudo ansible-playbook -K -i ansible_inventory ansible_provision.yml

と実行すると

TASK [download standard libraries] ********************************************* fatal: [localhost]: FAILED! => {"changed": false, "msg": "dest '/root/osbook/devenv' must be an existing dir"}

と出て失敗してしまいます。

iaslコマンドはインストールされますが、edk2がインストールされておらず、${HOME}/edk2も存在しません。

自分の力のみでは解決できないと判断しissueに投稿させていただきます。
よろしくおねがいします。

How can I fix it?

I want 'ansible-playbook -K -i ansible_inventory ansible_provision.yml' to work, but it doesn't.
It's just that 'fatal: [localhost]: FAILED! => it only gives me the error {"changed": false, "msg": "No package matching 'llvm-7-dev' is available"}'.
how can i fix it?
this is a log:
$ ansible-playbook -K -i ansible_inventory ansible_provision.yml
BECOME password:

PLAY [all] *************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]

TASK [ensure development tools are at the latest version] **************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'llvm-7-dev' is available"}

PLAY RECAP *************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

qemuの起動が出来ません

プログラミング経験は1年半ほどです。環境はwindowsでUSBメモリを使わず構築しようと試みています。

mikanos-buildページと書籍に従って開発環境を構築しています。
WSL2とubuntuの設定・bootloaderとmikanosのビルド・Xlaunchのインストールを済ませてようやくqemuを動かそうと思ったところ、下記のようなwarningが出てしまい起動できません。

解決策、アドバイスなどお願いします!(参考URLなど貼っていただけると非常に助かります)

< warning >
(qemu) qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] Could not initialize SDL(No available video device) - exiting

< 以下実行結果全体 >
~/mikanos$ ./build.sh run
make: Entering directory '/home/mikan_user/mikanos/kernel'
make: 'kernel.elf' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/kernel'
make: Entering directory '/home/mikan_user/mikanos/apps/blocks'
make: 'blocks' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/blocks'
make: Entering directory '/home/mikan_user/mikanos/apps/cp'
make: 'cp' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/cp'
make: Entering directory '/home/mikan_user/mikanos/apps/cube'
make: 'cube' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/cube'
make: Entering directory '/home/mikan_user/mikanos/apps/dpage'
make: 'dpage' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/dpage'
make: Entering directory '/home/mikan_user/mikanos/apps/eye'
make: 'eye' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/eye'
make: Entering directory '/home/mikan_user/mikanos/apps/fault'
make: 'fault' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/fault'
make: Entering directory '/home/mikan_user/mikanos/apps/grep'
make: 'grep' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/grep'
make: Entering directory '/home/mikan_user/mikanos/apps/gview'
make: 'gview' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/gview'
make: Entering directory '/home/mikan_user/mikanos/apps/large'
make: 'large' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/large'
make: Entering directory '/home/mikan_user/mikanos/apps/lines'
make: 'lines' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/lines'
make: Entering directory '/home/mikan_user/mikanos/apps/mandel'
make: 'mandel' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/mandel'
make: Entering directory '/home/mikan_user/mikanos/apps/mmap'
make: 'mmap' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/mmap'
make: Entering directory '/home/mikan_user/mikanos/apps/more'
make: 'more' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/more'
make: Entering directory '/home/mikan_user/mikanos/apps/onlyhlt'
make: 'onlyhlt' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/onlyhlt'
make: Entering directory '/home/mikan_user/mikanos/apps/paint'
make: 'paint' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/paint'
make: Entering directory '/home/mikan_user/mikanos/apps/readfile'
make: 'readfile' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/readfile'
make: Entering directory '/home/mikan_user/mikanos/apps/rpn'
make: 'rpn' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/rpn'
make: Entering directory '/home/mikan_user/mikanos/apps/sort'
make: 'sort' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/sort'
make: Entering directory '/home/mikan_user/mikanos/apps/stars'
make: 'stars' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/stars'
make: Entering directory '/home/mikan_user/mikanos/apps/timer'
make: 'timer' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/timer'
make: Entering directory '/home/mikan_user/mikanos/apps/tview'
make: 'tview' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/tview'
make: Entering directory '/home/mikan_user/mikanos/apps/winhello'
make: 'winhello' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/winhello'
make: Entering directory '/home/mikan_user/mikanos/apps/winjpn'
make: 'winjpn' is up to date.
make: Leaving directory '/home/mikan_user/mikanos/apps/winjpn'

  • dirname /home/mikan_user/osbook/devenv/make_mikanos_image.sh
  • DEVENV_DIR=/home/mikan_user/osbook/devenv
  • MOUNT_POINT=./mnt
  • [ ./disk.img = ]
  • [ /home/mikan_user/mikanos = ]
  • LOADER_EFI=/home/mikan_user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi
  • KERNEL_ELF=/home/mikan_user/mikanos/kernel/kernel.elf
  • /home/mikan_user/osbook/devenv/make_image.sh ./disk.img ./mnt /home/mikan_user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi /home/mikan_user/mikanos/kernel/kernel.elf
  • [ 4 -lt 3 ]
  • dirname /home/mikan_user/osbook/devenv/make_image.sh
  • DEVENV_DIR=/home/mikan_user/osbook/devenv
  • DISK_IMG=./disk.img
  • MOUNT_POINT=./mnt
  • EFI_FILE=/home/mikan_user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi
  • ANOTHER_FILE=/home/mikan_user/mikanos/kernel/kernel.elf
  • [ ! -f /home/mikan_user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi ]
  • rm -f ./disk.img
  • qemu-img create -f raw ./disk.img 200M
    Formatting './disk.img', fmt=raw size=209715200
  • mkfs.fat -n MIKAN OS -s 2 -f 2 -R 32 -F 32 ./disk.img
    mkfs.fat 4.1 (2017-01-24)
  • /home/mikan_user/osbook/devenv/mount_image.sh ./disk.img ./mnt
  • [ 2 -lt 2 ]
  • dirname /home/mikan_user/osbook/devenv/mount_image.sh
  • DEVENV_DIR=/home/mikan_user/osbook/devenv
  • DISK_IMG=./disk.img
  • MOUNT_POINT=./mnt
  • [ ! -f ./disk.img ]
  • mkdir -p ./mnt
  • sudo mount -o loop ./disk.img ./mnt
    [sudo] password for mikan_user:
  • sudo mkdir -p ./mnt/EFI/BOOT
  • sudo cp /home/mikan_user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi ./mnt/EFI/BOOT/BOOTX64.EFI
  • [ /home/mikan_user/mikanos/kernel/kernel.elf != ]
  • sudo cp /home/mikan_user/mikanos/kernel/kernel.elf ./mnt/
  • sleep 0.5
  • sudo umount ./mnt
  • /home/mikan_user/osbook/devenv/mount_image.sh ./disk.img ./mnt
  • [ 2 -lt 2 ]
  • dirname /home/mikan_user/osbook/devenv/mount_image.sh
  • DEVENV_DIR=/home/mikan_user/osbook/devenv
  • DISK_IMG=./disk.img
  • MOUNT_POINT=./mnt
  • [ ! -f ./disk.img ]
  • mkdir -p ./mnt
  • sudo mount -o loop ./disk.img ./mnt
  • [ != ]
  • ls /home/mikan_user/mikanos/apps
  • [ -f /home/mikan_user/mikanos/apps/Makefile.elfapp/Makefile.elfapp ]
  • [ -f /home/mikan_user/mikanos/apps/blocks/blocks ]
  • sudo cp /home/mikan_user/mikanos/apps/blocks/blocks ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/cp/cp ]
  • sudo cp /home/mikan_user/mikanos/apps/cp/cp ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/cube/cube ]
  • sudo cp /home/mikan_user/mikanos/apps/cube/cube ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/dpage/dpage ]
  • sudo cp /home/mikan_user/mikanos/apps/dpage/dpage ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/eye/eye ]
  • sudo cp /home/mikan_user/mikanos/apps/eye/eye ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/fault/fault ]
  • sudo cp /home/mikan_user/mikanos/apps/fault/fault ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/grep/grep ]
  • sudo cp /home/mikan_user/mikanos/apps/grep/grep ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/gview/gview ]
  • sudo cp /home/mikan_user/mikanos/apps/gview/gview ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/large/large ]
  • sudo cp /home/mikan_user/mikanos/apps/large/large ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/lines/lines ]
  • sudo cp /home/mikan_user/mikanos/apps/lines/lines ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/mandel/mandel ]
  • sudo cp /home/mikan_user/mikanos/apps/mandel/mandel ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/mmap/mmap ]
  • sudo cp /home/mikan_user/mikanos/apps/mmap/mmap ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/more/more ]
  • sudo cp /home/mikan_user/mikanos/apps/more/more ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/newlib_support.c/newlib_support.c ]
  • [ -f /home/mikan_user/mikanos/apps/newlib_support.o/newlib_support.o ]
  • [ -f /home/mikan_user/mikanos/apps/onlyhlt/onlyhlt ]
  • sudo cp /home/mikan_user/mikanos/apps/onlyhlt/onlyhlt ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/paint/paint ]
  • sudo cp /home/mikan_user/mikanos/apps/paint/paint ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/readfile/readfile ]
  • sudo cp /home/mikan_user/mikanos/apps/readfile/readfile ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/rpn/rpn ]
  • sudo cp /home/mikan_user/mikanos/apps/rpn/rpn ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/sort/sort ]
  • sudo cp /home/mikan_user/mikanos/apps/sort/sort ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/stars/stars ]
  • sudo cp /home/mikan_user/mikanos/apps/stars/stars ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/syscall.asm/syscall.asm ]
  • [ -f /home/mikan_user/mikanos/apps/syscall.h/syscall.h ]
  • [ -f /home/mikan_user/mikanos/apps/syscall.o/syscall.o ]
  • [ -f /home/mikan_user/mikanos/apps/timer/timer ]
  • sudo cp /home/mikan_user/mikanos/apps/timer/timer ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/tview/tview ]
  • sudo cp /home/mikan_user/mikanos/apps/tview/tview ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/winhello/winhello ]
  • sudo cp /home/mikan_user/mikanos/apps/winhello/winhello ./mnt/
  • [ -f /home/mikan_user/mikanos/apps/winjpn/winjpn ]
  • sudo cp /home/mikan_user/mikanos/apps/winjpn/winjpn ./mnt/
  • [ != ]
  • sleep 0.5
  • sudo umount ./mnt
  • [ 1 -lt 1 ]
  • dirname /home/mikan_user/osbook/devenv/run_image.sh
  • DEVENV_DIR=/home/mikan_user/osbook/devenv
  • DISK_IMG=./disk.img
  • [ ! -f ./disk.img ]
  • qemu-system-x86_64 -m 1G -drive if=pflash,format=raw,readonly,file=/home/mikan_user/osbook/devenv/OVMF_CODE.fd -drive if=pflash,format=raw,file=/home/mikan_user/osbook/devenv/OVMF_VARS.fd -drive if=ide,index=0,media=disk,format=raw,file=./disk.img -device nec-usb-xhci,id=xhci -device usb-mouse -device usb-kbd -monitor stdio -display sdl
    QEMU 2.11.1 monitor - type 'help' for more information
    (qemu) qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]
    Could not initialize SDL(No available video device) - exiting

開発環境の設定(ブートローダーのビルド)がうまくいかない

プログラミング、Linux経験ないです。
virtualbox、ubuntu20.04.4LTSでしてます。
1章のハローワールド(謎の数値列)をエミュレータで実行しようとhttps://github.com/uchan-nos/mikanos-buildをみて開発環境を準備してました。そのサイトの“ブートローダのビルド”のところの
$ ls MikanLoaderPkg/Main.c
を実行してみたのですが、「ls ‘MikanLoaderPkg/Main.c’にアクセスできません: そのようなファイルやディレクトリはありません」となりうまくいきません。
$ ls MikanLoaderPkg/Main.c 
の前に
$ cd $HOME/edk2
$ ln -s /path/to/mikanos/MikanLoaderPkg ./
を実行しています。

ディレクトリのedk2でlsコマンドを実行してみたらMikanLoaderPkgが赤色だったので
$ ln -s /path/to/mikanos/MikanLoaderPkg ./
で作成したそのシンボリックリンクMikanLoaderPkgを消して自分なりに考えて
$ ln -s $HOME/osbook/devenv/mikanos/MikanLoaderPkg ./
を実行しました。lsコマンドを実行すると今度は赤色でなかったので再度
$ ls MikanLoaderPkg/Main.c
を実行してみたのですが、今度は「MikanLoaderPkg/Main.c」と表示されるだけで、https://github.com/uchan-nos/mikanos-buildの“ブートローダのビルド”のところで書かれているブートローダーのソースコードらしきものは確認できませんでした。
ちなみにhttps://github.com/uchan-nos/mikanos-buildの“ブートローダのビルド”のところの前の“MikanOS のソースコードの入手”は $HOME/osbook/devenv のdevenvで実行してました。

どなたか解決方法、アドバイスなどを教えていただきたいです。

WSL2でビルド環境構築の際に発生したエラーとその対処法

githubの扱いにも慣れてなく、issueを立てるのはこれが初めてで、なにかしらの不備があることをあらかじめ謝罪します。

先日Ubuntu20.04 in WSL2でこのリポジトリの通りに環境構築を行った際にエラーが発生したため、その内容と対処法をまとめます。
基本的には

ansible-playbook -K -i ansible_inventory ansible_provision.yml

を実行した際にエラーが発生しました。
最初のエラーは

fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'llvm-7-dev' is available"}

のような内容のエラーが発生しました。これについてはUbuntu20.04の場合に発生するエラーで、Ubuntu 22.04にアップグレードする、あるいはリポジトリのダウンロード欄にある通り、リポジトリのチェックアウトを行うとよいようです。特にllvm-14-devを使用している場合はバグが報告されているため、リポジトリのチェックアウトを行うことを推奨します。

次に

Could not import python modules: apt, apt_pkg. Please install python3-apt package.

のような内容のエラーが発生しました。
エラーの内容としてはコマンド実行時に起動するpython3内でモジュールが読み込めない旨のものになっています。
調べたところ、apt, apt_pkgモジュールは管理者権限があると読み込みに成功するとのことだったので、
コマンド実行時にsudoをつけて、管理者権限を付与することによってこのエラーを回避できました。

次に

dest '/root/osbook/devenv' must be an existing dir

のような内容のエラーが発生しました。
これは/root/osbook/devenvフォルダーが存在しなければならない旨を示すエラーです。どうやら

sudo whoami

を実行した際にrootと表示される場合、root以下のディレクトリにファイルを展開しようとするようです。
これの対処を行い、最終的に

whoami

で出力されるユーザー名をuser-nameに置き換えて

sudo -u user-name ansible-playbook -K -i ansible_inventory ansible_provision.yml

で実行すると正常に動作させることができました。

混乱を招かないために必要だと考えたこととして、ワーキングフォルダを自分で勝手に設定するのではなく、必ず指示通りにホームディレクトリ以下にリポジトリをダウンロードする必要がある旨を記載したほうが良いと思います。

最後に非常にわかりやすく、初心者にわかりやすい本を書いてくださった著者様に感謝申し上げます。

How to used intel USB 3.0 xhci ?

I has a NUC that the mini pc.
It has intel usb 3.0 .
I am try to build mikan os. but not used usb .
help me please.

day6 , 7 and after .

[質問] OVMF_CODE.fd,OVMF_VARS.fdについて

mikanos-buildで配布されているOVMF_{CODE,VARS}.fdを使用した場合、特にメッセージ等が表示されることなく、MikanOSのブートローダが起動します。

edk2-stable202102を使用して、OvmfPkgをビルドし作成したOVMF_{CODE,VARS}.fdでは、QEMU起動時に以下のようなメッセージが最初に表示されます。

BdsDxe: failed to load Boot0001 "UEFI QEMU DVD-ROM QM00003 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Secondary,Master,0x0): Not Found 
BdsDxe: loading Boot0002 "UEFI QEMU HARDDISK QM00001 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0) 
BdsDxe: starting Boot0002 "UEFI QEMU HARDDISK QM00001 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)

mikanos-build用のOVMF_{CODE,VARS}.fdを準備する際に、メッセージが表示されないように、何か設定されているのでしょうか?

WSL2でビルド

Ansibleでの環境構築まではすんなりいくが,build.shで起動しようとするとQEMU画面が表示されない。

$ ./build.sh run

で起動させると次の表示で止まる。QEMUは裏で動いているようにみえるがどこにも表示されない。

+ qemu-system-x86_64 -m 1G -drive if=pflash,format=raw,readonly,file=/home/uchan/osbook/devenv/OVMF_CODE.fd -drive if=pflash,format=raw,file=/home/uchan/osbook/devenv/OVMF_VARS.fd -drive if=ide,index=0,media=disk,format=raw,file=./disk.img -device nec-usb-xhci,id=xhci -device usb-mouse -device usb-kbd -monitor stdio
QEMU 4.2.1 monitor - type 'help' for more information
(qemu) VNC server running on 127.0.0.1:5900

$ QEMU_OPTS="-display gtk" ./build.sh run

とするもGTKがインストールされていないのでエラーになる。

qemu-system-x86_64: Display 'gtk' is not available.

MikanOS のビルド の ./build.sh が失敗する

WSL2 上で環境を構築しようとReadme を実行していました.
./build.sh を実行したところ下記のようなエラーが発生し,ビルドが失敗しました.

make: *** No rule to make target '/home/main.osbook/devenv/x86_64-elf/include/c++/v1/cstdint', needed by 'main.o'. Stop

ユーザ名がmain なので,エラー分の パスが main.osbook  となっていることがエラーの原因だと思うのですが,修正方法が分かりません.

よろしくお願いします.

以下にコマンド実行からの全てを記載します
main@DESKTOP-0EG4N3U:~/mikanos$ ./build.sh
make: Entering directory '/home/main/mikanos/kernel'
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/classdriver/cdc.cpp > usb/classdriver/.cdc.d
sed --in-place 's|cdc.o|usb/classdriver/cdc.o|' usb/classdriver/.cdc.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/classdriver/mouse.cpp > usb/classdriver/.mouse.d
sed --in-place 's|mouse.o|usb/classdriver/mouse.o|' usb/classdriver/.mouse.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/classdriver/keyboard.cpp > usb/classdriver/.keyboard.d
sed --in-place 's|keyboard.o|usb/classdriver/keyboard.o|' usb/classdriver/.keyboard.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/classdriver/hid.cpp > usb/classdriver/.hid.d
sed --in-place 's|hid.o|usb/classdriver/hid.o|' usb/classdriver/.hid.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/classdriver/base.cpp > usb/classdriver/.base.d
sed --in-place 's|base.o|usb/classdriver/base.o|' usb/classdriver/.base.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/registers.cpp > usb/xhci/.registers.d
sed --in-place 's|registers.o|usb/xhci/registers.o|' usb/xhci/.registers.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/devmgr.cpp > usb/xhci/.devmgr.d
sed --in-place 's|devmgr.o|usb/xhci/devmgr.o|' usb/xhci/.devmgr.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/device.cpp > usb/xhci/.device.d
sed --in-place 's|device.o|usb/xhci/device.o|' usb/xhci/.device.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/port.cpp > usb/xhci/.port.d
sed --in-place 's|port.o|usb/xhci/port.o|' usb/xhci/.port.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/xhci.cpp > usb/xhci/.xhci.d
sed --in-place 's|xhci.o|usb/xhci/xhci.o|' usb/xhci/.xhci.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/trb.cpp > usb/xhci/.trb.d
sed --in-place 's|trb.o|usb/xhci/trb.o|' usb/xhci/.trb.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/xhci/ring.cpp > usb/xhci/.ring.d
sed --in-place 's|ring.o|usb/xhci/ring.o|' usb/xhci/.ring.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/device.cpp > usb/.device.d
sed --in-place 's|device.o|usb/device.o|' usb/.device.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM usb/memory.cpp > usb/.memory.d
sed --in-place 's|memory.o|usb/memory.o|' usb/.memory.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM file.cpp > .file.d
sed --in-place 's|file.o|file.o|' .file.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM syscall.cpp > .syscall.d
sed --in-place 's|syscall.o|syscall.o|' .syscall.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM fat.cpp > .fat.d
sed --in-place 's|fat.o|fat.o|' .fat.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM terminal.cpp > .terminal.d
sed --in-place 's|terminal.o|terminal.o|' .terminal.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM task.cpp > .task.d
sed --in-place 's|task.o|task.o|' .task.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM keyboard.cpp > .keyboard.d
sed --in-place 's|keyboard.o|keyboard.o|' .keyboard.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM acpi.cpp > .acpi.d
sed --in-place 's|acpi.o|acpi.o|' .acpi.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM frame_buffer.cpp > .frame_buffer.d
sed --in-place 's|frame_buffer.o|frame_buffer.o|' .frame_buffer.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM timer.cpp > .timer.d
sed --in-place 's|timer.o|timer.o|' .timer.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM layer.cpp > .layer.d
sed --in-place 's|layer.o|layer.o|' .layer.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM window.cpp > .window.d
sed --in-place 's|window.o|window.o|' .window.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM memory_manager.cpp > .memory_manager.d
sed --in-place 's|memory_manager.o|memory_manager.o|' .memory_manager.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM paging.cpp > .paging.d
sed --in-place 's|paging.o|paging.o|' .paging.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM segment.cpp > .segment.d
sed --in-place 's|segment.o|segment.o|' .segment.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM interrupt.cpp > .interrupt.d
sed --in-place 's|interrupt.o|interrupt.o|' .interrupt.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM logger.cpp > .logger.d
sed --in-place 's|logger.o|logger.o|' .logger.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM libcxx_support.cpp > .libcxx_support.d
sed --in-place 's|libcxx_support.o|libcxx_support.o|' .libcxx_support.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM pci.cpp > .pci.d
sed --in-place 's|pci.o|pci.o|' .pci.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM console.cpp > .console.d
sed --in-place 's|console.o|console.o|' .console.d
clang -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -MM newlib_support.c > .newlib_support.d
sed --in-place 's|newlib_support.o|newlib_support.o|' .newlib_support.d
../tools/makefont.py -o hankaku.bin hankaku.txt
touch .hankaku.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM font.cpp > .font.d
sed --in-place 's|font.o|font.o|' .font.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM mouse.cpp > .mouse.d
sed --in-place 's|mouse.o|mouse.o|' .mouse.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM graphics.cpp > .graphics.d
sed --in-place 's|graphics.o|graphics.o|' .graphics.d
clang++ -I/home/main/osbook/devenv/x86_64-elf/include/c++/v1 -I/home/main/osbook/devenv/x86_64-elf/include -I/home/main/osbook/devenv/x86_64-elf/include/freetype2 -I/home/main/edk2/MdePkg/Include -I/home/main/edk2/MdePkg/Include/X64 -nostdlibinc -D__ELF__ -D_LDBL_EQ_DBL -D_GNU_SOURCE -D_POSIX_TIMERS -DEFIAPI='attribute((ms_abi))' -I. -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -MM main.cpp > .main.d
sed --in-place 's|main.o|main.o|' .main.d
make: *** No rule to make target '/home/main.osbook/devenv/x86_64-elf/include/c++/v1/cstdint', needed by 'main.o'. Stop.
make: Leaving directory '/home/main/mikanos/kernel'

UEFIのブートオーダー

Ubuntu 20.04で、1.4章のHello WorldをQEMUを使って起動したところ、当方の環境では、PXEv4のブート優先順位が高く、
「Start PXE over IPv4.」
が表示され起動しませんでした。

ESCを連打してブートメニューを表示し、「UEFI QEMU HARDDISK」のブートオーダーを上げることでHello Worldが表示できるようになりました。また、この設定を保存し、OVMF_VARS.fdを更新することで次回からは仮想hddからブートするようになっています。

私の環境では、デフォルトのブートオーダーが異なったようです。

ブートローダーのビルド

WSL2にて、「ブートローダーのビルド」内のbuildコマンドを実行すると

/hoge/edk2/MikanLoaderPkg/MikanLoaderPkg.dsc(...): error 4000: Instance of library class [RegisterFilterLib] is not found
        in [/hoge/edk2/MdePkg/Library/BaseLib/BaseLib.inf] [X64]
        consumed by module [/hoge/edk2/MikanLoaderPkg/Loader.inf]

と表示されビルドが失敗してしまいます。
もしかしたら原因は「ansible-playbook -K -i ansible_inventory ansible_provision.yml」を実行したときの

TASK [check whether qemu-system-gui exists] ****************************************************************************fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["dpkg-query", "--show", "qemu-system-gui"], "delta": "0:00:00.006472", "end": "2021-04-08 17:14:46.277047", "msg": "non-zero return code", "rc": 1, "start": "2021-04-08 17:14:46.270575", "stderr": "dpkg-query: no packages found matching qemu-system-gui", "stderr_lines": ["dpkg-query: no packages found matching qemu-system-gui"], "stdout": "", "stdout_lines": []}

かもしれませんが対処法が分かりません。
解決策はありますでしょうか。

よろしくお願いします。

ブートローダーのエラー

ブートローダーのショートカットリンク作成のエラーについて。


環境:
Microsoft Store Ubuntu 18.04 LTS

ゼロからのOS自作入門から。

$ ln -s /path/to/mikanos/MikanLoaderPkg ./

ln -s $HOME/workspace/mikanos/MikanLoaderPkg/ ./

に修正すると動きます。

以下にコマンドを書きます。
全ての出力
続き

$ は入力
> はubuntu側からの出力

$ cd $HOME
$ mkdir workspace
$ git clone https://github.com/uchan-nos/mikanos.git
> Cloning .....

$ cd $HOME/edk2
$ ln -s $HOME/workspace/mikanos/MikanLoaderPkg/ ./  #ここで `edk2` フォルダにMikanLoaderPkgのショートカットリンクを作成
$ ls MikanLoaderPkg/Main.c
> MikanLoaderPkg/Main.c
$ source edksetup.sh
> Using EDK2 in-source Basetools ........
> Copying .....

$ build
> Build environment: Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-Ubuntu-18.04-bionic ......
> 200行近くの出力
> - Done -
> Build end time: 13:30:41, May.08 2022
> Build total time: 00:00:12

$ ls Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi
> Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi

$ cd $HOME/workspace/mikanos/
$  ./build.sh
> make: Entering directory '/home/peco_2282/workspace/mikanos/kernel'
> 200行近い出力
> + sleep 0.5
> + sudo umount ./mnt

WSLでブートローダーのビルドがエラーになる

MikanLoaderPkg を EDK2 on WSL でビルドするとエラーになる。
エラーを引き起こしたコマンドとエラー出力は次の通り(EDK2 の build コマンドが制御するビルドプロセスの途中段階)。

"nasm" -I/home/uchan/edk2/MdePkg/Library/BaseLib/X64/ -f elf64 -o /home/uchan/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/LongJump.obj /home/uchan/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/LongJump.iii
/home/uchan/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/LongJump.iii:16: fatal: unable to open include file `Nasm.inc'

Nasm.inc が開けないといわれている。
EDK2 には次の 2 つの Nasm.inc が含まれているので,ファイルが存在しないわけではない。

  • MdePkg/Include/Ia32/Nasm.inc
  • MdePkg/Include/X64/Nasm.inc

nasm コマンドに渡しているインクルードパスが不十分なのだろうかと推測し,nasm に -I/home/uchan/edk2/MdePkg/Include/X64 を追加してみたが効果なし。

試したコマンドと出力のすべて

WSL1上でbuild.shがmountに失敗する

mount -o loop ./disk.img ./mntが以下のように失敗します。

$ ./build.sh
make: Entering directory '/home/user/mikanos/kernel'
make: 'kernel.elf' is up to date.
make: Leaving directory '/home/user/mikanos/kernel'
make: Entering directory '/home/user/mikanos/apps/blocks'
make: 'blocks' is up to date.
make: Leaving directory '/home/user/mikanos/apps/blocks'
make: Entering directory '/home/user/mikanos/apps/cp'
make: 'cp' is up to date.
make: Leaving directory '/home/user/mikanos/apps/cp'
make: Entering directory '/home/user/mikanos/apps/cube'
make: 'cube' is up to date.
make: Leaving directory '/home/user/mikanos/apps/cube'
make: Entering directory '/home/user/mikanos/apps/dpage'
make: 'dpage' is up to date.
make: Leaving directory '/home/user/mikanos/apps/dpage'
make: Entering directory '/home/user/mikanos/apps/eye'
make: 'eye' is up to date.
make: Leaving directory '/home/user/mikanos/apps/eye'
make: Entering directory '/home/user/mikanos/apps/fault'
make: 'fault' is up to date.
make: Leaving directory '/home/user/mikanos/apps/fault'
make: Entering directory '/home/user/mikanos/apps/grep'
make: 'grep' is up to date.
make: Leaving directory '/home/user/mikanos/apps/grep'
make: Entering directory '/home/user/mikanos/apps/gview'
make: 'gview' is up to date.
make: Leaving directory '/home/user/mikanos/apps/gview'
make: Entering directory '/home/user/mikanos/apps/large'
make: 'large' is up to date.
make: Leaving directory '/home/user/mikanos/apps/large'
make: Entering directory '/home/user/mikanos/apps/lines'
make: 'lines' is up to date.
make: Leaving directory '/home/user/mikanos/apps/lines'
make: Entering directory '/home/user/mikanos/apps/mmap'
make: 'mmap' is up to date.
make: Leaving directory '/home/user/mikanos/apps/mmap'
make: Entering directory '/home/user/mikanos/apps/more'
make: 'more' is up to date.
make: Leaving directory '/home/user/mikanos/apps/more'
make: Entering directory '/home/user/mikanos/apps/onlyhlt'
make: 'onlyhlt' is up to date.
make: Leaving directory '/home/user/mikanos/apps/onlyhlt'
make: Entering directory '/home/user/mikanos/apps/paint'
make: 'paint' is up to date.
make: Leaving directory '/home/user/mikanos/apps/paint'
make: Entering directory '/home/user/mikanos/apps/readfile'
make: 'readfile' is up to date.
make: Leaving directory '/home/user/mikanos/apps/readfile'
make: Entering directory '/home/user/mikanos/apps/rpn'
make: 'rpn' is up to date.
make: Leaving directory '/home/user/mikanos/apps/rpn'
make: Entering directory '/home/user/mikanos/apps/sort'
make: 'sort' is up to date.
make: Leaving directory '/home/user/mikanos/apps/sort'
make: Entering directory '/home/user/mikanos/apps/stars'
make: 'stars' is up to date.
make: Leaving directory '/home/user/mikanos/apps/stars'
make: Entering directory '/home/user/mikanos/apps/timer'
make: 'timer' is up to date.
make: Leaving directory '/home/user/mikanos/apps/timer'
make: Entering directory '/home/user/mikanos/apps/tview'
make: 'tview' is up to date.
make: Leaving directory '/home/user/mikanos/apps/tview'
make: Entering directory '/home/user/mikanos/apps/winhello'
make: 'winhello' is up to date.
make: Leaving directory '/home/user/mikanos/apps/winhello'
make: Entering directory '/home/user/mikanos/apps/winjpn'
make: 'winjpn' is up to date.
make: Leaving directory '/home/user/mikanos/apps/winjpn'
+ dirname /home/user/osbook/devenv/make_mikanos_image.sh
+ DEVENV_DIR=/home/user/osbook/devenv
+ MOUNT_POINT=./mnt
+ [ ./disk.img =  ]
+ [ /home/user/mikanos =  ]
+ LOADER_EFI=/home/user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi
+ KERNEL_ELF=/home/user/mikanos/kernel/kernel.elf
+ /home/user/osbook/devenv/make_image.sh ./disk.img ./mnt /home/user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi /home/user/mikanos/kernel/kernel.elf
+ [ 4 -lt 3 ]
+ dirname /home/user/osbook/devenv/make_image.sh
+ DEVENV_DIR=/home/user/osbook/devenv
+ DISK_IMG=./disk.img
+ MOUNT_POINT=./mnt
+ EFI_FILE=/home/user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi
+ ANOTHER_FILE=/home/user/mikanos/kernel/kernel.elf
+ [ ! -f /home/user/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi ]
+ rm -f ./disk.img
+ qemu-img create -f raw ./disk.img 200M
Formatting './disk.img', fmt=raw size=209715200
+ mkfs.fat -n MIKAN OS -s 2 -f 2 -R 32 -F 32 ./disk.img
mkfs.fat 4.1 (2017-01-24)
+ /home/user/osbook/devenv/mount_image.sh ./disk.img ./mnt
+ [ 2 -lt 2 ]
+ dirname /home/user/osbook/devenv/mount_image.sh
+ DEVENV_DIR=/home/user/osbook/devenv
+ DISK_IMG=./disk.img
+ MOUNT_POINT=./mnt
+ [ ! -f ./disk.img ]
+ mkdir -p ./mnt
+ sudo mount -o loop ./disk.img ./mnt
mount: ./mnt: mount failed: Operation not permitted.

そもそも、WSL1ではloop deviceがないことが原因で、mountが十分に動作しないようです。
microsoft/WSL#131

あまり良い回避策は見つからず、私がみた範囲ではWSL2かLinuxを使うのが妥当そうです。

WSL2 におけるブートローダーのビルドの失敗

Readme.mdの内容を上から順に実行していきましたが、buildコマンドを実行するところでビルドが失敗してしまいます。この場合の対処方法や、エラーログの確認方法をご教示いただきたいです。
実行時のメッセージは以下になります。

macky95@DESKTOP-HVL2064:~/edk2$ build
Build environment: Linux-5.4.72-microsoft-standard-WSL2-x86_64-with-Ubuntu-18.04-bionic
Build start time: 18:24:25, May.18 2021

WORKSPACE        = /home/macky95/edk2
EDK_TOOLS_PATH   = /home/macky95/edk2/BaseTools
CONF_PATH        = /home/macky95/edk2/Conf
PYTHON_COMMAND   = /usr/bin/python3.6


Processing meta-data .
Architecture(s)  = IA32
Build target     = DEBUG
Toolchain        = VS2015x86

Active Platform          = /home/macky95/edk2/EmulatorPkg/EmulatorPkg.dsc
...

- Failed -
Build end time: 18:24:28, May.18 2021
Build total time: 00:00:03

実行環境
Windows10 バージョン20H2(OSビルド19042.928)
WSL2:Ubuntu 18.04 LTS

付録A 開発環境のインストールについての質問

はじめまして。
以下の環境で開発ツールの導入を行っておりますが、
「ansible-playbook -K -i ansible_inventory ansible_provision.yml」を実行後に
TASK [clone EDK II repository] *************************************************でエラーが出て止まってしまいます。

`TASK [clone EDK II repository] *************************************************
fatal: [localhost]: FAILED! => {"before": "38c8be123aced4cc8ad5c7e0da9121a181b94251", "changed": false, "msg": "Local modifications exist in repository (force=no)."}
	to retry, use: --limit @/home/n/osbook/devenv/ansible_provision.retry

PLAY RECAP *********************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=1   
`

エラー文に「to retry, use:」とあるのでその通り「 ansible-playbook -K -i ansible_inventory ansible_provision.yml --limit @/home/n/osbook/devenv/ansible_provision.retry」を実行してみましたが特に変化はなかったです。(やり方間違ってたらすみません)

TASK [install qemu gui package if exists] **************************************
skipping: [localhost]
少し前の処理でスキップになっているようなのですが、これが原因なのでしょうか?
原因や改善策など教えていただけるとありがたいです。
よろしくお願いします。

〜実行環境〜
os:Ubuntu 18.04.6 LTS
cpu:Intel® Core™ i5-2415M CPU @ 2.30GHz × 4

〜実行ログ〜

`n@Hampen:~$ sudo apt install ansible
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ansible is already the newest version (2.5.1+dfsg-1ubuntu0.1).
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
n@Hampen:~$ cd ~/osbook/devenv
n@Hampen:~/osbook/devenv$ ansible-playbook -K -i ansible_inventory ansible_provision.yml
SUDO password: 

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [ensure development tools are at the latest version] **********************
ok: [localhost]

TASK [check whether qemu-system-gui exists] ************************************
ok: [localhost]

TASK [install qemu gui package if exists] **************************************
skipping: [localhost]

TASK [set llvm 7 as default] ***************************************************
ok: [localhost] => (item=llvm-PerfectShuffle)
ok: [localhost] => (item=llvm-ar)
ok: [localhost] => (item=llvm-as)
ok: [localhost] => (item=llvm-bcanalyzer)
ok: [localhost] => (item=llvm-cat)
ok: [localhost] => (item=llvm-cfi-verify)
ok: [localhost] => (item=llvm-config)
ok: [localhost] => (item=llvm-cov)
ok: [localhost] => (item=llvm-c-test)
ok: [localhost] => (item=llvm-cvtres)
ok: [localhost] => (item=llvm-cxxdump)
ok: [localhost] => (item=llvm-cxxfilt)
ok: [localhost] => (item=llvm-diff)
ok: [localhost] => (item=llvm-dis)
ok: [localhost] => (item=llvm-dlltool)
ok: [localhost] => (item=llvm-dwarfdump)
ok: [localhost] => (item=llvm-dwp)
ok: [localhost] => (item=llvm-exegesis)
ok: [localhost] => (item=llvm-extract)
ok: [localhost] => (item=llvm-lib)
ok: [localhost] => (item=llvm-link)
ok: [localhost] => (item=llvm-lto)
ok: [localhost] => (item=llvm-lto2)
ok: [localhost] => (item=llvm-mc)
ok: [localhost] => (item=llvm-mca)
ok: [localhost] => (item=llvm-modextract)
ok: [localhost] => (item=llvm-mt)
ok: [localhost] => (item=llvm-nm)
ok: [localhost] => (item=llvm-objcopy)
ok: [localhost] => (item=llvm-objdump)
ok: [localhost] => (item=llvm-opt-report)
ok: [localhost] => (item=llvm-pdbutil)
ok: [localhost] => (item=llvm-profdata)
ok: [localhost] => (item=llvm-ranlib)
ok: [localhost] => (item=llvm-rc)
ok: [localhost] => (item=llvm-readelf)
ok: [localhost] => (item=llvm-readobj)
ok: [localhost] => (item=llvm-rtdyld)
ok: [localhost] => (item=llvm-size)
ok: [localhost] => (item=llvm-split)
ok: [localhost] => (item=llvm-stress)
ok: [localhost] => (item=llvm-strings)
ok: [localhost] => (item=llvm-strip)
ok: [localhost] => (item=llvm-symbolizer)
ok: [localhost] => (item=llvm-tblgen)
ok: [localhost] => (item=llvm-undname)
ok: [localhost] => (item=llvm-xray)
ok: [localhost] => (item=ld.lld)
ok: [localhost] => (item=lld-link)
ok: [localhost] => (item=clang)
ok: [localhost] => (item=clang++)
ok: [localhost] => (item=clang-cpp)

TASK [clone EDK II repository] *************************************************
fatal: [localhost]: FAILED! => {"before": "38c8be123aced4cc8ad5c7e0da9121a181b94251", "changed": false, "msg": "Local modifications exist in repository (force=no)."}
	to retry, use: --limit @/home/n/osbook/devenv/ansible_provision.retry

PLAY RECAP *********************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=1   

n@Hampen:~/osbook/devenv$ ansible-playbook -K -i ansible_inventory ansible_provision.yml --limit @/home/n/osbook/devenv/ansible_provision.retry
SUDO password: 

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [ensure development tools are at the latest version] **********************
ok: [localhost]

TASK [check whether qemu-system-gui exists] ************************************
ok: [localhost]

TASK [install qemu gui package if exists] **************************************
skipping: [localhost]

TASK [set llvm 7 as default] ***************************************************
ok: [localhost] => (item=llvm-PerfectShuffle)
ok: [localhost] => (item=llvm-ar)
ok: [localhost] => (item=llvm-as)
ok: [localhost] => (item=llvm-bcanalyzer)
ok: [localhost] => (item=llvm-cat)
ok: [localhost] => (item=llvm-cfi-verify)
ok: [localhost] => (item=llvm-config)
ok: [localhost] => (item=llvm-cov)
ok: [localhost] => (item=llvm-c-test)
ok: [localhost] => (item=llvm-cvtres)
ok: [localhost] => (item=llvm-cxxdump)
ok: [localhost] => (item=llvm-cxxfilt)
ok: [localhost] => (item=llvm-diff)
ok: [localhost] => (item=llvm-dis)
ok: [localhost] => (item=llvm-dlltool)
ok: [localhost] => (item=llvm-dwarfdump)
ok: [localhost] => (item=llvm-dwp)
ok: [localhost] => (item=llvm-exegesis)
ok: [localhost] => (item=llvm-extract)
ok: [localhost] => (item=llvm-lib)
ok: [localhost] => (item=llvm-link)
ok: [localhost] => (item=llvm-lto)
ok: [localhost] => (item=llvm-lto2)
ok: [localhost] => (item=llvm-mc)
ok: [localhost] => (item=llvm-mca)
ok: [localhost] => (item=llvm-modextract)
ok: [localhost] => (item=llvm-mt)
ok: [localhost] => (item=llvm-nm)
ok: [localhost] => (item=llvm-objcopy)
ok: [localhost] => (item=llvm-objdump)
ok: [localhost] => (item=llvm-opt-report)
ok: [localhost] => (item=llvm-pdbutil)
ok: [localhost] => (item=llvm-profdata)
ok: [localhost] => (item=llvm-ranlib)
ok: [localhost] => (item=llvm-rc)
ok: [localhost] => (item=llvm-readelf)
ok: [localhost] => (item=llvm-readobj)
ok: [localhost] => (item=llvm-rtdyld)
ok: [localhost] => (item=llvm-size)
ok: [localhost] => (item=llvm-split)
ok: [localhost] => (item=llvm-stress)
ok: [localhost] => (item=llvm-strings)
ok: [localhost] => (item=llvm-strip)
ok: [localhost] => (item=llvm-symbolizer)
ok: [localhost] => (item=llvm-tblgen)
ok: [localhost] => (item=llvm-undname)
ok: [localhost] => (item=llvm-xray)
ok: [localhost] => (item=ld.lld)
ok: [localhost] => (item=lld-link)
ok: [localhost] => (item=clang)
ok: [localhost] => (item=clang++)
ok: [localhost] => (item=clang-cpp)

TASK [clone EDK II repository] *************************************************
fatal: [localhost]: FAILED! => {"before": "38c8be123aced4cc8ad5c7e0da9121a181b94251", "changed": false, "msg": "Local modifications exist in repository (force=no)."}
	to retry, use: --limit @/home/n/osbook/devenv/ansible_provision.retry

PLAY RECAP *********************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=1   

n@Hampen:~/osbook/devenv$`

$ sudo mount -o loop disk.img mnt で "operation not permitted" と表示される

WSL2 Ubuntu バージョン 20.04 で本書 p:35 のコマンド:
$ sudo mount -o loop disk.img mnt
を実行しようとすると "operation not permitted" というエラーが表示され、実行できませんでした。

その後、20.04 をアンインストールし、新たに 18.04 をインストールしてみるとエラーなく実行することができました。

Windows のエクスプローラで Ubuntu のディレクトリを確認したところ、20.04 では「AppData -> Local -> Packages -> Canonical... ->LocalState -> rootfs」となっておりアクセスできたのですが、18.04 では「LocalState -> ext4」となっており、ext4 にアクセスすることができませんでした。(写真を参照)
issue1
バージョン 18.04 と 20.04 でファイルシステムか何かが変わったのでしょうか?

ansible_provision.ymlの中の変数が意図した通りに展開されない

~/osbook/devenvの中で、ansible_inventoryとansible_provision.ymlを指定して各種モジュールをアップデートしようとした際に、{{ ansible_env.HOME }} が /home/ユーザ名 に展開されず、/root に展開されてしまいます。
これについてはansible自体が抱えている問題(というか、仕様?)のようで、/home/ユーザ名 に展開するためには "/home/{{ user }}/edk2" (変数のuserは自分でymlの先頭、もしくはrolesフォルダを用意して定義)のようにしてdestを宣言するのがよさそうです。 (edk2だけでなく、osbookのdestも同じ修正が必要ですね)

- name: clone EDK II repository
  git:
    repo: "https://github.com/tianocore/edk2.git"
    dest: "{{ ansible_env.HOME }}/edk2"      ← ここ
    version: "38c8be123aced4cc8ad5c7e0da9121a181b94251"

- name: build EDK II base tools
  make:
    chdir: "{{ ansible_env.HOME }}/edk2/BaseTools/Source/C"       ← ここ

- name: download standard libraries
  unarchive:
    src: "https://github.com/uchan-nos/mikanos-build/releases/download/v2.0/x86_64-elf.tar.gz"
    dest: "{{ ansible_env.HOME }}/osbook/devenv"      ← ここ
    remote_src: yes

2度目以降のQEMU実行に失敗する

QEMUを実行すると2回目以降ブートプログラムが実行されず、暴走してしまいます。(RIPの値で確認)
ブートプログラムの内容にかかわらずです。

原因を探ったところ、osbook/devenv/OVMF_VAR.fdが1度目の実行において書き換えられていることがわかりました。
配布されている元のOVMF_VAR.fdに置き換えると、また1度だけ正常に動きます。

OVMFに関する理解がほぼ皆無なので、OVMF_VAR.fdがざっくりなんであるかと、今後の対応についてご教授いただければ幸いです。

WSL2 & Ubuntsu20.04.6 & QEMU利用時の環境構築での問題

環境構築上での質問です。
第1章でQEMU上で「Hello world」を出力したいのですが、UEFIのコンソール画面で止まり、出力画面まで遷移しません。
考えられる原因と、ディスクファイルを開き「hello world」を表示する部分についてご教授いただきたいです。

現状

screenshot 731

screenshot 732

前提

  • BOOTX64.EFIは正しく作成できている
  • QEMU(XLaunch)は正しくインストールできている
  • 当リポジトリの環境構築手順を一通り終わらせ、「MikanOSのビルド」まで終わらせ、起動成功を確認

ファイル構造($HOME以下)

  • disk.img
  • edk2
    • ArmPkg
    • ArmPlatformPkg
    • ArmVirtPkg
    • BaseTools
    • Build
    • CONTRIBUTING.md
    • Conf
    • CryptoPkg
    • DynamicTablesPkg
    • EmbeddedPkg
    • EmulatorPkg
    • FatPkg
    • FmpDevicePkg
    • IntelFsp2Pkg
    • IntelFsp2WrapperPkg
    • License-History.txt
    • License.txt
    • Maintainers.txt
    • MdeModulePkg
    • MdePkg
    • MikanLoaderPkg
    • NetworkPkg
    • OvmfPkg
    • PcAtChipsetPkg
    • ReadMe.rst
    • RedfishPkg
    • SecurityPkg
    • ShellPkg
    • SignedCapsulePkg
    • SourceLevelDebugPkg
    • StandaloneMmPkg
    • UefiCpuPkg
    • UefiPayloadPkg
    • UnitTestFrameworkPkg
    • edksetup.bat
    • edksetup.sh
    • pip-requirements.txt
  • mnt
  • osbook
    • LICENCE
    • README.md
    • day01
      • asm
      • bin
      • c
  • workspace
    • hello world(hello world作業用フォルダー)
      • BOOTX64.EFI
      • disk.img
      • image
      • mnt/
    • mikanos

WSL2 の ansible-playbook でエラー

ansible-playbook -K -i ansible_inventory ansible_provision.yml で次のエラーが出た。

TASK [clone EDK II repository] *****************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Failed to init/update submodules: Submodule 'SoftFloat' (https://github.com/ucb-bar/berkeley-softfloat-3.git) registered for path 'ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3'\nSubmodule 'BaseTools/Source/C/BrotliCompress/brotli' (https://github.com/google/brotli) registered for path 'BaseTools/Source/C/BrotliCompress/brotli'\nSubmodule 'CryptoPkg/Library/OpensslLib/openssl' (https://github.com/openssl/openssl) registered for path 'CryptoPkg/Library/OpensslLib/openssl'\nSubmodule 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli' (https://github.com/google/brotli) registered for path 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli'\nSubmodule 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma' (https://github.com/kkos/oniguruma) registered for path 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma'\nSubmodule 'RedfishPkg/Library/JsonLib/jansson' (https://github.com/akheron/jansson) registered for path 'RedfishPkg/Library/JsonLib/jansson'\nSubmodule 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka' (https://git.cryptomilk.org/projects/cmocka.git) registered for path 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka'\nCloning into '/home/uchan/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3'...\nCloning into '/home/uchan/edk2/BaseTools/Source/C/BrotliCompress/brotli'...\nCloning into '/home/uchan/edk2/CryptoPkg/Library/OpensslLib/openssl'...\nCloning into '/home/uchan/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli'...\nCloning into '/home/uchan/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma'...\nCloning into '/home/uchan/edk2/RedfishPkg/Library/JsonLib/jansson'...\nCloning into '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka'...\nfatal: unable to access 'https://git.cryptomilk.org/projects/cmocka.git/': server certificate verification failed. CAfile: none CRLfile: none\nfatal: clone of 'https://git.cryptomilk.org/projects/cmocka.git' into submodule path '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' failed\nFailed to clone 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka'. Retry scheduled\nCloning into '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka'...\nfatal: unable to access 'https://git.cryptomilk.org/projects/cmocka.git/': server certificate verification failed. CAfile: none CRLfile: none\nfatal: clone of 'https://git.cryptomilk.org/projects/cmocka.git' into submodule path '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' failed\nFailed to clone 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka' a second time, aborting\n"}

PLAY RECAP *************************************************************************************************************
localhost                  : ok=5    changed=1    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
  • Windows 11
  • WSL2 + Ubuntu 20.04

エラーメッセージ中の "msg" を読みやすくすると以下。

Failed to init/update submodules: Submodule 'SoftFloat' (https://github.com/ucb-bar/berkeley-softfloat-3.git) registered for path 'ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3'
Submodule 'BaseTools/Source/C/BrotliCompress/brotli' (https://github.com/google/brotli) registered for path 'BaseTools/Source/C/BrotliCompress/brotli'
Submodule 'CryptoPkg/Library/OpensslLib/openssl' (https://github.com/openssl/openssl) registered for path 'CryptoPkg/Library/OpensslLib/openssl'
Submodule 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli' (https://github.com/google/brotli) registered for path 'MdeModulePkg/Library/BrotliCustomDecompressLib/brotli'
Submodule 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma' (https://github.com/kkos/oniguruma) registered for path 'MdeModulePkg/Universal/RegularExpressionDxe/oniguruma'
Submodule 'RedfishPkg/Library/JsonLib/jansson' (https://github.com/akheron/jansson) registered for path 'RedfishPkg/Library/JsonLib/jansson'
Submodule 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka' (https://git.cryptomilk.org/projects/cmocka.git) registered for path 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka'
Cloning into '/home/uchan/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3'...
Cloning into '/home/uchan/edk2/BaseTools/Source/C/BrotliCompress/brotli'...
Cloning into '/home/uchan/edk2/CryptoPkg/Library/OpensslLib/openssl'...
Cloning into '/home/uchan/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli'...
Cloning into '/home/uchan/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma'...
Cloning into '/home/uchan/edk2/RedfishPkg/Library/JsonLib/jansson'...
Cloning into '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka'...
fatal: unable to access 'https://git.cryptomilk.org/projects/cmocka.git/': server certificate verification failed. CAfile: none CRLfile: none
fatal: clone of 'https://git.cryptomilk.org/projects/cmocka.git' into submodule path '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' failed
Failed to clone 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka'. Retry scheduled
Cloning into '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka'...
fatal: unable to access 'https://git.cryptomilk.org/projects/cmocka.git/': server certificate verification failed. CAfile: none CRLfile: none
fatal: clone of 'https://git.cryptomilk.org/projects/cmocka.git' into submodule path '/home/uchan/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka' failed
Failed to clone 'UnitTestFrameworkPkg/Library/CmockaLib/cmocka' a second time, aborting

P73 リンクして生成したkernel.elfをreadelfで覗くことができない

P73 リンクして生成したkernel.elfをreadelfで覗くことができません。readelfを実行すると始点にあるマジック番号が異なりますと表示されます。odコマンドで表示してみたところ確かに先頭数バイトがすべて0になってしまっています。コンパイル・リンク時に特にエラーも出ない状況で手詰まりとなってしまっています。もし心当たりがある方がいたら教えて頂けないでしょうか

【環境】
VirtualBoxを利用して作成したUbuntu20.04(ホストはmacos)

Screenshot from 2022-04-24 14-31-57

開発ツールの導入がうまくいかない

プログラミング・Linux初心者です。
"Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"

付録Aの開発環境のインストールをすべく、mikan-buiildを上から追っていきましたが、
「開発ツールの導入」の
ansible-playbook -K -i ansible_inventory ansible_provision.yml
でエラーが出てしまいます。

Traceback (most recent call last):
File "/usr/bin/ansible-playbook", line 34, in
from ansible import context
ModuleNotFoundError: No module named 'ansible'

初歩的な質問で恐縮ですがどのように対処すれば前に進めますでしょうか。

2章,edk2を用いたビルドにおけるエラー

実行環境
virtualbox kali linux 202103

当初,以下の結果のようにエラー4000が出ていたが,あるサイトにedkのバージョンを古くすると上手くいくということでバージョンを変更しました.
step1_new

すると,以下のようなエラーに変わりました.
step2_new

さらにansibleも使うようなことを書かれていたのでそちらについても実行したところ,これもまたエラーが発生し,
python-aptが必要と言うことであったがそもそもインストールできず代わりにpython3-aptをインストールしたが,
これでもエラー表記が変わリませんでした.

step3_new

このような状況で全く先に進めておりません.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.