1:首先统一可扩展固件接口(UEFI)是一种规范定义操作系统和平台固件之间的软件接口。

UEFI旨在替代基本输入/输出系统(BIOS)固件接口。(legacy)

硬件平台厂商越来越多地采用UEFI管理其引导固件开发的规范。

2:OVMF(Open Virtual机器固件),X64虚拟机的支持。

The following guest OSes were tested with OVMF:

- Red Hat Enterprise Linux 6

- Red Hat Enterprise Linux 7

- Fedora 18

- Fedora 19

- Fedora 20

- Windows Server 2008 R2 SP1

- Windows Server 2012

- Windows 8

3:  virtio 是QEMU 为 I/O 提供便利。QEMU 是一个系统模拟器,它不仅提供guest操作系统虚拟化平台,还提供整个系统(PCI 主机控制器、磁盘、网络、视频硬件、USB 控制器和其他硬件元素)的模拟。

virtio-blk,virtio-net,virtio-pci,virtio-balloon,virtio-console

4.PCI 和PCIE

 PCIE(PCI Express)和PCI不同的是实现了传输方式从并行到串行的转变。PCI Express是采用点对点的串行连接方式,这个和以前的并行通道大为不同,它允许和每个设备建立独立的数据传输通道。不用再向整个系统请求带宽,这样也就轻松的到达了其他接口设备可望而不可及的高带宽。

5:Q35 和i440fx 机器类型。

Q35 支持默认的是pcie slot槽位。而ovmf就是uefi目前是支持Q35模式的开发包.(Q35默认支持uefi ,当然也是支持传统bios(这种情况虚拟机有问题)),i440支持的是PCI的设备,支持传统bios。

下表是qemu支持的machine type.

# /usr/libexec/qemu-kvm -M help

Supported machines are:

pc                   RHEL 7.4.0 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-rhel7.4.0)

pc-i440fx-rhel7.4.0  RHEL 7.4.0 PC (i440FX + PIIX, 1996) (default)

pc-i440fx-rhel7.3.0  RHEL 7.3.0 PC (i440FX + PIIX, 1996)

pc-i440fx-rhel7.2.0  RHEL 7.2.0 PC (i440FX + PIIX, 1996)

pc-i440fx-rhel7.1.0  RHEL 7.1.0 PC (i440FX + PIIX, 1996)

pc-i440fx-rhel7.0.0  RHEL 7.0.0 PC (i440FX + PIIX, 1996)

rhel6.6.0            RHEL 6.6.0 PC

rhel6.5.0            RHEL 6.5.0 PC

rhel6.4.0            RHEL 6.4.0 PC

rhel6.3.0            RHEL 6.3.0 PC

rhel6.2.0            RHEL 6.2.0 PC

rhel6.1.0            RHEL 6.1.0 PC

rhel6.0.0            RHEL 6.0.0 PC

q35                  RHEL-7.4.0 PC (Q35 + ICH9, 2009) (alias of pc-q35-rhel7.4.0)

pc-q35-rhel7.4.0     RHEL-7.4.0 PC (Q35 + ICH9, 2009)

pc-q35-rhel7.3.0     RHEL-7.3.0 PC (Q35 + ICH9, 2009)

none                 empty machine





5:关于rhel6 虚拟机 virtio disk失败的情况。



5.1: RHEL-6 guest,仅有virtio-legacy的驱动程序,并且没有virtio1.0

5.2:modern-only  virtio设备(就是virtio-1.0 devices 没有legacy接口选项)

当你创建一个Q35类型guest的virt-manager中,该设备的Virtio将放入PCI Express端口(不是传统的PCI插槽)。这又使得设备的成为“modern-only”device。

$ virsh qemu-monitor-command ovmf.rhel6.q35 --hmp 'info qtree'

          dev: virtio-scsi-pci, id "scsi0"

            disable-legacy = "on"

          dev: virtio-balloon-pci, id "balloon0"

            disable-legacy = "on"

          dev: virtio-blk-pci, id "virtio-disk0"

            disable-legacy = "on"

          dev: virtio-serial-pci, id "virtio-serial0"

            disable-legacy = "on"

          dev: virtio-net-pci, id "net0"

            disable-legacy = "on"

一个virtio设备的表现是是(a)modern-only  或(b)transitional(=modern+legacy)取决于virtio设备在PCI Express层次结构中的位置。 如果device被放置在XML中的PCI Express根端口或下游端口中,则设备的行为就像modern的。 如果将该设备作为集成设备放置在pcie.0 root上,那么它将作为transitional。

Virtio设备插入PCI层次结构或集成端点将保持PCI,并具有默认的Transitional行为。Transitional virtio设备可以在IO和MMIO模式下工作,具体取决于guest支持。guest固件将分配IO和MMIO资源Transitional
device。插入PCI Express端口的Virtio设备是PCI Express设备默认情况下具有“1.0”行为,不支持IO。在这两种情况下,可以使用disable-legacy和disable-modern属覆盖行为。请注意,disable-legacy = off设置将启用传统模式(启用)传统行为)为PCI Express virtio设备导致他们需要IO空间,由于可用的IO空间有限,可能会很快导致资源枯竭,因此非常不鼓励。

UEFI在这里是相关的,因为UEFI在运送时需要Q35(最低pc-q35-rhel7.3.0,最优选pc-q35-rhel7.4.0或更高版本)。 如果你有Q35,那么你会遇到上述的问题。

6:Q35 和i440 默认工作情况

     6.1 :I440FX - (pc): devices are PCI, transitional

                created by: disable-legacy=auto,disable-modern=off

                 - in virtio_pci_realize disable-legacy: auto => off

     6.2:   Q35 - on root bus - devices are PCI, transitional

                  - other buses - devices are PCIe, modern

                    created by: disable-legacy=auto,disable-modern=off

                 - in virtio_pci_dc_realize:

                   if disable-modern=off -> pcie

                 - in virtio_pci_realize:

                   if on pcie root port -> disable-legacy: auto => on

                   otherwise ->    disable-legacy: auto => off

Q35+uefi or bios+legacy // PCI | PCIE的更多相关文章

  1. 【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()

    [我所认知的BIOS]-> uEFI AHCI Driver(8) - Pci.Read() LightSeed 6/19/2014 社会一直在变.不晓得是不是社会变的太苦开,而我没变所以我反而 ...

  2. [转载]PCI/PCIe基础——配置空间

    转载地址:http://blog.csdn.net/jiangwei0512/article/details/51603525 PCI/PCIe设备有自己的独立地址空间,这部分空间会映射到整个系统的地 ...

  3. KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  4. 尽可能保留原有数据,建立UEFI与BIOS双启PE优盘

    尽可能保留原有数据,建立UEFI与BIOS双启PE优盘1.确保优盘或者移动硬盘有一个FAT32分区,如果没有FAT32分区,就用傲梅分区助手或者ppm转换一个现有的分区到FAT32分区0x0C,或者新 ...

  5. [转帖]UEFI和BIOS

    UEFI和Legacy及UEFI+Legacy启动的区别 https://www.cnblogs.com/net5x/p/6850801.html 一直给人装系统 但是连这些最基本的都不知道 感觉自己 ...

  6. UEFI、BIOS、Secure Boot的关系和知识介绍

      从Windows 8操作系统时代开始,安装操作系统的方法也有了很大的改变,Windows 8采用了Secure Boot引导启动的方式,而不是过去Win XP和Win 7的Legacy启动方式,从 ...

  7. 基于WDF的PCI/PCIe接口卡Windows驱动程序(4)- 驱动程序代码(源文件)

    原文出处:http://www.cnblogs.com/jacklu/p/4687325.html 本篇文章将对PCIe驱动程序的源文件代码作详细解释与说明.整个WDF驱动程序工程共包含4个头文件(已 ...

  8. 基于WDF的PCI/PCIe接口卡Windows驱动程序(2)-开发者需要了解的WDF中的一些重要的概念

    原文出处:http://www.cnblogs.com/jacklu/p/4646601.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...

  9. 基于WDF的PCI/PCIe接口卡Windows驱动程序(1)-WDF概述及开发环境搭建

    原文出处:http://www.cnblogs.com/jacklu/p/4619110.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...

随机推荐

  1. c# 常用操作保留

    RanDom如何提高生成随机数的随机性 一个在线考试系统的项目,需要从题库中随机抽取试题,但是如果直接 Random ran=new Randon(),ran.Next(nummin,nummax); ...

  2. 球队以及得分计算的SQL语句

    首先题目是这样的: 球队表teams 比赛表matches 赢了得3分,平局的得1分,输了得0分. 思路: 一个球队的成绩分为两部分,作为主队的得分和作为客队的得分: 计算出一次比赛中具体得了多少分, ...

  3. FlashBuilder 4.6序列号破解

    1424-4827-8874-7387-0243-7331 1424-4938-3077-5736-3940-5640 具体步骤如下: 1.到Adobe官网下载FlashBuilder 4.6,有简体 ...

  4. 【Mac命令行学习】(持续更新)

    常用命令: 一.修改环境变量文件: 1.进入文件:vi .bash_profile 2.键盘点击[a]键,进入文件编辑 3.修改完成后,如果是vi,点击[esc]键退出编辑模式 4.输入以下命令进行具 ...

  5. R语言安装sqldb包报错解决办法

    我使用Rtudio环境,安装sqldb几次出错.网上没有好的教程. 经过自己试验之后,这样处理.我写出来以后,供大家参考. > install.packages("sqldf" ...

  6. 查看与修改网关,DNS

    网关是网络中的路由器,作为访问其他网络的接入点. 修改ip地址 即时生效: ifconfig eth0 192.168.0.20 netmask 255.255.255.0 启动生效: 修改/etc/ ...

  7. Exercise:Sparse Autoencoder

    斯坦福deep learning教程中的自稀疏编码器的练习,主要是参考了   http://www.cnblogs.com/tornadomeet/archive/2013/03/20/2970724 ...

  8. Linux命令下,cp,rm,mv命令的使用

    Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件对比两文件的新旧而予以更新,        以 ...

  9. Linux的文件权限(简单易懂)

    学习这个章节,必须明白以下三个概念: 1.所有者 2.所属组 3.其他人 明白这三个概念后,接下来就学习文件的属性,那么文件的属性有什么呢?如何查看文件的属性? 在命令行下,执行 ls -l 可以得到 ...

  10. (转)java Exception层次结构详解

    转自:http://www.importnew.com/14688.html 1. JAVA异常层次结构 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程 ...