linux编写多头文件程序
将监视器添加到您的计算设置中,无需进行频繁的任务切换,从而极大地提高了生产率。 对于那些使用多头图形卡或在同一台PC中使用多个图形卡的人来说,这一好处和许多其他好处是众所周知的。 使用Linux和Xdmx,拥有两个显示设备和两台计算机的任何人都可以享受多头设置的好处,而无需投资购买新硬件。
使用Xdmx和一些简单的配置建议,我们将建立一个计算环境,其中四台显示器分布在一台台式机和三台笔记本电脑上。 阅读有关使用Chromium和千兆位网络速度的高性能可视化设置的信息,以跨百万像素显示器提供实时3-D图形。 了解可用于开发自己的多屏配置和物理布局以增强计算体验的工具。
要求
本文是在具有三个视频卡,三个屏幕尺寸和三个单独的分辨率设置的四台计算机上开发的。 跨Red Hat Enterprise Linux(RHEL)V3.5和Fedora Core 3发行版的X11和xorg配置使用了内核级别2.4.21-2.6.15。 关键是:硬件和软件的多样性不是障碍。 您可以成功地在许多硬件选项的许多发行版上安装和使用Xdmx。
硬件
你需要:
- 您设置中相对较新的CPU-486以上的任何设备都应该可用(尽管有点慢)
- 快速联网-以太网或更佳
- 至少具有16位色深的图形卡-更低的颜色,启用xinerama的显示器将有困难
软件
我们是基于现代Red Hat和Fedora Core发行版开发的,但许多其他发行版也足够了。 如果您选择的发行版支持RPM,则应该能够启动并运行,而无需从源代码编译Xdmx应用程序。
Xdmx的获取和安装
软件采购
上到Sourceforge.net头抢的Xdmx(请参阅相关的主题 )。 就本文而言,RPM应该很好。 在“下载DMX”部分中查找dmx-1.2.20040630-1.i386.rpm
文件。 如果您使用的是较旧的发行版或不支持RPM的发行版,则可能必须从头开始编译DMX。 来源位于“下载DMX”部分,但编译说明不在本文讨论范围之内。
安装
现在您已经有了Xdmx RPM,您需要运行安装过程。 在基于RHEL V3.5的系统上, rpm -Uvh dmx-1.2.20040630-1.i386.rpm
应该安装Xdmx应用程序且没有错误。 在Fedora Core 3和更高版本的系统上,运行RPM命令时,您可能会看到类似于file /usr/X11R6/lib/libdmx.a from install of dmx-1.2.20040630-1 conflicts with file from package xorg-x11-devel-6.8.2-31
的错误,与file /usr/X11R6/lib/libdmx.a from install of dmx-1.2.20040630-1 conflicts with file from package xorg-x11-devel-6.8.2-31
。
解决方法是使用--force
选项: rpm --force -Uvh dmx-1.2.20040630-1.i386.rpm
。 警告:强制安装Xdmx软件可能会在开发环境中造成不稳定。 我已经使用“强制安装”的Xdmx软件在开发箱中运行了零个错误,已经有一年多了,但是您的经验可能会有所不同。 如果您不想强制安装,请从源代码编译Xdmx应用程序,然后安装。
在基于Debian的系统或使用apt-get
,请使用apt-get install xdmx
来安装和设置Xdmx。
Xdmx需要安装在多头显示器设置中要安装的每台计算机上。 服务器和客户端都包含在Xdmx安装包中,因此,如果要添加显示节点,更改控制节点或现有节点出现硬件故障,则无需重新安装软件即可支持不同的配置。
配置PC以进行多头操作
XDMX手册
Xdmx附带了出色的手册信息,这些信息将为您提供分布式多头显示器入门所需的一切。 本文着重于帮助您解决与不同的硬件设置相关的一些更困难的问题。 继续阅读一些有关如何使用Xdmx以及如何克服可能遇到的挑战的真实示例。
一台电脑,一台笔记本电脑
对于此初始示例,我们将在两屏设置中使用一台PC和一台笔记本电脑,并且将台式机延伸到整个显示屏。 首先,将一个计算资源指定为控制节点-在我们的示例中,它将是PC。
X配置文件设置
使用不同硬件的一个大问题是计算资源之间功能支持的差异。 在Xdmx起作用之前,您需要确保系统支持相同的选项集。 在此示例中,所有系统均未安装相同的字体。 Xdmx具有处理此问题的选项,我们将在后面介绍。 目前,请注意,GLX支持和默认显示位深度是常见问题,它们会阻止Xdmx正常运行。 要将桌面分布在多个屏幕上,请确保每个屏幕上的根窗口位深度都相同。 如果要使用多个独立的桌面,则不需要在显示器之间进行位深度匹配。 由于在此示例中我们希望一个大显示器,因此修改Xorg.conf或XF86Config文件以选择16位色深作为默认值。 (您可以选择24或所有设备将支持的任何位深度。)对于本示例,16位是所有硬件将支持的最高颜色深度。
制作Xorg.conf或XF86Config文件的备份副本,然后进行如下所示的更改。 例如,在RHEL 3.5框中,XF86Config文件包含以下行:
清单1.示例XF86Config文件
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1400x1050" "1280x1024" \
"1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
将DefaultDepth 24
更改为DefaultDepth 16
,并将SubSection for Display下的行从Depth 24
更改为Depth 16
。
如果您具有特定于硬件的自定义驱动程序,则可能需要恢复为默认设置或尝试兼容的硬件支持。 有关硬件可以支持的详细信息,请参阅硬件文档。 例如,本例中的RHEL V3.5笔记本电脑包含ATI FireGL Mobility T2卡和相关的驱动程序。 如上所示,对XF86Config文件的更改将产生错误,因为fglrx驱动程序不支持16位深度设置。 解决方案是运行system-config-xfree86
(在Fedora Core上为system-config-display)并选择VESA模式以支持兼容性。 在“高级”选项卡中,选择“ VESA驱动程序(通用)”作为您的视频卡。 在“监视器类型”部分中,配置设置以支持显示器可以处理的最大分辨率。 返回到“显示”选项卡,然后选择分辨率和数千种颜色作为位深度。
现在,位深度已匹配,您可以尝试进行多屏设置了。 在客户端节点上,启动X会话。 如果您处于运行级别3,请尝试使用命令xinit
启动准系统X会话。 如果您已经登录到图形窗口管理器会话(例如GNOME或KDE),请启动Xterm
。 在客户端节点屏幕上的Xterm窗口中,键入xhost + control_node_ip
,其中control_node_ip
是控制节点的虚线四边形。 对于此示例,控制节点为192.168.1.101,因此我将在客户端节点上运行命令xhost + 192.168.1.101
。
Xdmx启动命令
在控制节点上,启动默认的X Window System会话。 例如,如果您运行的是xdm,则会在启动时看到登录屏幕。 然后启动GNOME或KDE会话。 无论如何,请在控制节点上启动Xterm
。 启动一个新的Xdmx会话,该会话跨越运行twm窗口管理器的两个节点。 当然,您可以选择窗口管理器,但是请注意,GNOME不支持在同一台计算机上运行两个实例。 在控制节点上运行以下命令:
清单2.示例Xdmx启动命令
startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-ignorebadfontpaths \
其中control_node_ip
是192.168.1.101,而client_node_1_ip
是客户端节点的IP地址。 该命令在表1中细分。
表1.启动命令说明
每行开始... | ...这意味着什么 |
---|---|
startx`twm` | 使用twm窗口管理器开始新的X会话 |
-/ usr / bin / X11R6 / Xdmx:1 | 启动Xdmx程序,作为:1上的X会话 |
-显示control_node_ip:0 | 将控制节点上的显示用作第一台监视器 |
-显示client_node_1_ip:0 | 使用第一个客户端节点上的显示作为第二个监视器 |
-ignorebadfontpaths | 从来没有喜欢过他们 |
+ xinerama | 将显示器视为一个桌面 |
如果命令成功完成,则应该在两个屏幕上都看到一个哈希背景。 在控制节点上四处移动鼠标,以确认您在两个屏幕上都可以使用一个桌面访问控制节点上的输入设备。 按Ctrl + Alt + q退出Xdmx。
Xdmx错误和解决方法
如果命令未成功完成,则可能会显示以下错误:
清单3.示例Xdmx错误消息
(II) dmx: ===== End of Summary =====
(!!) dmx: The default visual for screen #0 does not match any of the
(!!) dmx: consolidated visuals from Xinerama (listed above)
(!!) dmx: The default visual for screen #1 does not match any of the
(!!) dmx: consolidated visuals from Xinerama (listed above)
(Fatal Error) dmx: dmxConnectionBlockCallback: invalid screen(s) found
XIO: fatal IO error 104 (Connection reset by peer) on X server ":1.0"
after 0 requests (0 known processed) with 0 events remaining.
这是Xdmx程序的少数明显缺陷之一-神秘错误消息。 原来,此特定错误消息是由于客户端和控制节点上的GLX配置不兼容所致。 尽管这些错误消息可能对我们凡人来说都是个谜,但是Xdmx功能始终可以提供简单性。 将选项-noglxproxy
添加到命令中,然后重试:
清单4.带有noglxproxy的示例Xdmx命令
startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-ignorebadfontpaths \
+xinerama \
-noglxproxy
宾果游戏:没有其他问题了。 您可能已经注意到,当Xdmx失败时,它将导致奇怪的键盘问题。 这不是你。 我注意到Xdmx失败时,Ctrl,Shift和Alt键无法正常工作。 最好的解决方案是重新启动窗口管理器,一切都会好起来。
三个客户端节点,三个显示
现在我们有了两个节点的设置,让我们添加第三个客户端节点。 从运行级别3开始,使用xinit
在第三个客户端节点上开始准系统X会话。 X会话启动后,在出现的xterm
中输入xhost + contrl_node_ip
。 修改Xdmx start命令以包括第三个节点,如清单5所示。
清单5.带有noglxproxy和第三个节点的示例Xdmx命令
startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-display client_node_2_ip:0 \
-ignorebadfontpaths \
+xinerama \
-noglxproxy
将另一个节点添加到顺序水平配置中确实很容易。 下面的屏幕快照显示了三个客户端节点,这些节点显示了另一篇developerWorks文章中的镶嵌图像:
图1.三节点配置
四个客户端节点,2x2显示屏
那么不同的显示拓扑呢? 2x2平方的显示器怎么样? Xdmx的答案是:将配置文件选项与几何说明符一起使用以进行所需的设置。 例如,如果要在左上方显示1024x768,在右上方显示1400x1050,在左下方显示1600x1200,在右下方显示1024x768,则可以使用以下配置文件:
清单6.示例Xdmx配置文件
# xdmx.conf - Xdmx configuration file
# quad config setup 2x2
virtual quad_config {
display "client_node_upper_left_ip:0" @0x0;
display "client_node_upper_right_ip:0" @1024x0;
display "client_node_lower_left_ip:0" @0x768;
display "client_node_lower_right_ip:0" @1024x768;
}
使用以下命令从控制节点运行以上设置:
清单7.使用配置文件的示例Xdmx命令
startx `which twm` -- /usr/bin/X11R6/Xdmx :1 \
-configfile xdmx.conf \
-config quad_config \
-ignorebadfontpaths \
-noglxproxy
我之所以选择这种物理显示拓扑,是因为这是将显示单元足够紧密地堆叠在一起以获得连续桌面感觉的唯一方法。 这是2x2分布式多头设置的显示,显示了Google地图上的旧金山地区:
图2.四节点配置
先进的配置和显示墙
请记住,您的显示器不必物理上相邻放置。 以下是专注于编程的一种配置的屏幕截图,该配置是使用Ion3窗口管理器的四个单独的桌面:
图3.四节点配置,一次运行
注意最左边的显示。 用户可以将窗口移动到他希望能够一眼就能看到的显示器,但是它们不会出现在外围视觉范围内,以防止在忙于创建更多错误时分散注意力。 将Xdmx配置文件与位置和几何说明符一起使用,可以创建适合您工作环境的任意数量的拓扑。
3-D处理设置
Chromium是一个软件包,旨在允许Xdmx设置中的每个节点分别处理OpenGL信息,并且仅处理该节点上显示的信息。 这提供了一种使用客户端节点(和图形卡)的处理能力快速渲染大型3-D环境的出色方法。 请参阅以下参考资料,详细了解Chromium和配置系统以增强3-D显示。
展示墙
Xdmx的主要用途是在大学和研究机构的大型显示系统中,这些系统专注于大型数据集的可视化。 这些设置经常使用Chromium加速3-D显示复杂数据集,这些数据集涉及客户端节点上的相同硬件以及专用的计算机设置。 本文将重点放在桌面用户以及如何使用现有硬件创建分布式多头安装程序上。 对于大型显示墙(16000x4800人?)自动配置您的显示节点一些精彩的例子,请参见相关主题 。
结论
凭借在Linux桌面上设置Xdmx多头显示器的经验,您无需投资购买新硬件即可大大提高工作效率。 使用开源Xdmx和Linux可以轻松地将计算机添加到显示配置中。 庞大的桌面尺寸给您的朋友留下了深刻的印象-窥视您自己的显示墙。 编写更多代码,解决更多错误,或同时阅读三篇developerWorks文章。
翻译自: https://www.ibm.com/developerworks/opensource/library/os-mltihed/index.html
linux编写多头文件程序