该教程仅用在一台 VPS/Headless 机器上。
注意:如果你的 Headless 服务器的图形适配器只安装了 libgl1-mesa-swx11,那么可能会遇到问题。
注意:本教程使用的是 Java6 的 jdk,但该方法应该能够在其他版本的 openjdk 上工作。
注意:注意不要只安装一个 Headless jdk(例如 openjdk-7-jre-headless),因为你将会使用一个虚拟的 Head,就像一个 VNC 服务器一样。
Ubuntu 10.04[]
该部分教程将教你如何在 EC2 Ubuntu 10.04 Lucid 的机器上运行 Tectonicus。
- 安装 minimal xserver stack:
sudo apt-get install xvfb libgl1-mesa-swx11 libxcursor1 libxrandr2 libxxf86vm1
- 用于测试安装目的以及试验 xvfb-run glxinfo 和 xvfb-run glxgears:
apt-get install mesa-utils and try xvfb-run glxinfo xvfb-run glxgears
- 同时也要测试
xvfb-run -a xrandr
。如果遇到这个错误:/usr/bin/xvfb-run: 182: xrandr: not found
像这样安装 x11-xserver-utils :sudo apt-get install x11-xserver-utils
你现在已经安装了 Tectonicus 的所有依赖项了,进一步的信息详见#安装 Tectonicus。
Ubuntu 10.10 64 位[]
- 第一次运行推荐键入:
sudo apt-get install xvfb libgl1-mesa-swx11 libxcursor1 libxrandr2 libxxf86vm1
- 注意:不确定这些包是否为必须:libxcursor1 libxrandr2 libxxf86vm1
- 但遇到这个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/java/64/jre1.6.0_24/lib/amd64/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
- 运行该解决方案:sudo apt-get install libxtst6 libxt6
Ubuntu 11.04[]
- 不能工作。需要打上 xvfb 包?
Ubuntu 11.10 oneiric 64 位[]
可以一点也不使用 xvfb 和跳过的补丁 + 更多的则是因为一些必要的组件会被移除,以允许 xvfb 使用 randr。
实践证明,Real VNC Server 有能力做到下面的步骤。
安装
- $>sudo apt-get install vnc4server
- Possibly: $>sudo apt-get install libgl1-mesa-swx11 libxcursor1 libxrandr2 libxxf86vm1
运行
- $>vncserver :1
- $>export DISPLAY=:1
- $>java -jar Tectonicus.jar config=config.xml
清理
- $>vncserver -kill :1
- $>export DISPLAY=
在 config.xml 可以没有 force64BitNatives="true"
所有的一切都可以很容易地编写脚本并作为计划任务运行。
Ubuntu 12.10 (Quantal) 64 位[]
和上面的一样。唯一的不同就是 libgl1-mesa-swx11 在该版本的 Ubuntu 中被弃用。
对此,解决方案是下载这个包(从 12.04/Precise 提取),并且通过 dpkg 手动安装它。这个方法需要移除 libgl 的一切安装信息,因此确保这是不是你想要的(也就是说,它不能破坏其他任何东西)。
一旦完成这一切后,运行上面的步骤,Tectonicus 应该工作。
这不是一个最理想的解决方案,但是没有其他解决方案了(除非一些更好的方案出现)。
Debian (所有其恰当的分支,也包括 Ubuntu 10.04 之前)[]
该部分教程将教你如何在 EC2 Debian 5.0 Lenny 机器上运行 Tectonicus。
为了运行 Tectonicus,你将需要重新编译 xvfb(这真的很难过,因为它有一行的漏洞)。
- sudo apt-get build-dep xvfb
- You will now have to add a deb-src repository to you /etc/apt/sources.list
- sudo apt-get source xvfb
- you will know get a directory called xorg-server-X.X.X we now need to patch the source.
- wget https://bugs.launchpad.net/xorg-server/+bug/516123/+attachment/1126330/+files/xvfb-fbScreenInit-handling.patch
- wget https://bugs.launchpad.net/xorg-server/+bug/516123/+attachment/1126331/+files/xvfb-randr.patch
- You have to apply this patches in the right order
- patch -p1 xorg-server-X.X.X/hw/vfb/InitOutput.c xvfb-fbScreenInit-handling.patch
- patch -p1 xorg-server-X.X.X/hw/vfb/InitOutput.c xvfb-randr.patch
- sudo apt-get install fakeroot
- cd xorg-server-X.X.X
- The next step will probably take hours.
- dpkg-buildpackage -rfakeroot -uc -b
- cd ..
- dpkg -i xvfb_*.deb
- sudo apt-get install libgl1-mesa-swx11 libxcursor1 libxrandr2 libxxf86vm1 x11-xserver-utils xfonts-base
- Now try xvfb-run -a xrandr. If everything worked how its supposed to work you should get no errors.
- For testing purpose install mesa-utils and try xvfb-run glxinfo and xvfb-run glxgears
你现在已经安装了 Tectonicus 的所有依赖项,更多信息详见#安装 Tectonicus。
注意:如果有人知道更简单的方法修复 xvfb 或可提供 debs,这将会是极好的。
Debian 6.0 (Squeeze)[]
按照上述步骤构建 xvfb,但是也要安装一个 mesa 库。
sudo apt-get install libgl1-mesa-swx11
OpenSuse[]
即将到来
Archlinux[]
对于 Extra/Core repo:
sudo pacman -Sy xorg-server-xvfb xorg-server-utils xorg-server libxcursor libgl mesa libxrandr xorg-xrandr libxxf86vm
这是我目前所做的。如果有人可以查出依赖项,那么可以共同完成该部分的教程。
即将到来
RHEL/CentOS 5 (以及其他的 RPM 分支(可能))[]
方法1[]
# sudo yum install xorg-x11-server-Xvfb xorg-x11-server-utils glx-utils
- 复制 xvfb-run 脚本到 /usr/local/bin
- 以测试目的运行:
# xvfb-run glxinfo # xvfb-run glxgears # xvfb-run -a xrandr
你现在已经安装了 Tectonicus 的所有依赖项,更多信息详见#安装 Tectonicus。
注意:原来你可以将在 Debian 中需要的包应用到 xorg-x11-server-${VERSION}.src.rpm ,然后重构它(至少需要 RHEL/CentOS 5),否则“xvfb-run -a xrandr”命令将会失败。
CentOS 5.6 Source RPM (很难才找到的) [1]
方法2[]
如何修补 XORG,作者 AltairPT
这个教程展示了如何修补 XORG,请一步一步地完成,以便让不是很了解 Linxu 的新手仍然可以使用该教程。我对花时间阅读这个长教程地人感到抱歉。
为了修补 xorg 你将需要一个新的用户账号(你可以仍然使用 root,但是这可以防止破坏)。不打算在这里解释了,因为网上有太多关于这部分的教程。
1 - 默认的 RHEL/CentOS 5 使用 /usr/src/redhat 的 %_topdir macro 位置。应该改变这个位置以防止出错。
添加这些东西到 ~/.rpmmacros
# Path to top of build area %_topdir /home/you/src/rpm
2 - 如果你从不用 RPM 工作,可以根据这个方法创建这个目录:
# mkdir -p ~/src/rpm # cd ~/src/rpm # mkdir BUILD RPMS SOURCES SPECS SRPMS # mkdir RPMS/{i386,i486,i586,i686,noarch,athlon}
3 - 现在是时候下载 xvfb 源码了。
# cd ~/src/rpm/ # wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.6/updates/SRPMS/xorg-x11-server-1.1.1-48.76.el5_6.4.src.rpm
4 - 通过安装从 xvfb 获取 xorg-x11-server.spec:
# rpm -ivh xorg-x11-server-1.1.1-48.76.el5_6.4.src.rpm
现在拥有足够的文件了,可以进行下一步了。
5 - 从 Debian 段落中的 sources 获取包:
# cd ~/src/rpm/SOURCES # wget https://bugs.launchpad.net/xorg-server/+bug/516123/+attachment/1126330/+files/xvfb-fbScreenInit-handling.patch # wget https://bugs.launchpad.net/xorg-server/+bug/516123/+attachment/1126331/+files/xvfb-randr.patch
6 - 为了安装 xvfb 你需要编辑 .spec 文件: 如果你没有 nano,你可以使用你喜爱的文字编辑器或下载它。
如果没有 SUDO 权限,请作为 root 安装。
# sudo yum install nano
编辑 xorg-x11-server.spec:
# cd .. # cd SPECS # nano xorg-x11-server.spec
向下滚动,直到你看见:
... Patch3518: xserver-1.1.1-randr-fix-mouse-crossing.patch Patch3519: xserver-1.1.1-xfree86-check-remainders-for-Nan.patch
在它们的下面添加:
Patch3520: xvfb-fbScreenInit-handling.patch Patch3521: xvfb-randr.patch
最终看起来会是这样的:
... Patch3518: xserver-1.1.1-randr-fix-mouse-crossing.patch Patch3519: xserver-1.1.1-xfree86-check-remainders-for-Nan.patch Patch3520: xvfb-fbScreenInit-handling.patch Patch3521: xvfb-randr.patch %define moduledir %{_libdir}/xorg/modules %define drimoduledir %{_libdir}/dri %define sdkdir %{_includedir}/xorg
然后在 %prep 段的末尾处添加这些行,在其他所有 %patch 句子之后:
%patch3520 -p0 %patch3521 -p0
按下 CTRL + X 并选择 Y 保存并退出 nano。
7 - 是时候重构包了(这个步骤有点长... 你可以用这些时间来吃一点小吃或杀一些苦力怕):
# cd ~/src/rpm # rpmbuild -ba SPECS/xorg-x11-server.spec
注意:这步可能会有一些工作,但对我来讲这不是问题。
8 - 是时候安装包了:
# cd ~/src/rpm/SRPMS # rpm -ivh xorg-x11-server-1.1.1-48.76.4.src.rpm
安装后,测试 xvfb:
# xvfb-run -a xrandr
如果能运行,恭喜,你已经成功修补XORG并安装了它。
如果不能运行,请重新按照教程地步骤再来一遍,并再仔细一点。
Tectonicus 可能不会运行得很好(Rasterizer errors),但是我正在其上工作。如果我找到修复它的途径,我将会在这里贴出来。
9 - 手动修补(如果需要):
在按照前面7个步骤操作后,Tectonicus 仍不能工作的,请阅读下列的解决方案。你将会需要让它们到这里。
注意:该部分教程的任何一步出错都将会导致编译失败,所以请一直重复检查代码。
我将会再次使用 nano。你也可以使用其他你喜爱的文字编辑器,甚至下载它,并在你的计算机中使用它。
# cd ~/src/rpm/BUILD/xorg-server-1.1.1/hw/vfb # nano InitOutput.c
按下 CTRL + W ,搜索:
#include "miline.h"
让它看起来这样:
#endif /* HAS_SHM */ #include "dix.h" #include "miline.h" #include "randrstr.h" #define VFB_DEFAULT_WIDTH 1280 #define VFB_DEFAULT_HEIGHT 1024
现在搜索:
ret = fbScreenInit
让它看起来这样:
ret = fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height, dpix, dpiy, pvfb->paddedWidth,pvfb->bitsPerPixel); if (!ret) return FALSE; #ifdef RENDER if (Render) fbPictureInit (pScreen, 0, 0); #endif if (!miRandRInit(pScreen)) /* Not sure how to emit warnings in xorg. Should warn here though: * ("Could not initialise RANDR\n"); */ return FALSE; miInitializeBackingStore(pScreen); /*
这应该是手动修补的所有步骤了。
是时候重新编译了!
# cd ~/src/rpm/BUILD/cd ~/src/rpm/BUILD/xorg-server-1.1.1 # sudo ./configure # sudo make # sudo make install
接着,测试 xvfb:
# xvfb-run -a xrandr
如果能运行,恭喜,你已经成功修补XORG并安装了它。
如果不能运行,请重新按照教程地步骤再来一遍,并再仔细一点。
Tectonicus 可能不会运行得很好(Rasterizer errors),但是我正在其上工作。如果我找到修复它的途径,我将会在这里贴出来。
我希望这篇教程对你有用,关于该教程地任何问题,请在 [2] 发送消息到“Altair”或发送 E-Mail 到 altair@sgc-clan.com,我会仅最大的能力尝试帮助你的。
xvfb-run 脚本[]
- 专为那些无法获得指定平台的脚本而列出:
#!/bin/sh # # xvfb-run - run the specified command in a virtual X server # # This script starts an instance of Xvfb, the "fake" X server, runs a # command with that server available, and kills the X server when # done. The return value of the command becomes the return value of # this script. # # If anyone is using this to build a Debian package, make sure the # package Build-Depends on xvfb, xbase-clients, and xfonts-base. # set -e # PROGNAME=xvfb-run SERVERNUM=99 AUTHFILE=$(pwd)/.Xauthority ERRORFILE=/dev/null STARTWAIT=3 XVFBARGS="-screen 0 640x480x8" LISTENTCP="-nolisten tcp" XAUTHPROTO=. # # display a usage message usage () { cat << EOF Usage: $PROGNAME [OPTION ...] COMMAND # run COMMAND (usually an X client) in a virtual X server environment # Options: -a --auto-servernum try to get a free server number, starting at --server-num -e FILE --error-file=FILE file used to store xauth errors and Xvfb output (defualt: $ERRORFILE) -f FILE --auth-file=FILE file used to store auth cookie (default: ./.Xauthority) -h --help display this usage message and exit -n NUM --server-num=NUM server number to use (default: $SERVERNUM) -l --listen-tcp enable TCP port listening in the X server -p PROTO --xauth-protocol=PROTO X authority protocol name to use (defaults to xauth's default) -s ARGS --server-args=ARGS arguments (other than server number and -nolisten tcp) to pass to the Xvfb server (default: \"$XVFBARGS\") -w DELAY --wait=DELAY delay in seconds to wait for Xvfb to start (default: $STARTWAIT) EOF :; } # # find free server number by looking at .X*-lock files in /tmp find_free_servernum() { # ldv: FIXME: race condition. i=$SERVERNUM while [ -f /tmp/.X$i-lock ]; do i=$(($i + 1)) done echo $i; } # # parse command line ARGS=$(getopt --options +ae:f:hn:lp:s:w: \ --long auto-servernum,error-file:auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \ --name "$PROGNAME" -- "$@") # if [ $? -ne 0 ]; then echo "$PROGNAME: error while getting options" >&2 exit 1 fi # eval set -- "$ARGS" # while :; do case "$1" in -a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;; -e|--error-file) ERRORFILE="$2"; shift ;; -f|--auth-file) AUTHFILE="$2"; shift ;; -h|--help) SHOWHELP="yes" ;; -n|--server-num) SERVERNUM="$2"; shift ;; -l|--listen-tcp) LISTENTCP="" ;; -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;; -s|--server-args) XVFBARGS="$2"; shift ;; -w|--wait) STARTWAIT="$2"; shift ;; --) shift; break ;; *) echo "$PROGNAME: error while parsing option \"$1\"" >&2; USAGE=$(usage); echo "$USAGE" >&2; exit 1 ;; esac shift done # if [ "$SHOWHELP" ]; then usage exit 0 fi # if [ -z "$*" ]; then echo "$PROGNAME: need a command to run" >&2 exit 2 fi # if ! which xauth > /dev/null; then echo "$PROGNAME: xauth command not found; exiting." >&2 exit 3 fi # # start Xvfb rm -f $AUTHFILE MCOOKIE=$(mcookie) XAUTHORITY=$AUTHFILE xauth add :$SERVERNUM $XAUTHPROTO $MCOOKIE > $ERRORFILE 2>&1 XAUTHORITY=$AUTHFILE Xvfb :$SERVERNUM $XVFBARGS $LISTENTCP > $ERRORFILE 2>&1 & XVFBPID=$! sleep $STARTWAIT # # start the command and save its exit status set +e DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE $@ 2>&1 RETVAL=$? set -e # # kill Xvfb now that the command has exited kill $XVFBPID # # clean up XAUTHORITY=$AUTHFILE xauth remove :$SERVERNUM > $ERRORFILE 2>&1 rm $AUTHFILE # # return the executed command's exit status exit $RETVAL # # vim:set ai et sts=4 sw=4 tw=0:
Windows 7 / Server 2008 R2[]
在 Windows 7 或 2008 R2 Server 运行 Tectonicus 需要使用 VNC 软件。多数 VNC 程序模拟显示服务器的一片区域,因此你需要向它们链接一个监听器。
注意:该教程只适用于 Windows 7 和 Server 2008 R2 操作系统。较早之前的版本可能也会工作,但是其未经证实。
目前只有 Teamviewer 测试成功。推荐坚持使用 Teamviewer 软件,直到你无法进行下一步为止。
Teamviewer 说明:
- 在你的服务器上下载并安装 Teamviewer。
- 在安装时,当有提示框时,选择 Yes 来开启服务器的远程控制。
- 现在 Teamviewer 应该被安装。转到 Extra's > Options.
- 转到 Security 标签页。为 unattended 权限设置密码。
- 设置 Access Control 来获取完全访问权限。
- 如果你希望,你可以在 Remote Control 标签页安装 display qualite。
你的服务器应该设置完成并且已经准备好。记住它基于你服务器的ID。
现在安装 Teamviewer 到你的笔记本电脑、台式电脑或任何计算机,并作为客户端连接的服务器。不需要在客户端上进行任何的设置。如果你希望,注册一个账号,你就可以在一个 contact list 中注册你的服务器了。
防火墙说明: Teawviewer 在端口 80 工作,而该端口是 HTTP 的默认端口。除非你拒绝任何 HTTP 请求连接到你的服务器,那么这个端口默认不封锁。
然而,如果你绝对使用不同的端口,你可能需要将你的服务器转到指定的端口,并在防火墙中打开这个端口。
Post Installation 注意: 如果你在没有登出服务器的前提下关闭 Teamviewer,服务器仍然相信 Tectonicus 的一个屏幕正在渲染。这意味着你可以安装计划任务管理器来允许 Tectonicus 每隔一段时间启动一次。注意你不能使用远程控制,因为这将会重新启动屏幕,并且 Tectonicus 渲染所需硬件也会不受支持。
关于服务器显卡和驱动的任何问题随时到会发生,因此如果在 Teamviewer 上运行失败,尝试用真正连接到服务器的屏幕再试一次。
安装 Tectonicus[]
你将会需要一个 minecraft.jar(不是从 minecraft.net 下载的那一个)。启动游戏,并且它会自动下载到“.minecraft/bin”,通常是你的父目录。
请代替所有的 /path/to/ 为正确路径。
如果你在一个生物群系上遇到错误,为 Tectonicus 使用这个标签
useBiomeColours=false
当然,你也可以使用辅助程序与编辑器/Tectonicus/从命令行中控制Tectonicus里的其他标签。
- 64位
xvfb-run -a '--server-args=-screen 0 1024x768x16' java -Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true -Dorg.lwjgl.opengl.Display.noinput=true -jar /path/to/Tectonicus_v1.17.jar mode=cmd worldDir=/path/to/world signs=all outputDir=/path/to/output_dir minecraftJar=/path/to/downloaded/minecraft.jar force64BitNatives=true verbose=true numSamples=0
- 32位
xvfb-run -a '--server-args=-screen 0 1024x768x16' java -Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true -Dorg.lwjgl.opengl.Display.noinput=true -jar /path/to/Tectonicus_v1.17.jar mode=cmd worldDir=/path/to/world signs=all outputDir=/path/to/output_dir minecraftJar=/path/to/downloaded/minecraft.jar verbose=true numSamples=0
注意:Tectonicus 一般在2种方式的其中一种中工作:一种是通过命令行,另外一种则是通过控制台工作。因此任何代替了在 XML 文件里的选项的人和正在使用64位的人将需要开启 force64BitNatives 命令,以便使用 XML 配置文件。
- 64位配置文件使用:
xvfb-run -a '--server-args=-screen 0 1024x768x16' java -Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true -Dorg.lwjgl.opengl.Display.noinput=true -jar /path/to/Tectonicus_v1.17.jar config=/path/to/config.xml
反馈[]
请在 Minecraft 社区 中反馈或通过向 wallnuss13@gmail.com 发送电子邮件反馈。
语言