『壹』 在qemu模擬器armv5下,以gcc4.3編譯glibc2.9,出錯求助
這個樓主應該到LFS上去看看, 做工具鏈來說一般都有補丁, 版本也要匹配,不然會有很多奇奇怪怪的錯誤。
祝你愉快,滿意請採納哦
『貳』 如何使用QEMU來編譯打包armhf/arm64的snap包
首先,你需要設置QEMU和ARM二進制以及asdebootstrap支持: sudo apt-get install debootstrap qemu-user-static qemu-system git \gcc-arm-linux-gnueabihf binfmt-support 現在,創建文件系統本身(這是為2GB圖片)和它掛載在/mnt目錄中。
『叄』 如何使用QEMU來模擬ARMv8開發平台
使用Qemu模擬Cortex-A9運行U-boot和Linux 作者來源於網路
我的開發環境: Ubuntu-12.04 所有軟體包為最新
1. 安裝GNU工具鏈
sudo apt-get insatll gcc-arm-linux-gnueabi
sudo apt-get insatll g++-arm-linux-gnueabi
安裝完成後會在 /usr/arm-linux-gnueabi/ 目錄下生成庫文件、頭文件等。 我安裝的GCC版本為:
arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
2. 安裝Qemu模擬器
sudo apt-get install qemu qemu-system qemu-utils
這時應該已經可以運行qemu-system-arm命令了, 其版本為:
qemu-system-arm --version
QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2), Copyright (c) 2003-2008 Fabrice Bellard
3. 編譯和運行U-boot:
到 ftp://ftp.denx.de/pub/u-boot/ 下載最新版本的U-Boot源代碼, 我用的目前最新版本 u-boot-2012.04.tar.bz2
解壓後進入源代碼目錄,在Makefile裡面增加兩行:
『肆』 QEMU運行的Linux系統中需要安裝gcc嗎
看情況,一般是用包管理器直接安裝,這樣不需要編譯器,比如用apt或者yum安裝
如果編譯安裝的話就需要
『伍』 最新windows版qemu虛擬機使用技巧
RedflagWorkstation下已經帶了QEMU
#QEMU-imgcreatewindows.img2G#這個就是創建虛擬機磁碟,2G大小
#QEMU-hdawindows.img-cdrom/dev/acd0-bootd-m512-enable-audio-localtime
-hda是指定硬碟
-cdrom指定使用光碟機,這個參數後面必須要跟個文件名,可以是物理光碟機/dev/hda,可以使用ISO文件,為文件的路徑
-m是指定虛擬機使用的內存大小,如512M
-boot指定虛擬機啟動用的設備,-boot後可以選擇的參數是a,c,d.其中a是指從軟盤啟動,c就是用硬碟啟動,d是光碟機啟動。
-enable-audio
-localtime使用實際主板bios上的時間。
應該可以順利的進入虛擬機了,並開始安裝了。
RedflagWorkstation下已經帶了QEMU
#QEMU-imgcreatewindows.img2G#這個就是創建虛擬機磁碟,2G大小
#QEMU-hdawindows.img-cdrom/dev/acd0-bootd-m512-enable-audio-localtime
-hda是指定硬碟
-cdrom指定使用光碟機,這個參數後面必須要跟個文件名,可以是物理光碟機/dev/hda,可以使用ISO文件,為文件的路徑
-m是指定虛擬機使用的內存大小,如512M
-boot指定虛擬機啟動用的設備,-boot後可以選擇的參數是a,c,d.其中a是指從軟盤啟動,c就是用硬碟啟動,d當然就是光碟機啟動了。
-enable-audio
-localtime使用實際主板bios上的時間。
應該可以順利的進入虛擬機了,並開始安裝了。
安裝過程中,要求換盤:在QEMU中按ctrl alt 2切換到QEMUmonitor模式輸入?或help可以查看可用命令及使用說明。(在其他版本的QEMU中,運行QEMU載入OS後,這個shell就會自動變成QEMUmonitor模式)
changedevicefilename—changearemovablemedia
如changecdrom/tmp/xp1.iso
常用的快捷鍵:
ctrl alt F全屏切換
ctrl alt滑鼠在虛擬機和主機間切換
虛擬機上網設置兩種方式:
1.usermodenetwork:
這種方式實現虛擬機上網很簡單,類似vmware里的nat,QEMU啟動時加入-user-net參數,虛擬機里使用dhcp方式,即可與互聯網通信,但是這種方式虛擬機與主機的通信不方便。
2.tap/tunnetwork:
這種方式要比usermode復雜一些,但是設置好後虛擬機互聯網虛擬機主機通信都很容易
這種方式設置上類似vmware的host-only,QEMU使用tun/tap設備在主機上增加一塊虛擬網路設備(tun0),然後就可以象真實網卡一樣配置它.
dora 5 下的qemu安裝使用qemu是最近出現的一種新的虛擬機,本身小巧的系 統和linux的加速器,使它一經面世就受到了熱烈的歡迎,國內也有不少用戶,但沒有一篇完整的文章介 紹,使許多人走了不少彎路,其實,安裝是比較簡單的,較為復雜的部分是在網路部分,下面,就以 Fedora 5加kernel 2.6.17.4做為主機詳細介紹qemu的安裝和使用
一.安裝
下載
qemu最新版是0.81,同時下載加速器kmenu,最新版是1.3
http://fabrice.bellard.free.fr/qemu/download.html
先安裝Kqemu
$ tar zxvf kqemu-1.3.0pre9.tar.gz
$ cd kqemu-1.3.0pre9
$ su root
# ./configure
# make
# make install
然後安裝qemu
# tar zxvf qemu-0.8.1.tar.gz
# cd qemu-0.8.1
#./configure --prefix=/usr/local --enable-kqemu --enable-user --enable-alsa --disable-gcc-check
說明:
--enable-user 可以允許系統下的所有用戶使用Qemu
--enable-alas 可以允許系統共享系統的聲音系統
--disable-gcc-check 因為wqemu默認是使用gcc3.2,我的系統gcc已經升級到了4.1,所有禁止了qemu對gcc的檢查
#make
#make install
經過以上的操作,加速器和qemu都已經安裝完成了。
二.創建新的img
用戶可以將img文件創建到任意位置,只要有足夠的空間就行。
# mkdir win2kp
# cd win2k
# qemu-img create win2k.img 2G
Formating 'win2k.img', fmt=raw, size=2097152 kB
2G是指定虛擬機的硬碟大小的
三.網路的設置
國 內的很多人都講加參數就如何可以使用網路,但實際遠沒那麼簡單,我就是一開始看了網路上某人的貼子,結果是反反復復,網路一直不能正常工作,後來從 qemu的網站上下了所有的doc才搞定(比如有人發的貼都是使用-user-net就可以上網了,不但把語法寫錯了,而且只有這個參數根本就上不了 網!),在此我只說最復雜的部分,就是主機<->虛擬機<->internet全通的模式。
這種方式是使用tun/tap模式,必須崾內核的支持,主機上會增加一塊虛擬網路設備(tun0),然後就可以象真實網卡一樣配置它.
首先查看你的內核是否支持tun設備:
#ls -l /lib/moles/2.6.17.4/kernel/drivers/net/tun.ko
如果存在,則執行下面的命令,否則重新編譯模塊。
#modprobe tun
這時檢查moles:
#lsmod |grep tun
tun 10240 1
tun 載入成功以後,要手工編輯一個shell.而且必須放在/etc下,文件名必須是qemu-ifup.最後要記得給腳本加上執行許可權,如果要允許系 統下的所有用戶使用,還必須更改腳本的許可權,並在腳本中的命令前加上sudo,下面是是個完整的,給所有用戶使用的腳本。
#vi /etc/qemu-ifup :
#!/bin/sh
sudo /sbin/ifconfig $1 192.168.10.1
sudo route add -host 192.168.10.100 dev $1
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
#chmod a+x /etc/qemu-ifup
四.安裝虛擬系統
虛擬機的啟動有很多選項,下面我就以我安裝好的win2k來說明
如果要使用shm,必須進行以下的操作
# umount /dev/shm
# mount -t tmpfs -o size=528m none /dev/shm
別忘了啟動加速器
#modprobe kqemu
shm的容量必須比你將要分配給虛擬機的內存大16m,否則無法使用,上面是准備給虛擬機512m的內存,所以,shm被設置成了528,如果你只給虛擬機256m的內存,上面的size應該是272.
好了,下面准備開始給上面創建的win2k.img裝入系統
# qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -boot d -m 512 -win2k-hack
對於win2k的安裝必須指定-win2k-hack參數,否則安裝會中途出錯退出,這個參數只需要在安裝的時候使用,在運行的時候是不需要的。
-hda是指定將要使用的image文件,也就是windows的C盤
-cdrom 是准備給cdrom的驅動器,也就是windows的D盤,有人說這個參數是-cdrom /dev/cdrom,是指定你的主機的cdrom的位置,這是一個天大的錯誤,這里指的是啟動後的虛擬機,和主機的cdrom在哪裡沒關系,當然,你的 系統必須有cdrom,如果沒有cdrom,我想在linux下虛擬mount一個還是很容易的。
-boot d ,就是指定系統從D啟動,各上面一項相關的
-m 512,指定分配組虛擬機的內存
如果一切順利,安裝完成以後,你就可以啟動系統了
五.啟動虛擬機
首先,按前面的介紹,載入好加速器和tun的模塊,如果前面已經載入了,這里就不再需要了,只在主機重啟了以後需要,如果經常使用虛擬機,也可以將它們直接添加進/etc/rc.d/rc.local讓系統自動載入。
#modprobe kqemu
#modprobe tun
#qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -hdb fat:/home/seabird/work -m 512 -localtime -net nic -net tun
參數:
-hdb fat:/home/seabird/work
這是一個非常有用的參數,它的意思是把主機的/home/seabird/work目錄直接以fat的格式載入到虛擬機,當然,它是只讀的
-localtime,指定虛擬機使用當前的系統時間
-net nic -net tun
這兩個參數必須同時使用,否則,你還是上不了網,它的意思是啟動虛擬機的網卡同時和主機以及internet通訊,只有這個參數載入的時候,系統才會去讀取/etc/qemu-ifup文件,其它的模式是不會讀取這個文件的。
啟 動完成以後,將win2k的網卡地址指定為192.168.10.100,網關設為1921.68.10.1還記得/etc/qemu- ifup文件嗎,這個文件中的地址和你的虛擬機的地址是相關的,並不像有些人說的你可以像主機一樣隨便指定地址去上網,它是把主機作為一個NAT設備來使 用的。當然,你別忘記指定一個虛擬機可以到達的DNS伺服器
六.後記
1.指定虛擬機的網路地址的時候。千萬別指一個和你的主機相同網段的,那樣,你是不可能上網的。
2.可以去安裝98,但到目前的最新版為止,winxp在大多情況下安裝是不成功的,這個在qemu的網站上說的很清楚,只有等以後的版本了,所以,你看到的安裝winxp的貼子是沒有實踐的,我在三台配置不同的機器上安裝都以失敗告終了。
3.win2k運行的時候,如果用它自己的關機是關不掉虛擬機的,原因是不支持電源管理, 教你一個方法,使用win2k的安裝/卸載硬體,一步步往下走, 在windows搜索完硬體後出現的對話窗中選擇添加新硬體(白痴的windows,我竟然不能讓它跳過搜索), ->下一步,選擇「否,我想從列表選擇硬體」->下一步->NT Apm/legacy支持->下一步,安裝完成後你就可以正常關機了。
4.qemu還有一個最大的優點是可以啟動你的硬碟上的雙系統,如果現在就是雙系統,你可以像下面一樣直接啟動:
#qemu -hda /dev/hda1 -m 512 -net nic -net tun
/hda1是你的另一個系統的硬碟分區,如果你是grub啟動,這里就是你的grub所在的位置,等grub菜單出現後,選擇想啟動的系統就可以了(天啊,別選你現在正在運行的系統啊). Linux聯盟收集整理
『陸』 linux虛擬化 編譯安裝qemu-kvm的時候出現gcc內部錯誤
基於64位的操作系統在虛擬機下是不行的,即使成功的安裝完成也不能做到真正的虛擬化,因為虛擬機的環境下不允許做。
『柒』 如何在terminal中打開qemu monitor
若要在 Mac 的終端中編譯並運行 C 源代碼,你首先需要安裝 Command Line Tools,裡麵包含有 GCC 編譯器。安裝方法為:
打開終端,輸入 gcc。
如果你沒有安裝 Command Line Tools,會彈出一個窗口提示你安裝,如圖所示,點擊安裝即可。如果出現提示「no input files」,說明你已經安裝了 gcc 編譯器,可以直接開始編譯程序。
安裝完成後,定位至你需要編譯的 C 源代碼所在目錄,即使用 cd 命令,例如我現在在根目錄下,我的 C 代碼位於 ~/Desktop/Self/C 文件夾中,我便可以在終端中輸入以下命令,來跳轉到我 C 代碼的文件夾:
1
cd Desktop/Self/C
效果如圖:
如果覺得輸入文件夾地址比較繁瑣,還有一種簡單的方法,就是輸完 cd 後在 Finder 中找到你的文件夾,直接把它拖到終端里,系統會自動生成這個文件夾的地址。
定位完成後,就可以開始編譯了。例如,我要編譯的文件叫 dot.c,那麼就在終端中輸入
1
gcc -Wall -g -o dot dot.c
其中,-Wall 代表編譯器在編譯過程中會輸出警告信息(Warning),比如有些變數你並沒有使用,指針指向的類型有誤,main 函數沒有返回整數值等。這類信息雖然不是錯誤,不影響編譯,但是很可能是程序 bug 的源頭,也有助於你尋找代碼中的錯誤,規范代碼格式。所以建議每次編譯時都加上 -Wall 參數。
-g 代表編譯器會收集調試(debug)信息,這樣如果你的程序運行出錯,就可以通過 gdb 或者 lldb 等工具進行逐行調試,方便找出錯誤原因。如果你不是百分之百確定你的程序毫無問題,建議加上 -g 參數。這樣 debug 的時候會方便很多。
-o 代表編譯器會將編譯完成後的可執行文件以你指定的名稱輸出到你指定的文件夾下。-o 的空格後的名稱就是輸出的文件的名稱。例如我這里 -o 後是 dot,就是說 gcc 會在編譯成功後在我的當前目錄下生成一個叫 dot 的可執行文件。如果不加這個參數,每次編譯後生成的可執行文件都會放在根目錄下,名字叫做 a.out。每次編譯成功後都會把上一次的 a.out 文件覆蓋。所以建議加上 -o 參數,這樣可以更加條理。
最後一項便是你要編譯的的源代碼的名稱了。我這里是 dot.c。注意加上後綴 .c。
輸入完畢後按回車,如果編譯沒有任何問題,不會有任何提示。如果有問題,編譯器會提示你問題是什麼,在源代碼的什麼位置。如圖所示:
如果編譯成功,你會發現在你的當前目錄下多出了一個可執行文件,圖標如圖所示:
在終端中輸入 ./可執行文件的名稱 即可執行你的程序。例如,我輸入
1
./dot
後,就可以執行程序了。如果提示你 Permission Denied,則是因為你沒有賦予這個文件執行許可權,需要在終端里輸入
1
chmod u+x dot (這里是你自己的文件名)
來使其可在你的賬戶下執行。
如果運行時出現 Segmentation Fault,則說明你的代碼里有 bug 導致程序崩潰。
『捌』 linux下如何把一個.c文件通過arm-none-eabi-交叉編譯生成一個.bin的文件然後在qemu上運行
eabi標準的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一個鏈接
終於,郁悶已久的問題攻破了,用了三種配置交叉編譯的方法,最終在開發板上實現成功了,現在想一想,有的時候真的也是運氣。
之前已經試驗過使用arm-linux-gcc-3.4.1配置交叉編譯編譯環境,配置成功了,在開發板上失敗了~
後來使用腳本創建交叉編譯環境(crosstool-0.43),配置成功了(這個用了相當長的時間),在開發板上失敗了~
『玖』 建立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了。
同理也可以安裝多個系統,寫多個腳本啟動。
這樣比較的酷
『拾』 求助,編譯qemu
編譯QEMU需要用到的工具和庫:gcc libsdl1.2-dev zlib1g-dev libasound2-dev pkg-config libgnutls-dev pciutils-dev
前三個是必須的,後面我沒有遇到提示,編譯時如果遇到某庫沒有安裝,可以用yum search或者yum list來查找相關的軟體包,安裝dev版本的
接下來編譯
./configure make make install
全部編譯花費的時間很長,QEMU會把所有的target都編譯出來,如果只需要模擬特定的平台,可以
./configure TARGET=i386-softmmu
運行QEMU
安裝好QEMU之後可以從官網上下載一個很小的包含linux系統的虛擬磁碟來實驗一下linux-0.2.img.bz2,不過這個linux剪裁的很小實在做不了什麼,磁碟鏡像也很小,不能往裡面放東西
QEMU現在都是用VNC方式運行的,即QEMU會把自己當做VNC的伺服器端,使用QEMU時還需要用VNC的客戶端來連接它。
首先安裝VNC client軟體,可以用yum search vncviewer來搜索下可以的軟體。
在終端中運行QEMU,5900表示在VNC伺服器在本機的5900埠
qemu -hda linux-0.2.img.bz2 -vnc ::1:5900
打開另一個終端,輸入
vncview 127.0.0.1:5900
QEMU的GUI界面顯示
安裝guest OS
首先創建一塊虛擬磁碟鏡像,如果是准備安裝Fedora這樣的OS,還是創建10G以上的硬碟吧。用dd命令也可以創建一塊空的硬碟鏡像,但是很慢。
qemu-img create -f qcow2 disk.img 10G
Fedora 12的系統安裝ISO鏡像文件一份,可以從fedora官網下載,開始安裝操作系統,-m 512表示指定內存大小512M,不可缺少,不然fedora12啟動後畫面顯示出問題
qemu -hda disk.img -m 512 -cdrom Fedora.XXXX.iso -vnc ::1:5900
在另一個終端里輸入:
vncviewer 127.0.0.1:5900
然後可以在QEMU窗口中安裝fedora,一切步驟同裸機安裝,就是很慢很慢
啟動guest OS,目前發現的問題是對鍵盤的支持不好,鍵位錯亂了
qemu -hda disk.img -m 512 -vnc ::1:5900
guest與host文件交互問題,解決方法很多,可以通過網路傳輸,QEMU還支持把host disk掛載使用,我是把所需要的文件製作成iso鏡像,然後在啟動qemu時用- cdrom來指定這個文件,guest OS啟動再從CDROM設備中把文件出來,這個方法的缺點是不能實時的交互文件,製作ISO文件,在linux下:
mkisofs XXX YYY.iso
編譯內核
下載linux內核源代碼: 解壓縮源代碼,放在/usr/src/kernels
gzip -d linux-2.6.32.tar.gz tar -xvf linux-2.6.32.tar mv -rf linux-2.6.32 /usr/src/kernels
下載Tuxonice補丁程序,注意對應的版本號:http://www.tuxonice.net/ 打補丁
cd /usr/src/kernels/linux-2.6.32 (the root directory of your tree) bzcat /path/to/patch | patch -p1
config,把電源管理那部分的功能都enable,bug功能enalbe
make menuconfig
編譯
make make mole_install
製作內核鏡像
make bzImage
製作初始化鏡像
mkinitrd
make install可以自動完成工作使得下次系統從這個內核啟動,手工做的話把內核鏡像文件,initrd文件和system.map文件一起復制到/boot/下面,並修改/boot/grub/menu.lst
更換guest OS內核
將編譯好的三個文件製作成ISO文件,並通過qemu的-cdrom指定,然後在guest OS中復制內核到boot文件夾下,修改menu.lst
linux下製作iso鏡像文件的命令,源文件放在/dev/cdrom目錄下:
mkisofs -r -o myiso.iso /dev/cdrom