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 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 floppyc 為硬碟,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

Made with Slides.com