changeset 19:0dd66a59256b

prepaper fix
author okud
date Mon, 15 Feb 2021 22:17:01 +0900
parents e8a0f9380734
children b9113f671dec
files prepaper/fig/bootos.png prepaper/pre.pdf prepaper/pre.tex slide/slide.md slide/slide.pdf
diffstat 5 files changed, 74 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
Binary file prepaper/fig/bootos.png has changed
Binary file prepaper/pre.pdf has changed
--- a/prepaper/pre.tex	Mon Feb 15 21:10:15 2021 +0900
+++ b/prepaper/pre.tex	Mon Feb 15 22:17:01 2021 +0900
@@ -70,12 +70,12 @@
 
 
 \subsection{CbC GCC ARM CrossCompile}
-GCC上で実装されたCbCのARM CrossCompile環境をSingularity\cite{singularity}で構築した。
+GCC上で実装されたCbCのARM\cite{arm} CrossCompile\cite{cross}環境をSingularity\cite{singularity}で構築した。
 CrossCompileは、Compilerが動作している以外のプラットフォーム向けに
 実行ファイルを生成する機能を持ったCompile手法である。
 これにより、CbCで実装されたプログラムをRaspberry Pi上で実装ができる様になった。
 
-\section{GearsOS}
+\section{Gears OS}
 GearsOS\cite{Gears}は当研究室で信頼性と拡張性をテーマに開発を行っているOSである。
 GearsOSはContinuation based C(CbC)によって記述されている。
 当研究室では、GearsOSの信頼性とCbCの有効性を示すために、基本的な機能を揃えたOSであるxv6\cite{xv6}をCbCで置き換えを行っている。
@@ -86,7 +86,9 @@
 \section{UEFI}
 UEFI\cite{uefi}は、OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様である。
 UEFIは、インタフェース仕様であるため、特定のプロセッサに依存しない。
-C言語などの高級言語で実装することができ、個人でも開発の難易度が低い。
+C言語などの高級言語で実装することができ、
+EDK2\cite{edk2}やgnu-efi\cite{gnu}などのUEFIツールキットがあり
+個人でも開発の難易度が低い。
 
 
 UEFIにはApplicationがあり、UEFI Applicationは開発を行うマシンのOSやアーキテクチャに左右されることなく、
@@ -94,17 +96,56 @@
 UEFI Applicationを自作することにより、xv6をUEFIでBootさせるBootLoaderを作ったり、xv6のデバイスドライバを作れる様になる。
 
 \section{BootLoader}
+BootLoaderはOSをBootさせるプログラムである。
+BootLoaderがOSをBootするまでのプロセスを図\ref{boot}に示した。
+UEFIが起動し、Boot ManagerがBoot Loaderを起動させる。
+BootLoaderがOSのKernelをメモリにLoadし、
+Kernelがinitプロセスを起動させる。
+initプロセスがOSのBootプロセスを起動させ、OSがBootされる。
+
+\begin{figure}[H]
+    \begin{center}
+        \includegraphics[width=80mm]{fig/bootos.png}
+    \end{center}
+    \caption{Boot Loader process}
+    \label{boot}
+\end{figure}
 
 
 
-\begin{thebibliography}{9}
+\section{研究の成果}
+\begin{itemize}
+  \item UEFIの開発環境をSingularityで作成した
+  \item gnu-efiで作成したUEFI Applicationをqemu-system-armで動かした 
+  \item Raspberry PiにUEFIのファームウェアとして設定し、実行した
+  \item ミニマムなKernel Loaderを調査しARM xv6用に書き直した
+\end{itemize}
+
+\section{今後の課題}
+\begin{itemize}
+  \item Singularity上のqemu-system-armにgdbを接続する
+  \item そのgdbでKernel Loaderをでバックする
+  \item xv6 KernelをUEFIからBootするコードを入れる
+  \item xv6を書き換えたGearsOSを実装する
+  \item USB Driverを実装し、キーボードやマウスを使える様にする
+\end{itemize}
+
+
+
+\begin{thebibliography}{100}
   \bibitem{IntelNews} Intel/Unified EFI Forum, https://www.uefi.org ,2017/11/3.
   \bibitem{CbC} 清水隆博,河野慎治..xv6の構成要素の継続の分析.情報処理学会研究報告,2020.
+  \bibitem{cross} https://wiki.osdev.org/GCC\_Cross-Compiler
+  \bibitem{arm} https://developer.arm.com
   \bibitem{singularity} https://sylabs.io/singularity
   \bibitem{Gears} 東恩納 琢偉,河野真治.Gears OSでモデル検査を実現する手法について.情報処理学会研究報告2020
   \bibitem{xv6} Russ Cox, M Frans Kaashoek, and Robert Morris. Xv6, a simple unix-like teaching operating system,2012.
   \bibitem{raspi} https://www.raspberrypi.org
   \bibitem{uefi} https://wiki.osdev.org/UEFI
+  \bibitem{edk2} https://github.com/tianocore
+  \bibitem{gnu} https://sourceforge.net/projects/gnu-efi
+
+
 \end{thebibliography}
 
 
--- a/slide/slide.md	Mon Feb 15 21:10:15 2021 +0900
+++ b/slide/slide.md	Mon Feb 15 22:17:01 2021 +0900
@@ -82,14 +82,6 @@
 
 ---
 <!-- class: slide -->
-# UEFI Application
-- UEFI Boot Managreがロード、実行するプログラムのこと
-- C言語で記述可能
-- OSがなくてもプログラムを書ける
-- CPUやドライバに依存しない
-
----
-<!-- class: slide -->
 # UEFI 開発環境
 - edk2
 - gnu-efi
@@ -103,6 +95,28 @@
 - UEFI Applicationをリンクするためのライブラリがある
 - UEFI Applicationの開発に特化している
 - EDK2のファームウェアがベース
+---
+<!-- class: slide -->
+# qemu
+- 異なるアーキテクチャのプログラムを動かすエミュレータ
+- 本開発ではX86上でARMを動かした
+- gnu-efiで実装したUEFIを動かした
+
+
+---
+<!-- class: slide -->
+# singularity
+- ユーザーが自身の計算環境を完全再現し、保持できる様にしたLinuxコンテナ
+- 学科の新システムで利用できる
+- CbC GCC ARM CrossCompile環境を作った
+- UEFIの開発環境を作った
+---
+<!-- class: slide -->
+# UEFI Application
+- UEFI Boot Managreがロード、実行するプログラムのこと
+- C言語で記述可能
+- OSがなくてもプログラムを書ける
+- CPUやドライバに依存しない
 
 ---
 # UEFI Applicationの例
@@ -138,7 +152,6 @@
 
     InitializeLib(ImageHandle, SystemTable);
     Print(L"Hello, EFI!\n");
-
     Status = uefi_call_wrapper(BS->OpenProtocol, 6, ImageHandle, &LoadedImageProtocol,(void**)&LoadedImageParent, ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
     if (EFI_ERROR(Status)) {
         Print(L"Could not get LoadedImageProtocol handler %r\n", Status);
@@ -173,22 +186,14 @@
     return EFI_SUCCESS;
 }
 ```
-
 ---
-<!-- class: slide -->
-# qemu
-- 異なるアーキテクチャのプログラムを動かすエミュレータ
-- 本開発ではX86上でARMを動かした
-- gnu-efiで実装したUEFIを動かした
-
-
----
-<!-- class: slide -->
-# singularity
-- ユーザーが自身の計算環境を完全再現し、保持できる様にしたLinuxコンテナ
-- 学科の新システムで利用できる
-- CbC GCC ARM CrossCompile環境を作った
-- UEFIの開発環境を作った
+# Boot Loader
+- UEFIが起動
+- Boot Managerから起動される
+- OSのKernelをメモリにLoadさせる
+- Kernelがinitプロセスを起動
+- initプロセスがOSのBootプロセスを起動
+- OSがBootされる
 
 ---
 <!-- class: slide -->
Binary file slide/slide.pdf has changed