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

Я установил Linux в качестве легкого клиента для совместной работы с открытым программным пакетом удаленного настольного клиента rdesktop. Минимальная инсталляция Linux + X Window после загрузки подключается к Windows Terminal Server. Рабочая станция Linux в данном случае выступает в роли простого терминала, предоставляющего соединение с корпоративной сетью. Через него пользователь получает доступ к центральному серверу или нескольким серверам и может запускать все необходимые приложения.

Преимущества данной конфигурации следующие.

  • Контролируемое окружение - пользователям не позволено менять настройки своей рабочей станции. Все нарушения возможны только на аппаратном уровне.
  • Переустановка рабочей станции Linux практически не зависит от аппаратной части и проходит очень быстро - оборудование должно присутствовать в списке совместимостей Linux (Hardware Compatibility List), и размер образа инсталляции занимает всего 300 Мбайт.
  • За клиентскую операционную систему не придется платить - Linux распространяется бесплатно.
  • Одно централизованное хранилище для модернизации приложений и служб - терминальный сервер содержит все приложения и службы.
  • Рабочие станции функционируют гораздо быстрее.

И самое главное — везде используется Linux. Подробности во врезке «Лицензирование и полная стоимость владения».

УСТАНОВКА LINUX

Для установки я взял Linux Red Hat 7.1 и остался очень доволен. Ниже описано, как осуществлялась конфигурация системы.

Для начала я произвел установку с корневым разделом размером в 500 Мбайт и разделом подкачки на 64 Мбайт. Размер установки можно уменьшить, например, если объем жесткого диска не превышает 540 Мбайт. Мне удалось сократить размер установки до 260 Мбайт с разделом подкачки объемом 32 Мбайт.

ОБОРУДОВАНИЕ

Оборудование можно использовать любое, если оно совместимо с Linux, но я бы предложил следующее:

  • оперативная память объемом 32 Мбайт;
  • видеоадаптер с памятью свыше 4Мбайт;
  • жесткий диск на 500 Мбайт;
  • сетевая карта на 10/100 Мбит/с.

А вот такой может быть минимальная конфигурация программного обеспечения:

  • классический оконный интерфейс X Window (например, twm);
  • поддержка сети;
  • инструменты для разработки;
  • пакет kudzu;
  • пакет ssh.

Я рекомендую воспользоваться опцией выбора индивидуальных пакетов (Select Individual Packages), чтобы не устанавливать ненужные приложения — sendmail и т. д. Таким образом, мы создадим легкую клиентскую ОС с оптимальным набором утилит, хотя можно добавить и другие утилиты (например, ssh) для удаленного доступа администратора к клиентской рабочей станции. Какого-то специального списка требований не существует. Если у вас установлена сетевая поддержка и twm — этого уже должно быть достаточно для работы. Я сократил размер установочных программ так, что все они поместились на компакт-диск.

RDESKTOP

Утилита с открытыми кодами rdesktop обеспечивает взаимодействие системы UNIX/Linux с Windows Terminal Server. Она написана Мэттом Чапменом и распространяется на условиях лицензии GPL.

Для этой статьи я использовал rdesktop версии RDP 5.0. Запуск rdesktop в полноэкранном режиме производится в соответствии со следующим синтаксисом: rdesktop -f <терминальный сервер>. Возможен запуск rdesktop в окне с помощью rdesktop -g 800x600 <терминальный сервер>, хотя я настоятельно рекомендую выбрать rdesktop -f <терминальный сервер> в случае, когда терминальный сервер — единственный рабочий стол в системе. Таким образом, пользователи даже не узнают, что они, к примеру, пользуются не Windows 2000. Для начала загрузите исходный текст программы и запустите make для компиляции исполняемого файла, либо скомпилируйте программу на другом компьютере и перенесите на рабочий компьютер в случае, если на последнем не установлены пакеты для разработки. Поместите rdesktop в переменную пути. После установки rdesktop можно попробовать запустить ее:

rdesktop <терминальный сервер>

где <терминальный сервер> — это доменное имя либо

IP-адрес компьютера с установленным Windows Terminal Server. Возможности тонкой конфигурации у rdesktop отсутствуют, она является лишь простым терминальным клиентом, работающим по протоколу удаленного рабочего стола (Remote Desktop Protocol, RDP).

AUTOLOGIN

Autologin освобождает пользователя от обязательной авторизации на рабочей станции Linux. Как правило, он уверен, что работает за обычной рабочей станцией Windows. Компьютер включается, загружается и выводит приглашение к авторизации на терминальном сервере. Autologin не позволяет вмешаться в процесс загрузки рабочей станции до того, как будет выведено приглашение терминального сервера, и делает прозрачным процесс взаимодействия с компьютером, не заставляя пользователя выполнять лишние действия.

Кроме того, благодаря Autologin администратору достаточно одного инсталляционного пакета для всех пользователей. Если с одной из станций возникает проблема, то ему не надо беспокоиться о восстановлении паролей пользователя, потому что не нужны и сами пароли. С применением Autologin любой компьютер может быть предоставлен любому сотруднику без дополнительного вмешательства администратора. После того как компьютер загружается и выводит приглашение к авторизации, у пользователя появляется вполне работоспособный рабочий стол. Подобная авторизация позволяет крупным компаниям предоставлять рабочие станции нескольким служащим, при этом не беспокоясь о профилях пользователей, загружаемых из Internet программах и т. п. Пропускаемая с помощью Autоlogin часть процесса авторизации — это авторизация непосредственно в Linux. Безопасность системы не уменьшается, поскольку сама рабочая станция задействована в процессе наименьшим образом. Зона ответственности начинается с приглашения к авторизации Windows Terminal Server.

Ниже представлен способ установки Autologin в систему. Загрузите файл ftp://ftp.linux-easy.com/pub/linux-easy/i386/autologin-1.0.0-1.i386.rpm и установите его с помощью команды rpm -i autologin-1.0.0-1.i386.rpm. Создайте пользователя, для которого вы хотите реализовать автоматический вход в систему, и назначьте ему пароль. Это может быть как реальный пользователь, так и шаблонный, например с именем username.

Ниже приведен файл README из пакета Autologin:

Как настроить Autologin
==========================
Создайте файл /etc/sysconfig/autologin,
 содержащий следующие установки:
USER=[username]
Начать сеанс пользователя username
Эта обязательная установка. При ее отсутствии
 Autologin не будет работать.
Если Autologin скомпилирован с опцией
 -enable-paranoid, он не будет запускаться,
 когда у пользователя username идентификатор
 UID или GID равен 0 (суперпользователь).
EXEC=[сценарий или программа]
Указанный здесь сценарий, или программа,
 будет исполнен после авторизации пользователя
 username. Если эта опция пропущена,
 то использоваться будет
 команда /usr/X11R6/bin/startx.
AUTOLOGIN={yes, no}
Указанной опцией можно пользоваться, чтобы
 отключать автоматический вход в систему,
 даже при настроенном Autologin, когда
 конфигурационный файл существует и не поврежден.
 При ее отсутствии по умолчанию
 принимается AUTOLOGIN=yes.
Файл /etc/sysconfig/autologin не должен быть
 доступен для записи ни для кого, кроме root.
 Если же в него произвел запись другой
 пользователь, то Autologin обнаружит
 это и не будет запускаться, выдав сообщение
 о возможной попытке взлома.
Потребуется ли мне еще что-нибудь?
==============================
Да. Автоматический старт Autologin нужно
 настроить на уровень выполнения 5. Начиная
 с версии пакета initscripts 5.15, Red Hat
 Linux делает это автоматически. Если у вас
 установлена более ранняя версия или другая
 ОС, то просто замените вызов kdm, xdm или
 gdm на вызов autologin либо, что еще лучше,
 на сценарий, который вызывает аutologin,
 а в случае неудачного выполнения возвращается
 к запуску [kxg]dm.
Мой файл /etc/sysconfig/autologin выглядит
 следующим образом:
USER=username
AUTOLOGIN=yes

Имя пользователя, которое вы вводите, появится в рамке User в приглашении терминального сервера.

ДОМАШНИЙ КАТАЛОГ ПОЛЬЗОВАТЕЛЯ ПРИ AUTOLOGIN

Для запуска twm после регистрации пользователя я использую файл .xinitrc. В том же файле записан запуск rdesktop. Server — это псевдоним имени узла в /etc/hosts.

.xinitrc
/usr/local/bin/rdesktop -f server &
twm

Здесь показана часть файла .twmrc пользователя, где определяется вызов меню по щелчку левой кнопкой мыши. Я убрал все опции, которые не хотел бы предоставлять пользователям, и оставил только возможность повторного соединения с сервером на случай, если пользователь отсоединяется либо истекло время ожидания авторизации. Кроме того, здесь можно предусмотреть возможность перезагрузки.

.twmrc
menu "defops"
{
"Menu" f.title
""	f.nop
"Reconnect"	f.exec "/usr/local/bin/rdesktop
 -f server &"
""	f.nop
}

Мне удалось удачно запустить удаленный рабочий стол при разрешениях от 640x400 до 1024x768, но я добился вывода только 16-разрядной цветовой палитры. Я предложил выше использовать графические адаптеры с памятью 4 Мбайт, чтобы картинка не плавала и не мигала.

НАСТРАИВАЕМ КЛИЕНТСКИЙ КОМПЬЮТЕР

Вряд ли абсолютно все компьютеры, на которые вы будете устанавливать образ, окажутся одинаковыми по аппаратной конфигурации. Поэтому я и разработал конфигурационный сценарий, призванный помочь в настройке индивидуальной конфигурации. Сценарий размещается в домашнем каталоге пользователя root и называется configure. Сделайте его исполняемым командой chmod 755 configure, затем запустите (./configure). Сценарий написан в предположении, что вы пользуетесь дистрибутивом Red Hat Linux, но для любого другого дистрибутива его необходимо модифицировать.

#!/bin/sh
echo "Установить сервер, с которым будет
производиться соединение?"
read YN
if [ $YN = "y" ] || [ $YN = "Y" ]
then
echo "Введите IP-адрес сервера, с которым будет
работать этот клиент?"
read IPADDR
echo "$IPADDR server" >> /etc/hosts
echo " " >> /etc/hosts
fi
echo "Запустить программу kudzu?"
read YN
if [ $YN = "y" ] || [ $YN = "Y" ]
then
kudzu
fi
echo "Запустить программу netconfig?"
read YN
if [ $YN = "y" ] || [ $YN = "Y" ]
then
netconfig
fi
echo "Запустить программу Xconfigurator?"
read YN
if [ $YN = "y" ] || [ $YN = "Y" ]
then
Xconfigurator
else
echo "Все готово!"
fi

При первой загрузке после произведенной установки, вы можете столкнуться с тем, что интерфейс X Window несколько раз мигнет, потом завершится сообщением наподобие ?respawning too fast, will attempt again in 5 minutes? («слишком быстрое возобновление, новая попытка будет предпринята через 5 мин»). Это значит, что в файл /etc/hosts занесена запись терминального сервера, который еще не существует, либо некорректно указан его IP-адрес.

Нажмите Ctrl-Alt-F2 для вызова консоли, пройдите авторизацию и исправьте настройки. Затем выполните команду kill -HUP (идентификатор процесса twm), и после этого появится окно авторизации терминального сервера с заполненной строкой ввода имени пользователя.

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

БУДУЩЕЕ

В будущем хотелось бы настроить легкого клиента так, чтобы он рассылал широковещательный запрос на выявление в сети терминальных серверов UNIX и Windows и при загрузке выводил список, откуда можно выбрать нужный терминальный сервер. Кроме того, полезен был бы и ISO-образ загрузочного CD с пакетом для определения имеющегося на клиентской машине оборудования, чтобы загрузка и работа могли осуществляться даже при отсутствии жесткого диска. Наконец, пригодился бы сервер Linux с пакетом WINE, действительно включающим все приложения, используемые моими клиентами, что позволило бы минимизировать необходимость установки другого программного обеспечения.

Кеннет Хесс — генеральный директор консалтинговой компании AHCC. С ним можно связаться по адресу: khess@ahcctulsa.com.


? CMP Media LLC


Лицензирование и полная стоимость владения

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

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

Кроме того, службе поддержки удастся сэкономить сотни долларов и часов на поиски новых драйверов для заменяемых компонентов на клиентских машинах. До тех пор пока ваше оборудование числится в Linux Hardware Compatibility List, просто запустите kudzu, и все будет в порядке.


Ресурсы Internet

Домашняя страница проекта rdesktop расположена по адресу: http://www.rdesktop.org/.

Исходные тексты rdesktop можно загрузить с сайта Source Forge по адресу: http://prdownloads.sourceforge.net/rdesktop/rdeskop-1.1.0.tar.gz.