- PVSM.RU - https://www.pvsm.ru -
В сегодняшний век повсеместной виртуализации возникает необходимость экономить на всем. Наиболее значимые для любого системного администратора сущности, это:
В своей статье я рассматриваю реализацию (не)тонкого клиента на базе ОС Linux, как прослойке между аппаратной составляющей и привычным интерфейсом ОС Windows.
(Не)тонкий клиент, в моем понимании, это дистрибутив ОС Linux обладающий следующими свойствами:
В качестве платформы для реализации я выбрал Nvidia ION ввиду:
Также мне понадобится один USB-flash накопитель на 4Гб, который как раз и будет заменой жесткого диска.
Дистрибутив Linux для установки был выбран OpenSUSE. На текущий момент это версия 12.1
Про замечательный проект Suse Studio [1] писали много [2]. С помощью него мы будем создавать конечное решение терминального (не)тонкого клиента:
Создаем новое решение:
Как видно, выбор богатый:
Нам нужно самое легкое решение, поэтому используем шаблон: «минимальная графическая система с оболочкой IceWM».
Данное решение «из коробки» уже содержит необходимые компоненты для запуска графической системы и «легкого» оконного менеджера.
Если все оставить по умолчанию, то может потребоваться достаточно много усилий, чтобы настроить эту систему (видео драйвер, сетевые настройки и т.д.). Мне же нужно решение: поставил, адрес вбил и забыл.
Добавляем следующие компоненты (зависимые пакеты добавятся автоматически):
Добавляем из репозитария Nvidia драйвера для видеокарты:
(Отличная статья [3] какой видео драйвер Nvidia выбрать)
Удаляем:
General: Обязательно меняем пароль root и указываем нашего дефалтного пользователя.
Startup: Графический вход
Desktop: с автоматических входом нашего пользователя
Здесь можно задать параметры при загрузке, что мы и сделаем:
setkxbmap -model pc104 -layout us,ru -variant ,
наша клавиатура имеет 104 кнопки с 2-мя раскладками
setkxbmap -option grp:alt_shift_toggle
и переключаться она будет по alt+shift
xfreerdp -u domain\user -f server_ip
чтобы у пользователя не было желания начать изучать линукс
(или rdesktop -k en-us -u domain\user -f server_ip)
echo 'ShowTaskBar=0' >> ~/.icewm/preferences
прячем панель задач (более полно тут [4])
Для особых позльзовательских настроек, можно прописать дополнительные команды в любом кол-ве.
Для настроек первого запуска, идем в следующую секцию:
В секции First Boot добавляем пару строчек:
grep -rl 'timeout 10' /boot/grub/ | xargs perl -i -pe "s/timeout 10/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
Пользоваляем нашему пользователю выключать компьютер
Собственно сюда я загрузил свой простенький скрипт, который считает кол-во попыток запуска 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");
}
К построению образа готовы!
Делаем Preload ISO (.iso) и можно ставить.
Автор: po3dno
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/opensuse/8526
Ссылки в тексте:
[1] Suse Studio: http://susestudio.com
[2] много: http://habrahabr.ru/search/?q=suse+studio
[3] статья: http://www.suse.de/~sndirsch/nvidia-installer-HOWTO.html
[4] тут: http://www.icewm.org/manual/icewm-10.html
Нажмите здесь для печати.