① Hyper-V VS VirtualBox,Windows基础虚拟化架构大比拼
随着云和容器技术的流行,不可否认现在的基础架构正在趋向虚拟化。基于不同平台市面上有很多的虚拟化架构:Xen,Vmware,KVM,VirtualBox各领风骚,各具特色,本文虫虫来讲讲Windows系统下常用的两种虚拟化解决方案VirtualBox和Hyper-V,注意本文不讨论Vmware,如果你是Vmware的拥趸请不要介意。
Hypervisor虚拟机监视器用来管理虚机机和虚拟化基础设备的特殊软件,通过Hypervisor可以在宿主机上虚拟化出虚拟机和基础架构设备出来。Hypervisor分为两种类型:
Hyper-V属于Type 1虚拟机管理程序,也称为裸机型虚拟机管理程序,可直接在计算机硬件上运行。当宿主机启动时,Hyper-V管理程序将从BIOS或UEFI获取控制权,启动Hyper-V管理操作系统包括Hyper-V Server,Windows或Windows Server。根据不同需求和设置,虚拟机VMs支持手动或者自动启动。VMware vSphere、思杰 XenServer也属于该类。
VirtualBox属于Type 2的虚拟机管理程序,也叫托管型虚拟机管理程序。Type 2管理程序是在宿主机操作系统上运行,为安装在宿主机上的应用程序。当物理计算机启动时,宿主机操作系统加载获得控制权。由用户启动虚拟机管理程序应用程序(比如VirtualBox),再启动虚拟机VMs,创建VMs托管进程。KVM和Vmware WorkStaion也属于该类。
宿主机启动后,Hyper-V作为服务会一直保持运行,VirtualBox可由用户按需启动和关闭。
Hyper-V支持硬件虚拟化。硬件虚拟化是一种使用虚拟机管理程序在软件和物理硬件之间创建抽象层以计算机虚拟技术。使用特殊软件模拟计算机正常功能所需的所有设备。
VirtualBox支持硬件和软件虚拟化。软件虚拟化只支持x86体系结构的32位客户机操作系统。64位客户系统,仅在硬件虚拟化中使用。软件虚拟化支持,可以极大的扩展VirtualBox可以不支持硬件虚拟化的老计算机上。
Hyper-V虚拟机的虚拟磁盘格式为VHD或VHDX文件。VHD是Hyper-V旧的虚拟磁盘格式。从Windows Server 2012开始,Hyper-V,虚拟磁盘格式更新为VHDX格式了。
VirtualBox支持更多格式的虚拟磁盘包括VDI,VMDK,VHD和DD:
VDI是VirtualBox自用格式
MDK是VMware虚拟磁盘格式
VHD是Hyper-V格式(VirtualBox暂不支持VHDX)
HDD是Parallels Desktop格式
Hyper-V和VirtualBox中都支持固定大小的磁盘和动态分配的磁盘形式。固定虚拟磁盘创建更耗时,占用的实体机磁盘空间更多,但是其性能更好。动态虚拟磁盘支持即时创建,磁盘空间按照实际使用增长,但其性能不如固定虚拟磁盘。
微软自家的软件Hyper-V和大多数微软应用一样,只支持Windows系列操作系统上运行。 Hyper-V开始在Windows 8中内置,支持Windows,Windows Server 2008到以及更新版本的服务器平台。
Virtual Box是一个跨平台软件,可以支持市面所有主流的操作系统包括Windows,linux,Mac OS和Solaris等。
如果主要在Windows上跑虚拟架构,则可以优先使用Hyper-V。包括windows for Docker现在也是默认使用Hyper-V的。如果你是多平台环境,比如用Mac book,也用windows,那么使用跨平台的VirtualBox具有得天独厚的优势。
客户机OS是在虚拟机上VMs运行的操作系统。关于虚拟机上两者都支持多平台的客户虚机机OS。 Hyper-V支持Windows,Linux和FreeBSD操作系统。
VirtualBox支持的OS类型则更多: Windows,Linux,FreeBSD,Solaris,Mac OS等。
Hyper-V Integration Services由基本驱动程序和实用工具组成,可以用来提高整体性能及主和客机操作OS间的交互。Integration Services安装客户机OS上。在Windows系统上,可以通过将虚拟光盘映像(ISO文件)附加到VM(包括安装程序)或通过Windows Update来安装。对Linux系统,主流的发行版内核都已内置对Integration Services支持。
类似的VirtualBox Guest Additions也包含驱动程序基本和系统应用工具,用来可优化来客户机OS,提高其性能和可用性。安装Guest Additions后,可以支持拖放,剪贴板共享,屏幕自动调整大小以及无缝模式。安装过程和Hyper-V Integration Services类似,将ISO光盘映像与安装程序附加到VM,然后在GUI或命令行安装Guest Additions。
Port Mirroring是Hyper-V的网络流量分析工具。此功能可以让我们将所有接收和发送的数据包的副本从一个端口发送到另一个端口,然后再进一步分析,相当于一个旁路网络包分析工具。我们可以创建一个虚拟机,其虚拟网络适配器连接到相应的虚拟交换机端口,在该虚拟机上安装数据包分析软件,通过他对整个集群多台虚拟机的网络数据包进行分析。
VirtualBox则自带网络跟踪功能,可以使用该功能启用网络数据包日志记录,然后通过日志分析网络行为。因此,VirtualBox利用内置功能将所有捕获的虚拟机网络接口流量写到PCAP文件中。之后就可以利用包分析工具(比如Wireshark)进行分析中。可以在需要时候使用命令行界面启动网络跟踪记录日志。
共享文件夹对于不同机器之间的文件交换很有用。可以使用该方法实现宿主机和虚拟机之间的文件共享。
Hyper-V本身不支持文件夹共享,可以通过Windows GUI或PowerShell在宿主机共享文件夹,并为虚拟机用户指或赋予访问权限访问。还可以使用Copy-VMFile PowerShell工具在宿主机和虚拟机之间进行文件复制。
VirtualBox内置文件夹共享功能,可以在VirtualBox用户界面轻松启用。使用共享文件夹在VirtualBox主机和客户机之间传输文件非常方便。可以通过打开"VM Setting",然后选择"Shared Folders。添加共享标签页:设置文件夹路径,输入将在客户机中要显示文件夹的名称。
注意,必须在客户机操作系统上安装VirtualBox Guest Additions才可以使用该功能。
文件拖放是,可以实现将文件或文件夹等对象从屏幕的一个部分移动到另一个部分。在虚拟化环境的中,通过拖放可以将文件或文件夹在宿主机和客户机之间拖动传输。 Hyper-V和VirtualBox产品都支持拖放功能,但是都需要在客户机上安装对应的Hyper-V Integration服务和VirtualBox Guest Additions。登录Hyper-V VM时使用增强会话模式。
Hyper-V Checkpoints可以支持对虚拟机当前运行状态的保存,然后停掉虚拟机,并在后面需要时候恢复到该运行状态。新版本的Hyper-V中有两种类型的Checkpoints:标准Checkpoints和生产Checkpoints。与标准Checkpoints不同,生产Checkpoints支持对Windows的虚拟机使用VSS卷影复制服务,支持对Linux的虚拟机使用文件系统冻结来冻结虚拟机以防止对虚拟磁盘执行写入操作。使用冻结可以避免由于标准Checkpoints保存时候导致的数据丢失问题造成数据不一致。创建Checkpoints时,会为虚拟机的每个VHD(或VHDX)虚拟磁盘创建差异虚拟磁盘(AVHD或AVHDX)。创建Checkpoints后,所有更改都会写入差异磁盘。差异虚拟磁盘与父虚拟磁盘一起存储在同一目录中。
VirtualBox Snapshots相当于Hyper-V Checkpoints。可以使用Snapshots保存当前虚拟机运行状态,并在需要时还原。 VDI是VirtualBox中使用的虚拟磁盘文件格式。创建快照时,会将新的差异虚拟磁盘创建为新的VDI文件。
Hyper-V Live Migration可以实现将运行中的VM从一台Hyper-V宿主机无缝迁移到另一台宿主机,迁移过程不会导致长时间服务中断。该功能可以用于故障转移群集的转移和业务切换,从而提供虚拟架构的高可用性。建议为Hyper-V故障转移群集使用专用迁移网络,VM文件(如虚拟磁盘)必须位于共享存储上。
VirtualBox Teleporting也是一种虚拟机迁移功能和解决方案。通过Teleporting从网络中将虚拟机从一台VirtualBox宿主机移动到另一台VirtualBox宿主机,而不会影响虚机的运行,迁移要求两台宿主机使用同样的共享存储,宿主机可以是不同的操作系统。比如,可以将运行在Linux宿主机上的Windows虚拟机迁移到Solaris宿主机上。
Hyper-V VMConnect是用来远程访问虚拟机的GUI或控制台界面的工具。可以使用VMConnect来管理虚机,通过VMConnect的WMI(Windows Management Instrumentation)服务。可以实现键盘和鼠标与虚拟机OS的交互,支持链接本地虚拟机也可以连接远程的虚拟机。安装Hyper-V角色时,默认情况已经启用了VMConnect。如果未安装,可以通过"添加功能向导"中添加"Hyper-V工具"功能。 VMConnect 使用Microsoft远程桌面协议(RDP)进行连接和通讯。
VMConnect增强会话模式还允许将本地设备和资源重定向给虚拟机。支持对剪贴板,磁盘驱动器,USB闪存驱动器,音频,打印机和显示器进行重定向。
VirtualBox包含管理虚拟机的工具Remote Display,可以使用本地计算机上的VirtualBox GUI管理在本地计算机上运行的虚拟机。 VirtualBox Remote Desktop Extension(VRDE)是一般性的扩展接口,可为第三方开发的扩展包提供最大的灵活性。 VRDE可兼容Microsoft RDP。 VirtualBox Remote Display Protoco(VRDP)在VRDE扩展包提供,它向后兼容RDP,可以使用它,通过标准RDP客户端来远程控制虚拟机。
Hyper-V Manager是 Hyper-V提供的 GUI虚拟机管理工具,可帮助我们管理Hyper-V 虚拟机机集群。使用它执行虚拟机的创建,导入,配置,启动,停止和删除等操作。可以只用于管理虚拟机基础设备,比如虚拟交换机,虚拟硬盘,创建Checkpoints,使用VMConnect连接到客户操作系统界面等。也可以通过远程管理Hyper-V集群。
phpVirtualBox是一个开源工具的VirtualBox Web管理工具,该工具用PHP编写,通过他可以管理远程VirtualBox实例。phpVirtualBox提供了一个与VirtualBox GUI界面相同的界面,可以在浏览器中远程管理VirtualBox集群,如果不需要对客户机界面操作,则完全可以用他实现VirtualBox的管理。
Hyper-V可以通过PowerShell来管理,使用PowerShell可以编程自定义Hyper-V及其主机配置和管,对大型Hyper-V集群来说,这尤为方便。
VBoxManage是VirtualBox的命令行界面(CLI),通过VBoxManage可以实现VirtualBox GUI中的所有可用的功能以及更多非GUI的功能,支持多平台、自编程,自动化批量执行能的功能。
Hyper-V和VirtualBox非常好的虚拟化的解决方案,孰好孰坏,根据环境和需求可能不定论。Hyper-V是 type 1虚拟机管理程序,而VirtualBox 是type2型虚拟机管理程序。 Hyper-V只支持于Windows系统上,而VirtualBox支持跨平台。Hyper-V支持群集功能,例如故障转移群集和负载平衡。对于已经使用Windows基础环境,Hyper-V虚拟化解决方案是个不错的选择。Oracle VirtualBox开源免费的,具有最大宿主机和客户机OS支持的虚拟化架构,更适合于多平台环境。Hyper-V可以作为windows系统服务运行,开机就可以自动启动虚拟机,而VirtualBox要做到同样功能则比较费劲。
② 虚拟机怎么安装嵌入式linux
1、准备安装文件,一般是一个安装可执行文件和一个破解key生成器,安装后一路next到最后,生成一个能用的key复制进去就完成了VMware软件安装;
2、运行软件,建立一个新的虚拟机,起个名字,或者直接选择RedHatLinux,然后选择虚拟机存放位置,一般在一个区空出8-10G就可以了,注意:存放的区必须是Fat32格式,否则在安装系统格式化硬盘的时候会出现硬件错误,另外这个时候VM/setting选择硬件设置,一般要做嵌入式开发工作,把llel和serial选上加进去就可以了,注意是物理硬件,如果你压根没有这两个接口就算了吧。
3、建立好了,OK,放入系统安装盘或者直接载入镜像,注意:默认CD-ROM是最后的光驱盘符,而往往这是虚拟光驱,这常常导致总是无法找到自启动光驱的错误,要改成指向你的物理光驱盘符,同样是在VM/setting硬件设置修改。
4、安装系统,和正常机器一样操作。以安装RedHatLinux为例,swap拨给512M,根目录拨给7-8G,选择完全安装,然后开始漫长的等待(默认虚拟机内存256M,比较慢),换三张CD,Linux安装完毕。
5、为了更好的、更方便地在虚拟机环境下开发,VM-Tools是十分有必要安装的。首先确认管理员权限,选中 VM/InstallVMtools安装,会自动加载一张虚拟光盘,解压运行对应的.tar.gz,一路enter,设置自己的显示格式,就完成了,会看到VMWare小组的Enjoy祝福
③ 嵌入式系统如何开发的
嵌入式系统开发就是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等。
嵌入式系统开发流程:
第一步:建立开发环境
操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器;
第二步:配置开发主机
配置MINICOM,一般的参数为波特率115200 Baud/s,数据位8位,停止位为1,9,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
第三步:建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如,三星的ARV17、ARM9系列芯片,这样就需要编写开发板上FLASH的烧写程序,可以在网上下载相应的烧写程序,也有Linux下的公开源代码的J-FLASH程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户购买了厂家的仿真器比较容易烧写FLASH,虽然无法了解其中的核心技术,但对于需要迅速开发自己的应用的人来说可以极大提高开发速度。
第四步:下载已经移植好的Linux操作系统
如MCLiunx、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于MCLiunx这样的系统只能编译内核进行调试。
第五步:建立根文件系统
下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。
第六步:建立应用程序的FLASH磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR型)512KB~32MB,有的系统使用非线性FLASH(NAND型)8MB~512MB,有的两个同时使用,需要根据应用规划FLASH的分区方案。
第七步:开发应用程序
可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μC/OS-II的方式。
第八步:烧写内核
根文件系统和应用程序,发布产品。
....................................................................................................................................................
................................................................
还有怎么学习嵌入式呢,我刚才看到一篇很不错的文章,是一个专科生介绍自己如何自学嵌入式,并找到嵌入式的工作,里面介绍了他的学习方法和学习过程,希望对你有帮助。
先做个自我介绍,我07年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了。09年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学了。
退学后我也迷茫,大专都没有毕业,我真的不知道我能干什么,我在纠结着我能做什么。所以辍学后我一段时间,我想去找工作,因为我比较沉默寡言,不是很会说话,我不适合去应聘做业务。我想应聘做技术的,可是处处碰壁。
一次偶然的机会,我才听到嵌入式这个行业。那天我去新华书店,在计算机分类那边想找本书学习。后来有个女孩子走过来,问我是不是读计算机的,有没有兴趣学习嵌入式,然后给我介绍了一下嵌入式现在的火热情况,告诉我学嵌入式多么的有前景,给我了一份传单,嵌入式培训的广告。听了她的介绍,我心里痒痒的,确实我很想去学会一门自己的技术,靠自己的双手吃饭。
回家后,我就上网查了下嵌入式,确实是当今比较热门的行业,也是比较好找工作的,工资也是相对比较高。我就下决心想学嵌入式了。于是我去找嵌入式培训的相关信息,说真的,我也很迷茫,我不知道培训是否真的能像他们宣传的那样好,所以我就想了解一段时间再做打算。
后来,我在网络知道看到一篇让我很鼓舞的文章,是一个嵌入式高手介绍没有基础的朋友怎么自学入门学嵌入式,文章写的很好,包含了如何学习,该怎么学习。他提到一个方法就是看视频,因为看书实在太枯燥和费解的,很多我们也看不懂。这点我真的很认同,我自己看书往往看不了几页。
我在想,为什么别人都能自学成才,我也可以的!我要相信自己,所以我就想自学,如果实在学不会我再去培训。
主意一定,我就去搜索嵌入式的视频,虽然零星找到一些嵌入式的视频,但是都不系统,我是想找一个能够告诉我该怎么学的视频,一套从入门到精通的视频,一个比较完整的资料,最好能有老师教,不懂可以请教的。
后来我又找到一份很好的视频,是在IT学习联盟网站推出的一份视频《零基础嵌入式就业班》(喜欢《零基础嵌入式就业班》的可以复制 sina.lt/qKh 粘贴浏览器地址栏按回车键即打开)。里面的教程还不错,很完整,可以让我从基础的开始学起。视频比较便宜。
下面介绍下我的学习流程,希望对和我一样完全没有基础的朋友有所帮助。
收到他们寄过来的光盘后,我就开始学习了,由于我没有什么基础,我就从最简单的C语言视频教程学起,话说简单,其实我还是很多不懂的,我只好请教他们,他们还是很热心的,都帮我解决了。C语言我差不多学了一个礼拜,接下来我就学了linux的基本命令,我在他们提供linux虚拟机上都有做练习,敲linux的基本命令,写简单的C语言代码,差不多也就三个礼拜。我每天都在不停的写一些简单的代码,这样一月后我基本掌握了C和linux的基本操作。
接下来我就去学习了人家的视频的培训教程,是整套的,和去参加培训没有多大的区别,这一看就是两个月,学习了ARM的基本原理,学习嵌入式系统的概念,也掌握了嵌入式的环境的一些搭建,对linux也有更深层次的理解了,明白了嵌入式应用到底是怎么做的,但是驱动我只是有一点点的了解,这个相对难一点,我想以后再慢慢啃。
这两个月,除了吃饭睡觉,我几乎都在学习。因为我知道几乎没有基础,比别人差劲,我只能坚持努力着,我不能放弃,我必要要靠自己来养活自己,必须学好这门技术,然后我就把不懂的问题总结记下来,这样慢慢积累了一段时间,我发现自己真的有点入门了。
最后的一个月,我就去看关于实践部分的内容,了解嵌入式项目具体的开发流程,需要什么样的知识,我就开始准备这方面的知识,也就是学习这方面的视频,同时他们建议我去找了找一些嵌入式面试的题目,为自己以后找工作做准备。我就到网上找了很多嵌入式的题目,把他们理解的记下来,这样差不多准备了20天左右
我觉得自己差不多入门了,会做一些简单的东西了。我就想去找工作看看,于是我就到51job疯狂的投简历,因为我学历的问题,专科没有毕业,说真的,大公司没有人会要我,所以我投的都是民营的小公司,我希望自己的努力有所回报。没有想过几天过后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比较严格,需要有一年的项目经验,所以我没有被选中。
后来陆续面试了几家公司,终于功夫不负有心人。我终于面试上的,是在闵行的一家民营的企业,公司规模比较小,我的职务是嵌入式linux应用开发,做安防产品的应用的。我想我也比较幸运,经理很看重我的努力,就决定录用我,开的工资是3500一个月,虽然我知道在上海3500只能过温饱的生活,但是我想我足够了。我至少不用每天都要靠父母养,我自己也能养活自己的。我想只要我继续努力,我工资一定会翻倍的。
把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有必要自卑,我们不比别人笨,只要我们肯努力,我们一样会成功。
假如你喜欢嵌入式的话就努力学习吧。
。。。。。。。。。。。。。。。。。。。。。。。。。。。