Linux的多重的本地的XFree用户
你总能从得到这文件的最新的版本http://cambuca.ldhs.cetuc.puc-rio.br/multiuser
有需要被提出以便为了支持多重的XFree实例(和用户)的一些问题:
VT处理-- Linux核心实际上的终端计划近日来是一种巨大出租。它在过去使用是好的来有屏幕当方法多重,但是现在正是某样东西需要完全再书面(若干Linux开发者已显示对发展2.5.x系列的一个好的计划的兴趣)。主要的问题是那个VT代码不理解我们可能有多重因此,可以是完全独立的的输入和输出设备。对每一硬件没有是如此与一给的套VT联系的方法Linux核心将了解VT能同时被使用哪一种。如果我们发送XFree86的多重的实例他们将在不同的VTs和Linux核心上将告知他们关于所有人VT的交换的素材之事宜。 转换(图表) VT不可使用硬件当它将与其它活跃的VT正常弄乱,但是我们有两张独立的视频卡片当,这是不再真实的。
键盘支持--在上的多重的老鼠X当我们可能为了每一个规定“设备”选择,已经是现实。遗憾地,键盘驾驶员在XFree86核心仍然深深地根深蒂固在XFree86核心,它不是一种分开的模块和接近控制台输入输出发挥作用阅读 scancodes。 每一XFree86实例将有他们的键盘通过交换的VT访问停止。此外,Linux仍然缺乏多重的键盘的支持按照一种充分定义的方法。 让我们等候2.5.x树看到意志被完成的...
我的解决
我的出租肯定地最最好的一个,我知道能是XFree86和Linux核心中的好的工具的成千上万的事情支持真实双重头(和双重输入)按照一种清洁的方法。但是它为了我工作。 不要责备我如果你花费你的钱和时间购买videocards,监视器,键盘,和它老鼠不工作。 你被警告。
虽然我将爱看见XFree86支持同时的布局(没有另一个实例)和商标新的键盘驾驶员,我不有对项目进行必要的理解靠自己执行它。 无论如何,这种巨大块的软件的XFree86开发者的我的关系!
我的想法是XFree86的两个实例。 第一将使用一个正常的XFree86服务器,它将初始化主要的视频卡片并且把它附加到VT。 它也将在键盘使用标准系统而某样东西( PS/2,连续,USB作为PS/2仿效,你想要无论什么)是老鼠。
XFree的第二个实例将是我修改X服务器。 它不全然支持交换的VT因为它被用来控制被任何其它VT正常不是使用的硬件。阅读我的嘴唇,这是十分重要的:视频卡片不能是主要的,老鼠不能是的同样的使用gpm和键盘必须是USB和不可产生正常的Linux控制台的scancodes!
当键盘在键盘(标准的控制台的没有钥匙)不看起来象正常修改X我的键盘驾驶员服务器必须照料把他们翻译成为正常的scancodes的USB事件。
过程(逐步地)
1)你需要得到XFree 4.0.x ( RedHat 7.0和许多最近的distros以它来)并且为了两个视频卡片和监视器构成它。 我建议你首先以下列的Xinerama扩展尝试它这HowTo
: http://linuxdocs.org/HOWTOs/Xinerama-HOWTO.html
然后修改你的XF86Config或者XF86Config-4在两个布局中以Xinerama扩展使用他们分开你的屏幕,代替。 不知道我所是的谈论? 然后,该阅读XF86Config了,做“人XF86Config”
两个布局你的XF86Config应该看起来象这个:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerLayout"
Identifier "Layout1"
Screen 0 "Screen1"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
# this is for supporting deadkeys
Option "XkbRules" "xfree86"
Option "XkbModel" "pc101"
Option "XkbLayout" "us_intl"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "IMPS/2"
Option "Emulate3Buttons" "off"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "Plex17"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 31.5 - 79.0
VertRefresh 50-190
EndSection
Section "Monitor"
Identifier "Syncmaster3"
HorizSync 31.5 - 79.0
VertRefresh 50-170
EndSection
Section "Device"
Identifier "FireGL 1000 PRO"
Driver "glint"
BusID "pci:1:0:0"
BoardName "Unknown"
EndSection
Section "Device"
Identifier "Voodoo"
Driver "glide"
BusID "pci:0:12:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "FireGL 1000 PRO"
Monitor "Plex17"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "1024x768" "800x600"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Voodoo"
Monitor "SyncMaster 3"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1024x768" "800x600"
EndSubSection
EndSection
这应该微不足道做因为它几乎与Xinerama配置一样但是两个布局。 然后,把你的机器转换成为runlevel并且3 ( init 3 )尝试两个布局,一个一次:
# XFree86 -layout Layout0
# XFree86 -layout Layout1
如在howto中所说的注意BusID设置。 注意到,dualhead板(像Matrox G400一样)当我们将使用2个实例,不应该通过下一步工作对同样的硬件谈话。 但是我未尝试我自己(如果任何读者想要捐献这样视频卡片,我将高兴尝试它... )。
2)将你第二只老鼠塞堵在系统上并且构成XF86Config在第二个布局中使用它。 这只老鼠不可被任何其它计划使用,像gpm一样。 XF86Config将看起来象这个(仅仅改变的段):
Section "ServerLayout"
Identifier "Layout1"
Screen 0 "Screen1"
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/ttyS1"
Option "Protocol" "Microsoft"
EndSection
再一次,测试这个布局确保它工作。
3)如此得到Linux核心2.4.0我们能以USB支持玩。 一些2.2.x核心可能工作当他们有backported USB支持.
在核心配置中,使USB支持( CONFIG-USB )和键盘(任一个CONFIG-USB-掩藏或者CONFIG-USB-KBD如果不需要USB老鼠支持你)能够。 你必须使“输入核心支持”( CONFIG-输入)能够和当我们不想要USB是系统键盘,不可使“键盘支持”( CONFIG-输入KEYBDEV )能够一个。当我将使用它来收到scancodes,也使“事件接口”( CONFIG-输入EVDEV )能够。
编辑并且安装核心。 现在塞堵你的USB键盘,一次核心进入你不应该在控制台从它看见任何所压的钥匙。 现在尝试阅读键盘事件(假定键盘是你有的唯一的USB设备):
# cat /dev/input/event0
当你打出,你应该在屏幕上看见一些废物。 那好,你的键盘工作。 如果你不看见任何事物或者得到“没有这样设备”,你的USB系统出了点毛病。 在你的核心来源中为了更多信息阅读文件/ usb。
,你不需要再编辑你的核心,
#cat /etc/modules.conf
probeall usb-interface hid usb-ohci
post-install keybdev rmmod keybdev
above usb-ohci evdev
4)得到你的XFree86 4.0.x的来源如果你已经这样做未。 来源由www.xfree86.org提供。 应该有3或者4个大的.tgz文件,但是你将仅仅需要头个。
扩充树并且运用我的碎片,这能被下载http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.0.2-2nd-0.9.patch
从包装到遵循指令建造X服务器(做世界)。 你应该在目录xc /计划与Xserver上得到新XFree86可执行。 以另一个名称(像第XFREE86-2一样)复制它到你的 /usr/X11R6/bin
或者如果你喜欢容易的方法,尝试一我第XFREE86-2个服务器(对着glibc-2.1编辑):
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.0.2-2nd.gz
这个服务器仅仅支持USB键盘和不夺取VT。 唯一的VT编码它有通过第XFREE86-2个vtxx参数转换成为一个给的控制台。
运用碎片为了能帮助我改进这个计划的开发者仅仅被计划。 它也将要求你盘空间的成千的MB。 如果服务器用你的系统不工作我提供X有少量我能做这个。 如果你固定它能,发现问题的试图并且。
5)修改第二个布局使用USB键盘。 这将要求你使用规约“usbev”我建立并且规定/ dev与输入/ eventx你作为设备喜欢。 XF86Config应该现在看起来象这个(仅仅改变的段):
Section "ServerLayout"
Identifier "Layout1"
Screen 0 "Screen1"
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "keyboard"
Option "Protocol" "usbev"
Option "Device" "/dev/input/event0"
EndSection
现在以命令尝试这个X服务器:
# XFree86-2nd -layout Layout1
它应该没有干扰你的控制台初始化你第二张视频卡片,第二只老鼠和usb键盘。 甚至你能在你运行X服务器的内部从xterm窗口做这个。
6)如果你使用gdm作为和提供你图形显示经理登录,你能编辑文件与等等与X11 / gdm / gdm.conf如下:
[servers]
0=/usr/bin/X11/XFree86-2nd -delay -layout layout1 vt07
1=/usr/bin/X11/X vt07
使这个工作可以是一种主要的挑战。 它拿我,直到我得到这种稳定的配置许多试错法。我不得不一服务器增加选择“--延迟”(我的出租)如此造成10种第二种延迟他们将同时不初始化硬件。 我不了解,为什么这是需要的。以他们被初始化(交换0=和1= )的秩序玩也做诡计。
已知的错误
这种的事情混乱我的正文控制台。 在正文再一次看上去好之前,我不得不在VT之间转换几个次。 更新: 这不再是最新的碎片的问题。 我现在(二进制下面)精细地运行RH9和VT交换的工作。
一个主要的问题同时可以是整个事情不用其它硬件工作和你能是浪费你的时间读物所有这一切。 但是想法在这里和我能保证它为了我工作。 因此,它必须是我将某一地方被另一个开发者迅速解决的一些少量问题` m明确....
更新
Brad Midgley指那种支持,因为Matrox G400和类似的dualhead卡片应该是可能的使用的framebuffer接口。我仍然不有硬件在这个上做任何检验,但是如果你想要尝试请注意到我可能已从init日常事务中除去某些重要对于framebuffer东西。请检查碎片可能有的任何错误。 任何这种问题的更新大大地被赞赏的注意到: 阅读我的G450页下面!
Daniel Tarbuck与XFree86以一种附加的碎片报告成功4.1.0:
“我已在XF86上执行你的碎片4.1.0和我发现我不得不评论下列的线:
/*((pciArg*)arg)->func(((pciArg*)arg)->tag, PCI_CMD_STAT_REG, ((pciArg*)arg)->ctrl); */
in xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c. (pciIoAccessDisable function)
我不知道问题所是的,和我不了解,为什么固定我为了我工作。 我也不知道由于是否将有严重的问题我固定。
这里是关于我的设置的一些细节:
primary card: ATI Mach64 GT+ (PCI)
secondary card: S3 VirgeDX (AGP)
kernel 2.4.5 (Redhat 7.0)"
“Yenya”Kasprzak以Daniel的碎片做一些检验并且使两种硬件配置工作的一月:
S3 ViRGE VX PCI (primary)
SIS 6xxx AGP (secondary - USB keyb.)
I was not able to set up the AGP card as primary.
Matrox G450 AGP (primary)
S3 ViRGE VX PCI (secondary - USB keyb.)
我不是作为能够建立S3卡片主要。
Yenya写: “我仍然有一个问题: IMHO上述的碎片也应该被运用于主要X服务器,因为否则它锁次要的卡片当的主要的显示报告上的用户”。
另一个成功报告,为了信息感谢Nathan的Hoult:
Geforce2pro 64meg AGP ( MSI ) --辛勤努力,AGP”“和“梯恩梯16 meg (钻石Viper550 ) --掌握,PCI”
Nathan写: “我太使用官方NVIDIA驾驶员并且使OpenGL两个都从事于相当的好好...除之外i到处有允许问题但是仅仅得到它无论如何工作”。 (Mandrake8.1, XFree 4.1,Linux 2.4.16 )
我再建造碎片对着XFree86-4.1.0 (从rawhide来源XFree86-4.1.0-0.9.11.src.rpm )。运用Daniel的的碎片两个都X服务器,现在我们有第XFREE86-1和第XFREE86-2 (我希望每个人知道如何使用them! )。
通常(由于Vojtech Pavlik帮助现在我们应该有键盘领导工作),第二个服务器使用usbev键盘。 请注意到,你需要glibc >=的二进制的文件在RedHat下被编辑7.1,如此2.2.2。
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.1.0-1st.gz
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.1.0-2nd.gz
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.1.0-1st-0.92.patch
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.1.0-2nd-0.92.patch
笔记:
1)这二进制被测试遍及RedHat Linux 7.1。 被ximian的gnome桌面提供的gdm拒绝以我双重工作登录,我不得不降级到RH7.1 gdm包装。
2)我的usbev键盘为错误得到钥匙绘制地图是否我不规定XkbModel和XkbLayout。 某样东西似乎自从4.0.2以来改变,也是如此忘记这些设置(特殊如果你没有键盘得到一个工作的服务器... )。
3)当我得到xauthorization的差错时在第一个实例的内部测试第XFREE86-4.1.0-2。 把第二个服务器以“-- ac”称为可能帮助。
4) Usb键盘发光二极管仍然不工作。 一旦我度过时间,我将调试它这样做,一定有一些错误。
这些为了XFree86-4.2.0-8 ( RedHat 7.3 )被修改二进制。 抱歉,我不有我accidentaly擦除我的XFree86 sources.,的碎片然而它对这种版本的港口4.1.0种碎片是容易的。
一月的新的报告“Yenya”Kasprzak:
“我有XFree86-4.2.99.3 (从红的帽子测试版"phoebe" )与ATI Radeon 8500LE AGP作为一个主要的头工作,和作为一个次要的头的S3 ViRGE VX PCI。释放 我将一旦我得到更多一些时间,适用于XFree86 4.2.99.3张快照(和当它被释放时,将有可能适用于4.3个来源)的将碎片发送给你”。
Kevin Crudup写:
“我已为了你建立XFree86 4.3个碎片文件。 他们附加。同时在之下能被添加到modules.conf,这样当模块和keybdev将自动地被移去,所有usb能被编辑。在Mandrake上我使用G550 9.1和所有一直工作罚金。 你的帮助的谢谢,现在我给我的。 让我知道你是否需要和更多信息”。
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-1st.patch
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-2nd.patch
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/modules.conf-mdk91
注意到,在碎片之上可能改进在以前的版本(变化从借上的硬件兼容性的使附加的PCI命令丧失能力http://startx.times.lv/eng- down.html 人们)。 由于花费他的时间更新碎片的Kevin Crudup。因为附加的讨论看见http://village.flashnet.it/users/fn048069/multiuser.html
前编辑4.3.0种版本(在Mandrake上以glibc 2.3.1 10mdk建立9.1 ):
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-mdk91-1st.gz
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-mdk91-2nd.gz
前编辑4.3.0种版本(在RedHat上建立9 ):
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-rh9-1st.gz
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-rh9-2nd.gz
Dennis Vshivkov将XFree86碎片的一种统一的和改进的版本发送给我。 他增加两个新的参数不同可执行(第一和第二)的如此两个再不是需要。 这是某样东西我想要做很长时间但是我太懒惰... 感谢许多Dennis! ;)
引证他原来信息: “使用是容易的因为没有需要有单独的奉献的二进制两种新的选择--可能代替被使用。如果你不使用他们,服务器就象没有碎片一个,但是它仍然支持usbev的键盘类型,和设备缺省/ dev与输入/ event0。 同时,` --延迟'选择现在接受可选的十进制争论”。
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-unified.patch
在之后已最近把我的系统更新成为fedora核心1,我决定包括Dennis的碎片再建造的原来XFree86 rpms。 通常,这对我自己使用是恰好的但是如我所知一些人们担任可能太在这里喜欢它他们是:
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/rpms/XFree86-4.3.0-42mf.i386.rpm
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/rpms/XFree86-4.3.0-42mf.src.rpm
你可以需要安装你的旧的XFree86 rpm (暗示: 在安装这个之前的使用-- nodeps )。 我不得不保持避免从属问题的fedora喜欢的同样的版本号与是的!
( Hacky )核心2.6种支持
很好,人们继续不断问我大约核心2.6种支持。 我决定把试图给它并且注意到2.6有检查和许多清洁工输入层。 这个输入层基于“设备”和“管理者”的概念。 键盘是管理者,它将改变事件它收到钥匙压控制台。 因此,是一般的事件管理者,负责在暴露事件
/dev/input/event<number>这个新的输入层被假定是十分聪明的因为,当一种新的设备被连接时,它将自己单独地演算出管理者应该一定它。 因此,当你应该从得到某样东西时用2个键盘运行2.6个核心像那一点一样 /proc/bus/input:
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event1
B: EV=120003
B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
B: LED=7
I: Bus=0003 Vendor=05c7 Product=2011 Version=0112
N: Name="QTRONIX USB Keyboard and Mouse"
P: Phys=usb-0000:00:10.0-1/input0
H: Handlers=kbd event2
B: EV=120003
B: KEY=10000 7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: LED=7
这里是获取: usb键盘是对系统的键盘管理者的automaticaly的境界。 ,出租仍然工作第二个键盘将产生的*except*关键两个头的压。 我能想双向workarounding这个问题:
1)有配有上述的统一的碎片的XFree86碎片。 然后,“usbev”规约可能在上被使用两个都领导和没有核心碎片将需要,伟大!不,并非如此快... 即使没有任何人从那里阅读,两个键盘仍然被键盘管理者连接,关键压。 弊端是键盘发光二极管将共同被弄乱十分不好。
2)我不可以发现方法迫使从设备释放管理者,因此我决定碎片我的核心。 核心的碎片2.6.2 (漂亮简单,也应该以其它版本工作)是可供使用的
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/linux-2.6.2-disable-usb-keyboard.patch 当然,碎片核心从不是一种理想的解决方案。 让我知道你是否有一种较好的的想法。