目的:

结合现在比较流行的技术,通过一个demo 展示一个全栈式设计的各种技能。

一个全栈式的工程师,应该能设计通过verilog/VHDL做logical设计。能写内核驱动,能架站。

要熟悉verilog/VHDL, C/C++, shell, python, JS, HTML, CSS等语言。

发现自己很多细节还需要了解。

首先理解2个概念

qemu是什么

简单的说,qemu 是一个开源软件,可以模拟整个计算机系统, 包括多种CPU和各种外设。

我们可以形象的比喻 qemu就是一个虚拟的攒机器商。或者简单的理解为,他就是神舟或者联想。

用qemu生成一个电脑过程,很多人都去过中关村攒过机器(DIY)过程一样。

比如说我们列一个清单,需要2个x86的CPU, 需要2G RAM, 需要一个网卡,需要一个声卡,需要一个20G的硬盘。 现在交给 qemu来完成。请 执行 ($ man qemu) 查看qemu的用法。

$ sudo qemu-system-x86_64 -boot c -m 20480 -hda /home/kvm/winxp.img -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,df=h,ifname=tap0,script=no -clock rtc -soundhw es1370 -smp 2

qemu-system-x86_64 表示是x86的CPU, -smp 2表示是2个CPU

-m 20480 便是是2G 内存。

 -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,df=h,ifname=tap0,script=no表示增加的了一个网卡接口。

-soundhw es1370 表示声卡。

-hda /home/kvm/winxp.im 就是我们的硬盘。 具体大小是我们创建的时候的大小。 通过qemu-image来创建这个硬盘,并且制定硬盘大小。 请 执行($ man qemu-image)来查看用法。

我们的这个电脑就攒好了。

qemu模拟的CPU是通过一个动态二进制编译的技术, 请参考《编译原理》。

详情,请参考

qemu 官方网站:  http://wiki.qemu.org/Main_Page

wikibooks: http://en.wikibooks.org/wiki/QEMU

KVM是 什么

是一个开源的系统虚拟化模块。简单的说,他就是一个linux 驱动, 能提供一个执行跟运行KVM自身相同的CPU的指令集的环境。

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。

详情,请参考 kvm官方网站 http://www.linux-kvm.org/page/Main_Page

qemu与KVM

通过上面的简单介绍,我们知道,qemu可以通过模拟的CPU执行指令。

而KVM 则能用硬件提供的虚拟化功能, 直接让真 实CPU执行虚拟机内存里的指令。

那我们肯定回想,可以让qemu直接调用kvm而不使用模拟的CPU吗?

是的,可以。

$ sudo qemu-system-x86_64 --enable-kvm ...

通过KVM, qem模拟的电脑可以接近真实电脑的速度。

[虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(一)的更多相关文章

  1. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(九)

    目的 1. 使用verilog/vhdl设计一个PCI的watchdog设备. 2. 通过systemverilog 写testbench. 很久之前研究过AC97的verilog代码.但是很久没用v ...

  2. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(四)

    通过前面的操作,我们已经可以创建一个带有我们自己的PCI的watchdog外设qemu 虚拟机了. 目的: 1. 了解我们的外设情况. 2. 为在guest中开发我们自己的linux PCI驱动程序做 ...

  3. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(六)

    目的: 1. 为我们自己的watchdog写一个驱动 步骤: 通过之前的介绍,我们很容易猜想到写我们基于PCI的watchdog驱动,可以分2个步骤. 1. 探测加载PCI设备 这部分代码跟我们的设备 ...

  4. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(二)

    这篇文章的理解,需要一些专业知识了. 我们可以创建模拟自己的外设吗? 我们已经知道什么是qemu了,我们可以通过qmeu的提供的外设,DIY一个计算机了. 但是我们可能还不满足,我们可以自己制造一个外 ...

  5. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(八)

    目的: 1. 通过网页读取watchdog的信息 2. 通过网页设置watchdog 准备工作: 1. 选择一个web框架,选用 cherrypy $ sudo apt-get install pyt ...

  6. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(五)

    目的: 1. 了解PCI的基本知识,为完成watchdog的设备做准备. 准备知识: 简单的说,PCI 设备分3个空间. 配置空间,IO空间,内存地址空间. PCI设备厂家决定了外设是使用IO空间还是 ...

  7. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(七)

    目标: 1. 完成最终的设备驱动,增加具体的watchdog设备操作的代码. 测试代码: 代码最终实现见cwd_demo.c 代码只实现了read与write.  没有实现ioctl. 因此,我们可以 ...

  8. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(三)

    我们已经设计了一个基于qemu的watchdog了.下一步工作就是创建一个含有我们的watchdog的虚拟计算机器了. 准备工作: 1. 使用virt-manager或者virsh创建一个虚拟机器. ...

  9. 从零开始的全栈工程师——利用CSS3画一个正方体 ( css3 )

    transform属性 CSS3的变形(transform)属性让元素在一个坐标系统中变形.transform属性的基本语法如下: transform:none | <transform-fun ...

随机推荐

  1. HTML5新属性

    1.contenteditable 属性指定元素内容是否可编辑. 注意: 当元素中没有设置 contenteditable 属性时,元素将从父元素继承. 所有主流浏览器都支持 contentedita ...

  2. mongoengine连接错误:“False is not a read preference”解决方法

    问题出现: Mongoengine是一个可以操作MongoDB数据库的对象-文档映射器(Object-Document Mapper).出于工作需要,最近在使用MongoDB+Django实现一个数据 ...

  3. 批量处理csv格式转换成xls

    结合下面的代码学习相关模块及函数方法的使用 #coding:utf-8 #导入相应模块 import csv import xlwt import sys import os import fnmat ...

  4. 1011. A+B和C

    /* * Main.c * 1011. A+B和C * Created on: 2014年8月30日 * Author: Boomkeeper *********测试通过******* */ #inc ...

  5. Java getResourceAsStream返回为空的问题

    使用 getResourceAsStream("helloworld.propterties") 读取文件的stream,返回一直为空,试这把.properties文件放在 很多路 ...

  6. Protel在PCB中添加汉字

    使用Protel 99SE的工程人员都知道Protel在PCB绘制中是不支持汉字输入的,但作为工厂生产调试的方便,不可避免的要在PCB上制作中文标示,有时为说明板子的用途,注意事项等都要输入中文丝印, ...

  7. .Net中String和StringBuilder的区别

    String对象是不可变的而StringBuilder则不是这样,可以方便的Append进行扩展. 比如:string aa="123456",那么aa就会在内存中占用一块能放下这 ...

  8. 安装Logstash

    安装Logstash: Logstash 需要 Java 7或者以后版本,使用官方的Oracle发布或者一个开源发布版本比如OpenJDK 检查Java 版本,运行下面的命令: zjtest7-fro ...

  9. 黑马程序员_static\访问权限\单例模式 大汇总

    一.static关键字 1.用法 Static是一个修饰符,用于修饰成员,包括成员变量和成员函数.当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用.System.ou ...

  10. [原理][来源解析]spring于@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关联

    Spring 捆绑Hibernate. 夹: 一.  1. Spring 怎样处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSe ...