Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
该页面的内容不代表Mojang StudiosMinecraft Wiki的官方意见。

该教程仅用在一台 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 发送电子邮件反馈。

语言

Advertisement