Термінальна_рішення_на_основі_ltsp - Зейська спільнота користувачів Linux і Unix

Стаття про створення мережі терміналів з урахуванням проекту LTSP.

Коротко про роботу LTSP

Linux Terminal Server Project (LTSP) - проект, в результаті якого ентузіасти-програмісти створили пакет програмного забезпечення, що дозволяє використовувати обчислювальну потужність однієї машини кількома шляхом запуску віддалених X-сесій, які, в свою чергу, запускають додатки на сервері терміналів.

LTSP реалізований у таких дистрибутивах як EduBuntu, Skolelinux, ALT-Linux "Шкільний" у вигляді вже налаштованих пакетів. У цій статті йтиметься про запуск сервера терміналів на базі дистрибутива Debian Squeeze.

Загалом, почитати принцип роботи термінального рішення можна у статті Термінальні рішення з урахуванням Linux. Розглянемо детальніше як працює LTSP.

Взаємодію можна описати за кроками, з моменту включення сервера та тонкого клієнта.

Після вимкнення тонкого клієнта файлова система втрачається. Всі документи зберігаються в домашньому каталозі завдяки мережевому монтуванню.

Налаштування сервера

Мережа для терміналів повинна бути побудована без застосування технології Wi-Fi - повинна мати високу продуктивність і всі термінали повинні підключатися як мінімум 100-мегабітним Ethernet. Wi-Fi не зможе забезпечити такої продуктивності для колективного підключення, та й НВЧ-випромінювання згубно діє на мозок. Адаптер eth1 на сервері бажано вибрати гігабітний і включити в гігабітний порт комутатора.

користувачів

Передбачається, що дистрибутив Debian інстальовано і мережні адаптери налаштовані. Приступимо безпосередньо до встановлення LTSP:

Крок 1. Встановлення основних компонентів

Передбачається, що репозиторії правильно налаштовані та встановлення пакетів із компакт-дисків або з мережі Інтернетпрацює. Оновлюємо списки та встановлюємо необхідне ПЗ:

Встановиться "інфраструктура" для сервера.

Крок 2. Запуск демонів

Налаштуємо NFS-сервер. Він віддаватиме повний образ системи. Створюємо директорію, де він утримуватиметься і збиратиметься:

Тепер налаштуємо NFS-сервер - відкриваємо на редагування файл /etc/exports і додаємо рядок:

І тепер перезавантажимо NFS-сервер:

Тепер налаштовуємо DHCP-сервер - відкриваємо на редагування файл /etc/default/isc-dhcp-server і виставляємо ім'я (або імена) інтерфейсів, які будуть обслуговуватися сервером. У нашому випадку це eth1:

Далі переходимо до каталогу /etc/dhcp і робимо бекап файлу /etc/dhcp/dhcpd.conf :

У каталозі /etc/ltsp при встановленні з'явився файл dhcpd.conf - це розробники постаралися, щоб користувачі не гадали, яким чином з'єднати DHCPd і TFTPd. Його потрібно відредагувати під поточні мережеві параметри та каталоги та скопіювати в /etc/dhcp, переписавши оригінальний dhcpd.conf. Для нашого випадку файл буде таким:

Замість доменне ім'я "example.com" підставте своє. Воно має збігатися з доменним ім'ям самого сервера.

Тепер цей файл копіюємо в /etc/dhcp та рестартуємо DHCP-сервер:

Після цього потрібно перезбирати образ. Про це – нижче. На сервері потрібно включити можливість отримання повідомлень від віддалених машин. Відкриваємо /etc/default/rsyslog і додаємо в рядок опцій параметр-r. Приклад:

Далі потрібно рестартувати rsyslogd:

Тепер віддалені термінали надсилатимуть службові повідомлення в єдиний syslog.

Складання образу

Для забезпечення завантаження сервера X.org на терміналах, потрібна мінімальна linux-система. Для створення такої використовується командаltsp-build-client. Зберемо образ:

Як дзеркала (mirror та security-mirror) можна вибрати будь-яке найближче дзеркало пакетів Debian. Програма почне завантажувати пакети, в кінці сформує chroot-оточення в каталозі /opt/ltsp/i386, а потім збере образ і збереже його в каталозі /opt/ltsp/images. Якщо в якості тонких клієнтів застосовується архітектура amd64, слід вказати параметром --arch. Наприклад:

На цьому етапі вже можна випробувати систему у роботі

Налаштування образу

З точки зору функціонування системи в цілому, різниться область конфігурування всередині образу (всередині chroot-оточення) та налаштувань запуску менеджера графічних оточень на терміналах. Для першої області необхідно "входити" всередину системи образу через команду ltsp-chroot і виконувати необхідні дії, ніби робота відбувається безпосередньо в цьому образі. Для другої області існує файл/opt/ltsp/i386/etc/lts.conf, де можна задати конкретні глобальні параметри менеджера графічних оточень і частково всього образу. Приклад файлу:

Докладніше про опціїlts.conf можна почитати на LTSP-wiki

В образ можна поставити якесь додаткове програмне забезпечення, щоб на етапі налагодження виконувати будь-які дії. Наприклад, можна встановити Midnight Commander. Для початку зайдемо в chroot-оточення та встановимо пароль root`а (за замовчуванням він заблокований):

Тепер налаштуємо репозиторії, оновимо списки, встановимо потрібну програму і вийдемо з chroot-оточенняCtrl+D абоexit :

Після кожної зміни в образі його потрібно перезбирати в бінарний файл, командою:

, а потім перезавантажувати всі термінали для набрання чинності змін. Образ збирається від 2-х до 20 хвилин, залежно від продуктивності сервера.Термінали, які працюють у цей момент на старому образі, отримають сповіщення на перезавантаження. А взагалі, перескладання образу краще проводити за відключених терміналів.

Налаштування апаратного тонкого клієнта Igel 3210 LX

Не питайте, чому саме ця модель Вийшло так, що мій друг побачив ці штуки на німецькому аукціоні http://www.ebay.de/ і вже успішно прикупив парочку. Потім порадив мені і я погодився замовити пару штук для експериментів. Пара таких тонких клієнтів обійшлася в 38 євро (тобто всього близько 1600руб.) плюс доставка в Амурську область (близько 1500руб.) Всього вийшло 3100руб. Якщо купувати нові пристрої, то вони мені обійшлися б 6000руб. кожен. Перше, на чому я випробував LTSP, якраз були ці тонкі клієнти від німецької фірми Igel.

Короткі характеристики моделі:Igel 3/4 3210LX Compact

Завантаження по мережі

Система, що працює на накопичувачі тонкого клієнта, не підтримує LTSP, тому від неї довелося відмовитися. Друга проблема, з якою довелося зіткнутися - відсутність підтримки технології PXE мережним адаптером клієнта (у деяких варіаціях даного тонкого клієнта підтримка PXE є, просто її потрібно включити в налаштуваннях BIOS, в місцях). Іншими словами, по мережі мій екземпляр не захотів вантажитися.

Проблема вирішилася створенням завантажувального USB-диска. Потім образ можна перенести на карту Compact Flash невеликого розміру. Для експерименту поки що візьмемо usb-флешку.

Крок 1. Завантажуємо вихідні дані для збирання завантажувального диска

За основу було взято проект Etherboot, оскільки на інші проекти посилання не працювали. Складання образу відбувається на будь-якій вільній linux-машині з вихідних кодів. Для початку заходимо на http://etherboot.org/wiki/download та читаємо що там потрібно зробити.

Отже, на вільній Linux-машині, встановлюємо систему роботи з вихідними кодами git і ще кілька пакетів:

Далі переходимо\створюємо якийсь каталог і перекачуємо вихідні коди з репозиторію проекту:

Крок 2. Складання образу та запис на usb-накопичувач

У каталозі etherboot буде створено підкаталог gpxe. Потрібно перейти до каталогу gpxe/src та виконати команду make:

Якщо компіляція пройшла успішно, у каталозі bin будуть версії файлів для того чи іншого накопичувача:

Для нашого випадку потрібний файл bin/gpxe.usb. Тепер вставляємо usb-накопичувач у комп'ютер, все, що потрібно, з нього копіюємо на жорсткий диск, оскільки всі дані на ньому будуть знищені. За допомогою команди dmesg з'ясовуємо ім'я накопичувача та командою dd перекидаємо образ. Наприклад, usb-пристрій буде називатися sdd:

Будьте уважні з вибором пристрою!

Тепер залишилося тільки вставити накопичувач у порт і в налаштуваннях BIOS виставити завантаження з USB.

За замовчуванням, при першому запуску всієї системи менеджер графічних оточень (ldm) вибрав роздільну здатність 800×600. При реєстрації в системі, вибрати роздільну здатність вище - не можна. Це з тим, що X-сервер сам вибирає драйвер та її параметри залежно від результату опитування апаратури. Тому, необхідне ручне налаштування параметрів та менеджера графічних оточень та X.org-сервера.

Дуже коротко, процес налаштування виглядає так:

Докладніше - нижче.1. Розблокування користувача root було описано вище, але повторюся для розуміння: для входу в chroot-оточення застосовуємо команду ltsp-chroot , після чого стандартними методами змінюємо пароль:

Вийти з chroot-оточення можна за комбінацією Ctrl + d або за командоюexit.

2. Тепер перезбираємо образ:

3. Запускаємо тонкого клієнта. Якщо все вдало, то з'явиться меню менеджера графічних оточень із полями для введення пароля. Переходимо в сусідню консоль через Ctrl+Alt+F1. Реєструємось у системі під користувачем root та паролем, який ми йому змінили. Виконуємо команду:

У поточному каталозі з'явиться файлxorg.conf.new. Копіюємо його на сервер:

Тепер переходимо на сервер, редагуємо новий конфіг та вписуємо робочі параметри монітора, які можна підглянути в інструкції з монітора. Якщо цього не зробити, частина режимів не буде доступна тонкому клієнту. У моєму випадку, файл вийшов таким:

4. Копіюємо цей файл у chroot-оточення:

5. Тепер виставляємо робочий дозвіл для менеджера графічних оточень шляхом редагування файлу /opt/ltsp/i386/etc/lts.conf . До нього потрібно додати опціюX_MODE_0=1024×768 до секції default.

6. Перезбираємо образ системи:

Налаштування аудіопідсистеми

Є проблема регулювання гучності звуку на терміналі. Коли користувач працює на терміналі, в оточенні GNOME, засобами GNOME проводиться регулювання на сервері, а потрібно проводити регулювання на самому терміналі локально.

Поки що проблема вирішується регуляторами гучності в самих програмах. Можна в сусідньому терміналі запускати alsamixer, але це не завжди зручно. Автор працює над проблемою.

Налаштування "тонкого клієнта" на базі бездискової PC-машини

Конфігурація поки що не випробувана.

Вирішення проблем

Не працює монтування накопичувачів

За замовчуванням всі необхідні компоненти встановлюються і працюють як треба. У Debian потрібно попрацювати руками: сам досить довго шукав проблему. Для початку користувач, який зареєстрованийв системі і працює через термінали, має бути в групах: cdrom, floppy, audio, dip, video, plugdev, manager, fuse. Перевірте на сервері/etc/group. Якщо користувача не буде у групіfuse, то монтування не працюватиме. Змініть /etc/group та зробіть повторний вхід до системи. Якщо не допомогло, то перевіряємо наявність компонентів ltspfs на сервері та образі системи:

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

Опція LOCALDEV_DENY_INTERNAL_DISKS є справедливою лише для Debian Squeeze. Про неї є згадка у /usr/share/doc/ltspfd/NEWS.Debian.gz:

Якщо опція не була виставлена ​​- виставляємо та перезбираємо образ командою ltsp-update-image -i , після чого можна спробувати включити термінал, увійти в систему та підключити носій.

Далі можна переглянути поради щодо усунення цієї несправності у спільноти Ubuntu: