annotate slide/slide.md @ 21:1769ede4d434

fin
author okud
date Tue, 16 Feb 2021 06:12:58 +0900
parents b9113f671dec
children f7343e8d74ca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
f25dbd693485 add slide
okud
parents:
diff changeset
1 ---
16
c977b5f82b9f only bootloader
okud
parents: 15
diff changeset
2 marp: true
13
f25dbd693485 add slide
okud
parents:
diff changeset
3 title: Gears OS UEFI対応
f25dbd693485 add slide
okud
parents:
diff changeset
4 paginate: true
f25dbd693485 add slide
okud
parents:
diff changeset
5
f25dbd693485 add slide
okud
parents:
diff changeset
6 theme: default
f25dbd693485 add slide
okud
parents:
diff changeset
7 size: 16:9
f25dbd693485 add slide
okud
parents:
diff changeset
8 style: |
f25dbd693485 add slide
okud
parents:
diff changeset
9 section {
f25dbd693485 add slide
okud
parents:
diff changeset
10 background-color: #FFFFFF;
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
11 font-size: 40px;
13
f25dbd693485 add slide
okud
parents:
diff changeset
12 color: #4b4b4b;
f25dbd693485 add slide
okud
parents:
diff changeset
13 font-family: "Arial", "Hiragino Maru Gothic ProN";
f25dbd693485 add slide
okud
parents:
diff changeset
14 }
f25dbd693485 add slide
okud
parents:
diff changeset
15
f25dbd693485 add slide
okud
parents:
diff changeset
16 section.title {
f25dbd693485 add slide
okud
parents:
diff changeset
17 font-size: 40px;
f25dbd693485 add slide
okud
parents:
diff changeset
18 padding: 40px;
f25dbd693485 add slide
okud
parents:
diff changeset
19 }
f25dbd693485 add slide
okud
parents:
diff changeset
20 section.title h1 {
f25dbd693485 add slide
okud
parents:
diff changeset
21 text-align: center;
f25dbd693485 add slide
okud
parents:
diff changeset
22 }
f25dbd693485 add slide
okud
parents:
diff changeset
23
f25dbd693485 add slide
okud
parents:
diff changeset
24 section.slide h1 {
f25dbd693485 add slide
okud
parents:
diff changeset
25 position: absolute;
f25dbd693485 add slide
okud
parents:
diff changeset
26 left: 50px; top: 35px;
f25dbd693485 add slide
okud
parents:
diff changeset
27 }
f25dbd693485 add slide
okud
parents:
diff changeset
28
f25dbd693485 add slide
okud
parents:
diff changeset
29 ---
f25dbd693485 add slide
okud
parents:
diff changeset
30 <!-- class: title -->
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
31 # <!--fit--> Gears OS のBootに関する研究
13
f25dbd693485 add slide
okud
parents:
diff changeset
32
f25dbd693485 add slide
okud
parents:
diff changeset
33 - 奥田光希
f25dbd693485 add slide
okud
parents:
diff changeset
34 - 琉球大学工学部工学科知能情報コース
f25dbd693485 add slide
okud
parents:
diff changeset
35 - 河野 真治
f25dbd693485 add slide
okud
parents:
diff changeset
36 - 琉球大学工学部
f25dbd693485 add slide
okud
parents:
diff changeset
37
f25dbd693485 add slide
okud
parents:
diff changeset
38 ---
21
okud
parents: 20
diff changeset
39
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
40 # OSとアプリケーションの信頼性を高めたい
13
f25dbd693485 add slide
okud
parents:
diff changeset
41
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
42 - Meta計算を用いて信頼性を高めるGearsOSを提案している
101c076a190b chapter3.5
okud
parents: 13
diff changeset
43 - x.v6を元にRaspberry Pi上で動くGearsOSを実装中
21
okud
parents: 20
diff changeset
44 - キーボードやマウスが使えない
okud
parents: 20
diff changeset
45 - デバイスドライバを作る必要がある
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
46 ---
21
okud
parents: 20
diff changeset
47 # BIOS問題
okud
parents: 20
diff changeset
48 - x.v6の起動はBIOSを使っている
okud
parents: 20
diff changeset
49 - IntelがCompatibility Support Module(CSM)をやめた
okud
parents: 20
diff changeset
50 - BIOSを前提としたOSが動かなくなるかも
okud
parents: 20
diff changeset
51 - キーボードやマウスはUSB
okud
parents: 20
diff changeset
52 - USBドライバを作るのは難しい
okud
parents: 20
diff changeset
53 ---
okud
parents: 20
diff changeset
54 # <!--fit--> Gears OSをUEFIでBootさせよう
okud
parents: 20
diff changeset
55 ---
okud
parents: 20
diff changeset
56 # UEFIへの移行
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
57 - CPUなどの機種依存性を避けることができる
101c076a190b chapter3.5
okud
parents: 13
diff changeset
58 - GearsOSはCbC(Continuation based C)で記述されていて、CPUやデバイスに影響されない
101c076a190b chapter3.5
okud
parents: 13
diff changeset
59 - 様々な組み込みシステムに対してGearsOSを応用できる様になる
21
okud
parents: 20
diff changeset
60 - UEFIのApplicationによりUSBドライバ開発が簡単になる
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
61
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
62 ---
21
okud
parents: 20
diff changeset
63 # 研究の成果
okud
parents: 20
diff changeset
64 - UEFIの開発環境をSingularityで作成した
okud
parents: 20
diff changeset
65 - gnu-efiで作成したUEFI Applicationをqemu-system-armで動かすことができた
okud
parents: 20
diff changeset
66 - RaspberryPiにUEFIをファームウェアとして設定し、実行することができた
okud
parents: 20
diff changeset
67 - ミニマムなKernel Loaderを調査しARM xv6用に書き直した
okud
parents: 20
diff changeset
68 ---
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
69 # CbC(Continuation based C)
15
okud
parents: 14
diff changeset
70 - 並列信頼研究で開発されているプログラミング言語
okud
parents: 14
diff changeset
71 - C言語の下位言語
okud
parents: 14
diff changeset
72 - 関数呼び出しではなく継続(goto)
okud
parents: 14
diff changeset
73 - 関数の代わりにCodeGearという単位でプログラミングを行う。
okud
parents: 14
diff changeset
74
okud
parents: 14
diff changeset
75 ---
21
okud
parents: 20
diff changeset
76
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
77 # GearsOS
15
okud
parents: 14
diff changeset
78 - 並列信頼研究で開発されているOS
okud
parents: 14
diff changeset
79 - 信頼性と拡張性がテーマ
okud
parents: 14
diff changeset
80 - CbCによって記述されている
okud
parents: 14
diff changeset
81 - x.v6をCbCで書き直して実装している
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
82 ---
21
okud
parents: 20
diff changeset
83
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
84 # UEFI
15
okud
parents: 14
diff changeset
85 - Unified Extensible Firmware Interfaceの略
okud
parents: 14
diff changeset
86 - OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様
okud
parents: 14
diff changeset
87 - Intel、AMD、Apple、Microsoftなどの企業からなるUnified EFI Forumの元で開発
okud
parents: 14
diff changeset
88 - BIOSの後継
okud
parents: 14
diff changeset
89 ---
21
okud
parents: 20
diff changeset
90
okud
parents: 20
diff changeset
91 # UEFIの利点
15
okud
parents: 14
diff changeset
92 - CPUやドライバに依存しない
okud
parents: 14
diff changeset
93 - 2TBを超える大きなディスクからBootできる
okud
parents: 14
diff changeset
94 - メモリも64bitなら理論上16EB
21
okud
parents: 20
diff changeset
95 - BIOSより高速でBoot
okud
parents: 20
diff changeset
96 - オープン仕様だから開発が簡単
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
97
101c076a190b chapter3.5
okud
parents: 13
diff changeset
98 ---
21
okud
parents: 20
diff changeset
99
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
100 # UEFI 開発環境
21
okud
parents: 20
diff changeset
101 - EDK2
15
okud
parents: 14
diff changeset
102 - gnu-efi
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
103 - qemu
21
okud
parents: 20
diff changeset
104 - Singularity
15
okud
parents: 14
diff changeset
105
okud
parents: 14
diff changeset
106 ---
21
okud
parents: 20
diff changeset
107
15
okud
parents: 14
diff changeset
108 # gnu-efi
okud
parents: 14
diff changeset
109 - システムのネイティブGCCでUEFIアプリケーションをコンパイルできる
okud
parents: 14
diff changeset
110 - UEFI Applicationをリンクするためのライブラリがある
okud
parents: 14
diff changeset
111 - UEFI Applicationの開発に特化している
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
112 - EDK2のファームウェアがベース
19
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
113 ---
21
okud
parents: 20
diff changeset
114
19
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
115 # qemu
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
116 - 異なるアーキテクチャのプログラムを動かすエミュレータ
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
117 - 本開発ではX86上でARMを動かした
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
118 - gnu-efiで実装したUEFIを動かした
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
119
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
120
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
121 ---
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
122 # singularity
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
123 - ユーザーが自身の計算環境を完全再現し、保持できる様にしたLinuxコンテナ
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
124 - 学科の新システムで利用できる
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
125 - CbC GCC ARM CrossCompile環境を作った
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
126 - UEFIの開発環境を作った
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
127 ---
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
128 # UEFI Application
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
129 - UEFI Boot Managreがロード、実行するプログラムのこと
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
130 - C言語で記述可能
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
131 - OSがなくてもプログラムを書ける
0dd66a59256b prepaper fix
okud
parents: 18
diff changeset
132 - CPUやドライバに依存しない
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
133
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
134 ---
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
135 # UEFI Applicationの例
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
136 Hello.c
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
137 ```
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
138 #include <efi.h>
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
139 #include <efilib.h>
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
140
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
141 EFI_STATUS
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
142 EFIAPI
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
143 efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
144 {
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
145 InitializeLib(ImageHandle, SystemTable);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
146 Print(L"Hello, world!\n");
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
147 return EFI_SUCCESS;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
148 }
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
149 ```
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
150 ---
21
okud
parents: 20
diff changeset
151 # Gears OS UEFI Bootの課題
okud
parents: 20
diff changeset
152 - UEFIからx.v6はBootできない
okud
parents: 20
diff changeset
153 - x.v6はUEFIに対応されてない
okud
parents: 20
diff changeset
154 - x.v6のBootLoaderが必要
okud
parents: 20
diff changeset
155 - BootLoaderを作成する
okud
parents: 20
diff changeset
156 ---
okud
parents: 20
diff changeset
157 # Boot Loader
okud
parents: 20
diff changeset
158
okud
parents: 20
diff changeset
159 - OSをLoadしてBootさせる役割をもつプログラム
okud
parents: 20
diff changeset
160 - UEFI ApplicationとしてC言語で実装できる
okud
parents: 20
diff changeset
161 ---
okud
parents: 20
diff changeset
162 # Boot Loaderの役割
okud
parents: 20
diff changeset
163 1. 電源が入る
okud
parents: 20
diff changeset
164 1. UEFIが立ち上がる
okud
parents: 20
diff changeset
165 1. Boot ManagerからBootLoaderが起動する
okud
parents: 20
diff changeset
166 1. BootLoaderがOSのKernelをメモリにLoadさせる
okud
parents: 20
diff changeset
167 1. Kernelがinitプロセスを起動
okud
parents: 20
diff changeset
168 1. initプロセスがOSのBootプロセスを起動
okud
parents: 20
diff changeset
169 1. OSがBootされる
okud
parents: 20
diff changeset
170
okud
parents: 20
diff changeset
171 ---
okud
parents: 20
diff changeset
172 # BootLoader.c
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
173 - efi_mainの引数設定
b9113f671dec fix slide
okud
parents: 19
diff changeset
174
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
175 ```
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
176 #include<efi.h>
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
177 #include<efilib.h>
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
178
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
179 EFI_STATUS
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
180 efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
181 {
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
182 EFI_DEVICE_PATH *Path;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
183 EFI_LOADED_IMAGE *LoadedImageParent;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
184 EFI_LOADED_IMAGE *LoadedImage;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
185 EFI_HANDLE Image;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
186 CHAR16 *Options = L"root=/dev/sda2 rootfstype=btrfs rw quiet splash";
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
187 EFI_STATUS Status=EFI_SUCCESS;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
188
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
189 InitializeLib(ImageHandle, SystemTable);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
190 Print(L"Hello, EFI!\n");
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
191 ```
b9113f671dec fix slide
okud
parents: 19
diff changeset
192 ---
21
okud
parents: 20
diff changeset
193 - uefi_call_wrapperでプロトコルを呼び出している
okud
parents: 20
diff changeset
194
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
195 ```
b9113f671dec fix slide
okud
parents: 19
diff changeset
196 Status = uefi_call_wrapper(BS->OpenProtocol, 6, ImageHandle, &
b9113f671dec fix slide
okud
parents: 19
diff changeset
197 LoadedImageProtocol,(void**)&LoadedImageParent,
b9113f671dec fix slide
okud
parents: 19
diff changeset
198 ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
21
okud
parents: 20
diff changeset
199 ```
okud
parents: 20
diff changeset
200 - エラー文
okud
parents: 20
diff changeset
201 ```
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
202 if (EFI_ERROR(Status)) {
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
203 Print(L"Could not get LoadedImageProtocol handler %r\n", Status);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
204 return Status;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
205 }
21
okud
parents: 20
diff changeset
206 ```
okud
parents: 20
diff changeset
207 ---
okud
parents: 20
diff changeset
208 - xv6.imgのデバイスパスをPathに格納している
okud
parents: 20
diff changeset
209 - このデバイスパスはKernelをLoadするときに使う
okud
parents: 20
diff changeset
210 ```
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
211 Path = FileDevicePath(LoadedImageParent->DeviceHandle, L"\\xv6.img");
21
okud
parents: 20
diff changeset
212 ```
okud
parents: 20
diff changeset
213 - エラー文
okud
parents: 20
diff changeset
214 ```
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
215 if (Path == NULL) {
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
216 Print(L"Could not get device path.");
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
217 return EFI_INVALID_PARAMETER;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
218 }
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
219 ```
b9113f671dec fix slide
okud
parents: 19
diff changeset
220 ---
21
okud
parents: 20
diff changeset
221 - ここでデバイスパスを使いKernelをLoadする。
okud
parents: 20
diff changeset
222 - これでKernelがメモリに展開される。
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
223 ```
21
okud
parents: 20
diff changeset
224 Status = uefi_call_wrapper(BS->LoadImage, 6, FALSE, ImageHandle,
okud
parents: 20
diff changeset
225 Path, NULL, 0, &Image);
okud
parents: 20
diff changeset
226 ```
okud
parents: 20
diff changeset
227 - エラー文
okud
parents: 20
diff changeset
228 ```
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
229 if (EFI_ERROR(Status)) {
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
230 Print(L"Could not load %r", Status);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
231 FreePool(Path);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
232 return Status;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
233 }
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
234 ```
b9113f671dec fix slide
okud
parents: 19
diff changeset
235 ---
21
okud
parents: 20
diff changeset
236 - LoadしたKernelイメージについてLoadedImageProtocolを入手
okud
parents: 20
diff changeset
237 - LoadOptionsに起動オプションを指定し、Kernel コマンドラインを指定
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
238 ```
21
okud
parents: 20
diff changeset
239 Status = uefi_call_wrapper(BS->OpenProtocol, 6,
okud
parents: 20
diff changeset
240 Image, &LoadedImageProtocol,
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
241 (void**)&LoadedImage, ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
242 if (EFI_ERROR(Status)) {
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
243 Print(L"Could not get LoadedImageProtocol handler %r\n", Status);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
244 uefi_call_wrapper(BS->UnloadImage, 1, Image);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
245 FreePool(Path);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
246 return Status;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
247 }
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
248 LoadedImage->LoadOptions = Options;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
249 LoadedImage->LoadOptionsSize = (StrLen(LoadedImage->LoadOptions)+1) * sizeof(CHAR16);
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
250 Print(L"Hello,6!\n");
21
okud
parents: 20
diff changeset
251 ```
okud
parents: 20
diff changeset
252 ---
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
253
21
okud
parents: 20
diff changeset
254 - Loadされたイメージを起動
okud
parents: 20
diff changeset
255 - Kernelが起動する
okud
parents: 20
diff changeset
256 ```
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
257 Status = uefi_call_wrapper(BS->StartImage, 3, Image, NULL, NULL);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
258 uefi_call_wrapper(BS->UnloadImage, 1, Image);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
259 FreePool(Path);
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
260
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
261 return EFI_SUCCESS;
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
262 }
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
263 ```
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
264 ---
20
b9113f671dec fix slide
okud
parents: 19
diff changeset
265 # 大変だったこと
b9113f671dec fix slide
okud
parents: 19
diff changeset
266 - EDK2は汎用的だがARMのConfigなどの書き換えが困難
b9113f671dec fix slide
okud
parents: 19
diff changeset
267 - UEFI開発の情報が少なく、偏りがあった
b9113f671dec fix slide
okud
parents: 19
diff changeset
268 - UEFI独特のプログラムの書き方があった
b9113f671dec fix slide
okud
parents: 19
diff changeset
269 - 低レベルの開発に慣れていなかった
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
270
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
271 ---
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
272 # 今後の課題
14
101c076a190b chapter3.5
okud
parents: 13
diff changeset
273
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
274 - Singularity上のqemu-system-armにgdbを接続する
21
okud
parents: 20
diff changeset
275 - そのgdbでKernel Loaderをデバックする
18
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
276 - xv6 KernelにUEFIからBootするコードを入れる
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
277 - xv6を書き換えたGearsOSを実装する
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
278 - USB Driverを実装し、キーボードやマウスを使える様にする
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
279
e8a0f9380734 paper fix
okud
parents: 16
diff changeset
280 ---
21
okud
parents: 20
diff changeset
281 # ご清聴ありがとうございました