Gears OS Device Driver 作成

Gears OS Device Driver 作成

# 研究目的

2017年にIntel社が2020年までにLegacy BIOSとUEFIへの互換を非推奨とし、互換モジュールのCSMを削除すると発表した。 Legacy BIOSは長年に渡り16bitパソコンの時代からの資産を引き継いできたため、16bitモードでしか動作しない。 そのためPCの進化に伴い、致命的な問題点が発生する。 問題点として、拡張性がないことがあげられる。EthernetやUSBにつながるでディスクなど、新たにブートデバイスが追加されるたびに, OSのブートローダを変更しなければならない。またマザーボードごとに、ファームウェアをアセンブラで開発する必要がある。 また、1MBのメモリ制限により、セキュリティを含めたシステム機能の強化が困難であるためセキュリティにも問題がある。 これらの問題を解決するためにUEFIが開発された。 UEFIは、2TBを超える大きなディスクからブートでき、高速にブートできる。 CPUに依存しないアーキテクチャとドライバを持ちネットワークも使用可能な柔軟なプレOS環境が利用できる。 今後、Legacy BIOSからUEFIへの移行が急速に進むだろう。\\ 当研究室では、信頼性と拡張性をテーマにGearsOSを開発している。 GearsOSはContinuation based C(CbC)によってアプリケーションとOSそのものを記述している。 現在、CbCで証明可能なOSを実装するために、xv6のCbCの書き換えを行っている。 xv6はレガシーOSなため、UEFIから起動することができない。 UEFIからxv6を起動させることができれば、拡張性が大きく広がる。 本研究では、ARMで動くシングルコンピュータであるRaspberryPi上にUEFIからGearsOSをブートさせることを目指している。

##進捗

  • 卒論を書き始めた(第一章くらい)
  • x86_64用のbootloaderを動かしてみた
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#./build.sh
cp -r edk2/xv6_bootloader/build/RELEASE_GCC5/X64/loader.efi image/EFI/BOOT/BOOTX64.efi
qemu-system-x86_64 \
	-drive if=pflash,format=raw,readonly,file=edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd \
	-drive if=pflash,format=raw,file=edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd \
	-drive if=ide,file=fat:rw:image,index=0,media=disk \
	-gdb tcp::4321 \
	-m 2048 \
	-smp 4 \
	-nographic
WARNING: Image format was not specified for 'json:{"fat-type": 0, "backing": {"driver": "vvfat_write_target"}, "dir": "image", "driver": "vvfat", "floppy": false, "rw": true, "write-target": {"driver": "qcow", "file": {"driver": "file", "filename": "/var/folders/d9/yw4d8pk13mv_2r1x41bjs_w80000gn/T//vl.BpQ3DX"}}}' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Qemu

Loading File: \kernel
FileSize=730832
Successfully Loaded File: \kernel
Ehdr Address:7E836000
Phdr Address:7E836034
Start Address:100000
End Address:10B000
Start Address:8010A7A6
End Address:80196000
Allocate Start Address:100000
Allocate End Address:80196000
Entry Address:100010
AllocatePages=14
Could not allocate pages at 7FE91890 
Signature:RSD PT
XSDT Address: 7FBF90E8
Current Mode 2, 800x600
Max Mode 28
Frame Base Address: 80000000
Frame Size: 1D5000
Horizontal Resolution: 320
Vertical Resolution: 258
Pixels per Scan Line: 320
Signature:APIC
MADT Address: 7FBF5000
MADR_ADDR: 52584 
LAPIC Address: FEE00000
LAPIC Flags: 0001
MADT Length: 0090
EntryType:0
Processor Local APIC  ACPI Processor ID: 0  APIC ID: 0  Flag: 1
EntryType:0
Processor Local APIC  ACPI Processor ID: 1  APIC ID: 1  Flag: 1
EntryType:0
Processor Local APIC  ACPI Processor ID: 2  APIC ID: 2  Flag: 1
EntryType:0
Processor Local APIC  ACPI Processor ID: 3  APIC ID: 3  Flag: 1
EntryType:1
I/O APIC  I/O APIC ID: 0  I/O APIC Address : FEC00000
EntryType:2
Interrupt Source Override Bus Source: 0  IRQ Source: 0
EntryType:2
Interrupt Source Override Bus Source: 0  IRQ Source: 5
EntryType:2
Interrupt Source Override Bus Source: 0  IRQ Source: 9
EntryType:2
Interrupt Source Override Bus Source: 0  IRQ Source: A
EntryType:2
Interrupt Source Override Bus Source: 0  IRQ Source: B
EntryType:4
Non-maskable interrupts  ACPI Processor ID: FF
KernelAddress : 0
BootStrap GDT Descriptor Address: 50050
AllocatePool=0
Loading File: \logo.bmp
Failed to Open \logo.bmp
Failed to Load Bitmap Image: \logo.bmp
Failed to draw bitmap file \logo.bmp
  • loadはできてるっぽいがどこかで引っかかってる
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy