RDP (не)тонкий клиент c Linux на базе Неттопов (Nvidia ION, Intel Atom)

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

В своей статье я рассматриваю реализацию (не)тонкого клиента на базе ОС Linux, как прослойке между аппаратной составляющей и привычным интерфейсом ОС Windows.
(Не)тонкий клиент, в моем понимании, это дистрибутив ОС Linux обладающий следующими свойствами:
  • достаточно большой набор компонентов для загрузки; не подходит для загрузки по сети
  • достаточно маленький набор компонентов; не рационально устанавливать жесткий диск


В качестве платформы для реализации я выбрал Nvidia ION ввиду:
  • Производительный процессор
  • Производительная графика (в рамках неттопов)
  • Малошумный (есть варианты с активным и пассивным охлаждением)
  • Занимает мало места (есть возможность крепления на монитор)
  • Достаточно надежный (ломаться особо нечему)

Также мне понадобится один USB-flash накопитель на 4Гб, который как раз и будет заменой жесткого диска.

Дистрибутив Linux для установки был выбран OpenSUSE. На текущий момент это версия 12.2

Ну, приступим…

Про замечательный проект Suse Studio писали много. С помощью него мы будем создавать конечное решение терминального (не)тонкого клиента:

Создаем новое решение:



Как видно, выбор богатый:



Нам нужно самое легкое решение, поэтому используем шаблон: «минимальная графическая система с оболочкой IceWM».



Теперь можно обустраивать наш дистрибутив!

Software

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

Добавляем следующие компоненты (зависимые пакеты добавятся автоматически):
  • freerdp (для любителей rdesktop, можно установить его)
  • acpi, acpid (для корректной работы кнопки питания)
  • mc (по желанию)

Добавляем из репозитария Nvidia драйвера для видеокарт Nvidia ION:
  • x11-video-nvidiaG02
  • nvidia-gfxG02-kmp-default


Добавляем из репозитария драйвера для видеокарт Intel:
  • xorg-x11-driver-video-intel-legacy


(Отличная статья какой видео драйвер Nvidia выбрать)

Удаляем:
  • nouveau (драйвер для графических карт Nvidia с открытым исходным кодом)


Configuration

General: Обязательно меняем пароль root и указываем нашего дефалтного пользователя.

Startup: Графический вход

Desktop: с автоматических входом нашего пользователя

Здесь можно задать параметры при загрузке, что мы и сделаем:

В свете версии 12.2 устарело:

setkxbmap -model pc104 -layout us,ru -variant,
наша клавиатура имеет 104 кнопки с 2-мя раскладками

setkxbmap -option grp:alt_shift_toggle
и переключаться она будет по alt+shift


(sleep 3; xfreerdp -u domain\\user -f server_ip &)

чтобы у пользователя не было желания начать изучать линукс
задержка необходима в случае получения ip-адреса по DHCP, icewm иногда быстрее прогружается.
(или rdesktop -k en-us -u domain\\user -f server_ip)

echo 'ShowTaskBar=0' >> ~/.icewm/preferences

прячем панель задач (более полно тут)

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

Для настроек первого запуска, идем в следующую секцию:

Scripts

В секции First Boot добавляем пару строчек:
OpenSuse 12.1
grep -rl 'timeout 10' /boot/grub/ | xargs perl -i -pe "s/timeout 10/timeout 0/g;"

OpenSuse 12.2 (Grub2)
grep -rl 'GRUB_TIMEOUT=10' /etc/default/grub | xargs perl -i -pe "s/GRUB_TIMEOUT=10/GRUB_TIMEOUT=0/g;"

ставим таймаут выбора вариантов загрузки ОС 0 секунд

echo '* * * * * if ! ps -U tux | grep xfreerdp && ps -U tux | grep icewm; then perl /home/rdp_conn_cnt;  fi' >> /var/spool/cron/tabs/tux

Добавляем нашему пользователю (который случайно может завершить сессию RDP, автостарт клиента RDP). По желанию можно сделать более маленький промежуток времени.

chmod u+s /sbin/shutdown

Пользоваляем нашему пользователю выключать компьютер

chmod u+s /sbin/ipconfig

и смотреть ip

Files

Собственно сюда я загрузил свой простенький скрипт, который считает кол-во попыток запуска RDP, когда пользователь ничего не ввел. По истечении кол-ва попыток происходит shutdown системы.
#!/usr/bin/perl
$counter = 0;
if (-e "/tmp/rdp_cnt.tmp"){
  open (FN, "/tmp/rdp_cnt.tmp") or die "$_";
  $cnttext=<FN>;
  close FN;
  $counter = $1 if ($cnttext =~ /(\d+)/);
}
if ($counter++ < 10){
  system("export DISPLAY=:0 && xfreerdp -u domain\\\\user -f server_ip");
  open (FN, ">/tmp/rdp_cnt.tmp") or die "$_";
  print FN $counter."\n";
  close FN;
}
else {
  unlink("/tmp/rdp_cnt.tmp") if (-e "/tmp/rdp_cnt.tmp");
  system ("systemctl poweroff");
}


Build

К построению образа готовы!
Делаем Preload ISO (.iso) и можно ставить.
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 12

    +1
    А можете пояснить всё же, а зачем оно? Работать с чем-то локально, а с чем-то удаленно? Не удобно. Локально полноценно не поработаешь из-за не слишком мощного железа, а кидать туда сюда нужные файлы между сервером и локальной станцией замучаешься. Да и флешки лишние тратить. Пусть и не таки дорогие, но всё же не рационально как-то.
      0
      Конечно:
      Пользователи привыкли к Windows style. Но покупать компы, лицензировать, ставить софт на каждый, обновлять, удаленно поддерживать ресурозатратно (к примеру в особопыльном и влажном помещении с начинающими пользователями).

      Есть много вариантов.

      И одно из решений — это тонкие клиенты. Они разные и каждый со своей спецификой:
      Цена (дорогие, например от hp, dell; дешевые, которые ломаются каждый второй)
      Производительность (слабенькие, на 300MHz процессорах SoC; стоит к примеру попробовать к такому подключить 24" монитор и оценить качество картинки)
      Ломаемость (из дешевых решений ломаются часто).

      Последние несколько лет я бьюсь с получением идеального недорого решения, в котором можно быть уверенным.
        0
        Я наверное дал не правильный посыл в своём комментарии. Я знаю, зачем нужны тонкие клиенты.Но зачем еще одна прослойка в виде suse? Зачастую чем проще конструкция, тем она надежнее и я считаю, что это тот случай, когда не надо плодить лишних сущностей во избежании проблем с ними же.
        То что бывает и железо мягко говоря не айс и прочие радости это понятно.
          0
          Весь вопрос в соотношении цена/производительность. При стоимости Nvidia ION является, пожалуй, самым оптимальным.
            0
            Да я и не говорю, что ION это плохо. Я спрашиваю зачем почти полноценную ось как тонкий клиент делать?) Когда есть более лёгкие варианты.
              0
              Ну X-ы, perl, оконный менеджер, дрова не будут весить мало. Меньше дистрибутив получить с маленькими знаниями Linux вряд ли получится. А легкость заточки под себя и минимум настроек при создании образа пригодятся тем, кто будет в дальнейшем обслуживать систему.

              Можете предложить что-нибудь иное с поддержкой RemoteFX можете предложить? (с минимумом времени при разворачивании на конечном оборудовании неквалифицированным сотрудником по простой инструкции)
                0
                Я думаю, вопрос был все-таки не совсем об этом.
                А вот об этом, например.
                Я этим пользовался, рабочие станции в итоге были без дисков, грузились по PXE, загружали образ по сети.
                У нас работало на старье всяком достаточно приемлемо. И включение рабочей станции в работу сводилось к включению загрузки с сетевой карты.
                  0
                  Поделитесь впечатлениями от работы FreeRDP с RemoteFX. Если не секрет какое ПО используют пользователи на сервере терминалов и используют ли какое-нибудь на тонких клиентах?
            0
            Хотел добавить, что пользователь особо не отличит, работает он локально или удаленно.
            Для него:
            Пришел, кнопку включения нажал
            Кнопку выключения нажал, ушел
            0
            > Удаляем:
            > nouveau (драйвер для графических карт Nvidia с открытым исходным кодом)
            Чем он вам не устроил?
              0
              Можно не удалять, но по умолчанию система использует его, что прояляется в медленной прорисовке изображения.
              0
              Обновлено в свете 12.2 и Grub2.

              Only users with full accounts can post comments. Log in, please.