ARM assembly
~Virtualization
2016/12/22 第十一組
組員
- B033040010 李仕柏
- B033040014 蘇盈安
- B033040015 陳彥瑋
- B033040032 張肇峻
Introduction
Virtualization
將電腦中的實體資源做分配與切割的過程
全虛擬化 Full Virtualization
半虛擬化 Para-Virtualization
作業系統層虛擬化 OS-Virtualization
Virtual machine
一支具備電腦功能的程式
虛擬硬體、CPU、記憶體、磁碟、網路等等
Host machine(OS)與Guest machine(OS)
QEMU, VirtualBox, VMware, Xen
Hypervisor
Virtual Machine Monitor
管理Virtual machines
Native hypervisors
Hosted hypervisors

Native hypervisors
能直接與硬體溝通
有較高的安全性(掌握在hypervisor上)
適合server虛擬化
Xen, XenServer , Hyper-V , Xvisor
Hosted hypervisors
支援較多的I/O device
用於客戶端
VMware, VirtualBox
Full Virtualization
Guest完全獨立
透過軟體模擬硬體環境
VMWare, Virtual Box, KVM

Para-Virtualization
Guest透過hypercall使用CPU
Host減少CPU模擬,提高效能
需要修改guest OS的核心
Xen
OS-Virtualization
與Host共用所有資源
Guest與Host使用同一個核心
OpenVZ
ARM support
virtualization extension
Architecture
-
Traditional
-
Security Extension
-
Virtualization Extension
Traditional

- Level0
- User mode
- Level1
- System mode
- IRQ mode
- FIQ mode
- Undef mode
- Supervisor mode
- Abort mode
Security Extend

- Normal App/OS in Non-Secure
- RTOS in Secure
- ARM Cortex-A8

Virtualization Extend

HYP
- NON-Secure
- Privilege Level2
- HYP exception
- ARM Cortex-A15

HYP
-
新增 HYP exception (privilege2)
-
HVC (Hypervisor Call) 指令
-
- link register, SPSR, stack pointer
-
Hypervisor Control Register (HCR) marks virtualized resource
-
Hypervisor Syndrome Register (HSR) for Hyp mode entry reason
Vector table

CPU(1)
- Guest OS kernel in privilege1
- Guest userspace in privilege0
-
HYP mode higher privilege than OS kernel level
- privilege2
- hypervisor
- VMM controls wide range of OS accesses
- RTOS maintain secure state
CPU(2)
- 大部分的敏感指令可以直接在privilege1運行而不必trap及emulation
-
sensitive(敏感) instruction
- ldr/str/ldm/stm......
- 指令企圖去改變系統資源配置
- 仍需要trap的敏感指令會到 privilege2 的HYP(hypervisor mode)處理~把問題指令取代為hypercall進行模擬
- HSR會保存被trapped的指令的資訊,因此hypervisor就能模擬它,並啟動VA-IPA-PA address translation
Memory
- VA-IPA-PA記憶體映射(MAP)
- 將guest的虛擬記憶體映射到host的實體記憶體
- page table欄位:32-40 bits entries至多拆成兩層
- Stage 1 : VA to IPA
- Virtual Address (VA) to Intermediate Physical Address (IPA)
- guest 作業系統各自包含Shadow page table自行轉換
- Stage 2 : IPA to PA
- IPA to the Physical Address(PA)
- 由VMM包含的page table做轉換及調配,跟OS交流

Large Physical Address Extension
- LPAE
- 更大的記憶體空間
- 每個階段的page table可再拆成三層的sub page table
- 64-bit table entries


Interrupt(1)
-
外部中斷信號(IRQ)傳送
- Current or different GuestOS
- Hypervisor
- Host running in the secure

Interrupt(2)
-
GIC(Generic Interrupt Controller)
- Interrupt Distributor
- CPU Interface
- virtual CPU Interface

Technology
application
Xen-ARM
Xen
- 支援X86、X86-64、ARM等硬體平台環境
- 支援幾乎所有的Linux的作業系統
- 原本可以支援Windows,但因為觸犯到Windows的核心,所以微軟不允許其支援Windows
- 虛擬機可以在多個物理主機之間及時遷移(live migration)
Xen-ARM
- 實作於ARM架構上的一種Hypervisor
- 屬於Type 1的Hypervisor(Native Hypervisor)
- 虛擬化技術上分類屬於Para-virtualization
Xen-ARM Architecture

Xen-ARM Architecture
-
Domain 0
- 被修改過的Linux核心
- Xen開機時第一個執行的作業系統
- 包含有其他虛擬機啟動時的控制指令,並管理其他的虛擬機
- 含有Network backend driver和Block backend driver
Xen-ARM Architecture
-
Domain U
- 使用者想要運作的作業系統
- 皆為被修改過的Linux系統
- 無法直接控制主機的資源,皆須透過Domain 0
- 每個虛擬機的作業系統不互相影響
Xen-ARM Architecture
-
Xen Hypervisor
- 負責為各個Domain進行CPU和記憶體的分配
- 只有Domain 0可以直接控制
- 不負責網路或是I/O的處理
Xen-ARM CPU Virtualization
-
Xen-ARM將CPU的指令分為三種:
- Xen-ARM mode:
- 給Xen Hypervisor使用
- 對應ARM的supervisor mode
- virtual kernel mode:
- 給Guest OS的kernel space使用
- 對應ARM的user mode
-
virtual user mode:
- 給Guest OS的user space使用
- 對應ARM的user mode
- Xen-ARM mode:
Xen-ARM CPU Virtualization

Xen-ARM Memory Virtualization
- 透過Xen Hypervisor建立shadow page table分配實體記憶體的位置給各個虛擬機以及Xen Hypervisor本身使用


Xen-ARM I/O Virtualization
- Domain U 透過Xen Hypervisor將I/O的要求傳送至Domain 0,Domain 0 則會利用Back-end driver模擬虛擬的I/O給Domain U使用,而Domain 0的native driver才能跟實際的主機硬體做資料的溝通

Xen 半虛擬化硬體需求
- 64位元的x86主機都可以支援Xen,不過32位元的主機的話,必須支援實體位置延伸技術(PAE)才能使用Xen

Xen 半虛擬化所需安裝套件
- kernel-xen:修改過後的Xen核心
- Xen:主要的Xen套件,包括設定檔,啟動腳本,以及所需的基本函式庫
- xen-libs:Xen所需的函式庫
- python-virtinst:提供終端機安裝的軟體
- virt-manager:圖形使用者介面軟體
QEMU
什麼是QEMU?
- QEMU是一套開源的模擬處理器和虛擬機
- 可以在一種架構(如x86 PC機器)下執行另一種架構(如ARM)下的作業系統和程式。
- 與Bochs,PearPC相似,但其具有一些兩者所不具備的特性,如高速度及跨平台的特性。
優點
•可以模擬IA-32(x86)個人電腦,AMD64個人電腦,MIPS R4000,ARM v6, v7(Cortex-A8, A9, A15),昇陽的SPARC sun3與PowerPC(PReP及Power Macintosh)架構
•支援其他架構,不論在主機或虛擬系統上
•增加了模擬速度,某些程式甚至可以實時運行
•可以在其他平台上運行Linux的程式
•可以儲存及還原運行狀態(如運行中的程式)
•可以虛擬網路卡
•可模擬多CPU
使用模式
-
User mode模擬模式
用來運行程式
-
System mode
用來模擬整個電腦系統
KVM介紹
- Kernel-based Virtual Machine(KVM)
- 用於Linux內核中的虛擬化技術
- 以前使用kqemu,現在主要使用qemu-kvm
- 使QEMU能模擬至接近實機速度
如何使用Qemu
- Qemu 後面放參數
- -fda file:指定軟碟機。
- -hda file:指定硬碟Image檔案。
- -cdrom file:指定光碟機。
- -boot [a|c|d]:指定開機磁碟。a 為 floppy,c 為硬碟,d 為 CD-ROM
- -m megs:指定記憶體大小;預設為 128 MB。
- -enable-audio:啟用音效卡。預設是關閉的。
- -localtime:使用真實時間,預設上是使用 UTC 時間。
指令
- 進入QEMU後,會有一些指令可以使用
info network:顯示網路介面狀態
info block:顯示儲存裝置狀態
info registers:顯示 CPU 的暫存器狀態
info history:顯示歷史指令
savevm filename:將整個模擬器狀態儲存至檔案中
loadvm filename:由檔案中載入模擬器狀態
網路介面
- TUN/TAP 模式(預設模式)
- User-Net 模式
- Dummy Net 模式
TUN/TAP 模式
- 切換至 /dev 目錄中,執行 MAKEDEV tun 來建立 tun 之裝置檔。
-
#!/bin/bash
/sbin/ifconfig ${1##/*/} 192.168.1.254
route add -host 192.168.1.101 dev ${1##/*/} - 必須以 root 身份來設定
User-Net 模式
- 使用 User Mode Network Stack 來模擬網路界面。
- Guest System 必須採用 DHCP,且一定會得到 10.0.2.x 的IP,同時,Gateway 會指向 10.0.2.2,DNS 則指向 10.0.2.2。
- Guest System 可以連線出去,但 Host OS 和外部網路的其它電腦則完全無法連線進來。
- 由於 User Mode Network Stack 無法完全支援 ping 指令,所以 Guest System 只能 Ping 到 Host OS,無法 ping 到外部網路的其它電腦。
實作部分
•開啟Raspberry Pi映像檔

- 出現raspi-config畫面

•設定完後,輸入startx來啟動圖型化介面

•成功開啟

Reference
- http://wiki.csie.ncku.edu.tw/embedded/xvisor#虛擬化技術-virtualization
- http://www.cs.nthu.edu.tw/~ychung/syllabus/Virtualization.htm
- http://www-archive.xenproject.org/files/xensummit_seoul11/nov2/
- other
the END
Thank You 0..0
ARM assembly
By Yan Wei Chen
ARM assembly
- 549