annotate paper/chapter/chapter4.tex @ 14:101c076a190b

chapter3.5
author okud
date Sat, 13 Feb 2021 02:11:40 +0900
parents 1236fa28ffdd
children 82407e7fefd9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
63c082d08136 add a little
okud
parents:
diff changeset
1 \chapter{UEFI}
63c082d08136 add a little
okud
parents:
diff changeset
2
63c082d08136 add a little
okud
parents:
diff changeset
3
63c082d08136 add a little
okud
parents:
diff changeset
4 \section{UEFI}
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
5 UEFI\cite{uefi}とは、Unified Extensible Firmware Interfaceの略で
10
63c082d08136 add a little
okud
parents:
diff changeset
6 OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様である。
63c082d08136 add a little
okud
parents:
diff changeset
7 1990年代半ばにIntelによってBIOSに変わるEFI仕様が開発された。
63c082d08136 add a little
okud
parents:
diff changeset
8 2005年にIntel、AMD、Apple、Microsoftなどの企業からなるUnified EFI Forumという業界団体のもとUEFIが開発された。
63c082d08136 add a little
okud
parents:
diff changeset
9 UEFIは単なるインタフェースの仕様であるため、特定のプロセッサに依存しない。
63c082d08136 add a little
okud
parents:
diff changeset
10 以前までのBIOSと異なり、近代的なソフトウェア開発手法を用いることが推奨されていて、C言語などで実装ができる。
63c082d08136 add a little
okud
parents:
diff changeset
11
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
12
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
13 \section{BIOSとUEFI}
1236fa28ffdd add slide
okud
parents: 11
diff changeset
14 UEFIはBIOSの後継として開発されたがBIOSと大きな違いがいくつかある。
14
101c076a190b chapter3.5
okud
parents: 12
diff changeset
15 BIOSとUEFIの違いは表\ref{tb:biso_uefi}である。
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
16 \begin{table}[H]
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
17 \begin{center}
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
18 \caption{BIOSとUEFIの違い}
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
19 \begin{tabular}{|c|c|c|c|} \hline
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
20 & BIOS & UEFI(32bit) & UEFI(64bit)\\ \hline
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
21 CPU & 16bit & 32bit & 64bit \\ \hline
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
22 メモリ空間 & 1MB & 4GB & 256TB\\ \hline
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
23 BOOT & MBR & GPT & GPT \\ \hline
1236fa28ffdd add slide
okud
parents: 11
diff changeset
24 デバイス規格 & PS/2 & USB & USB \\ \hline
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
25 \end{tabular}
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
26 \label{tb:biso_uefi}
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
27 \end{center}
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
28 \end{table}
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
29 \subsection{CPU}
1236fa28ffdd add slide
okud
parents: 11
diff changeset
30 BIOSは、40年近く前から存在しているので、16bitCPU前提のアーキテクチャであるため16bitで起動する。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
31 また、CPUリアルモードでないとBIOSから起動できない。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
32 さらに、CPUのアーキテクチャに依存し、アーキテクチャごとに設定しなければならない。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
33 しかし、UEFIは、32bit、64bitの両方を起動できる。起動も64bitモードで可能。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
34 また、CPUのアーキテクチャに依存しない。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
35
1236fa28ffdd add slide
okud
parents: 11
diff changeset
36 \subsection{メモリ空間}
14
101c076a190b chapter3.5
okud
parents: 12
diff changeset
37 16bitCPUのメモリのアドレス空間は2の16乗で64KBであった。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
38 つまり、16bitBIOSでは、64KBの16倍である1MBまでしか使えない。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
39 UEFIでは、32bitなら2の32乗bitで4GB、64bitなら2の64乗bitで256TBまでメモリを潤沢に使える。
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
40 これにより、セキュリティを含めたシステム機能の強化が可能になった。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
41
1236fa28ffdd add slide
okud
parents: 11
diff changeset
42 \subsection{BOOT}
1236fa28ffdd add slide
okud
parents: 11
diff changeset
43 BIOSとUEFIでは、BOOT方式が違う。
1236fa28ffdd add slide
okud
parents: 11
diff changeset
44 BIOSは、ディスク先頭の512バイトにBootLoaderとパーティーションテーブル(MBR)が格納されていて
14
101c076a190b chapter3.5
okud
parents: 12
diff changeset
45 第一セクタの512バイトがメモリにコピーされ、そこにジャンプする。
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
46 そして、そのBootLoaderが起動する。BootLoaderがカーネルとディスクイメージをメモリにロードし、
1236fa28ffdd add slide
okud
parents: 11
diff changeset
47 カーネルが初期化処理をする。その後OSが起動される。
14
101c076a190b chapter3.5
okud
parents: 12
diff changeset
48 UEFIは、UEFIファームウェアがロードされ、起動に必要なハードウェアを初期化する。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
49 次にファームウェアがBootマネージャのデータを読み込みどのUEFI Applicationをどこから起動するか決定する。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
50 ファームウェアのブートマネージャのブートエントリに定義されているように UEFI Application をファームウェアが起動する。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
51 起動しらUEFI Applicationが他のApplicationやカーネルとBootLoaderを起動する。
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
52
1236fa28ffdd add slide
okud
parents: 11
diff changeset
53 \subsection{デバイス}
14
101c076a190b chapter3.5
okud
parents: 12
diff changeset
54 マウスやキーボードなどのデバイスの規格がBIOSとUEFIで変わる。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
55 BIOSはUSBが発明される前から存在しているのでデバイス規格はPS/2を使用していた。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
56 PS/2は端子を通じてキーボードとマウスがキーボードコントローラに接続され、CPUからI/Oバス経由でキーボードコントローラとやりとりをする。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
57 しかし、PS/2ではマウスとキーボードしか接続できないため、汎用性の高いUSBが主流になってきた。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
58 だが、USBに対応していないデバイスも存在したため、USBキーボードをPS/2キーボードに見せかけるエミュレータ機能が存在した。
101c076a190b chapter3.5
okud
parents: 12
diff changeset
59 一方、UEFIではUSBが主流なため、デバイスの規格は基本的にUSBであることが多い。
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
60
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
61 \section{UEFI Application}
10
63c082d08136 add a little
okud
parents:
diff changeset
62 aaa
12
1236fa28ffdd add slide
okud
parents: 11
diff changeset
63 \section{UEFI Hello World}
1236fa28ffdd add slide
okud
parents: 11
diff changeset
64 UEFIを開発する際に
11
b6212bbc42da add 2.3chapter
okud
parents: 10
diff changeset
65
14
101c076a190b chapter3.5
okud
parents: 12
diff changeset
66 \section{Raspberry Pi上のUEFI}
101c076a190b chapter3.5
okud
parents: 12
diff changeset
67 a
101c076a190b chapter3.5
okud
parents: 12
diff changeset
68 \section{QEMU 上の UEFI}