A. webvirtmgr添加主機
1.創建SSH私鑰和ssh配置選項(在安裝了WebVirtMgr的系統上):
2.在webvirtmgr主機上,然後將公鑰復制到qemu-kvm / libvirt主機伺服器:
3.打開webvirtmgr-dashboard進行添加額外的qemu-kvm進行統一管理 如下圖:
4.推薦管理架構 如下圖
B. LVS+Keepalived高可用集群與KVM
1、架構圖
2、編譯安裝keepalived
3、准備郵件通知腳本(當有keepalived節點故障時發送郵件到指定郵箱)
4、配置郵箱(兩個keepalived節點安裝mailx)
5、創建主配置文件
6、創建子配置文件 (/etc/keepalived/conf.d)
經測試,此時VIP 10.0.0.100漂在 lvs1上,當lvs1掛了後,VIP會漂到 lvs2 上,並發送郵件通知 lvs2 成為主節點。
7、利用 keepalived 生成 LVS 的虛擬伺服器配置 (兩個節點一樣)
8、重啟keepalived,安裝ipvsadm工具查看生成的 lvs 規則
9、准備兩台web伺服器綁定VIP至web伺服器的 lo 網卡,分別修改內核參數限制響應級別和通告級別
測試,訪問 VIP 10.0.0.100 已經可以輪詢調度
故障模擬:掛掉 lvs1,可以看到 lvs 規則已經轉移到 lvs2上,並收到郵件通知。
1、宿主機環境准備
2、查看宿主機是否開啟虛擬化(Intel CPU 對應 vmx ;AMD CPU 對應 svm)
3、KVM 相關工具包介紹
4、libvirt 結構圖
5、CentOS7 安裝KVM
6、使用 virt-manager 圖形化虛擬機管理工具創建虛擬機
圖形化界面新建虛擬機,跟VMware操作類似。
7、使用 virt-install 命令創建虛擬機
7.1、利用 qemu-img命令創建虛擬磁碟
查看虛擬磁碟大小,是根據使用多少動態增長。
7.2、利用 osinfo-query命令查看支持的OS版本
7.3、創建虛擬機光碟啟動並手動安裝
8、創建虛擬機從光碟啟動並利用kickstart自動安裝系統
8.1、創建虛擬磁碟
8.2、准備 yum 倉庫
8.3、准備kickstart應答文件
8.4、使用virt-install 命令創建虛擬機(方法一)
方法二:
C. 建立UT伺服器
UT2003伺服器架設指南
做伺服器前先到:
http://www.unrealtournament2003.com/...atedserver.php
下載伺服器版UT2003,(v2107, Windows: 265MB | Linux: 249MB)安裝需要780M硬碟空間。
http://ut2003master.epicgames.com/ut...rver/cdkey.php
申請伺服器專用CD-KEY
下載伺服器安裝文件後:
linux用戶:新建一個用戶帳號專門用來運行伺服器,用這個用戶登錄,運行ut2003lnxded.sh.bin文件。跟具屏幕提示繼續。
windows用戶:把zip文件解壓縮到硬碟中,沒有安裝程序,解開來就行了。
在配置伺服器前先下載最新升級補丁,給伺服器程序升級。
再下載evolutionpack2,它能幫你解決許多用web頁面管理上面的問題,和修正了一些bug。
http://unreal.cpgl.net/UT2003/patch/evolutionpack2.zip 20KB
安裝伺服器:
在你下載完並解壓縮所有需要的文件後:
A 如果你已經在機器上裝了零售版UT2003,那麼跳到第M條
B 如果你下載了免費的伺服器專用程序,且不需要再申請伺服器專用cdkey,那麼跳到第D條
C 如果你是使用零售版UT2003來運行伺服器的話,那先安裝游戲,游戲會自動添加註冊表中必要的信息。跳到第M條。
D 打開 http://ut2003master.epicgames.com/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文件夾下找到"UT2003"文件夾,如果它存在,跳到L
K 單擊"Installed Apps"文件夾,點編輯--->新建--->主鍵。一個嶄新的文件夾誕生啦,有一個高亮的區域讓我們命名,輸入UT2003 回車。
L 單擊"UT2003"文件夾,點編輯--->新建--->建值。一個新的文件夾又出現啦,又有一個高亮的區域可以讓我們起名字啦。輸入 "CDKEY",回車。雙擊新建立的鍵值,你就可以編輯它的值。在裡面輸入你的cdkey序列號。點OK。關掉注冊表編輯器。
M 如果你知道怎麼用命令行命令進入你的虛幻安裝文件夾里的system文件夾,跳到步驟O
N 用命令行建立伺服器。我把我的文件安裝在UT2003server,我用這個舉例子,輸入cd ut2003server\system
O 輸入ucc server DM-Antalus.ut2
如果一切順利,一個專用伺服器就架設好了,游戲中的地圖是DM-Antalus。
默認下面,專用伺服器的配置是給internet游戲配置的。這意味著它他嘗試和國外的主伺服器聯系把它加入到主伺服器的資料庫里,這樣你的伺服器就可以出現在別人的伺服器搜索列表裡。目前有兩個不同的主伺服器在運行,Epic的和Gamespy的。
如果你在機器上已經安裝了零售版的UT2003,那就不必運行Epic mail給你的.reg文件了,否則你注冊表裡的CDKEY會被改成伺服器專用的,這樣你自己就不能用這台機器玩了。
如果你是在居域網里建立伺服器,並且想禁止UT2003和主伺服器聯系那就編輯UT2003.ini里修改下面的句子(如果找不到這部分,就在最後加後這幾行):
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
配置伺服器
現在你應該知道最基本的架設伺服器的方法了,你需要把它配置成你需要的。下面的每個部分都有詳細的常見問題解答
System 文件夾里有最重要的三個文件:user.ini runserver.bat和ut2003.ini 。 user.ini保存了地圖循環列表。ut2003.ini保存了許多其他設置。runserver.bat 保存了啟動伺服器的設置。Linux用戶沒有runserver.bat文件,你要把每次都輸入一長串命令啟動伺服器,或者你必須用一個外殼腳本啟動伺服器。(linux上用腳本啟動UT2003伺服器的例子參見http://www.ina- community.com/forums/showthread.php?s=&threadid=231043)
如果你架設多個伺服器,通常你會使用一個共同的ut2003.ini文件,然後用不同的runserver.bat或者外殼腳本啟動不同的伺服器,下面是一個runserver.bat的例子:
ucc.exe server DM-Antalus?game=XGame.XDeathmatch?maxplayers=16?minplayers=4?timelimit=20?fraglimit=25
ucc.exe 是伺服器的執行文件,"server"告訴uccc下面要架設一個專用伺服器。後面的東西是一些參數,設置伺服器的游戲規則。第一條是伺服器初始游戲的地圖名字,這個例子中是DM-Antalus。跟著是游戲類型,例子中是死亡模式。不同的參數用問號分隔。不管你輸入多少參數,整個命令都必須在一行中,如果分開來就不管用了。
下面列出ucc後面可以使用的所有參數列表。注意下面有一些參數在運行伺服器是是感覺不出有什麼變化的,列出它們只是為了列表了完整性:
AccessControl 用來打開高級管理員系統。和UT2003.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是100% 所以.25就是25%友隊傷害。
fraglimit=x 死亡模式最多殺人數。
game= 游戲類型,可以用:xDeathmatch, xCTFgame,xBombingRun,或者xDoubleDom
gamepassword= 做為客戶端加入游戲時需要的密碼。
GameRules 設置特別的GameRules類,GameRules是mutator在UT2003中增加的新類型。通常你不需要用它。幾乎所有的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=100 團隊死亡模式,初始地圖DM-Curse3,殺人數上限100.
關於和主伺服器的聯系
如果你不想你的伺服器顯示在游戲的伺服器搜索列表裡,或者你只是在居域網里的伺服器,你可以在UT2003.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-Deck16]i[-BETA
Maps=DM-MoonTemple
Maps=DM-Reigncaster
Maps=DM-Golgatha
Maps=DM-Tooth-N-Claw
Maps=DM-Stage1
Maps=DM-Liandri2003_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
第三方地圖和重定向
如果你使用了不是游戲自帶的第三方地圖,別人連上伺服器就可能花很長時間下載地圖同時佔用別的游戲者的帶寬使游戲不流暢,解決方法可以是把地圖文件放到另一個網頁伺服器上然後告訴客戶端自動從那裡下載
用 UT2003compress(可以在http://www.drunksnipers.com下載)...?的ut2003.ini 下面的部分重定向下載伺服器:
IpDrv.HTTPDownload]
HTTPServer=http://server.domain.name/myUTmaps/
Proxyserver=
Proxyport=
UseCompression=True
記住httpserver=後面的地址最後一定要加上個"/" ,否則它不會工作。如果碰到問題的話,把域名改成網頁伺服器的IP地圖試試看(比如192.168.1.10)
Mutators
Mutators要和啟動命令加在同一行里。下面的例子是架設一個死亡模式的伺服器地圖是DM-Asbestor帶大頭的mutator和Instagib的mutator:
ucc.exe DM-Asbestos?Game=XGame.xDeathmatch?Mutator=UnrealGame.MutBigHead,XGame.MutInstaGib
默認mutator參數列表:
Arena - XWeapons.MutArena
Big Head - UnrealGame.MutBigHead
Float-Away Corpses - XGame.MutHeliumCorpses
InstaGib - XGame.MutInstaGib
Zoom InstaGib - XGame.ZoomInstaGib
LowGrav - UnrealGame.MutLowGrav
No Adrenaline - XGame.MutNoAdrenaline
No Super Weapons - XWeapons.MutNoSuperWeapon
Quad Jump - XGame.MutQuadJump
AutoHealing - XGame.MutRegen
Slow Motion Deaths - XGame.MutSlomoDeath
Species Specific Stats - XGame.MutSpeciesStats
Vampire - XGame.MutVampire
注意部分mutator參數的前綴的不同:XWeapons , UnrealGame 等。
給每張地圖不同的Mutator
你可以通過修改user.ini為每張地圖設置不同的mutator 。除非你換掉它們,這些mutator會在所有地圖中生效。你可以用"mutator="後面什麼也不要加來在下一張地圖中去掉mutator。下面的例子是在DM-Antalus地圖上的游戲帶有Slow-mo death和low-grav兩個mutator,然後在下一張DM-Golgotha時去掉它們。
Maps=DM-Reigncaster
Maps=DM-Antalus?game=XGame.xDeathMatch?mutator=XGame.MutSlomoDeath,unrealGame.MutLowGrav
Maps=DM-Golgatha?mutator=
Maps=DM-Asbestos
同樣的方法可以載入其他的命令在後面,比如你可能想在某一張地圖上有隊友傷害,然後在下一張地圖中去掉它:
Maps=CTF-Chrome?FF=0.75
Maps=CTF-Citadel?FF=0
頁面管理員和高級頁面管理
基本的頁面管理員通過在runserver.bat里指定管理員名字和密碼,並編輯ut2003.ini中[UWeb.WebServer]部分啟用。這將允許你通過web頁面完全控制伺服器,只需要一個管理員帳號。注意,這些都不需要通過IIS或者Apache就可以完成。UT伺服器提供了自己的web頁面伺服器。如果你的伺服器上運行了IIS或者Apache,你要把它們的監聽埠口改成80以外的。
[UWeb.WebServer]
bEnabled=True
Listenport=xxxx
高級網頁管理員允許多個不同控制許可權的管理員帳號。注意,那個evolutionpack目前發現在使用高級管理員下有潛在的嚴重安全漏洞。我強烈建議在互聯網遠程式控制制系統中不要使用它。
具體的高級管理員指南參見http://www.unrealadmin.org/moles.p...rticle&artid=7
你應該在你的runserver.bat里加上管理員名字和密碼參數,除非你不想使用高級網頁管理工具。
一台機器上架設多個伺服器
你可以有兩種方法在一台機器上架設多個伺服器:給每個伺服器不同的埠號,或者分配不同的IP地址給你的每個UT伺服器,
如果你用不同的埠號架設伺服器,你可能碰到他們在游戲的伺服器搜索列表裡顯示不出來的問題。
如果你有多個IP你可以用-multihome 參數在runserver.bat里給每個伺服器綁定不同IP。例如下面把IP地址192.168.0.1綁到伺服器上
ucc server DM-Antalus?game=XGame.xDeathMatch -multihome 192.168.0.1
在linux下面,你需要戀情multihome=ip的參數:
ucc server DM-Antalus?game=XGame.xDeathMatch -multihome=192.168.0.1
伺服器在網關,防火牆,路由器後面
如果你的伺服器在網關,防火牆,路由器後面你需要打開一些埠讓外面的客戶端連進來。默認的埠有7777,7778,7787,7788,28900,28902。我現在還不確定他們是TCP,UDP或者兩者都是。
你還要在UT2003.ini中找到[IpDrv.MasterServerUplink]部分,把ServerBehindNat設為true。
除非你改變了埠(如上面說的一台機器運行多個伺服器)那麼凡是你用到的埠都要打開。
硬體要求
Epic建議,兩個32人的專用伺服器在一台伺服器主機上需要一台1.7G的CPU。你至少需要128M內寸(最小級限了)。
最近改一些客戶端的項目,測試的時候需要使用windows,因為是windows的客戶軟體,所以不得不使用windows, 原來總是在我的debian上安裝vmware, 自從升級內核到2.6.17後,發現怎麼安裝vmware都有問題, 就比較煩,原來看到過華華說過qemu,0.8.1的時候安裝過一次,感覺不是太理想,尤其是sdl的屏幕造成滑鼠拖動很慢, 去主戰的forum里看了看,發現這個已經被patch掉了。
而且kqemu又到了pre9了。正好試一下。
說一下目的:
安裝qemu和kqemu, 配好網路。實現virtual machine 和 host 能夠互通,也就是不是使用默認的user模式。 而改使用tun/tap的模式。
這里有兩個要求:
第一:內核要支持network 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 文件的許可權要是0666的。
做好這些後就可以開始安裝你的虛擬機了,
安裝好,我們再設置你的網路
退出你的root, 然後
cd ~ 進入你的home directory
mkdir qemu
cd qemu
qemu-img create win2k.img 2G
建立一個硬碟文件。然後我們就可以在這個上面安裝win2000了。
可以使用iso文件, 也可以使用光碟。
我們這里使用光碟來安裝。
qemu -hda win2k.img -cdrom /dev/cdrom -boot d -localtime -m 256 -win2k-hack
這樣就可以開始安裝2000了。解釋一下這里的選項:
-hda 指定第一個硬碟。
-cdrom 指定你的cdrom 後面的文件可以是一個iso文件
-boot d 從光碟啟動,如果從你的硬碟啟動,就-boot c, -localtime使用本機的時間。 -m 就是設定內存的大小。默認是128, 注意可以設得大一點的內存,但是需要你的/dev/shm足夠大。
-win2k-hack, 在安裝2000的時候會有一個問題,它會提示你磁碟空間不夠,加上這個參數就可以了。
好了。
安裝完成了之後,就可以啟動來看一把了。
啟動如下:
qemu -hda win2k.img -boot c -localtime -m 256. 這樣就默認使用了kqemu
現在應該也可以上網了,但是注意虛擬機使用的是dhcp的方式來上網的。
而且不能ping通你的本機,我想這個可能是大多數人不想要的,所以下面我們來配置網路。 通過tun/tap, 有點象vmware里的host-only
要配置host-only(tun/tap)這樣的網路,我們上面已經講過了兩個要求,現在我們來做更多的事:
1、 建立一個文件 /etc/qemu-ifup
內容很簡單:
#!/bin/sh
sudo /sbin/ifconfig $1 192.168.0.1 netmask 255.255.255.0
然後chmod a+x /etc/qemu-ifup
注意這里的192.168.0.1是你的tun/tap網卡的地址,一定要注意:不能和你的實際的網卡在同一個網段。 也就是如果tun/tap是192.168.2.0.0/24, 那麼你的時間網卡就不能在這個網段。
然後寫一個小的腳本:
userinit 這個是文件名:
文件內容如下:
#!/bin/bash
case "$1" in
start)
[ ! -e /dev/kqemu ] && mknod -m 666 /dev/kqemu c 250 0
echo 1024 > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
;;
stop)
;;
esac
然後:chmod a+x userinit
再:mv userinit /etc/init.d/
再: update-rc.d userinit start 25 2 3 .
要注意的是這個操作是在debian 下面的做法。
如果是在其他發行版:比如Fedora, 你可以直接寫這樣的script在你的/etc/rc.local文件里
[ ! -e /dev/kqemu ] && mknod -m 666 /dev/kqemu c 250 0
echo 1024 > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
編輯你的/etc/moles. 加上: kqemu (如果你的tun被編譯成了模塊,也加上tun)
最後還有一點。大家一定注意到了一個問題: 就是qemu-ifup腳本哩使用了so, 所以如果想普通用戶能用,那麼就配一下sudoer.
這個好配極了。 編輯:/etc/sudoers
你的用戶名 ALL=(ALL):ALL NOPASSWD:ALL
這樣就可以不用輸入密碼了。
現在我們可以開始啟動你的虛擬機了。
要象這樣啟動:
qemu -hda win2k.img -boot c -localtime -m 256 -net nic,vlan=0 -net tap,vlan=0
如果嫌麻煩,
就乾脆寫一個一句話的腳本:
#!/bin/bash
qemu -hda win2k.img -boot c -localtime -m 256 -net nic,vlan=0 -net tap,vlan=0
存儲為win2k, 加上x的許可權,然後放置到/usr/bin, 或者是/usr/local/bin下
以後直接運行win2k, 就可以啟動2000了。
同理也可以安裝多個系統,寫多個腳本啟動。
這樣比較的酷
D. ubuntu qemu怎麼聯網
一、虛擬機的創建: 1.ubuntu下安裝好qemu後,使用如下命令創建虛擬機:
qemu-img create -f qcow2 voltdb.img 10g
-f qcow2是指:qemu採取的鏡像格式,qcow2是qemu最常使用的格式,該格式下可以採用來寫時復制技術來優化性能;
voltdb.img是指:鏡像名稱
10g是指:鏡像文件大小
2.之後需要為該鏡像文件安裝操作系統:
qemu-system-x86_64-enable-kvm-hdavoltdb.img-bootd-cdrom./ubuntu-16.04-desktop-amd64.iso-m2048-vnc:1
-enable-kvm:使用KVM進行加速(確保在BIOS中開啟CPU對虛擬化的支持,若未加此項,則鏡像安裝會很慢)
-hda: 指定要安裝虛擬機要使用的虛擬磁碟
-boot d:指定啟動位置,d表示從光碟啟動
-cdrom:指定cdrom為iso文件
-m:指定虛擬機內存大小,默認單位是MB
-vnc:1:通過vnc創建虛擬桌面。(筆者在這里未加-vnc:1時,會提示:CouldnotinitializeSDL(Noavailablevideodevice)-exiting)
3.此時,ubuntu的命令行會阻塞,我們可以通過在windows下通過TigerVNC去遠程連接
(下載地址:https://github.com/TigerVNC/tigervnc/releases)
在TigerVNC中,我們輸入ip:1(注意圓角半形的:)連接即可連接到voltdb.img虛擬鏡像的安裝界面,在那裡完成虛擬機操作系統的安裝即可。
二、配置橋接網路
qemu採用兩種方式配置上網:
其一,默認方式為用戶模式網路(Usermode Networking),數據包由NAT方式通過主機的介面進行傳送。
其二,使用橋接方式(Bridged Networking),外部的機器可以直接聯通到虛擬機,就像聯通到你的主機一樣。
第一,用戶模式
虛擬機可以使用網路服務,但區域網中其他機器包括宿主機無法連接它。比如,它可以瀏覽網頁,但外部機器不能訪問架設在它裡面的web伺服器。
默認的,虛擬機得到的ip空間為10.0.2.0/24,主機ip為10.0.2.2供虛擬機訪問。可以ssh到主機(10.0.2.2),用scp來拷貝文件。
第二,橋接模式
這種模式允許虛擬機就像一台獨立的主機一樣擁有網路。這種模式需要網卡支持,一般的有線網卡都支持,絕大部分的無線網卡都不支持
1.配置host
橋接就是把一台機器上的若干個網路介面「連接」起來。其結果是,其中一個網口收到的報文會被復制給其他網口並發送出去。以使得網口之間的報文能夠互相轉發。
目的:使得區域網內可以通過ssh登陸虛擬機
1.1首先,安裝兩個配置網路所需軟體包:
apt-get install bridge-utils # 虛擬網橋工具
apt-get install uml-utilities # UML(User-mode linux)工具
1.2創建網橋,並添加埠,如下顯示的是/etc/network/interface配置文件下的設置
[plain]view plain
source/etc/network/interfaces.d/*
#Theloopbacknetworkinterface
autolo
ifaceloinetloopback
#以下是之前未添加網橋時的配置
#Theprimarynetworkinterface
#autoenp3s0
#ifaceenp3s0inetstatic
#address192.168.66.149
#netmask255.255.255.0
#network192.168.66.0
#broadcast192.168.66.255
#gateway192.168.66.1
#dns-nameservers114.114.114.114
#dns-searchfoolsky
#添加網橋br0
autobr0
ifacebr0inetstatic#之前上網時採用靜態IP,所以這里依然使用此
address192.168.66.149#將之前上網的ip地址分配給網橋。
network192.168.66.0
netmask255.255.255.0
broadcast192.168.66.255
gateway192.168.66.1
bridge_portsenp3s0tap0#為網橋添加兩個介面,分別是enp3s0(之前默認的上網網口)和tap0
bridge_stpoff
bridge_fd0
bridge_maxwait0
dns-nameservers114.114.114.114
#添加介面enp3s0,上網方式採用自動
autoenp3s0
ifaceeth0inetmanual
#!/bin/bash
switch=br0
if[-n"$1"];then
iplinkset$1up
sleep1
brctladdif${switch}$1
exit0
else
echo「Error:nointerfacespecified」
exit1
fi
#interfaces(5)fileusedbyifup(8)andifdown(8)
autolo
ifaceloinetloopback
autoenp0s3
#以下內容是新加入的,之前並未為enp0s3分配ip以及上網方式。
ifaceenp0s3inetstatic
address192.168.66.155#設置該ip與網橋同一網段,下邊的內容相同即可。
netmask255.255.255.0
network192.168.66.0
gateway192.168.66.1
brodcast192.168.66.255
dns-nameservers114.114.114.114
bridge_fd9
bridge_hello2
bridge_maxage12
bridge_stpoff
此時,查看當前網路配置:注意:enp3s0是未分配ip的。
1.3使用brctl配置網橋:
tunctl -t tap0 -u 用戶名 # 創建一個tap0介面,只允許指定用戶訪問
brctl addif br0 tap0 # 在虛擬網橋中增加一個tap0介面
ifconfig tap0 0.0.0.0 promisc up # 打開tap0介面
brctl showstp br0 br0網橋顯示如下:
1.4修改/etc/qemu-ifup虛擬機的啟動腳本,替換成如下內容:
[plain]view plain
1.5使用如下命令行啟動qemu虛擬機
sudoqemu-system-x86_64-enable-kvm-bootc-drivefile=/usr/local/ubuntu.img,if=virtio-m1024-smp2-netdevtype=tap,script=/etc/qemu-ifup,downscript=no,id=net0-devicevirtio-net-pci,netdev=net0,mac=00:11:22:33:44:AB-vnc:1-daemonize
file:指定鏡像位置
script:指向啟動腳本的位置。
-daemonize:使得改啟動命令 不在阻塞,執行完該命令後依然可以執行其他命令。
mac:為虛擬機的默認網卡分配指定的虛擬mac地址,可自行設定(MACADDR可以指定一個mac地址,但要注意,第一個位元組必須為偶數,如00,52等,不能為奇數(01),否則會有不可預料的問題。因為奇數保留為多播使用。)
2.配置虛擬機內操作系統的網路
此時,我們依然需要通過TigerVNC進入虛擬機已安裝的操作系統,進入後,修改/etc/network/interfaces如下:
[plain]view plain
之後重啟虛擬機中操作系統,即可在區域網內通過ssh連接qemu中的操作系統。
E. xweb內核如何調試
虛擬化環境搭建,二進制庫文件,操作系統的啟動初始化文件。虛擬化的環境搭建,選擇的是qemu這款堪稱虛擬化的鼻祖軟體,雖然因為連晶元也一起虛擬導致運行速度變慢,但它也結合了真實晶元輔助加速的KVM,支持其他晶元架構的功能簡直就是交叉編譯的神器。
F. android怎樣將textview置於imageview之上
使用FrameLayout 這個布局是一層一層疊放的
先放個imageview 然後再放一個textview即可
G. 如何使用ADB進行調試
adb(Android Debug Bridge)是Android SDK中一個通用的調試工具。我們可以通過這個工具管理設備或手機模擬器的狀態。adb其實是一個客戶端-伺服器端程序, 其中客戶端是你用來操作的電腦,伺服器端是android設備。
adb可以進行的操作包括:
1、快速更新設備或手機模擬器中的代碼,如應用或Android系統升級;
2、在設備上運行shell命令;
3、管理設備或手機模擬器上的預定埠;
4、在設備或手機模擬器上復制或粘貼文件。
adb的安裝
電腦上需要安裝客戶端,設備上不需要安裝,客戶端包含在sdk里,只需要在手機上打開選項settings--applications--development--USBdebugging。
對於Mac和Linux用戶,下載好的sdk解壓後,可以放~或者任意目錄。然後修改~/.bash_profile文件,設置運行環境指向sdk的tools目錄。
具體是打開~/.bash_profile文件(如果沒有此文件也可以自行添加),在裡面加入一行:
export PATH=${PATH}:<你的sdk目錄>/tools
然後就可以使用adb命令了。
嫌安裝麻煩的同學其實也可以省去上面安裝步驟,直接輸入完整路徑來使用命令。
對於windows xp用戶,需要先安裝usb驅動,然後如果你只打算使用adb而不想下載整個sdk的話,可以下載這個單獨的adb工具包,下載後解壓,把裡面的adb.exe 和 AdbWinApi.dll 兩個文件放到系統盤的windows/system32 文件夾里就可以了。
adb的常用命令
1、安裝應用到模擬器:
adb install <path_to_apk></path_to_apk>
比較郁悶的是,Android並沒有提供一個卸載應用的命令,只能自己手動刪除:
adb shell
cd /data/app
rm app.apk
2、進入設備或模擬器的shell:
adb shell
通過上面的命令,就可以進入設備或模擬器的shell環境中,在這個Linux Shell中,你可以執行各種Linux的命令,另外如果只想執行一條shell命令,可以採用以下的方式:
adb shell [command]
如:adb shell dmesg會列印出內核的調試信息。
3、發布埠:
你可以設置任意的埠號,做為主機向模擬器或設備的請求埠。如:
adb forward tcp:5555 tcp:8000
4、復制文件:
你可向一個設備或從一個設備中復制文件,復制一個文件或目錄到設備或模擬器上:
adb push <source> <destination></destination></source>
如:adb push test.txt /tmp/test.txt
從設備或模擬器上復制一個文件或目錄:
adb pull <source> <destination></destination></source>
如:adb pull /addroid/lib/libwebcore.so .
5、搜索模擬器/設備的實例:
取得當前運行的模擬器/設備的實例的列表及每個實例的狀態:
adb devices
6、查看bug報告:
adb bugreport
7、記錄無線通訊日誌:
一般來說,無線通訊的日誌非常多,在運行時沒必要去記錄,但我們還是可以通過命令,設置記錄:
adb shell
logcat -b radio
8、獲取設備的ID和序列號:
adb get-proct
adb get-serialno
9、訪問資料庫sqlite3
adb shell
sqlite3
H. 2.0版UT怎麼看IP地址
可能不能查看吧
UT2003伺服器架設指南
做伺服器前先到:
http://www.unrealtournament2003.com/...atedserver.php
下載伺服器版UT2003,(v2107, Windows: 265MB | Linux: 249MB)安裝需要780M硬碟空間。
http://ut2003master.epicgames.com/ut...rver/cdkey.php
申請伺服器專用CD-KEY
下載伺服器安裝文件後:
linux用戶:新建一個用戶帳號專門用來運行伺服器,用這個用戶登錄,運行ut2003lnxded.sh.bin文件。跟具屏幕提示繼續。
windows用戶:把zip文件解壓縮到硬碟中,沒有安裝程序,解開來就行了。
在配置伺服器前先下載最新升級補丁,給伺服器程序升級。
再下載evolutionpack2,它能幫你解決許多用web頁面管理上面的問題,和修正了一些bug。
http://unreal.cpgl.net/UT2003/patch/evolutionpack2.zip 20KB
安裝伺服器:
在你下載完並解壓縮所有需要的文件後:
A 如果你已經在機器上裝了零售版UT2003,那麼跳到第M條
B 如果你下載了免費的伺服器專用程序,且不需要再申請伺服器專用cdkey,那麼跳到第D條
C 如果你是使用零售版UT2003來運行伺服器的話,那先安裝游戲,游戲會自動添加註冊表中必要的信息。跳到第M條。
D 打開 http://ut2003master.epicgames.com/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文件夾下找到"UT2003"文件夾,如果它存在,跳到L
K 單擊"Installed Apps"文件夾,點編輯--->新建--->主鍵。一個嶄新的文件夾誕生啦,有一個高亮的區域讓我們命名,輸入UT2003 回車。
L 單擊"UT2003"文件夾,點編輯--->新建--->建值。一個新的文件夾又出現啦,又有一個高亮的區域可以讓我們起名字啦。輸入 "CDKEY",回車。雙擊新建立的鍵值,你就可以編輯它的值。在裡面輸入你的cdkey序列號。點OK。關掉注冊表編輯器。
M 如果你知道怎麼用命令行命令進入你的虛幻安裝文件夾里的system文件夾,跳到步驟O
N 用命令行建立伺服器。我把我的文件安裝在UT2003server,我用這個舉例子,輸入cd ut2003server\system
O 輸入ucc server DM-Antalus.ut2
如果一切順利,一個專用伺服器就架設好了,游戲中的地圖是DM-Antalus。
默認下面,專用伺服器的配置是給internet游戲配置的。這意味著它他嘗試和國外的主伺服器聯系把它加入到主伺服器的資料庫里,這樣你的伺服器就可以出現在別人的伺服器搜索列表裡。目前有兩個不同的主伺服器在運行,Epic的和Gamespy的。
如果你在機器上已經安裝了零售版的UT2003,那就不必運行Epic mail給你的.reg文件了,否則你注冊表裡的CDKEY會被改成伺服器專用的,這樣你自己就不能用這台機器玩了。
如果你是在居域網里建立伺服器,並且想禁止UT2003和主伺服器聯系那就編輯UT2003.ini里修改下面的句子(如果找不到這部分,就在最後加後這幾行):
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
配置伺服器
現在你應該知道最基本的架設伺服器的方法了,你需要把它配置成你需要的。下面的每個部分都有詳細的常見問題解答
System 文件夾里有最重要的三個文件:user.ini runserver.bat和ut2003.ini 。 user.ini保存了地圖循環列表。ut2003.ini保存了許多其他設置。runserver.bat 保存了啟動伺服器的設置。Linux用戶沒有runserver.bat文件,你要把每次都輸入一長串命令啟動伺服器,或者你必須用一個外殼腳本啟動伺服器。(linux上用腳本啟動UT2003伺服器的例子參見http://www.ina- community.com/forums/showthread.php?s=&threadid=231043)
如果你架設多個伺服器,通常你會使用一個共同的ut2003.ini文件,然後用不同的runserver.bat或者外殼腳本啟動不同的伺服器,下面是一個runserver.bat的例子:
ucc.exe server DM-Antalus?game=XGame.XDeathmatch?maxplayers=16?minplayers=4?timelimit=20?fraglimit=25
ucc.exe 是伺服器的執行文件,"server"告訴uccc下面要架設一個專用伺服器。後面的東西是一些參數,設置伺服器的游戲規則。第一條是伺服器初始游戲的地圖名字,這個例子中是DM-Antalus。跟著是游戲類型,例子中是死亡模式。不同的參數用問號分隔。不管你輸入多少參數,整個命令都必須在一行中,如果分開來就不管用了。
下面列出ucc後面可以使用的所有參數列表。注意下面有一些參數在運行伺服器是是感覺不出有什麼變化的,列出它們只是為了列表了完整性:
AccessControl 用來打開高級管理員系統。和UT2003.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是100% 所以.25就是25%友隊傷害。
fraglimit=x 死亡模式最多殺人數。
game= 游戲類型,可以用:xDeathmatch, xCTFgame,xBombingRun,或者xDoubleDom
gamepassword= 做為客戶端加入游戲時需要的密碼。
GameRules 設置特別的GameRules類,GameRules是mutator在UT2003中增加的新類型。通常你不需要用它。幾乎所有的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=100 團隊死亡模式,初始地圖DM-Curse3,殺人數上限100.
關於和主伺服器的聯系
如果你不想你的伺服器顯示在游戲的伺服器搜索列表裡,或者你只是在居域網里的伺服器,你可以在UT2003.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-Deck16]i[-BETA
Maps=DM-MoonTemple
Maps=DM-Reigncaster
Maps=DM-Golgatha
Maps=DM-Tooth-N-Claw
Maps=DM-Stage1
Maps=DM-Liandri2003_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
第三方地圖和重定向
如果你使用了不是游戲自帶的第三方地圖,別人連上伺服器就可能花很長時間下載地圖同時佔用別的游戲者的帶寬使游戲不流暢,解決方法可以是把地圖文件放到另一個網頁伺服器上然後告訴客戶端自動從那裡下載
用 UT2003compress(可以在http://www.drunksnipers.com下載)...?的ut2003.ini 下面的部分重定向下載伺服器:
IpDrv.HTTPDownload]
HTTPServer=http://server.domain.name/myUTmaps/
Proxyserver=
Proxyport=
UseCompression=True
記住httpserver=後面的地址最後一定要加上個"/" ,否則它不會工作。如果碰到問題的話,把域名改成網頁伺服器的IP地圖試試看(比如192.168.1.10)
Mutators
Mutators要和啟動命令加在同一行里。下面的例子是架設一個死亡模式的伺服器地圖是DM-Asbestor帶大頭的mutator和Instagib的mutator:
ucc.exe DM-Asbestos?Game=XGame.xDeathmatch?Mutator=UnrealGame.MutBigHead,XGame.MutInstaGib
默認mutator參數列表:
Arena - XWeapons.MutArena
Big Head - UnrealGame.MutBigHead
Float-Away Corpses - XGame.MutHeliumCorpses
InstaGib - XGame.MutInstaGib
Zoom InstaGib - XGame.ZoomInstaGib
LowGrav - UnrealGame.MutLowGrav
No Adrenaline - XGame.MutNoAdrenaline
No Super Weapons - XWeapons.MutNoSuperWeapon
Quad Jump - XGame.MutQuadJump
AutoHealing - XGame.MutRegen
Slow Motion Deaths - XGame.MutSlomoDeath
Species Specific Stats - XGame.MutSpeciesStats
Vampire - XGame.MutVampire
注意部分mutator參數的前綴的不同:XWeapons , UnrealGame 等。
給每張地圖不同的Mutator
你可以通過修改user.ini為每張地圖設置不同的mutator 。除非你換掉它們,這些mutator會在所有地圖中生效。你可以用"mutator="後面什麼也不要加來在下一張地圖中去掉mutator。下面的例子是在DM-Antalus地圖上的游戲帶有Slow-mo death和low-grav兩個mutator,然後在下一張DM-Golgotha時去掉它們。
Maps=DM-Reigncaster
Maps=DM-Antalus?game=XGame.xDeathMatch?mutator=XGame.MutSlomoDeath,unrealGame.MutLowGrav
Maps=DM-Golgatha?mutator=
Maps=DM-Asbestos
同樣的方法可以載入其他的命令在後面,比如你可能想在某一張地圖上有隊友傷害,然後在下一張地圖中去掉它:
Maps=CTF-Chrome?FF=0.75
Maps=CTF-Citadel?FF=0
頁面管理員和高級頁面管理
基本的頁面管理員通過在runserver.bat里指定管理員名字和密碼,並編輯ut2003.ini中[UWeb.WebServer]部分啟用。這將允許你通過web頁面完全控制伺服器,只需要一個管理員帳號。注意,這些都不需要通過IIS或者Apache就可以完成。UT伺服器提供了自己的web頁面伺服器。如果你的伺服器上運行了IIS或者Apache,你要把它們的監聽埠口改成80以外的。
[UWeb.WebServer]
bEnabled=True
Listenport=xxxx
高級網頁管理員允許多個不同控制許可權的管理員帳號。注意,那個evolutionpack目前發現在使用高級管理員下有潛在的嚴重安全漏洞。我強烈建議在互聯網遠程式控制制系統中不要使用它。
具體的高級管理員指南參見http://www.unrealadmin.org/moles.p...rticle&artid=7
你應該在你的runserver.bat里加上管理員名字和密碼參數,除非你不想使用高級網頁管理工具。
一台機器上架設多個伺服器
你可以有兩種方法在一台機器上架設多個伺服器:給每個伺服器不同的埠號,或者分配不同的IP地址給你的每個UT伺服器,
如果你用不同的埠號架設伺服器,你可能碰到他們在游戲的伺服器搜索列表裡顯示不出來的問題。
如果你有多個IP你可以用-multihome 參數在runserver.bat里給每個伺服器綁定不同IP。例如下面把IP地址192.168.0.1綁到伺服器上
ucc server DM-Antalus?game=XGame.xDeathMatch -multihome 192.168.0.1
在linux下面,你需要戀情multihome=ip的參數:
ucc server DM-Antalus?game=XGame.xDeathMatch -multihome=192.168.0.1
伺服器在網關,防火牆,路由器後面
如果你的伺服器在網關,防火牆,路由器後面你需要打開一些埠讓外面的客戶端連進來。默認的埠有7777,7778,7787,7788,28900,28902。我現在還不確定他們是TCP,UDP或者兩者都是。
你還要在UT2003.ini中找到[IpDrv.MasterServerUplink]部分,把ServerBehindNat設為true。
除非你改變了埠(如上面說的一台機器運行多個伺服器)那麼凡是你用到的埠都要打開。
硬體要求
Epic建議,兩個32人的專用伺服器在一台伺服器主機上需要一台1.7G的CPU。你至少需要128M內寸(最小級限了)。
最近改一些客戶端的項目,測試的時候需要使用windows,因為是windows的客戶軟體,所以不得不使用windows, 原來總是在我的debian上安裝vmware, 自從升級內核到2.6.17後,發現怎麼安裝vmware都有問題, 就比較煩,原來看到過華華說過qemu,0.8.1的時候安裝過一次,感覺不是太理想,尤其是sdl的屏幕造成滑鼠拖動很慢, 去主戰的forum里看了看,發現這個已經被patch掉了。
而且kqemu又到了pre9了。正好試一下。
說一下目的:
安裝qemu和kqemu, 配好網路。實現virtual machine 和 host 能夠互通,也就是不是使用默認的user模式。 而改使用tun/tap的模式。
這里有兩個要求:
第一:內核要支持network 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 文件的許可權要是0666的。
做好這些後就可以開始安裝你的虛擬機了,
安裝好,我們再設置你的網路
退出你的root, 然後
cd ~ 進入你的home directory
mkdir qemu
cd qemu
qemu-img create win2k.img 2G
建立一個硬碟文件。然後我們就可以在這個上面安裝win2000了。
可以使用iso文件, 也可以使用光碟。
我們這里使用光碟來安裝。
qemu -hda win2k.img -cdrom /dev/cdrom -boot d -localtime -m 256 -win2k-hack
這樣就可以開始安裝2000了。解釋一下這里的選項:
-hda 指定第一個硬碟。
-cdrom 指定你的cdrom 後面的文件可以是一個iso文件
-boot d 從光碟啟動,如果從你的硬碟啟動,就-boot c, -localtime使用本機的時間。 -m 就是設定內存的大小。默認是128, 注意可以設得大一點的內存,但是需要你的/dev/shm足夠大。
-win2k-hack, 在安裝2000的時候會有一個問題,它會提示你磁碟空間不夠,加上這個參數就可以了。
好了。
安裝完成了之後,就可以啟動來看一把了。
啟動如下:
qemu -hda win2k.img -boot c -localtime -m 256. 這樣就默認使用了kqemu
現在應該也可以上網了,但是注意虛擬機使用的是dhcp的方式來上網的。
而且不能ping通你的本機,我想這個可能是大多數人不想要的,所以下面我們來配置網路。 通過tun/tap, 有點象vmware里的host-only
要配置host-only(tun/tap)這樣的網路,我們上面已經講過了兩個要求,現在我們來做更多的事:
1、 建立一個文件 /etc/qemu-ifup
內容很簡單:
#!/bin/sh
sudo /sbin/ifconfig $1 192.168.0.1 netmask 255.255.255.0
然後chmod a+x /etc/qemu-ifup
注意這里的192.168.0.1是你的tun/tap網卡的地址,一定要注意:不能和你的實際的網卡在同一個網段。 也就是如果tun/tap是192.168.2.0.0/24, 那麼你的時間網卡就不能在這個網段。
然後寫一個小的腳本:
userinit 這個是文件名:
文件內容如下:
#!/bin/bash
case "$1" in
start)
[ ! -e /dev/kqemu ] && mknod -m 666 /dev/kqemu c 250 0
echo 1024 > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
;;
stop)
;;
esac
然後:chmod a+x userinit
再:mv userinit /etc/init.d/
再: update-rc.d userinit start 25 2 3 .
要注意的是這個操作是在debian 下面的做法。
如果是在其他發行版:比如Fedora, 你可以直接寫這樣的script在你的/etc/rc.local文件里
[ ! -e /dev/kqemu ] && mknod -m 666 /dev/kqemu c 250 0
echo 1024 > /proc/sys/dev/rtc/max-user-freq
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
編輯你的/etc/moles. 加上: kqemu (如果你的tun被編譯成了模塊,也加上tun)
最後還有一點。大家一定注意到了一個問題: 就是qemu-ifup腳本哩使用了so, 所以如果想普通用戶能用,那麼就配一下sudoer.
這個好配極了。 編輯:/etc/sudoers
你的用戶名 ALL=(ALL):ALL NOPASSWD:ALL
這樣就可以不用輸入密碼了。
現在我們可以開始啟動你的虛擬機了。
要象這樣啟動:
qemu -hda win2k.img -boot c -localtime -m 256 -net nic,vlan=0 -net tap,vlan=0
如果嫌麻煩,
就乾脆寫一個一句話的腳本:
#!/bin/bash
qemu -hda win2k.img -boot c -localtime -m 256 -net nic,vlan=0 -net tap,vlan=0
存儲為win2k, 加上x的許可權,然後放置到/usr/bin, 或者是/usr/local/bin下
以後直接運行win2k, 就可以啟動2000了。
同理也可以安裝多個系統,寫多個腳本啟動。
這樣比較的酷
I. eve是什麼好像與什麼網路模擬器有關,盡量詳細,謝謝
eve??游戲的話是叫星戰前夜 一個 非常硬盒的星際戰爭的rpg游戲
J. 在ubuntu server上裝了qemu-kvm,不知道有沒有基於WEB的管理軟體
OpenStack
是一個旨在為公共及私有雲的建設與管理提供軟體的開源項目。它的社區擁有超過130家企業及1350位開發者,這些機構與個人都將OpenStack作為基礎設施即服務(簡稱IaaS)資源的通用前端。OpenStack項目的首要任務是簡化雲的部署過程並為其帶來良好的可擴展性。本文希望通過提供必要的指導信息,幫助大家利用OpenStack前端來設置及管理自己的公共雲或私有雲。
你試試這個