1.django版本哪个最好(怎么看django版本)
2.在 Linux 系统中编译安装 OpenCV
3.2.0版UT怎么看IP地址
django版本哪个最好(怎么看django版本)
导读:今天首席CTO笔记来给各位分享关于django版本哪个最好的码下相关内容,如果能碰巧解决你现在面临的码下问题,别忘了关注本站,码下现在开始吧!码下django2.1和2.0区别希望采纳--
如果mysql数据表迁移有错,码下可退回2.0版本django
Django2.1?码下淘宝什么是源码特性
Python版本支持
Python?版本要求3.5+,不再支持3.4。码下
模型权限:新增查看(view)权限
一直以来,码下Django?码下模型中只有?增加(Add)、删除(Delete)和编辑(Change)?码下三个默认的权限,没有单独的码下查看权限。新的码下?查看权限允许设置某一个模型为可读。
向前兼容性:如果用户取得了?码下修改(Change)权限,自然取得查看权限,码下无需再额外设置。码下
登录框架
contrib.auth.views?模块下所有的?函数视图(FBV)被移除,可以使用相应的?类视图(CBV)
安全
HttpResponse.set_cookie()?支持设置SameSite?属性
不再支持的数据
不再支持MySQL5.5及其以下、PostgreSQL9.3及其以下
其他更新
默认的jQuery?版本从2.3.3?更新至3.3.1
基于内存的缓存使用LRU?选择算法
ImageField?渲染的控件新增?accept="image/*"?属性
Model模型类支持init_subclass?重写
BooleanField?允许设置null=True,NullBooleanField?类可能在未来版本被移除
django选择什么框架做前端UI比较好
1、flex
Apache基金会今天发布了Flex4.8版本,这是Adobe将Flex捐献给Apache基金会后发布的第一个版本。
需要注意的是,Flex目前还在孵化阶段,还不是Apache的正式项目,Flex4.8也不是一个正式的Apache版本。
Apache称,该版本标志着Flex新时代的开始,Flex的未来将由社区来驱动,而不是由一个公司驱动。开发者可以通过贡献代码,来帮助改进Flex,如修复bug、增加功能等。
从Macromedia卖给Adobe,然后又捐给apache,不知道搞什么名堂。不过还好没有经过大幅重构,否则就真的是悲哀了!
2、extjs
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。
功能丰富,无人能出其右。
无论是界面之美,还是功能之强,ext的表格控件都高居榜首。
华丽的界面,灵活的功能,还有开发工具都是配套的,但有个最大的问题,用就得花钱!
3、easyui
easyui帮助你构建你的web应用更加容易。
它是一个基于jquery的插件,开发出来的一套轻量级的ui框架,非常小巧而且功能丰富。
官方网站是:
但是她有一个最大的问题就是代码只能找到以前的开源的版本,到了1.2以后的版本源代码都是经过混淆的,如果遇到问题修改起来会非常麻烦!不过一个比较大的优势是开源免费,并且界面做的还说的过去!
4、MiniUI
又一个基于jquery的框架,开发的汇付支付系统源码界面功能都很丰富。
jQueryMiniUI-快速开发WebUI。
它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带来绝佳的用户体验。
使用MiniUI,开发者可以快速创建Ajax无刷新、B/S快速录入数据、CRUD、Master-Detail、菜单工具栏、弹出面板、布局导航、数据验证、分页表格、树、树形表格等典型WEB应用系统界面。
界面做的挺不错,功能也挺丰富,但是有两个比较大的问题,一个是收费,一个是没有源码,说白了,不开源!基于这个开发如果想对功能做扩展就需要找他们的团队进行升级!
5、jQueryUI
jQueryUI是一套jQuery的页面UI插件,包含很多种常用的页面空间,例如Tabs(如本站首页右上角部分)、拉帘效果(本站首页左上角)、对话框、拖放效果、日期选择、颜色选择、数据排序、窗体大小调整等等非常多的内容。
功能非常全面,界面也挺漂亮的,可以整体使用,也可以分开使用其中的几个模块,免费开源!
6、DWZ
DWZ富客户端框架(jQueryRIAframework),是中国人自己开发的基于jQuery实现的AjaxRIA开源框架.
设计目标是简单实用,快速开发,降低ajax开发成本。
欢迎大家提出建议,我们将在下一版本中进一步调整和完善功能.共同推进国内整体ajax开发水平。
毕竟是国产的,支持一下,而且源码完全公开,可以选择一下!不过性能怎么样不敢确定!
7、GWT
Google网页工具包——GWT提供了一组基于Java语言的开发包,这个开发包的设计参考JavaAWT包设计,类命名规则、接口设计、事件监听等都和AWT非常类似。熟悉JavaAWT的开发者不需要花费多大的力气就能够快速的理解GWT开发工具包,将更多地时间投入到GWT应用的开发过程中。
你不用去了解这样那样的javascript框架,通过java你就可以写出功能丰富的界面,可以做单元测试,毕竟是帧好播源码google的产品,严重支持一下!
8、YUI
Yahoo!UILibrary(YUI)是一个开放源代码的JavaScript函数库,为了能建立一个高互动的网页,它采用了AJAX,DHTML和DOM等程式码技术。它也包含了许多CSS资源。使用授权为BSD许可证,基本上没怎么研究过!
YUICompressor倒是挺出名的,这套UI库不知道应用的情况怎么样!
9、Sencha
Sencha是由ExtJS、jQTouch以及Raphael三个项目合并而成的一个新项目。
大公司的框架,并且是几样库的强强联合,值得推荐!
、Dojo
在国内应用好像不是很广,不过性能上应该没问题。
Dojo是一个用javascript语言实现的开源DHTML工具包。
有多个基金会的支持,包括IBM和SUN,都是软件界的泰斗,值得信赖!
、ZK
ZK是一套以AJAX/XUL/Java为基础的网页应用程式开发框架,用于丰富网页应用程式的使用接口。最大的好处是,在设计AJAX网络应用程式时,轻松简便的操作就像设计桌面程式一样。ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性的引擎,同时还提供了多样丰富、可重复使用的XUL与HTML组件,以及以XML为基础的使用接口设计语言ZKUser-interfacesMarkupLanguage(ZUML)。
在线的demo
设计器的demo
日历组件
功能丰富,全面,文档齐全,而且升级了很多次,非常值得推荐!
、OperaMasks-UI
OperaMasks-UI是OperaMasks团队下半年打造的一款轻量级前端JS组件库,旨在提供一款学习曲线低、定制性灵活、样式统一,且多浏览器支持、覆盖企业业务场景的前端JavaScriptUI组件库。目前,该团队已将这一产品以LGPL开源协议开放给社区。
文档丰富,功能齐全,而且很容易使用和开发!而且是国产的哟!
、JavaFX
Sun公司(已于年被Oracle公司收购)在年月日发布了JavaFX技术的正式版,它使您能利用JavaFX编程语言开发富互联网应用程序(RIA)。JavaFXScript编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative,staticallytyped(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景,包括可以直接调用JavaAPI的能力。因为JavaFXScript是静态类型,它同样具有结构化代码、重用性和封装性,废品上门回收源码如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术创建和管理大型程序变为可能。
djangoweb开发python用什么版本最好python2.7和python3都是支持django的,鉴于python2.7大限已到,推荐用python3
我有一点点Python的基本知识(非常基本),想学一下Django,请推荐几本入门的Django教程,谢谢Django基础
1.视频
推荐使用慕课网的两门免费在线视频课程作为入门:
django初体检
django入门与实践
这两门课基本涵盖了Django最核心、同时也是最常用的部分,他们会给你建立一个Django的整体概念,便于消除你对Django的陌生感和恐惧感。
如果想进一步详细的了解Django,有个综合性的教程名叫
《Django企业开发实战》
该教程包含gibbook电子书(免费)以及视频部分(收费)。
其他中文资料
自强学堂:Django教程内容详实免费。值得一提的是作者使用Django建站,完全是在实践Django的使用,而且作者从年至今一直在根据Django版本升级而更新教学内容,从最初的Django1.6更新到了Django1.。作者称最新版本的Django1.内容马上就要推出。
DjangoGirls教程DjangoGirls的中文版,使用Django1.8。
追梦人物的博客以Django1.为基础开发博客到部署的完整教程。
2.书籍
TwoScoopsofDjango:目前有两个版本TwoScoopsofDjango:BestPracticesforDjango1.和TwoScoopsofDjango:BestPracticesforDjango1.8。这本书在Django的名气也是非常大,基本可以说影响过大多数Django开发人员,如果要进阶称为Django专业开发者,这本书是绕不过去的必看书籍。内容主要涵盖Django的最佳实践。
DjangoByExample在进阶的课程中,本书算是不错的。虽然一些章节(比如第7章)部分代码仍然存在bug,但是一方面作者正在该书主页不断进行代码更正,另一方面也是对中国读者最好的是,这本书已经由同在简书的@夜夜月进行了全书翻译:《DjangoByExample》中文版。
DjangoUnleashed内容覆盖较广,很多内容在其他书籍中并没有提及,比如密码的hash与加密等。但是没有实战项目。
《PythonWeb测试驱动方法》虽然测试驱动的开发方法(Test-DrivenDevelopment,TDD)并不是每个项目都会采用,但是测试的思想与方法还是值得去掌握。Python作为一门动态语言,没有静态类型检测的情况下,测试的重要性就显得尤为重要。本书使用Django的整个开发流程作为实例,作者不仅讲了开发过程单元测试和Selenium测试,同时也把部署的内容也覆盖到。内容始于Django,但不仅仅是Django,相信使用其他框架的Python开发者也可以从中获益匪浅。
django2.0和3.0的区别区别不大,有几个函数变了,url()是在django1、django2中使用,并且在API文档中明确指出,在将来的版本中可能不推荐使用,他还有一个别名为re_path()。path()是django3中使用的函数,是url()的替代品。
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。雷霆战机源码腾讯它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手DjangoReinhardt来命名的。年月2日,Django3.0发布
结语:以上就是首席CTO笔记为大家整理的关于django版本哪个最好的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
在 Linux 系统中编译安装 OpenCV
对于Linux系统中的C++程序,安装OpenCV(从源代码编译安装)常遇到挑战,尤其对系统不熟悉的用户。其实,只要按以下步骤操作,成功率非常高。本文将详细指导如何完成这一过程。1. 安装目标
若仅需Python调用OpenCV,可直接使用pip命令安装: 源代码编译安装的OpenCV,将提供特定路径下的头文件、共享库(.so或.a)以及Python接口相关文件。2. 软硬件要求
系统要求:Linux操作系统,支持各种主流发行版,包括arm架构。 硬件要求:若需CUDA功能,需要Nvidia显卡并安装驱动和CUDA。 内存:至少需要2GiB空闲内存,全部内存不足可能会影响编译。 CPU:4核或以上推荐,CUDA模块编译耗时,单核或双核可能需要2小时以上。3. OpenCV组件
OpenCV分为主体库和opencv-contrib,具体组件列表见其GitHub仓库。4. 依赖项
生成OpenCV需要一系列依赖,如apt命令列出的那些。根据需求选择安装,如服务器无需GUI支持,可不装相关包。5. 生成过程
从GitHub下载源码,解压后确保opencv和opencv_contrib在同一父目录,使用CMake进行配置,如设置Python接口支持等。6. 调用OpenCV
C++项目中调用OpenCV有默认方法,可通过cmake编译并链接OpenCV库。 遇到问题时,可在文章下方留言,作者会及时解答。2.0版UT怎么看IP地址
可能不能查看吧
UT服务器架设指南
做服务器前先到:
/...atedserver.php
下载服务器版UT,(v, Windows: MB | Linux: MB)安装需要M硬盘空间。
/ut...rver/cdkey.php
申请服务器专用CD-KEY
下载服务器安装文件后:
linux用户:新建一个用户帐号专门用来运行服务器,用这个用户登录,运行utlnxded.sh.bin文件。跟具屏幕提示继续。
windows用户:把zip文件解压缩到硬盘中,没有安装程序,解开来就行了。
在配置服务器前先下载最新升级补丁,给服务器程序升级。
再下载evolutionpack2,它能帮你解决许多用web页面管理上面的问题,和修正了一些bug。
/ut...rver/cdkey.php ,输入一些需要的信息后,服务器专用CDkey会通过email发给你。linux用户需要把收到的cdkey文件复制到你的系统文件夹中
E 如果你已经知道怎么在注册表里添加CDKEY就跳过这一步到J。
F 点击开始--->运行。在窗口中输入 regedit ,回车。
G 在注册表管理器中,双击"HKEY_LOCALMACHINE"展开它,双击"software"展开它,在它下面找到"Unreal Technology"文件夹.如果这个文件夹已经存在,跳到J。
H 添加一个新的键值。单击"software"文件夹,然后点编辑--->新建--->主键。一个新的文件夹就出现了,有一个高亮的区域让你给它命名,输入Unreal Technology 回车。
I 单击刚才新建的文件夹,点编辑--->新建--->主键。一个新的文件夹出现啦,又有一个高亮的区域让你命名,输入 Install Apps 回车,跳到K。
J 在Unreal Technology Installed apps文件夹下找到"UT"文件夹,如果它存在,跳到L
K 单击"Installed Apps"文件夹,点编辑--->新建--->主键。一个崭新的文件夹诞生啦,有一个高亮的区域让我们命名,输入UT 回车。
L 单击"UT"文件夹,点编辑--->新建--->建值。一个新的文件夹又出现啦,又有一个高亮的区域可以让我们起名字啦。输入 "CDKEY",回车。双击新建立的键值,你就可以编辑它的值。在里面输入你的cdkey序列号。点OK。关掉注册表编辑器。
M 如果你知道怎么用命令行命令进入你的虚幻安装文件夹里的system文件夹,跳到步骤O
N 用命令行建立服务器。我把我的文件安装在UTserver,我用这个举例子,输入cd utserver\system
O 输入ucc server DM-Antalus.ut2
如果一切顺利,一个专用服务器就架设好了,游戏中的地图是DM-Antalus。
默认下面,专用服务器的配置是给internet游戏配置的。这意味着它他尝试和国外的主服务器联系把它加入到主服务器的数据库里,这样你的服务器就可以出现在别人的服务器搜索列表里。目前有两个不同的主服务器在运行,Epic的和Gamespy的。
如果你在机器上已经安装了零售版的UT,那就不必运行Epic mail给你的.reg文件了,否则你注册表里的CDKEY会被改成服务器专用的,这样你自己就不能用这台机器玩了。
如果你是在居域网里建立服务器,并且想禁止UT和主服务器联系那就编辑UT.ini里修改下面的句子(如果找不到这部分,就在最后加后这几行):
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
配置服务器
现在你应该知道最基本的架设服务器的方法了,你需要把它配置成你需要的。下面的每个部分都有详细的常见问题解答
System 文件夹里有最重要的三个文件:user.ini runserver.bat和ut.ini 。 user.ini保存了地图循环列表。ut.ini保存了许多其他设置。runserver.bat 保存了启动服务器的设置。Linux用户没有runserver.bat文件,你要把每次都输入一长串命令启动服务器,或者你必须用一个外壳脚本启动服务器。(linux上用脚本启动UT服务器的例子参见munity.com/forums/showthread.php?s=&threadid=)
如果你架设多个服务器,通常你会使用一个共同的ut.ini文件,然后用不同的runserver.bat或者外壳脚本启动不同的服务器,下面是一个runserver.bat的例子:
ucc.exe server DM-Antalus?game=XGame.XDeathmatch?maxplayers=?minplayers=4?timelimit=?fraglimit=
ucc.exe 是服务器的执行文件,"server"告诉uccc下面要架设一个专用服务器。后面的东西是一些参数,设置服务器的游戏规则。第一条是服务器初始游戏的地图名字,这个例子中是DM-Antalus。跟着是游戏类型,例子中是死亡模式。不同的参数用问号分隔。不管你输入多少参数,整个命令都必须在一行中,如果分开来就不管用了。
下面列出ucc后面可以使用的所有参数列表。注意下面有一些参数在运行服务器是是感觉不出有什么变化的,列出它们只是为了列表了完整性:
AccessControl 用来打开高级管理员系统。和UT.ini中[Engine.GameInfo]部分里的AccessConrolClass一行的参数相同。
AdminName=xxxx 网页管理和控制台管理员的名字--参看下面的高级网页管理员部分。
adminpassword=xx 管理员密码。至少5位,否则无效。
bAutoNumBots=true/false 设置成true在人数小于地图默认设定的最小数时,会自动加入电脑bot补足。设置成false则不会。
autoadjust=true/false 设置成true,电脑bot会跟具玩家水平自动调整自己的等级。false则不会。
bPlayerMustBeReady=true/false 设置成true打开比赛模式,每局开时前所有玩家要按下鼠标确认后游戏才开始。false则不需要。
Balanceteams=true/false 自动分配玩家平衡队伍。
BlueTeam= 设置蓝队的名字。但是,不要以为你可以改变队伍的名字。However, don't get clever and decide you'll name the blue team Purple or something like that. Many classes in the game refer to this variable to perform team info logic这句话不太好翻自己看吧。总之最好不要加这个参数,加上它会有不良后果。
BlueTeamAI= 特别的参数用来控制蓝队电脑AI。给MOD制作者用来配置自己写的AI给新的游戏模式用的。别碰它。
BlueTeamSymbol= 设置蓝队的队标。最好别设它。
Character=X 玩家用的人物,架服务器时无效。
Class 如果在架服务器的时候使用,在服务器玩的玩家只能用默认的人物皮肤。通常玩家都会用自己喜欢的人物皮肤。所以这个命令毫无用处。
difficulty=x 设置电脑登记,从1到7分别是novice到godlike。
FF=x 友队伤害的百分比。0是关闭,1是% 所以.就是%友队伤害。
fraglimit=x 死亡模式最多杀人数。
game= 游戏类型,可以用:xDeathmatch, xCTFgame,xBombingRun,或者xDoubleDom
gamepassword= 做为客户端加入游戏时需要的密码。
GameRules 设置特别的GameRules类,GameRules是mutator在UT中增加的新类型。通常你不需要用它。几乎所有的mod都会自己动配置它们自己的GameRules。
Gamespeed=x 设置游戏速度,默认是1。最大2
Gamestats=true/false 设置成true会打开统计功能(玩家的游戏资料,如命中率等会上传到主服务器资料库进行统计并参加全世界排名),电脑数量必须设为0才能生效。
goalscore=x CTF,DOM和BR模式里的队伍分数上限。
maxlivers=x last man standing模式,死x后玩家就出局,直到只剩最后一人游戏结束。
maxplayers=x 最大同时游戏人数。
maxspectators=x 最大同时观战者人数。
minplayers=x 最小游戏人数,小于此数用电脑bot补足。
mutator= 在游戏中添加mutator(具体看下面)
numbots=x 设置电脑bot数量。注意打死bot,游戏统计功能就无效了。
Password=xxxx 别的游戏者端加入游戏时需要的密码。
PlayerMustbeready=true/false 在每局开始前等待其他的玩家。
QuickStart 允许游戏在没有人的时候照常进行,当然有电脑bot在玩的时候有效。
RedTeam 参看BlueTeam
RedTeamAI 参看BlueTeamAI
RedTeamSymbol 参看BlueTeamSymbol
SaveGame 继续一个保存过的单人游戏。架服务器时没用。
SpectatorOnly=True/False 客户端选项,允许客户端用命令行指定观察者模式,架服务器时没用。
Team 客户端选项,允许客户端用命令行指定希望加入的队伍。同样架服务器时没用。
translocator=true/false 设置为true允许使用移位器,false相反。
timelimit=x 每局时间限制。
Tournament=true/false 设置成竞技场模式
weaponstay=true/false 武器保留。
几个例子:
ucc server DM-Antalus?game=XGame.XDeathmatch?minplayers=4 架设死亡模式服务器,初始地图DM-Antalus,最少4人,不足4人用电脑补足。
ucc server CTF-Citadel?game=XGame.xCTFGame?FF=0 架设夺旗模式服务器,初始地图CTF-Citadel,无友队伤害。
ucc server DOM-SunTemple?game=xGame.xDoubleDom?mutator=UnrealGame.MutLowGrav 双重据点模式服务器,初始地图DOM-SunTemple,低重力模式开启。
ucc server BR-Anubis?game=XGame.xBombingRun?weaponstay=true 架设BR模式服务器,初始地图BR-Anubis,武器保留开启。
ucc server DM-Curse3?game=XGame.xTeamGame?fraglimit= 团队死亡模式,初始地图DM-Curse3,杀人数上限.
关于和主服务器的联系
如果你不想你的服务器显示在游戏的服务器搜索列表里,或者你只是在居域网里的服务器,你可以在UT.ini里把下面这些关掉
[IpDrv.MasterserverUplink]
DoUplink=true|false 控制你的服务器是否与internet上的主服务器联系。
UplinkToGamespy=true|false 和DoUplink相似,是决定是否和gamespy服务器建立联系。
SendStats=true|false 是否发送统计信息到主服务器
ServerBehindNAT=true|false 服务器是否在网关后面。
DoLANBroadcast=true|false 设置服务器是否可以在居域网中查找到。一般设true
地图循环和个性化地图列表
默认下游戏会地图会循环出现。 循环顺序在user.ini文件里面控制。 每个游戏类型都有一个部分列出循环的地图。你可以编辑它,去掉你不喜欢的,加上你喜欢的地图。如
[XInterface.MapListDeathMatch]
MapNum=0
Maps=DM-Morbias-2k3
Maps=DM-Spacepir8
Maps=DM-KillingField
Maps=DM-Deck]i[-BETA
Maps=DM-MoonTemple
Maps=DM-Reigncaster
Maps=DM-Golgatha
Maps=DM-Tooth-N-Claw
Maps=DM-Stage1
Maps=DM-Liandri_BETA2
如果你想玩更多的地图,就去网上下载吧。把他们解压缩后把ut2文件放到map文件夹里,utx放到texture文件夹里,以及其他相应文件都放到相应目录里,你就能使用新地图了。
在一个游戏服务器上运行多个游戏类型
你可能会想在一个游戏服务器上运行多个游戏类型,比如 CTF,DOM,BR。可以用以下方法切换地图,举例如下:
比如 我们先开始一个死亡模式游戏在DM-Asbestos地图上。因为现在是死亡模式,游戏结束后UT会检查user.ini中[XInterface.MapListDeathMatch]部分索取下一张地图的名字。它找到了BR-Anubis地图名字,然后就切换到BR模式读取BR-Anubis地图。一但BR-Anubis的游戏结束后,UT会检查 [XInterface.MapListBombingRun]部分,因为已经是BR模式了。它又找到CTF-Citadel地图,然后就换成CTF模式,继续....
[XInterface.MapListCaptureTheFlag]
MapNum=0
Maps=DM-Asbestos?game=XGame.xDeathMatch
[XInterface.MapListDeathMatch]
MapNum=0
Maps=BR-Anubis?game=XGame.xBombingRun
[XInterface.MapListBombingRun]
MapNum=0
Maps=CTF-Citadel?game=XGame.xCTFGame
第三方地图和重定向
如果你使用了不是游戏自带的第三方地图,别人连上服务器就可能花很长时间下载地图同时占用别的游戏者的带宽使游戏不流畅,解决方法可以是把地图文件放到另一个网页服务器上然后告诉客户端自动从那里下载
用 UTcompress(可以在下载)...?的ut.ini 下面的部分重定向下载服务器:
IpDrv.HTTPDownload]
HTTPServer=work filter. 尤其要用到的是nat.
第二:内核要支持tun/tap模块。
我的是debian,自己编译的内核,所以在编译的时候就已经弄好了,由于我从来不用官方的内核,所以我就不知道debian的管方内核是不是已经有了。
不过可以自己看一下。
iptables的支持是不用问的,一般都是内置的。
就是tun/tap设备的支持。 这一点,可以这样看一下:
modprobe tun, lsmod 看一下有没有tun 如果成功,就是支持的, 而且是被编译成了模块,如果没有,可以看一下:/dev/net/,看看是不是存在tun这样一个文件,如果存在就是内核内置的,没有编译成模块,另外, 如果编译成了模块,也要注意是否有这个文件存在。不在的话,得自己建了。
mknode /dev/net/tun, 一般现在的发行版都会在你modprobe tun时自动帮你弄好,所以不用担心这个。
好了。我们开工了。
从主站上下载回来qemu的源码:
tar zxvf qemu-0.8.2.tar.gz
cd qemu-0.8.2
gcc -v
这里看一下gcc的版本。
qemu目前只能用gcc3来编译。如果你的是gcc4,
就su - 一下,到root, 然后到/usr/bin/
看一下有没有gcc3
有的话,看看原来的gcc是链接还是一个文件。如果是一个文件,就备份一下,呆会恢复。 如果是链接就不用管它了。看它指向哪一个gcc, 记得呆会儿要恢复过来的。 链接的做法简单了: ln -s gcc-3.3 gcc
就这样的。 备份就更简单了。mv gcc gcc.bak
回到我们刚才的目录里。
运行:
./configure
make
make install
这样就装好了qmeu,
现在我们需要使用kqemu模块来加速了。
下载回来kqemu-1.3.0pre9.tar.gz.
解开后。
tar zxvf kqemu-1.3.0pre9.tar.gz
然后进入到目录里。这个时候有两件事要注意:
1. 需要有你现在所用的内核的内核头文件。
2. gcc的版本要和你的内核编译的gcc版本一致。一搬来说就是你刚才改过的哪个了。恢复回来就好了。
好了。
./configure && make && make install
就好了。
我们已经就装好了所有的软件。
但是有时候我们需要一些设置才能工作。
1. modprobe kqemu
2. 看看/dev/kqemu 字符文件是否存在。
3. /dev/kqemu 文件的权限要是的。
做好这些后就可以开始安装你的虚拟机了,
安装好,我们再设置你的网络
退出你的root, 然后
cd ~ 进入你的home directory
mkdir qemu
cd qemu
qemu-img create win2k.img 2G
建立一个硬盘文件。然后我们就可以在这个上面安装win了。
可以使用iso文件, 也可以使用光盘。
我们这里使用光盘来安装。
qemu -hda win2k.img -cdrom /dev/cdrom -boot d -localtime -m -win2k-hack
这样就可以开始安装了。解释一下这里的选项:
-hda 指定第一个硬盘。
-cdrom 指定你的cdrom 后面的文件可以是一个iso文件
-boot d 从光盘启动,如果从你的硬盘启动,就-boot c, -localtime使用本机的时间。 -m 就是设定内存的大小。默认是, 注意可以设得大一点的内存,但是需要你的/dev/shm足够大。
-win2k-hack, 在安装的时候会有一个问题,它会提示你磁盘空间不够,加上这个参数就可以了。
好了。
安装完成了之后,就可以启动来看一把了。
启动如下:
qemu -hda win2k.img -boot c -localtime -m . 这样就默认使用了kqemu
现在应该也可以上网了,但是注意虚拟机使用的是dhcp的方式来上网的。
而且不能ping通你的本机,我想这个可能是大多数人不想要的,所以下面我们来配置网络。 通过tun/tap, 有点象vmware里的host-only
要配置host-only(tun/tap)这样的网络,我们上面已经讲过了两个要求,现在我们来做更多的事:
1、 建立一个文件 /etc/qemu-ifup
内容很简单:
#!/bin/sh
sudo /sbin/ifconfig $1 ..0.1 netmask ...0
然后chmod a+x /etc/qemu-ifup
注意这里的..0.1是你的tun/tap网卡的地址,一定要注意:不能和你的实际的网卡在同一个网段。 也就是如果tun/tap是..2.0.0/, 那么你的时间网卡就不能在这个网段。
然后写一个小的脚本:
userinit 这个是文件名:
文件内容如下:
#!/bin/bash
case "$1" in
start)
[ ! -e /dev/kqemu ] && mknod -m /dev/kqemu c 0
echo > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s ..0.0/ -j MASQUERADE
;;
stop)
;;
esac
然后:chmod a+x userinit
再:mv userinit /etc/init.d/
再: update-rc.d userinit start 2 3 .
要注意的是这个操作是在debian 下面的做法。
如果是在其他发行版:比如Fedora, 你可以直接写这样的script在你的/etc/rc.local文件里
[ ! -e /dev/kqemu ] && mknod -m /dev/kqemu c 0
echo > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s ..0.0/ -j MASQUERADE
编辑你的/etc/modules. 加上: kqemu (如果你的tun被编译成了模块,也加上tun)
最后还有一点。大家一定注意到了一个问题: 就是qemu-ifup脚本哩使用了sodu, 所以如果想普通用户能用,那么就配一下sudoer.
这个好配极了。 编辑:/etc/sudoers
你的用户名 ALL=(ALL):ALL NOPASSWD:ALL
这样就可以不用输入密码了。
现在我们可以开始启动你的虚拟机了。
要象这样启动:
qemu -hda win2k.img -boot c -localtime -m -net nic,vlan=0 -net tap,vlan=0
如果嫌麻烦,
就干脆写一个一句话的脚本:
#!/bin/bash
qemu -hda win2k.img -boot c -localtime -m -net nic,vlan=0 -net tap,vlan=0
存储为win2k, 加上x的权限,然后放置到/usr/bin, 或者是/usr/local/bin下
以后直接运行win2k, 就可以启动了。
同理也可以安装多个系统,写多个脚本启动。
这样比较的酷