顯示具有 Bootloader 標籤的文章。 顯示所有文章
顯示具有 Bootloader 標籤的文章。 顯示所有文章

2012年10月29日 星期一

How To Build EDK & EDK II Environment In Easy Way

如何編譯EDK

請參考 How To Compile UDK2014,如果你是要編譯 UDK2014。
請參考 How To Compile UDK2015,如果你是要編譯 UDK2015。

image
(以D:\為例)
安裝Windows Driver Kit到C:\WINDDK\3790.1830
將Edk 1.06解壓縮到D:\
將EfiShell 1.06解壓縮到D:\Edk\Other\Maintained\Application\UefiShell資料夾下
image

修改D:\Edk\Sample\LocalTools.env 確認NASM與DDK路徑

image
image


編輯D:\Edk\Sample\Platform\Nt32\Build\Config.env
image


用系統管理完開啟命令提示字元
image

切換目錄到D:\Edk\Sample\Platform\Nt32
輸入SET EDK_SOURCE=D:\Edk
輸build編譯
image

編譯成功畫面
image

切換到D:\Edk\Sample\Platform\Nt32\uefi\IA32
輸入secmain.exe
image
image
image
image

如何編譯EFI_Toolkit

解壓縮EFI_Toolkit_2.0.0.1 至 D:\Edk\Sample\Platform
修改D:\Edk\Sample\Platform\EFI_Toolkit_2.0\build.cmd裡SDK_INSTALL_DIR路徑

image

輸入build
輸入nmake編譯 
image

編譯完成畫面
image

輸出EFI檔在D:\Edk\Sample\Platform\EFI_Toolkit_2.0\build\em64t\bin
如果要編譯成其他檔案可以更改build.cmd裡的SDK_BUILD_ENV
image

想要決定編譯哪幾個檔案可以修改D:\Edk\Sample\Platform\EFI_Toolkit_2.0\apps\apps.mak

想要修改WINDDK路徑的話
D:\Edk\Sample\Platform\EFI_Toolkit_2.0\build\em64t\sdk.env


如何編譯EDKII

先安裝Tortoise SVN取得EDKII Source Code
安裝完成後在你要的目錄,點右鍵SVN Checkout
image
image
image


系統管理員開啟命令提示字元
輸入edksetup.bat
image

因為我是用Visual Studio 2010
必須修改Conf\target.txt 裡的TOOL_CHAIN_TAG = 2010
image

再輸入Build就會編譯了
image
image


編譯完成畫面
image

直接輸入build run
或是執行D:\EDKII\edk2\Build\NT32\DEBUG_VS2010\IA32\secmain.exe
image

模擬器開啟畫面
image
image
這裡有說明EDK II各個Package的內容
如果要切換不同Package
可以修改Conf\target.txt裡的
ACTIVE_PLATFORM       = Nt32Pkg/Nt32Pkg.dsc
ACTIVE_PLATFORM       = MdePkg/MdePkg.dsc

2012年9月27日 星期四

如何開啟A20位址線 ?

 

image

image

image

image

Assembly code

In al, 0x92

Or al, 2

Out 0x92, al

 

Another way is to use the BIOS.

INT 15, 2401

mov ax, 0x2401

int 0x15

2011年9月28日 星期三

如何製作虛擬Floppy.img的GRUB開機介面

平台 : Ubuntu(Virtualbox)  Windows7

工具 : Bochs

 

1.開啟終端機,創立一個資料夾,並進入該資料夾

 

2.製作Floppy.img (兩者皆可)

# dd if=/dev/zero of=Floppy.img bs=1024 count=1440

# dd if=/dev/zero of=Floppy.img bs=512 count=2880

 

3.格式化Floppy.img

# mkdosfs Floppy.img

 

4.建立一個讓Floppy.img可以掛在的目錄 floppy

# mkdir floppy

 

5.掛載Floppy.img

# mount –o loop Floppy.img floppy

 

6.來這裡抓GRUB原始檔

 

7. 解壓縮(用0.96)

# tar zxvf grub-0.96-i386-pc.tar.gz

 

8.複製GRUB目錄

# sudo cp –r grub-0.96-i386-pc/* floppy

 

9.卸載floppy

# sudo umount floppy

 

10.安裝Grub

# sudo apt-get install grub

 

11.進入GRUB修改

# grub

 

12.輸入下列資訊

grub> device (fd0) floppy.img

grub> root (fd0)

grub> setup (fd0)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/fat_stage1_5" exists... yes

Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal)

Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal)

Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded

Done.

grub> quit

 

13.把檔案複製回Window7介面,開啟Bochs載入floppy.img 如圖設定

bochs設定

14.執行畫面

畫面1

畫面2

到此就告一段落

 

(1) 如果已經開發好作業系統者,做完第8個步驟後,加入menu.lst與kernel.elf於指定位址

 

kernel.elf (boot/kernel.elf)

menu.lst ( boot/grub/menu.lst )

title    DclabOS

root    (fd0)

kernel    /boot/kernel.elf

boot

 

(2)然後接著做步驟9之後的動作即可

 

畫面3

畫面4

畫面5

PS : 作業系統只輸出 Test Output to monitor. …

 

搞定收工 !