• 21.1. Достоинства и недостатки
  • 21.2. Выбор аппаратного обеспечения для игрового зала
  • 21.3. Установка драйверов для видеокарт nVidia
  • 21.4. Установка Windows-эмулятора wine
  • 21.5. Запуск игр с помощью эмулятора wine
  • 21.6. Средства мультимедиа
  • 21.7. Администрирование зала
  • 21.7.1. Доступ к Интернет
  • 21.7.2. Управление пользователями
  • 21.7.3. Ограничение доступа пользователя
  • 21

    Linux в игровом зале

    21.1. Достоинства и недостатки

    В этой главе будет рассмотрена настройка Linux как рабочей станции для игрового зала. У вас может возникнуть вопрос: почему именно как рабочей станции? Ответ очень прост: любую Linux-систему довольно легко превратить из рабочей станции в сервер, причем без потери надежности и производительности, чего нельзя сказать о Windows.

    Итак, допустим, что у вас есть небольшой игровой зал, скажем на 20…30 компьютеров и вам нужно по тем или иным причинам перейти на платформу Linux. Как я уже отмечал, любую из Linux-машин можно настроить как сервер и при этом можно использовать ее как рабочую станцию, то есть при этом не теряется ни одно пользовательское место при организации сервера.

    Сейчас мы разберемся во всех достоинствах и недостатках (к сожалению, таковые имеются) такого преобразования. Достоинства и недостатки я буду приводить одновременно: сначала положительный момент, а затем — обратную сторону медали.

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

    Коробочные версии Windows XP Home Edition стоят около 160 долларов США. При открытии зала с парком в 30 машин общая стоимость боксовых версий обойдется вам примерно в $4800. При покупке OEM-версий стоимость Windows составит около $2400. При всем этом вы получите одноранговую сеть, состоящую из 30 компьютеров под управлением Windows. Если же вам нужно организовать сервер для доступа к Интернет, то за него придется выложить еще около $1000. Итого $5800. И это только программное обеспечение — математика, а ведь еще нужно купить железо, дополнительную аппаратуру, мебель и т.д. Если нормальный компьютер для игрового зала можно купить за $350…450, то зачем же увеличивать его стоимость даже на 80 долларов при использовании OEM-версии?

    В случае с Linux вам достаточно купить один дистрибутив стоимостью $5…10 долларов (при этом вы платите только за носители информации, то есть за компакт-диски, входящие в состав дистрибутива). Потом вы можете установить этот дистрибутив на неограниченное число компьютеров.

    Недостаток. Несмотря на довольно приличную сумму сэкономленных денег, возрастут ваши ежемесячные расходы. Дело в том, что Linux-залу нужен квалифицированный системный администратор, хотя бы на первых порах — пока все не заработает так, как нужно. В этом случае услуги студента-первокурсника, пусть даже отлично знающего Windows, не будут соответствовать вашим запросам. Установить Linux сможет каждый: современные программы установки Linux все сделают за вас. А вот настроить систему такой «специалист» вряд ли сможет, а поэтому вам понадобится специалист, хорошо знающий Linux. Следовательно, и зарплата у него должна быть как минимум в два-три раза больше, чем у администратора, обслуживающего одноранговую Windows-сеть. Кроме этого, понадобится определенное время на настройку всех компьютеров, так как настройка Linux занимает больше времени, чем Windows, а особенно настройка игровых приложений под Linux. Подробнее о переходе на Linux вы можете прочитать в моих статьях «Переходим на Linux» и «Строим бесплатный Интернет-сервер», которые вы найдете на прилагаемом компакт-диске.

    Достоинство. Если вы имеете хотя бы небольшой опыт работы с Linux, вы уже должны были для себя отметить надежность работы этой операционной системы. А это значит, что вам или вашему администратору не нужно по 5…10 раз в день перезагружать машину из-за того, что «программа выполнила недопустимую операцию». Большинство современных игр являются сетевыми или же обладают поддержкой сети. Операционная система Linux работает с сетью гораздо быстрее, чем любая система семейства Microsoft.

    Недостаток. Да, сетевые игры под управлением Linux работают быстрее. Но это относится только к Linux-играм. А на платформу Linux портировано не такое уж и большое количество игр. Самые популярные игры продолжают существовать только в Windows-варианте, поэтому запускать такие игры вам придется из-под эмулятора Windows, что сказывается на работе игры. Во-первых, игры в родной Windows-среде работают стабильнее. Во-вторых, при работе из-под эмулятора, игры основательно «притормаживают». В-третьих, под управлением эмулятора работают далеко не все игры, хотя самые популярные все же работают. Конечно, все это в какой-то мере компенсируется более быстрой работой сети, но иногда даже не хочется играть, когда тебя «убивают» из-за того, что эмулятор не успел вовремя обновить экран. Но в любом случае, игры под Linux работают, причем некоторые даже показывают довольно неплохие показатели, например, производительность Counter Strike под управлением эмулятора составили 83…88 fps, а под Windows 98 — 92…95 fps (использовалось разрешение 800×600 и драйвер видеокарты для Linux от компании nVidia). Конфигурация компьютера: AMD Athlon 700 MHz/256 MB/40 GB Quantum 7200 rpm/32 MB/RivaTNT2 Pro.

    Достоинство. При использовании Linux можно не покупать полноценные компьютеры, а только X-терминалы. В качестве X-терминала может выступать обыкновенный PC-компьютер без жесткого диска. Все программы, в том числе Х-сервер и игры, будут выполняться на сервере, а пользователь увидит лишь результат выполнения программы. Естественно, в качестве сервера нужно купить довольно мощный компьютер. В начале книги, когда обсуждалась установка Linux, я писал, что при работе с Linux более критичен объем ОЗУ, чем частота процессора. В случае с сервером терминалов частота играет тоже довольно большую роль, потому что сервер должен будет обслуживать два-три десятка клиентов. При большом количестве клиентов целесообразно будет установить несколько серверов, скажем, один сервер на каждые 25 компьютеров. При этом предпочтительнее использовать двухпроцессорные конфигурации для сервера. Настройка X-терминалов рассматривалась в гл. 20 этой книги.

    21.2. Выбор аппаратного обеспечения для игрового зала

    Конфигурации компьютеров могут сильно варьироваться в зависимости от многих факторов. Прежде всего, это финансовый фактор. Если с финансами у вас все в порядке, посмотрите, какую технику используют ваши конкуренты. При покупке компьютеров не покупайте «космические» конфигурации, но и не нужно отставать от ваших конкурентов. Хотя, если все правильно настроить, более старые конфигурации, могут показать более высокие результаты, чем более производительная, но не настроенная техника.

    Также нужно учитывать контингент пользователей игрового зала: если они и в глаза не видели Pentium II, то незачем покупать Р IV. Конечно, здесь я утрирую, но это необходимо для лучшего пояснения самой идеи.

    Из моего небольшого опыта администрирования игровых залов (в своей жизни я работал в игровом зале всего три месяца) могу сказать, что пользователи обращают внимание на следующее:

    1. Размер монитора.

    2. Видеоплату.

    3. Работу сети.

    Поэтому на этих трех факторах не стоит экономить. Монитор — это первое, что бросается в глаза при посещении игрового зала. К тому же, это то устройство, на которое пользователь будет смотреть глазами. Как говорится, встречают по одежке… Я бы порекомендовал использовать 17 или 19-дюймовые мониторы. Если есть выбор, старайтесь выбрать мониторы с необычным дизайном или с цветом, отличным от белого. В общем, старайтесь привлечь внимание посетителя.

    На видеоплату обращают внимание все посетители: более продвинутые — при начале работы с компьютером, а менее продвинутые — в процессе работы. При этом качество видеоплаты выражается двумя словами: «быстро» или «медленно». Я рекомендую использовать видеоплаты компании nVidia, например, GeForce. Объем видеопамяти — 32 или 64 Мб. Больше устанавливать не стоит, потому что при необходимости для загрузки текстур будет использоваться оперативная память, а видеоплаты со 128-ю (или более) мегабайтами видеопамяти стоят довольно дорого. Несмотря на проблемы, возникающие при работе видеоплат nVidia в среде Linux, при должной настройке они показывают высокие результаты. Установка драйверов nVidia будет рассмотрена немного ниже.

    Не хочется создавать плохого впечатления о компании ATI, но я очень не рекомендую использовать видеоплаты производства этой компании. Да, комплектация этих плат заслуживает внимания, но вот производительность оставляет желать лучшего.

    Немаловажный фактор при организации игрового зала — это сеть и качество ее работы. Ни в коем случае не используйте сеть стандарта IOBase-2(5) на коаксиальном кабеле! Намного лучше установить самый дешевый коммутатор (switch) — хотя бы на 10 Мбит/с. В рассматриваемом случае (30 компьютеров) о варианте с сетью на 10 Мбит/с можете сразу забыть. Такая скорость подойдет разве что при работе 7…10 компьютеров.

    Операционная система Linux также вносит свои коррективы в конфигурацию компьютеров. При использовании эмулятора Windows лучше установить 256 Мб ОЗУ (или более). Напомню, что для нормальной работы большинства игр под управлением Windows 98 достаточно 128 МБ, a Windows XP — 256. Минимальная конфигурация компьютера: Athlon (Celeron) 700 MHz 128 MB/20 GB/32 MB RivaTNT2 Pro/100 MBit netcard.

    Нужно отметить, что процессоры AMD (в частности Athlon) работают с мультимедиа-приложениями (то есть с играми) быстрее, чем процессоры Celeron с той же частотой, но процессоры Intel в среде Linux работают надежнее. Если бы мне нужно было выбирать между процессором Athlon и Celeron, я бы выбрал процессор Celeron с более высокой частотой.

    Рекомендуемая конфигурация: Intel Pentium III 900 MHz (1 GHz) 256 MB/40 Gb/64 MB nVidia GeForce 400MX. Для большинства приложений такой конфигурации будет вполне достаточно.

    Можно использовать процессор Pentium IV, но при использовании этого процессора реально повышается производительность только тех приложений, которые поддерживают этот процессор, а также от алгоритма вычислений. Поэтому не все приложения будут быстрее работать на Pentium IV.

    21.3. Установка драйверов для видеокарт nVidia

    Лучшим дистрибутивом для рабочей станции игрового зала будет дистрибутив Alt Junior Linux 1.1. Этот дистрибутив достаточно прост в настройке и сразу после установки готов к использованию. Поэтому все дальнейшие действия будут рассматриваться на примере этого дистрибутива, а также дистрибутивов Red Hat и Mandrake Linux. Если вы используете другой дистрибутив, возможно, вам нужно будет скачать версии пакетов для своего дистрибутива, но в этом случае важен сам принцип — вы все сможете сделать по аналогии, используя любой другой дистрибутив.

    Примечание. Я не рекомендую устанавливать дистрибутив ALT Junior Linux 1.1 на сервере. 

    Компания nVidia не разрешает разработчикам дистрибутивов Linux включать драйвер в состав дистрибутива, однако сам драйвер бесплатно доступен на сайте nVidia — http://www.nvidia.com/view.asp?PAGE=linux

    Для установки драйвера вам нужно загрузить два файла:

    1. GLX-драйвер.

    2. Драйвер ядра для видеокарты nVidia.

    Оба файла доступны в уже собранных пакетах RPM, поэтому у вас не должно быть проблем с их установкой. При загрузке файлов обратите внимание на версии файлов: они должны совпадать.

    Сначала загрузите GLX-драйвер:

    http://download.nvidia.com/XFree86_40/1.0-2960/NVIDIA_GLX-1.0-2960.i386.rpm

    Затем выберите драйвер ядра в зависимости от используемого вами дистрибутива, и загрузите его (см. табл. 21.1).

    Драйверы ядра Таблица 21.1

    Дистрибутив Драйвер
    Red Hat Linux 7.3 NVIDIA_kernel-1.0-2960.rh73up.i686.rpm
    ALT Junior Linux NVIDIA_kernel-1.0-1541-alt7.i686.rpm
    Mandrake Linux 8.2 NVIDIA_kernel-1.0-2960.mdk82up.i586.rpm

    При загрузке файла обратите внимание на версию вашего дистрибутива, а также на используемую вами платформу (386, 586, 686).

    Затем установите файлы:

    rpm –ivh NVIDIA_kernel.i386.rpm

    rpm –ivh NVIDIA_GLX.i386.rpm

    Я специально не указывал номера версий, потому что не знаю, какой дистрибутив вы используете. На данном этапе важен порядок установки: сначала нужно установить драйвер ядра, а потом GLX-драйвер.

    Сразу после установки установите «среднее» разрешение монитора. Например, если максимальное разрешение, поддерживаемое вашим монитором — 1280×1024, установите 1024×768 или даже 800×600. После настройки драйвера вы сможете установить любое другое разрешение.

    Возможно, вам нужно будет обновить систему. Мне пришлось обновить следующие пакеты:

    mkinitrd-2.7.1

    mktemp-1.3.1

    modutils-2.4.10

    Также я установил обновления для моего ядра (до версии 2.4.12) и системы ALSA (также до версии 2.4.12).

    Напомню, что обновить пакет вы можете с помощью команды:

    rpm –Uvh <package.rpm>

    Откройте в любом текстовом редакторе файл /etc/X11/X86Config-4 и найдите строку:

    Driver "nv"

    (или подобную ей, например, Driver "vesa"). Эту строку нужно заменить на:

    Driver "nvidia"

    Убедитесь, что в вашем файле есть строка:

    Load "glx"

    Если ее нет, добавьте ее после строки:

    Load "dbe"

    После этого удалите строки:

    Load "dri"

    Load "GLcore"

    Полный листинг файла /etc/X11/XF86Config-4 приведен ниже (см. листинг 21.1).

    Листинг 21.1. Файл /etc/X11/XF86Config-4 для драйвера nVidia

    Section "ServerLayout"

     Identifier "Anaconda Configured"

     Screen 0 "Screen0" 0 0

     InputDevice "Moused" "CorePointer"

     InputDevice "Keyboard0" "CoreKeyboard"

    EndSection


    Section "Files"

     RgbPath "/usr/X11R6/lib/X11/rgb"

     FontPath "unix/:7100"

     FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"

    EndSection


    Section "Module"

     Load "dbe"

     Load "glx"

     Load "extmod"

     Load "fbdevhw"

     Load "pex5"

     Load "pex5"

     Load "record"

     Load "xie"

    EndSection


    Section "InputDevice"

     Identifier "Keyboard0"

     Driver "keyboard"

     Option "XkbRules" "xfree86"

     Option "XkbModel" "pc105"

     Option "XkbLayout" "ru"

     Option "XkbVariant" "basic"

    EndSection


    Section "InputDevice"

     Identifier "Moused"

     Driver "mouse"

     Option "Protocol" "PS/2"

     Option "Device" "/dev/psaux"

     Option "ZAxisMapping" "4 5"

     Option "Emulate3Buttons" "no"

    EndSection


    Section "Monitor"

     Identifier "Monitor0"

     VendorName "Monitor Vendor"

     ModelName "Monitor Model"

     HorizSync 30-61

     VertRefresh 50-120

     Option "dpms"

     # – 1400x1050 –

     # 1400x1050 @ 60Hz, 65.8 kHz hsync

     Modeline "1400x1050" 129 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync

     # 1400x1050 @ 70Hz, 76.8 kHz hsync

     Modeline "1400x1050" 151 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync

     # 1400x1050 @ 75Hz, 82.3 kHz hsync

     Modeline "1400x1050" 162 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync

     # 1400x1050 @ 85Hz, 93.2 kHz hsync

     Modeline "1400x1050" 184 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync

    EndSection


    Section "Device"

     Identifier "RIVA TNT2"

     Driver "nvidia"

     VendorName "RIVA TNT2"

     BoardName "RIVA TNT2"

    EndSection


    Section "Screen"

     Identifier "Screen0"

     Device "RIVA TNT2"

     Monitor "Monitor0"

     DefaultDepth 16

     Subsection "Display"

      Depth 16

      Modes "1024x768"

     EndSubsection

    EndSection


    Section "DRI"

     Mode 0666

    EndSection

    Теперь нажмите комбинацию Ctrl+Alt+ Backspace для перезагрузки сервера X. Если вы все сделали правильно, при загрузке вы должны увидеть логотип nVidia. Если компьютер при перезагрузке сервера X зависает, попробуйте отключить поддержку AGP 2х. Если и это не помогло, проверьте, установлена ли библиотека libGlwrapper:

    # rpm –qa | grep –i libglwrapper

    В случае если эта библиотека не установлена, установите ее:

    # rpm –ihv libGLwrapper*

    Перед выполнением этой команды нужно перейти в каталог, в котором находятся пакеты RPM вашего дистрибутива. Обычно библиотека libGlwrapper находится на первом диске дистрибутива.

    После установки библиотеки выполните команду:

    libglwrapper

    При запуске некоторых игр (Quake II, Heretic II) у вас могут возникнуть проблемы с библиотекой GL. Устранить их можно с помощью следующих команд:

    # rm –rf /usr/X11R6/lib/libGL.so

    # rm –rf /usr/X11R6/lib/libGL.so.1

    # ln –s /usr/X11R6/lib/libGL.so.nvidia /usr/X11R6/lib/libGL.so

    # ln –s /usr/X11R6/lib/libGL.so.nvidia /usr/X11R6/lib/libGL.so.1

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

    Примечание. Устанавливать драйвер для видеокарт nVidia вам нужно лишь в том случае, если вы планируете использовать игры, разработанные для Linux. Если же вы хотите запускать только Windows-игры, используя эмулятор wine, драйвер можно не устанавливать, поскольку и без него все нормально работает. Правда, при установке драйвера производительность Windows-игр все же повысилась.

    21.4. Установка Windows-эмулятора wine

    После установки драйверов видеокарты вы уже можете наслаждаться Linux-играми, однако, как я уже писал, игры (имеются в виду хорошие игры) для Linux — это большая редкость. Большинство популярных игр распространяются только в Win32-версии. Поэтому сейчас мы займемся настройкой эмулятора wine, который обеспечит запуск Windows-игр в среде Linux.

    Стандартный эмулятор wine входит в состав практически любого дистрибутива, но он не обеспечивает должного уровня эмуляции операционной системы Windows. Для нормальной работы игр для Windows вам потребуется эмулятор winex (и его следующие версии — winex2, winex3). He путайте эмулятор wine с эмулятором winex! Эмулятор winex — это отдельная разработка и, к сожалению, этот эмулятор не является бесплатным — за него нужно платить. Купить данный эмулятор можно на сайте http://www.transgaming.com. При покупке winex у вас появится возможность загрузить уже скомпилированную версию эмулятора в виде пакета rpm. На этом же сайте можно бесплатно загрузить исходный текст эмулятора, но вы потратите много времени на то, чтобы привести исходный код к пригодному для компиляции виду.

    Устанавливать эмуляторы нужно в такой последовательности: wine, winex, winex2, winex3. Напомню, что эмулятор wine, скорее всего, уже будет установлен у вас.

    21.5. Запуск игр с помощью эмулятора wine

    Эмулятор wine гарантированно поддерживает следующие игры:

    1. Counter Strike

    2. StarCraft

    3. Fallout

    4. Fallout 2

    5. Gunman

    6. Quake 2

    7. Quake 3

    8. Soldier of Fortune

    9. Unreal Tournament

    10. Red Alert (все версии)

    11. Diablo 2

    12. Caesar

    13. Return to Castle Wolfenstain

    14. Star track

    15. Kingpin

    16. Nox

    17. Jadded Alliance

    18. 4×4 Evolution

    19. American McGee Alice

    20. Daikatana

    21. Heroes of Might and Magic III

    22. Delta Force 1,2

    Возможно, у вас будут работать и другие игры.

    Перед установкой игры удалите все файлы с расширением reg в подкаталоге .wine домашнего каталога пользователя root:

    # rm –rf /root/.wine/*.reg

    Запустите сервер Х, если он еще не запущен командой:

    startx

    Если сервер X загружен, но вы работаете в консоли, перейдите в графический режим и запустите графический эмулятор терминала, например, xterm. Для установки новой игры выполните команду:

    # wine install_program

    Предположим, что программа установки игры называется setup.exe и находится в корневом каталоге компакт-диска. Для установки такой игры нужно ввести команду:

    wine /mnt/cdrom/setup.exe

    Игра будет установлена в каталог /usr/local/wine-c/games/<название_игры> или же в каталог /usr/share/wine-c/games/<название_игры>. Узнать, в какой из этих двух каталогов была установлена игра, вы можете, просмотрев файл /root/.wine/.config. В секции Drive С определяются настройки для диска С:

    [Drive С]

    "Path" = "/usr/share/wine-c"

    "Type" = "hd"

    "Label" = "MS-DOS"

    "Filesystem" = "win95"

    Пользовательские настройки эмулятора находятся в файле config, который находится в каталоге $НОМЕ/.wine. Глобальные настройки эмулятора вы можете изменить в файле /etc/wine.reg.

    После установки игры перейдите в каталог, в который была установлена игра, то есть в каталог /usr/share/wine-c/games/<название_игры>/ Попробуйте запустить ее, поочередно используя команды:

    wine game.exe

    winex game.exe

    winex2 game.exe

    winex3 game.exe

    Естественно, вместо параметра game.exe нужно подставить реальное имя исполняемого файла игры. Данные команды нужно вводить в терминале X, например, kterm, если вы используете KDE. Если игра не запустилась, ее следует удалить. Для этого просто удалите каталог /usr/share/wine-c/games/<название_игры>. Если игра запустилась, вы должны увидеть окно эмулятора wine (см. рис. 21.1).

    Рис. 21.1. Окно эмулятора wine


    Желательно сразу же открыть окно настроек программы и поэкспериментировать с настройками видеорежимов. Например, Unreal Tournament у меня намного быстрее работал при использовании программного рендеринга (Software Rendering), чем при использовании драйвера Direct3D.

    Теперь приступим к настройке запуска игры. Скопируйте каталог /root/.wine в каталог /root/.wine_<название_игры>. Создайте файл /root/название_игры>_run:

    touch /root/<название игры>_run

    Содержимое этого файла зависит от эмулятора, с помощью которого запустилась игра (wine, winex, winex2).

    Для wine содержимое файла будет таким:

    export WINEPREFIX=$HOME/. wine_<название_игры>

    cd "/usr/local/wine-c/games/<название_игры>"

    wine <исполняемый файл игры> <параметры>

    Для winex:

    export LD_LIBRARY_PATH=/usr/local/winex/lib:$LD_LIBRARY_PATH

    export PATH=/usr/local/winex/bin:$PATH

    export WINEPREFIX=$HOME/ .wine_<название игры>

    cd "/usr/local/wine-c/games/<название_игры>"

    winex <исполняемый файл игры> <параметры>

    Для winex2:

    export LD_LIBRARY_PATH=/usr/local/winex2/lib:$LD_LIBRARY_PATH

    export PATH=/usr/local/winex2/bin:$PATH

    export WINEPREFIX=$HOME/.wine_<название игры>

    cd "/usr/local/wine-c/games/Пазвание игры>"

    winex2 <исполняемый файл игры> <параметры>

    Введите команду для изменения прав доступа:

    chmod u+x < название игры >_run

    Теперь для запуска игры можно использовать команду /root/<название игры>_run.

    После установки всех игр удалите библиотеки Microsoft, которые будут установлены в каталог /usr/local/wine-c/system. Иногда эти библиотеки устанавливаются в другие каталоги, поэтому внимательно изучите содержимое каталога /usr/local/wine-c и удалите лишние файлы.

    Выполните команду chmod –R o+w /usr/local/wine-c. Эта команда установит права доступа к каталогу /usr/local/wine-c, в котором производятся запись в играх и сохранение конфигураций пользователям.

    Для включения полноэкранного режима установите значение переменной файла /root/.wine/config Managed, равное N, а также закомментируйте переменную Desktop:

    ; Allow the window manager to manage created windows "Managed" = "N"

    ; Use a desktop window of 640x480 for Wine

    ; "Desktop" = "800x600"

    После того, как все будет настроено, создайте пользователя game. Используя эту учетную запись, посетители игрового зала будут регистрироваться в системе. Скопируйте все файлы настроек в каталог /home/game и установите должным образом права доступа. Для этого можете использовать следующие команды:

    ср /root/*_run /home/game

    cd /home/game

    chmod o+x *_start

    cd /root/Desktop/*/home/game/Desktop

    chown –R game:game /home/game/Desktop

    mkdir /home/game/.kde/apps/share/WINE

    cp –R /root/.kde/apps/share/WINE /home/game/.kde/apps/share/WINE

    chown –R game:game /home/game/.kde/apps/share/WINE

    Теперь пользователь game сможет запускать установленные вами игры. Как всегда существует одна маленькая деталь, о которой постоянно забываешь: попробуйте объяснить посетителю, не знающему даже как правильно завершить работу в Windows 98, что такое терминал xterm и что для запуска игры quake нужно ввести команду quake_run. Вы правы, это будет довольно сложно, поэтому, чтобы не усложнять себе жизнь, каждый день отвечая на вопросы наподобие: «а как запустить этот самый xterm?» и чтобы не шокировать посетителей, создайте на рабочем столе ярлыки для всех файлов *_run.

    Для этого щелкните правой кнопкой мыши на рабочем столе KDE и выберите команду Создать→Ссылку на приложение (см. рис. 21.2). В качестве рабочего стола по умолчанию я рекомендую использовать именно KDE, потому что этот рабочий стол максимально приближен к стандартному рабочему столу Windows и при работе с ним посетители будут задавать меньше вопросов.

    Рис. 21.2. Новая ссылка на приложение


    После этого введите название игры и выберите для нее значок. После этого перейдите на вкладку Выполнить и выберите файл для запуска (рис. 21.3). Из рис. 21.3 видно, что при щелчке на этом ярлыке будет запущена игра UNREAL (файл unreal_start). Я рекомендую запускать данные файлы в терминале. Для этого можете включить режим Запускать в терминале и ввести параметры терминала, а можете просто ввести вместо команды /home/game/unreal_start команду xterm –e home/ game/unreal_start. Данная команда запустит терминал xterm, который использует небольшое количество системных ресурсов, а в этом терминале и будет запущен нужный вам файл запуска игры. На вкладке Права вы можете установить права доступа к ярлыку (рис. 21.4).

    Рис. 21.3. Выбор игры

    Рис. 21.4. Правадоступа


    Обычно здесь ничего не нужно изменять.

    Можно также создать ярлыки для других часто используемых программ: браузер Mozilla, клиент licq, пакет Star (Open) Office, проигрыватель XMMS.

    21.6. Средства мультимедиа

    Операционная система Linux обладает довольно удобными программами для работы с мультимедиа-информацией. В состав практически любого дистрибутива Linux входит проигрыватель xmms. Эта программа представляет собой полный аналог популярной программы Winamp. позволяет проигрывать многие типы аудио-файлов, включая MP3. Как и программа winamp, проигрыватель xmms позволяет подключать различные плагины и использовать скины (см. рис. 21.5).

    Рис. 21.5. Проигрыватель xmms


    Кроме проигрывателя xmms, в состав KDE входит очень удобный проигрыватель K Media Player. Данный проигрыватель обладает практически теми же функциями, что и xmms (рис. 21.6).

    Рис. 21.6. Проигрыватель K Media Player


    Для прослушивания аудио компакт-дисков можно использовать программу cdplayer (рис. 21.7). Существуют также текстовые версии этой программы — cdp и cdplay, которые предназначены для запуска из консоли.

    Рис. 21.7. Проигрыватель аудио-CD


    Если вы не установили на своем сервере систему X Window, а слушать музыку все равно хочется, установите программу mpg123. Данная программа работает в текстовом режиме и позволяет прослушивать аудиоформаты MPEG1, MPEG2, MPEG3. Поддерживаются также списки песен.

    Просмотреть видеофильмы форматов VCD и MPEG вы можете с помощью проигрывателя gtv (см. рис. 21.8). Для увеличения размера окна включите режим Double, а для непрерывного воспроизведения — режим Loop.

    Рис. 21.8. Проигрыватель gtv


    В большинстве случаев в вашей системе будет установлен мощный редактор MIDI-файлов Brahms. Данный редактор позволяет как создавать новые MIDI-файлы, так и редактировать уже, существующие.

    Настроить параметры воспроизведения, а также узнать о многих параметрах вашей аудиоподсистемы вы можете с помощью программы управления звуковым сервером aRts (см. рис. 21.9).

    Рис. 21.9. Программа управления звуковым сервером aRts


    Настроить громкость звучания можно с помощью программы Sound Mixer (см. рис. 21.10). С ее помощью можно настроить как общую громкость, так и громкость отдельного аудиоустройства, а также установить баланс звучания.

    Любителям Karaoke могу посоветовать программу Media/Karaoke Player.

    Рис. 21.10. Программа Sound Mixer


    В состав Linux также входят программы для записи компакт-дисков (cdrecord), создания аудио-CD. Как видите, стандартный набор утилит для работы с мультимедиа информацией настолько широк, что операционную систему Linux нельзя назвать только сервероориентированной.

    21.7. Администрирование зала

    Вы уже справились с самой сложной задачей — настроили рабочее место посетителя. По сравнению с этой задачей администрирование игрового зала является второстепенным вопросом. Цель любого игрового зала — это получение прибыли, а последнее возможно лишь при условии, что:

    1. Все игры будут работать, причем они должны работать быстро и без сбоев.

    2. Сеть работает без сбоев.

    3. Графический интерфейс пользователя интуитивно понятен.

    4. Можно слушать MP3 и смотреть МР4, а также проигрывать аудио компакт-диски.

    Другими словами, клиенты будут посещать ваш зал, если в нем будет создана соответствующая обстановка. А каким образом вы администрируете ваш игровой зал, посетителей мало интересует. Например, если у посетителя вышло время, можно просто подойти и сказать ему об этом. Конечно, если такое позволяют размеры вашего игрового зала. В самом деле, не будете же вы идти через весь зал, чтобы сообщить посетителю номер 47, что ему уже нужно уходить или доплатить за дополнительное время? Можно автоматизировать этот процесс и автоматически отключить его от системы через определенное время.

    В этой главе я сделал все возможное, чтобы описать запуск игр под Linux, и, я надеюсь, что игры в вашем игровом зале будут работать достаточно быстро. О сети позаботится сама операционная система, как вы уже знаете, реализация стека протоколов TCP/IP в операционной системе Linux намного эффективнее, чем в Windows.

    Разработчики оконных сред KDE и Gnome позаботились о интуитивности пользовательского интерфейса, решив за нас этот вопрос. А об использовании средств мультимедиа мы уже говорили в предыдущем пункте, поэтому сейчас мы можем с чистой совестью перейти к организационным моментам.

    21.7.1. Доступ к Интернет

    Прежде всего определимся, нужен ли вашему игровому залу доступ к Интернет. Если нужен, то для каких целей. В большинстве случаев он нужен для того, чтобы посетители могли использовать так называемые Online-версии игр или подсоединяться к всемирным игровым серверам. Такую возможность предоставляют разработчики многих современных игр. Возможно, ваш зал — это не просто игровой зал, а еще и Интернет-кафе.

    Итак, мы выяснили, что может быть три варианта:

    1. Зал без доступа к Интернет.

    2. Зал с доступом к Интернет для Online-игр.

    3. Интернет-кафе.

    В первом случае вы сразу можете перейти к следующему пункту — «Управление доступом». Сейчас же будет рассмотрена настройка сервера во втором и в третьем случаях.

    Если вам нужно обеспечить только работу Online-игр, вам нужно будет установить и сконфигурировать такие службы:

    1. IPChains или IPTables (в зависимости от версии ядра).

    2. Прокси-сервер Socks5.

    Настраивать бастион нужно в любом случае — он обеспечивает безопасность вашей внутренней сети. При настройке бастиона учитывайте особенности используемых вами игр. Например, выделенный сервер игры Unreal Tournament использует 7777 порт. На бастионе нужно будет разрешить порт 7777, если вы хотите, чтобы к вашему серверу могли подключиться извне, например, из другого игрового зала. Настройка бастионов уже обсуждалась в одноименной гл. 14 — «Бастионы».

    Сервер Socks5 нужно настроить только в том случае, если ваша игра требует реальный IP-адрес. В этом случае можно использовать или 1Р-маска-радинг, настройка которого обсуждается в гл. 14, или сервер Socks5. Сервер Socks5 нужен еще для Организации рабочего места администратора, чтобы он на протяжении рабочего дня мог общаться со своими знакомыми по ICQ.

    В третьем случае (Интернет-кафе) вам нужно настроить такие службы:

    1. Бастион.

    2. Прокси-сервер SQUID.

    3. Сервер DNS.

    4. Сервер Socks5.

    5. Web-сервер.

    6. Почтовый сервер.

    Первые три службы вам нужно настроить обязательно, а все остальные — по вашему желанию. Как уже было отмечено, бастион нужен из соображений безопасности. Сервер SQUID нужен для кэширования Web-страниц клиентов, при этом совсем не обязательно устанавливать на сервере Web-сервер.

    Сервер DNS также необходим для повышения производительности. Вы можете использовать сервер DNS вашего провайдера, однако, если вы настроите собственный сервер DNS, вы:

    1. Повысите скорость разрешения имен DNS.

    2. Сэкономите на трафике.

    Желательно настроить почтовый сервер для повышения скорости отправки сообщений посетителей. Можно опять же таки использовать или сервер провайдера или какой-нибудь бесплатный SMTP-сервер, например, smtp.mail.ru, но использование собственного сервера будет удобнее и дешевле. Напомню, что настройка почтовика обсуждалась в гл. 13, сервера DNS — в гл. 10, а сервера SQUID — в гл. 15.

    Теперь, когда Интернет-сервисы уже настроены и у каждой рабочей станции есть доступ к Интернет, можно приступить к теории управления пользователями.

    21.7.2. Управление пользователями

    Сначала разберемся, что мы подразумеваем под управлением пользователями. Обычно все управление заключается в отслеживании времени работы посетителя и когда его время вышло, сообщении ему об этом. Естественно, если пользователей много, проследить за каждым — это довольно трудная задача. Даже если у вас будет журнал, в котором вы будете записывать время работы каждого пользователя, через пару дней вам основательно надоест каждые десять минут проверять, у какого посетителя вышло время. Например, если в вашем распоряжении 30 компьютеров, вам нужно будет каждые 10 минут просматривать все 30 записей.

    Управлять пользователями можно по-разному. Можно по истечении определенного времени просто «отрубить» пользователя от системы. На что в ответ вы получите массу жалоб и вряд ли ваш зал будет пользоваться популярностью при таком управлении. Вы, конечно, можете привести аргументы в свое оправдание: мол, он (посетитель) знает, что оплатил один час и должен «чувствовать» время. Однако, в нашем случае нужно учитывать тот факт, что у игрока отсутствует это самое «чувство, времени», во время игры он не ощущает, прошло полчаса или пятьдесят минут. Поэтому, скорее всего, посетитель не успеет сохранить игру до того, как его отключат от системы. Можно предупредить посетителя о таких правилах, но при этом вы заставляете его быть в постоянном напряжении, постоянно поглядывая на часы. От такой игры никто не получит удовольствие.

    Мы уже пришли к выводу, что теория «жесткого» управления нам не подходит, и сейчас рассмотрим более лояльный способ управления. Через определенное время, например, за пять минут до того, как у посетителя выйдет время, мы предупредим его об этом. За это время посетитель успеет сохранить игру и доплатить, если он захочет продолжить игру. Думаю, пять минут будет вполне достаточно, чтобы дойти к столику администратора.

    Все вышеописанные функции выполняются специальным программным обеспечением для игровых залов. Для игровых залов, использующих операционную систему Windows, создана масса программ такого рода. К сожалению, мне не встречался нормальный пакет программ управления игровым залом для Linux. Можно было бы использовать K12 Linux Terminal Server, но этот программный комплект больше подходит для управления учебным классом, чем для управления игровым залом. В нет есть много ненужных функций, которые вы вряд ли будете использовать. Вам нужна программа, которая:

    1. Предупредила посетителя, что через определенное время ему нужно освободить место.

    2. Через определенное время «отрубила» его от системы.

    3. С помощью которой вы могли бы отправить сообщение любому посетителю.

    Как видите, для вас вполне достаточно трех этих функций. Аналогичное программное обеспечение ведет также протокол: кто, когда и сколько работал. Нам же эта функция не нужна, потому что протоколы ведет сама Linux (точнее, программы протоколирования). В любой момент вы можете посмотреть, кто и сколько работал. Например, узнать, когда регистрировался и сколько времени отработал в системе пользователя den можно с помощью команды (см. рис. 21.11):

    last den

    Рис. 21.11. Журнал регистрации


    Аналогично, если вы введете команду last без параметра, то увидите полный отчет о времени работы пользователей. Узнать время последней регистрации пользователя можно с помощью команды lastlog (рис. 21.12). Программы last и lastlog являются средствами просмотра файла /var/log/lastlog, который нельзя просмотреть «невооруженным глазом».

    Рис. 21.12. Время последней регистрации


    Вернемся к нашему программному обеспечению для управления посетителями. В силу невозможности найти какое-нибудь достойное уже созданное программное обеспечение, я решил написать свою «программу» для управления игровым залом. Данное решение не претендует на первое место среди программ такого рода, но обладает всеми необходимыми функциями и достаточно простое в обращении. Обычно программы такого рода состоят из двух частей: модуль-клиент и модуль-сервер. Модуль-клиент обычно установлен у администратора и он может управлять множеством компьютеров локальной сети. Модуль-сервер запускается на компьютере посетителя и опрашиваетнекоторый порт. Как только модуль-сервер получил от администратора команду, он выполняет определенные действия, например, при получении команды timeout он отсоединяет пользователя от системы.

    В предлагаемом мною решении модуль-клиент, как и модуль-сервер, отсутствуют. Сейчас разберемся почему. Мы настраиваем основной сервер так, чтобы к нему подключались все остальные компьютеры в сети — компьютеры посетителей. Поскольку, пользователь уже зарегистрирован в нашей системе, для того, чтобы отключить его, достаточно просто локально «прибить» процесс этого пользователя. Под процессом следует понимать оконный менеджер данного пользователя.

    Естественно, все компьютеры сети будут X-терминалами вашего сервера. Настройка X-терминала обсуждалась в гл. 20. При настройке руководствуйтесь такими правилами. Имя пользователя должно совпадать с именем рабочей станции. Например, если имя рабочей станции game1, то на этой станции должен быть зарегистрирован пользователь game1. На сервере должны быть зарегистрированы все пользователи: game1, game2, …, gameN. Пароли установите по своему усмотрению, но пароли пользователей на сервере и на рабочих станциях тоже должны совпадать. Все это необходимо для регистрации пользователя на сервере. Если настройка Х-терминала показалась вам слишком сложной, сейчас рассмотрим более простой путь. В гл. 20 рассматривалась настройка «чистого» X-терминала, то есть загрузка X-терминала осуществлялась по сети, а на самом компьютере даже не был установлен жесткий диск. Сейчас же мы попытаемся настроить «условный» X-терминал. Почему условный? Операционная система будет устанавливаться на компьютеры посетителей как обычно, вместе с системой X Window. Затем в файле /etc/inittab вы заменяете строку:

    X:123456:respawn:/usr/bin/X11/X

    на строку:

    X:123456:respawn:/usr/bin/X11/X –query 192.168.0.1

    Данная команда (X –query 192.168.0.1) обеспечивает загрузку системы X по умолчанию (уровень выполнения 5) и при этом будет использоваться сервер X с IP-адресом 192.168.0.1. Не сложно догадаться, что компьютер с таким адресом — это и есть ваш сервер. Настройку сервера терминалов выполните так, как описано в гл. 20. При этом на сервере и клиенте желательно установить одну и ту же версию системы X Window.

    Если на всех компьютерах установлено одно и то же оборудование, а в большинстве случаев это так, поступите таким образом: настройте систему X Window только на сервере, а затем обеспечьте доступ по NFS клиентам к файлам системы X Window. В этом случае на компьютере клиента вообще не нужно устанавливать систему X Window, а запускать ее непосредственно с сервера по сети, используя NFS. Настройка сетевой файловой системы (NFS) обсуждалась в гл. 8. Я рекомендую использовать именно второй способ. Запуск игр тоже можно осуществлять по сети, предварительно расположив их в каталоге, доступному по NFS. Естественно, для запуска и нормальной работы игр по сети нужна сеть, обеспечивающая скорость передачи данных 100 Мбит/с. Концентраторы (hub) в данной сети лучше заменить коммутаторами (switch).

    Теперь перейдем к написанию самой программы. Данную программу мы напишем, используя «подручные» средства: стандартные программы Linux и командный язык интерпретатора shell. Во-первых, командный язык интерпретатора bash уже рассмотрен в этой книге. Во-вторых, если написать эту программу на С или Pascal, то читатель должен владеть данным языком программирования, что усложнит чтение книги.

    Просмотреть всех зарегистрированных в системе пользователей можно с помощью команды w (рис. 21.13).

    Рис. 21.13. Команда w


    С помощью данной команды можно выяснить, сколько времени работает пользователь, использование процессора пользователем, какая программа выполняется в данный момент, а также общую загрузку системы (load average). Кроме другой полезной информации, команда w сообщает нам с какой машины произошла регистрация пользователя в нашей системе. Будем рассматривать случай, когда имя пользователя будет совпадать с именем машины, что впоследствии значительно упростит вам администрирование залом.

    Вывести все процессы, которые принадлежат пользователю, можно с помощью команды:

    ps --user username

    На рис. 21.14. показаны процессы, принадлежащие пользователю root.

    Рис. 21.14. Процессы, принадлежащие пользователю root


    Теперь рассмотрим исходный текст этой программы.

    Листинг 21.2. Программа newclient

    #!/bin/bash

    #  Управление игровым залом — добавление нового клиента

    #  Распространяется по лицензии GPL

    # (с) 2002 Denis Kolisnichenko, dhsilabs@mail.ru

    #  Шрифт для отображения сообщения

    FONT="-cronyx-fixed-*-*-*-*-*-*-*-*-*-*-koi8-r"

    # Размеры окна

    GM="700x70"

    # Сообщение

    MSG="Ваше время вышло. В течение 5 минут вы можете оплатить дополнительное время"

    if [ $# –It 4 ] ; then

     { echo "Usage: newclient warntime time user num";

     exit 1;

     }

    fi;

    # Спим

    sleep $1

    # Отображаем предупреждение, поскольку время warntime вышло

    xmessage –display server:$4 –fn $FONT –geometry $GM –bg black –fg green $MSG

    sleep $2

    P=`ps -–user $3 | grep –i gnome-session | /bin/awk –F " " '{ print $1 }' `

    echo $P

    # Убиваем сессию пользователя

    kill –9 $P

    echo "Time of user $3 is out"

    Запуск программы:

    newclient 3540 3600 game1 1

    newclient 55m 60m game2 2

    newclient 55m 1h game3 3

    newclient 23h 1d game4 4

    При запуске программы нужно указать четыре параметра. Первый из них — это время, через которое будет отображено сообщение. Сообщение можно изменить по своему вкусу, отредактировав значение переменной MSG (также, как и другие переменные). Следующий параметр — это время, по истечению которого пользователь будет «отрублен» от системы. Время можно указывать в секундах, в минутах (суффикс т), часах (суффикс h), днях (суффикс d).

    Третий и четвертый параметры — это соответственно имя пользователя и номер дисплея. Номер дисплея будет совпадать с номером пользователя, если вы настроите систему согласно моим рекомендациям. Например, если имя пользователя game1, то номер дисплея — 1.

    Обратите внимание на следующую строку программы:

    xmessage –display server:$4 –fn $FONT –geometry $GM –bg black –fg green $MSG

    Данная строка обеспечивает отображение сообщения MSG на дисплее с номером $4 компьютера server. X-терминал посетителя будет подключен как раз к дисплею с номером $4. При этом посетитель увидит на экране примерно то, что показано на рис. 21.15.

    Рис. 21.15. Предупреждение об истечении времени


    Следующий аспект, на который вам нужно обратить внимание — это оконная среда пользователя. Если пользователь использует среду Gnome, то в списке процессов пользователя будет процесс gnome-session. Если завершить этот процесс, пользователь будет отключен от системы. На этом и основывается данный метод работы программы. В листинге 21.2 подразумевается, что пользователь использует среду Gnome:

    Р=`ps –user $3 | grep –i gnome-session | /bin/awk –F " " '{print $1 }' `

    Если ваши посетители используют среду KDE, измените эту строку на аналогичную ей:

    P=`ps –user $3 | grep –i kdeinit | /bin/awk –F " " '{ print $1 }'`

    Как проконтролировать, какую среду использует посетитель? Очень просто: при установке системы установите одну из сред: или KDE, или Gnome. Можно также изменить исходный текст программы newclient, добавив соответствующую проверку, но зачем усложнять себе жизнь?

    Еще раз рассмотрим запуск программы. Данную программу можно запускать в фоновом режиме, освободив консоль:

    newclient 55m 60m game1 1 &

    Эта команда будет выполняться в фоновом режиме. Как только выйдет время (1 час), на консоли вы увидите сообщение:

    Time of user game1 is out

    21.7.3. Ограничение доступа пользователя

    Операционная система Linux обладает достаточно высокими средствами защиты информации, поэтому, используя стандартную конфигурацию (обыкновенный пользователь, а не суперпользователь), вы обеспечите высокий уровень безопасности. Другими словами, по поводу безопасности можете не волноваться: пользователь все равно ничего не сделает такого, что может повлечь за собой разрушение системы. Единственное, что я могу порекомендовать, переместите файлы /usr/bin/mc и /usr/bin/kcontrol-panel в каталог пользователя root: посетителю незачем изучать аналог Norton Commander для Linux и тем более настраивать среду KDE.








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх