Журнал LinuxFormat - перейти на главную

LXF164: Мно­го­ста­ночничать

Материал из Linuxformat
Перейти к: навигация, поиск


Мно­го­ме­ст­ные сис­те­мы Пре­вра­ти­те Linux-ПК в мно­го­поль­зо­ва­тель­скую ра­бо­чую стан­цию

Содержание

Мно­го­ме­ст­ность: 2 го­ло­вы луч­ше

Лео Мак­свелл по­ка­зы­ва­ет, как под­клю­чить к од­но­му ком­пь­ю­те­ру не­сколь­ко мо­ни­то­ров, мы­шей и кла­виа­тур и ос­ча­ст­ли­вить не­сколь­ко поль­зо­ва­те­лей.

(thumbnail)
Наш эксперт Ди­рек­тор IT-ком­па­нии и сис­тем­ный ад­ми­ни­ст­ра­тор Лео Мак­свелл ока­зы­вал ап­па­рат­ную и про­грамм­ную под­держ­ку поль­зо­ва­те­лям сво­ей и дру­гих се­тей бо­лее 15 лет. Не­уди­ви­тель­но, что он поч­ти об­лы­сел.

Ва­ши де­ти пе­ре­дра­лись друг с дру­гом из-за ком­пь­ю­те­ра в гости­ной? Счет за элек­три­че­­ст­во за­став­ля­ет по­тря­сти го­ло­вой и про­ве­рить ба­ланс на бан­ков­ском сче­те? Вам по­мо­гут мно­го­ме­ст­ные сис­те­мы. Су­ще­ст­ву­ют сис­те­мы, в ко­то­рых ис­поль­зу­ет­ся несколь­ко монито­ров, а в мно­го­ме­ст­ных сис­те­мах – несколь­ко кла­виа­тур, мы­шей, ко­ло­нок и од­но­вре­мен­но ра­бо­таю­щих поль­зо­ва­те­лей.

При­чи­ны вы­бо­ра та­ких сис­тем – эко­но­мия про­стран­ст­ва, денег или хо­тя бы элек­тро­энер­гии. В неко­то­рых стра­нах, в том чис­ле в ЮАР и Бра­зи­лии, в шко­лах и об­ще­ст­вен­ных цен­трах уста­нов­ле­ны ты­ся­чи та­ких сис­тем, что­бы доступ к ком­пь­ю­те­ру и Ин­тернету по­лу­ча­ло мак­си­маль­ное ко­ли­че­­ст­во учеников и обыч­ных гра­ж­дан. Та­кую сис­те­му мож­но раз­вер­нуть да­же на до­воль­но сла­бом ком­пь­ю­те­ре.

Для мно­гих за­дач, та­ких как про­смотр web-страниц, ре­дак­ти­ро­вание тек­ста или чтение элек­трон­ной поч­ты, со­вре­мен­ный ком­пь­ю­тер из­лишне про­из­во­ди­те­лен. Боль­шин­ст­во на­столь­ных ком­пь­ю­те­ров, осо­бен­но мно­го­ядер­ных, боль­шую часть вре­мени про­стаи­ва­ют. Ес­ли два че­ло­ве­ка поль­зу­ют­ся одним ком­пь­ю­те­ром, то его энер­го­по­треб­ление бу­дет лишь немно­го пре­вы­шать энер­го­по­треб­ление ком­пь­ю­те­ра с одним поль­зо­ва­те­лем и бу­дет су­ще­ст­вен­но ниже энер­го­по­треб­ления двух от­дель­ных ком­пь­ю­те­ров.

До­ма про­стая двухполь­зо­ва­те­льская сис­те­ма мо­жет быть по­лез­ной, ес­ли ну­жен еще один до­полнитель­ный ком­пь­ю­тер для ре­бен­ка, де­лаю­ще­го до­машнее за­дание, или для зашедших на вре­мя гостей.

Для наше­го уро­ка мы ис­поль­зо­ва­ли ком­пь­ю­тер с Ubuntu 12.04 с про­цес­со­ром AMD64 × 2 4200+, 4 ГБ опе­ра­тив­ной па­мя­ти, встро­ен­ной ви­део­кар­той Nvidia и внешней ви­део­кар­той Nvidia PCIe. Не слиш­ком про­из­во­ди­тель­ный по со­вре­мен­ным стан­дар­там, этот ком­пь­ю­тер вполне соответствовал по­став­лен­ной за­да­че. Мы соз­на­тель­но взя­ли бо­лее ста­рое «же­ле­зо», что­бы про­яснить все во­про­сы с раз­де­лением за­дач. С целью осно­ва­тель­ной про­вер­ки мы по­про­си­ли несколь­ких доб­ро­воль­цев по­ра­бо­тать в обе­их сис­те­мах од­но­вре­мен­но.

И мы бы­ли при­ят­но удив­ле­ны: ника­ких про­блем с про­из­во­ди­тель­но­стью! Два поль­зо­ва­те­ля пре­крас­но бро­ди­ли по Ин­тернету, смот­ре­ли ви­део на YouTube, иг­ра­ли в про­стые иг­ры и вы­пол­ня­ли по­все­днев­ные за­да­чи, та­кие как об­ра­бот­ка тек­ста, без ви­ди­мых задержек. В этой ста­тье поль­зо­ва­те­лей два, но их чис­ло ог­рани­че­но толь­ко ко­ли­че­­ст­вом ви­део­карт, ко­то­рые мож­но уста­но­вить в основ­ном ком­пь­ю­тере, так как ко­ли­че­­ст­во доступ­ных USB-пор­тов всегда мож­но уве­ли­чить с по­мо­щью ха­бов.

На со­вре­мен­ной ма­те­рин­ской пла­те обыч­но есть один слот PCIe и один или несколь­ко сло­тов PCI, но есть и ма­те­рин­ские пла­ты, ко­то­рые под­дер­жи­ва­ют до пя­ти ви­део­карт PCIe. Так­же су­ще­ст­ву­ют ви­део­кар­ты USB.

В иде­аль­ном слу­чае мно­го­ядер­ный про­цес­сор или про­цес­сор с ги­пер­тре­дин­гом пре­доставит ка­ж­до­му поль­зо­ва­те­лю по од­но­му яд­ру или про­цес­су, а до­полнитель­ная па­мять при­го­дит­ся для трех­мер­ных игр или об­ра­бот­ки ви­део. Од­но­го се­те­во­го под­клю­чения в 100 Мбит бо­лее чем доста­точ­но для несколь­ких ин­тернет-поль­зо­ва­те­лей.

Под­го­тов­ка сис­те­мы

Ес­ли что-то пой­дет не так, сис­те­ма вполне мо­жет ока­зать­ся нера­бо­чей. Ес­ли вы поль­зуе­тесь сво­им основ­ным ком­пь­ю­те­ром, обя­за­тель­но соз­дай­те ре­зерв­ную ко­пию дан­ных.

Для на­ча­ла вам по­на­до­бят­ся как минимум две учет­ных за­пи­си поль­зо­ва­те­ля с от­дель­ны­ми до­машними ка­та­ло­га­ми. Это важ­но, так как два «эк­зем­п­ля­ра» од­но­го и то­го же поль­зо­ва­те­ля бу­дут об­ра­щать­ся к од­но­му и то­му же ка­та­ло­гу home, что мо­жет при­вес­ти к неста­биль­но­сти сис­те­мы и по­те­ре дан­ных.

Пра­ва ад­минист­ра­то­ра долж­ны быть толь­ко у од­но­го поль­зо­ва­те­ля, глав­ным об­ра­зом для то­го, что­бы из­бе­жать некор­рект­ного вы­клю­чения сис­те­мы и бес­кон­троль­ных из­менений фай­лов.

Тща­тель­ный вы­бор уст­ройств по­мо­жет сде­лать ра­бо­ту сис­те­мы бо­лее ров­ной. На­стро­ить два монито­ра в Linux нетруд­но. Ес­ли обоих под­клю­чить при уста­нов­ке, есть ве­ро­ят­ность, что они бу­дут об­на­ру­же­ны и на­строе­ны, но ес­ли нет, пе­ред их ис­поль­зо­ванием нуж­но убе­дить­ся, что они бу­дут ра­бо­тать каждый в от­дель­ном се­ан­се X.

Да­лее мы опи­шем эта­пы соз­дания па­рал­лель­но­го се­ан­са X в мно­го­поль­зо­ва­тель­ской сис­те­ме пу­тем из­менения фай­лов на­строй­ки вруч­ную.

Не­сколь­ко от­дель­ных се­ан­сов

По су­ти, мы па­рал­лель­но за­пустим два от­дель­ных X-сер­ве­ра. Нуж­но из­менить файл /etc/X11/xorg.conf, соз­дав две от­дель­ных схе­мы, с монито­ром, мы­шью и кла­виа­ту­рой ка­ж­дая. Сер­вер X11 под­дер­жи­ва­ет несколь­ко сес­сий, но ба­зо­вый X-сер­вер ог­раничен од­ной сес­си­ей на ви­део­кар­ту.

На на­шем уро­ке мы поль­зу­ем­ся ви­део­кар­та­ми Nvidia и их про­прие­тар­ны­ми драй­ве­ра­ми. Учи­ты­вая изобилие воз­мож­ных кон­фи­гу­ра­ций, мы мо­жем лишь нау­чить вас на­строй­ке сис­те­мы для кон­крет­но­го «же­ле­за». Од­на­ко ис­поль­зо­ван­ные здесь ме­то­ды мож­но при­менить к са­мым раз­но­об­раз­ным си­туа­ци­ям.

Не­пло­хо бу­дет соз­дать ре­зерв­ную ко­пию /etc/X11/xorg.conf, что­бы в слу­чае сбоя вой­ти в сис­те­му с команд­ной стро­ки, по SSH с дру­го­го ком­пь­ю­те­ра или с Live CD, и восста­но­вить его, что­бы восста­но­вить сис­те­му. На­строив два се­ан­са, нуж­но па­рал­лель­но за­пустить ви­део­тер­ми­на­лы с по­мо­щью менед­же­ра дис­плея.

Пер­во­на­чаль­но мы на­строи­ли толь­ко од­ну схе­му, за­ком­мен­ти­ро­вав по­ло­ви­ну раз­де­лов, что­бы убе­дить­ся, что у нас два ра­бо­чих се­ан­са.

Про­бле­ма со­вре­мен­ных на­столь­ных ди­ст­ри­бу­ти­вов – сте­пень их ав­то­ма­ти­за­ции. Вам нуж­но сде­лать так, что­бы HAL и Udev не до­бав­ля­ли уст­рой­ст­ва ав­то­ма­ти­че­­ски, ина­че все уст­рой­ст­ва бу­дут ра­бо­тать на всех монито­рах, что, мяг­ко го­во­ря, раз­дра­жа­ет.

Иден­ти­фи­ка­ция уст­ройств

Ви­део­кар­ты мож­но оп­ре­де­лить, набрав ко­ман­ду lspci | grep VGA. Про­прие­тар­ные драй­ве­ры Nvidia по­зво­ля­ют на­страи­вать монито­ры с по­мо­щью ути­ли­ты nvidia-settings. Она так­же соз­даст ба­зо­вую вер­сию xorg.conf с ин­фор­ма­ци­ей о ви­део­кар­те и монито­ре. За­тем эту вер­сию мож­но из­менить. Драй­ве­ры AMD так­же долж­ны ра­бо­тать.

Для кла­виа­ту­ры и мы­ши мы восполь­зу­ем­ся драй­ве­ром evdev, ко­то­рый ис­поль­зу­ет та­кие со­бы­тия, как xxx-event-kbd и xxx-event-mouse. Они на­хо­дят­ся в ка­та­ло­ге /dev/input – это фай­лы вро­де mice, mouse0, mouse и т. д. Они при­вя­за­ны к драй­ве­ру мы­ши и не под­хо­дят для на­шей за­да­чи, так как мо­гут ме­нять­ся или быть за­хва­че­ны со­бы­тия­ми кла­виа­ту­ры или мы­ши.

В /dev/input так­же есть про­ну­ме­ро­ван­ные со­бы­тия, свя­зан­ные с со­бы­тия­ми в под­ка­та­ло­гах by-id и by-path. Так как это ди­на­ми­че­­ские ссыл­ки, уст­рой­ст­ва, на ко­то­рые они ссы­ла­ют­ся, мо­гут из­менить­ся, ес­ли они от­клю­ча­ют­ся или ес­ли пе­ред за­груз­кой до­бав­ля­ет­ся дру­гое уст­рой­ст­во.

Что­бы еще боль­ше за­пу­тать си­туа­цию, иногда воз­мож­ны мно­же­ст­вен­ные со­бы­тия, у кла­виа­ту­ры мо­гут быть со­бы­тия мы­ши, а у мы­ши – со­бы­тия кла­виа­ту­ры. Ра­зу­ме­ет­ся, у ка­ж­до­го уст­рой­ст­ва дол­жен быть уникаль­ный иден­ти­фи­ка­тор.

Сле­дую­щие ко­ман­ды:

ls -R /dev/input

ls -R /dev/input | grep mouse

ls -R /dev/input | grep kbd

вы­ве­дут спи­сок всех со­бы­тий. За­пи­си в /dev/input/by-id/ удоб­ны, ес­ли ис­поль­зу­ют­ся раз­лич­ные мо­де­ли, так как они оста­ют­ся по­сто­ян­ны­ми.

Ес­ли мы­ши и кла­виа­ту­ры оди­на­ко­вые, то неко­то­рые фай­лы в by-id мо­гут ис­поль­зо­вать­ся со­вме­ст­но, и нуж­но ис­поль­зо­вать фай­лы в ка­та­ло­ге by-path (они из­ме­нят­ся, ес­ли под­клю­чить уст­рой­ст­во к дру­го­му пор­ту USB). При­мер вы­во­да при­ве­ден ниже, кор­рект­ные зна­чения в нем вы­де­ле­ны жир­ным. Пер­вое – из ка­та­ло­га /dev/input/by-id, а вто­рое – из ка­та­ло­га /dev/input/by-path. Нам нуж­ны за­пи­си, ко­то­рые за­кан­чи­ва­ют­ся на -event-mouse или -event-kbd.

$ ls -R /dev/input | grep mouse

mouse1

usb-Logitech_USB_Receiver-event-mouse

usb-Logitech_USB_Receiver-if01-event-mouse

usb-Logitech_USB_Receiver-if01-mouse

usb-Logitech_USB_Receiver-mouse

pci-0000:00:10.0-usb-0:2:1.1-event-mouse

pci-0000:00:10.0-usb-0:2:1.1-mouse

Иден­ти­фи­ци­ро­вав уст­рой­ст­ва, до­бавь­те их в файл /etc/X11/xorg.conf. В сле­дую­щем раз­де­ле мы раз­бе­рем при­мер это­го фай­ла. Ин­фор­ма­цию об уст­рой­ст­вах, ра­зу­ме­ет­ся, нуж­но из­менить в со­от­вет­ст­вии с ва­шей.

Пер­вый раз­дел – ServerFlags, в нем на­хо­дят­ся на­строй­ки по умол­чанию для всех сер­ве­ров. Наи­бо­лее важ­ны стро­ки, где от­клю­ча­ет­ся ав­то­ма­ти­че­­ское до­бав­ление уст­ройств.

  1. X configuration file

Section “ServerFlags”

Option “Xinerama” “off”

Option “AutoAddDevices” “off”

Option “AllowEmptyInput” “on”

Option “AllowMouseOpenFail” “on”

Option “DisableModinDev” “on”

Option “DRI” “on”

EndSection

Для ка­ж­до­го сер­ве­ра вам по­на­до­бит­ся раз­дел ServerLayout с ин­фор­ма­ци­ей о монито­ре и уст­рой­ст­вах вво­да. Оп­ция SingleCard ог­раничи­ва­ет resets одним уст­рой­ст­вом:

Section “ServerLayout”

Identifier “Layout0”

Screen 0 “Screen0” 0 0

InputDevice “Keyboard0”

InputDevice “Mouse0”

Option “SingleCard” “on”

EndSection

Section “ServerLayout”

Identifier “Layout1”

Screen 0 “Screen1” 0 0

InputDevice “Keyboard1”

InputDevice “Mouse1”

Option “SingleCard” “on”

EndSection

Те­перь соз­дай­те раз­дел для ка­ж­до­го уст­рой­ст­ва вво­да. Обыч­но это мы­ши и кла­виа­ту­ры, но возможны и дру­гие уст­рой­ст­ва, ска­жем, гра­фи­че­­ские план­ше­ты или сен­сор­ные эк­ра­ны. Мы ис­поль­зо­ва­ли два раз­ных на­бо­ра бес­про­вод­ных кла­виа­тур/мы­шей. Оп­ция GrabDevice за­пре­ща­ет дру­гим драй­ве­рам доступ к уст­рой­ст­ву. Рас­клад­ку кла­виа­ту­ры луч­ше за­дать в сис­тем­ных на­строй­ках Ubuntu, так как они хра­нят­ся от­дель­но для ка­ж­до­го поль­зо­ва­те­ля.

Section “InputDevice”

Identifier “Mouse0”

Driver “evdev”

Option “Device” “/dev/input/by-id/usb-Logitech_USB_Receiver-event-mouse”

Option “GrabDevice” “on”

EndSection

Section “InputDevice”

Identifier “Mouse1”

Driver “evdev”

Option “Device” “/dev/input/by-id/usb-MOSART_Semi._Wireless_Keyboard___Mouse-event-mouse”

Option “GrabDevice” “on”

EndSection

Section “InputDevice”

Identifier “Keyboard0”

Driver “evdev”

Option “Device” “/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd”

Option “Xkb_Rules” “evdev”

Option “Xkb_Model” “evdev”

Option “GrabDevice” “on”

EndSection

Section “InputDevice”

Identifier “Keyboard1”

Driver “evdev”

Option “Device” “/dev/input/by-id/usb-MOSART_Semi._Wireless_Keyboard___Mouse-event-kbd”

Option “Xkb_Rules” “evdev”

Option “Xkb_Model” “evdev”

Option “GrabDevice” “on”

EndSection

На­конец, ука­жите монито­ры, уст­рой­ст­ва (ви­део­кар­ты) и эк­ра­ны, к ко­то­рым они под­клю­чаются. Мы поль­зо­ва­лись дву­мя 19-дюй­мо­вы­ми монито­ра­ми с раз­ре­шением 1440 × 900 пик­се­лей – оп­ция DPMS ак­ти­ви­ру­ет ре­жим понижен­но­го энер­го­по­треб­ления Energy Star:

Section “Monitor”

Identifier “Monitor0”

VendorName “Unknown”

ModelName “Bit 3 Vw19B2”

HorizSync 31.0 - 83.0

VertRefresh 56.0 - 76.0

Option “DPMS”

EndSection

Section “Monitor”

Identifier “Monitor1”

VendorName “Unknown”

ModelName “Acer AL1916W”

HorizSync 31.0 - 84.0

VertRefresh 56.0 - 76.0

Option “DPMS”

EndSection

Оба на­ших уст­рой­ст­ва – ви­део­кар­ты Nvidia, од­на на ма­те­рин­ской пла­те, а дру­гая в сло­те PCIe.


Section “Device”

Identifier “Device0”

Driver “nvidia”

VendorName “NVIDIA Corporation”

BoardName “GeForce 8100 / nForce 720a”

BusID “PCI:2:0:0”

EndSection

Section “Device”

Identifier “Device1”

Driver “nvidia”

VendorName “NVIDIA Corporation”

BoardName “GeForce 8400 GS”

BusID “PCI:3:0:0”

EndSection

Эк­ран – это па­ра ви­део­кар­та–мо­ни­тор.

Section “Screen”

Identifier “Screen0”

Device “Device0”

Monitor “Monitor0”

DefaultDepth 24

Option “metamodes” “nvidia-auto-select +0+0;1440x900_75 +0+0”

SubSection “Display”

Depth 24

EndSubSection

EndSection

Section “Screen”

Identifier “Screen1”

Device “Device1”

Monitor “Monitor1”

DefaultDepth 24

Option “metamodes” “nvidia-auto-select +0+0;1440x900_75 +0+0”

SubSection “Display”

Depth 24

EndSubSection

EndSection

Когда у вас бу­дет ра­бо­чий файл xorg.conf (т. е. тот, с ко­то­рым опе­ра­ци­он­ная сис­те­ма за­гру­жа­ет­ся без оши­бок, при этом бу­дут ра­бо­тать оба монито­ра, обе мы­ши и обе кла­виа­ту­ры), на­строй­те менед­жер дис­плея. Он по­зво­лит поль­зо­ва­те­лям за­хо­дить в раз­лич­ные се­ан­сы ви­део­тер­ми­на­ла и рас­пре­де­лять ме­ж­ду ними доступ­ные уст­рой­ст­ва.

Да бу­дет LightDM

Для этой ста­тьи мы вы­бра­ли менед­жер дис­плея Ubuntu по умол­чанию, LightDM, по­то­му что он под­дер­жи­ва­ет несколь­ко сес­сий с раз­лич­ны­ми монито­ра­ми и син­так­сис его фай­ла на­строй­ки до­воль­но прост. Он так­же под­дер­жи­ва­ет как KDE, так и Gnome. KDM (менед­жер дис­плея KDE) то­же под­дер­жи­ва­ет несколь­ко сес­сий, но GDM (менед­жер дис­плея Gnome) – нет. В фай­ле /etc/lightdm/lightdm.conf по умол­чанию тек­ста немно­го, но ско­ро мы это из­меним! Нам нуж­но соз­дать за­пи­си для ка­ж­до­го поль­зо­ва­тель­ско­го мес­та, ука­зав ко­ман­ды X-сер­ве­ра и со­от­вет­ст­вую­щие схе­мы.

[LightDM]

seats=Seat:0 Seat:1

[SeatDefaults]

user-session=ubuntu

greeter-session=unity-greeter

[Seat:0]

xserver-layout=Layout0

xserver-command=/usr/bin/X :0 -layout Layout0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

[Seat:1]

xserver-layout=Layout1

xserver-command=/usr/bin/X :1 -layout Layout1 -auth /var/run/lightdm/root/:1 -nolisten tcp vt8 -novtswitch -sharevts

Оп­ция novtswitch за­пре­ща­ет пе­ре­клю­чение ме­ж­ду сес­сия­ми, а sharevts по­зво­ля­ет дер­жать от­кры­ты­ми несколь­ко ви­део­тер­ми­на­лов. Для пер­во­го се­ан­са вклю­чать ее не сто­ит – мож­но по­вре­дить монитор. Ес­ли вам ну­жен ав­то­ма­ти­че­­ский вход в сис­те­му, до­бавь­те сле­дую­щие стро­ки (под­ста­вив свое имя поль­зо­ва­те­ля) в ка­ж­дый раз­дел:

autologin-user=username

autologin-timeout=0

Это так­же ре­ша­ет про­бле­му с не ото­бра­жав­шим­ся по­лем па­ро­ля у не­ко­то­рых поль­зо­ва­те­лей.

Звук

Звук про­ще все­го на­стро­ить для ка­ж­до­го поль­зо­ва­те­ля от­дельно, с несколь­ки­ми зву­ко­вы­ми кар­та­ми. Для на­ча­ла до­бавь­те обо­их поль­зо­ва­те­лей в груп­пу audio.

По­сле это­го ка­ж­дый поль­зо­ва­тель смо­жет вой­ти в сис­те­му и за­дать на­строй­ки зву­ка для сво­его уст­рой­ст­ва. При ис­поль­зо­вании PulseAudio на­строй­ки ав­то­ма­ти­че­­ски со­хра­ня­ют­ся в их файле по умолчанию в /home/username/.pulse. Конеч­но, ес­ли в сле­дую­щий раз поль­зо­ва­те­ли по­ме­ня­ют­ся мес­та­ми, звук при­дет­ся пе­ре­на­страи­вать.

На­столь­ный Linux сей­час на­хо­дит­ся в со­стоянии ак­тив­ных пе­ре­мен. Боль­шая ав­то­ма­ти­за­ция снижа­ет гиб­кость, а мно­же­ст­вен­ные се­ан­сы мо­гут так­же по­вли­ять на безо­пас­ность. Этот под­ход мо­жет по­ка­зать­ся несколь­ко нуд­ным, но за­то ра­бо­та­ет в боль­шин­ст­ве ди­ст­ри­бу­ти­вов. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика