目的:

结合现在比较流行的技术,通过一个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. 关于 <video> 的兼容性测试

    测试浏览器 Firefox: 33.0.1 Chrome: 38.0.2125.111 m Safari: 5.1.7 IE: 9 和 10(6,7,8不考虑) 经测试:FF.Chrome.Safar ...

  2. PHP面试题之小杂鱼

    这里的题目都是比较老的,但是做笔试题时经常碰到,因为这些题目比较凌乱,考的知识点不好分类,就放一块了 /** * 题目:最少代码实现求3个数的最大值 * 三目运算符实现 */ function get ...

  3. 预定义异常 - PHP手册笔记

    Exception是所有异常的基类,类摘要如下: <?php class Exception { protected string $message; // 异常消息内容 protected i ...

  4. [问题解决] 启动mongod 时,出现addr already in use错误

    错误: 启动mongod root@wangyuyu-Vostro-:/usr/bin# ./mongod 错误提示: Sat Aug :: [initandlisten] ERROR: listen ...

  5. Mac OS X 快捷键(完整篇)

    不少朋友提出要求,希望有个「高质量」的列表.其实这样的资源真是太多,平果官网就有 快捷键文档(多国语言版本).于是花了20分钟,浏览了一些网站,整理了点资源放过来供大家参考. 快捷键是通过按下键盘上的 ...

  6. Keil MDK中使用pc-lint的详细方法

    keil MDK版本:V4.03 PC-lint版本:  V8.0 关于pc-lint的强大作用,网上有很多,这里不想再复述,只说一句:能通过pc-lint检验的程序不一定没有问题,但通过了pc-li ...

  7. 百用随身系统 Veket Linux

    Veket Linux 是一个随身的可装在U盘的Linux操作系统. 特点:1,随身系统,装在U盘可走遍天下,它几乎支持“所有”的电脑,就我所接触得到的电脑它都支持并成功驱动,就这十多年的安装的电脑都 ...

  8. Java Servlet的配置文件web.xml配置内容和具体含义

    文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...

  9. DNS解析服务使用的系统对网站的安全起着很重要的作用

    1 采用独享的DNS服务器解析系统 DNS解析服务使用的系统对网站的安全极其重要.现在国内的DNS服务器普遍是公用的,即是你的企业网站DNS解析服务和其他许多网站都是由同一个DNS服务器提供.一旦某个 ...

  10. setTimeout()与setInterval() 问题

    提示:setTimeout() 只执行 code 一次.如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout(). 1. setInterval(c ...