Статья о создании сети терминалов на базе проекта LTSP.

Кратко о работе LTSP

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

LTSP реализован в таких дистрибутивах как EduBuntu, Skolelinux, ALT-Linux "Школьный" в виде уже сконфигурированных пакетов. В данной статье речь пойдёт о запуске сервера терминалов на базе дистрибутива Debian Squeeze.

В общем, почитать о принципе работы терминального решения можно в статье Терминальные решения на базе Linux. Рассмотрим по-подробнее как работает LTSP.

Взаимодействие можно описать по шагам, с момента включения сервера и тонкого клиента.

  1. После запуска сервера, на нём начинает работать демоны DHCPd, TFTPd и xinetd. DHCPd ждёт запросов на получение IP-адреса от "тонких клиентов" в сети. TFTPd всего-лишь передаёт файл образа мини-системы по запросу. xinetd ждёт запросы от удалённых машин на регистрацию и подключение к серверу.
  2. Включается "тонкий клиент". Его сетевая карта, поддерживающая стандарт PXE, в локальную сеть посылает запрос на получение образа мини-системы.
  3. Запрос подхватывает DHCPd совместно с TFTPd на сервере терминалов. Последний по сети отдаёт файл мини-системы "тонкому клиенту", который распаковывается в памяти клиента как "свёрнутая" корневая файловая система.
  4. Далее на тонком клиенте начинает работать сеть и с сервера скачивается полный образ системы. Затем происходит объединение файловых систем /rofs (образ системы в режиме только чтение) и /cow (файловая система с возможностью чтения\записи) с помощью Aufs и всё это монтируется в корень "/". Пользовательские файловые системы монтируются в /home посредством sshfs.
  5. На тонком клиенте начинает работать X.org-сервер и запускается менеджер графических окружений. После ввода пароля, на сервере запускаются сервисы графического окружения и приложения, а результат их работы по сети передаётся X.org-серверу на тонком клиенте.

После выключения тонкого клиента, файловая система теряется. Все документы сохраняются в домашнем каталоге, благодаря сетевому монтированию.

Настройка сервера

Прежде чем перейти непосредственно к настройке сервера, желательно в сервер установить ещё один сетевой адаптер, чтобы их было два. Первый будет смотреть в сторону Интернет, а второй будет обслуживать локальную сеть. Таким образом легко можно разделить сети и не пропускать DHCP и прочие "внутренние" запросы в сеть Интернет. Для модели сети, предположим что адаптер, подключённый к Интернет имеет название eth0, а к локальной сети - eth1.
eth0 имеет адрес 192.168.1.1 и подключён к модему с адресом 192.168.1.2 .
eth1 имеет адрес 192.168.10.1 и подключён к коммутатору, к которому подключены и терминалы.

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

Иллюстрация модели сети с сервером LTSP

Для примера, для терминалов зарезервируем блок IP-адресов: 192.168.10.10 - 192.168.10.20 включительно. Эти адреса будут выдаваться адаптерам терминалов при включении.

Предполагается, что дистрибутив Debian установлен и сетевые адаптеры настроены. Приступим непосредственно к установке LTSP:

Шаг 1. Установка основных компонентов

Предполагается, что репозитории правильно настроены и установка пакетов с компакт-дисков или из сети Интернет работает. Обновляем списки и устанавливаем необходимое ПО:

 # apt-get update
 # apt-get install ltsp-server-standalone

Установится "инфраструктура" для работы сервера.

Шаг 2. Запуск демонов

Настроим NFS-сервер. Он будет отдавать полный образ системы. Создаём директорию, где он будет содержаться и собираться:

 # mkdir /opt/ltsp

Внимание!
Каталог /opt/ltsp требует как минимум 800 Мбайт свободного пространства, поэтому размещать его нужно на соответствующем разделе.

Теперь настроим NFS-сервер - открываем на редактирование файл /etc/exports и добавляем строку:

exports
/opt/ltsp *(ro,no_root_squash,no_subtree_check,async)

И теперь перезагрузим NFS-сервер:

 # /etc/init.d/nfs-kernel-server reload

Теперь настраиваем DHCP-сервер - открываем на редактирование файл /etc/default/isc-dhcp-server , и выставляем имя (или имена) интерфейсов, которые будут обслуживаться сервером. В нашем случае это eth1:

isc-dhcp-server
INTERFACES="eth1"

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

 # cd /etc/dhcp
 # cp dhcpd.conf dhcpd.conf.bak

В каталоге /etc/ltsp при установке появился файл dhcpd.conf - это разработчики постарались, чтобы пользователи не гадали каким образом соединить DHCPd и TFTPd. Его нужно отредактировать под текущие сетевые параметры и каталоги и скопировать в /etc/dhcp , переписав оригинальный dhcpd.conf . Для нашего случая, файл будет таким:

dhcpd.conf
  - 
  -  Default LTSP dhcpd.conf config file.
  - 
 
authoritative;
 
subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.10 192.168.10.20;        # здесь задаётся диапазон адресов
    option domain-name "example.com";
    option domain-name-servers 192.168.10.1;
    option broadcast-address 192.168.10.255;
    option routers 192.168.10.1;
    next-server 192.168.10.1;
  -     get-lease-hostnames true;
    option subnet-mask 255.255.255.0;
    option root-path "/opt/ltsp/i386";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
}

Вместо доменного имени "example.com" подставьте своё. Оно дожно совпадать с доменным именем самого сервера.

Теперь этот файл копируем в /etc/dhcp и рестартуем DHCP-сервер:

 # cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf
 # /etc/init.d/isc-dhcp-server restart

На этом настройка инфраструктуры завершена. Если интересно что творится на терминалах, лог их работы и загрузки можно транслировать на сервер терминалов. Для этого в файле /opt/ltsp/i386/etc/lts.conf нужно выставить опцию SYSLOG_HOST и указать адрес сервера, на который будет пересылаться лог. В нашем случае это 192.168.10.1. Пример опции:

lts.conf
[[default]] 
    LTSP_CONFIG=True
    SYSLOG_HOST=192.168.10.1

После этого нужно пересобрать образ. Об этом - ниже.
На сервере нужно включит возможность приёма сообщений от удалённых машин. Открываем /etc/default/rsyslog и добавляем в строку опций параметр -r. Пример:

RSYSLOGD_OPTIONS="-c2 -r"

Теперь в конфиге самого rsyslog - /etc/rsyslog.conf , нужно раскомментировать строки, касающиеся протокола UDP. Пример:

  #  provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Далее нужно рестартовать rsyslogd:

 # /etc/init.d/rsyslog restart

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

Сборка образа

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

  # ltsp-build-client --arch i386 --mirror http://ftp.us.debian.org/debian/ --security-mirror  http://security.debian.org/debian-security/

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

  # ltsp-build-client --arch amd64 --mirror http://ftp.us.debian.org/debian/ --security-mirror  http://security.debian.org/debian-security/

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

Настройка образа

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

lts.conf
[default]
    # секция глобальных настроек для всех терминалов
    LTSP_CONFIG=True
 
    # разрешение или запрет функций 
    #SOUND=False
    #CONFIGURE_X=False
 
    # разрешить монтирование накопителей на терминалах к системе
    LOCALDEV=True
    # если дистрибутив - Debian, то добавить ещё строку: 
    LOCALDEV_DENY_INTERNAL_DISKS=false
 
    # конкретно указываем сервер
    SERVER=192.168.10.1
 
    # указываем куда отправлять лог с терминала 
    SYSLOG_HOST=192.168.10.1
 
    # режим работы X-сервера 
    #XSERVER=vesa
 
    # разрешение экрана X-сервера на этапе загрузки менеджера графических окружений
    # после входа в систему, подключается файл /opt/ltsp/i386/etc/X11/xorg.conf если он существует
    #X_MODE_0=800x600
    X_MODE_0=1024x768
 
 
[192.168.10.12]
    # настройки для конкретного терминала, при условии, что IP-адрес привязан к
    # терминалу посредством DHCPd
    XSERVER=ati
    X_MOUSE_DEVICE=/dev/ttyS0
    X_MOUSE_PROTOCOL="Microsoft"

Подробнее по опциям lts.conf можно почитать на LTSP-wiki

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

 # ltsp-chroot
 #/ sudo passwd
 вводим пароль и подтверждаем его.

Теперь настроим репозитории, обновим списки, установим нужную программу и выйдем из chroot-окружения по Ctrl+D или exit:

 #/ nano /etc/apt/sources.list
 #/ apt-get update
 #/ apt-get install mc
  ^D
 #

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

 # ltsp-update-image -i

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

Настройка аппаратного "тонкого клиента" Igel 3210 LX

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

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

igel-3-thinclient.jpg igel-3-thinclient-inside.jpg Процессор: VIA Eden mit 600 MHz
Память: 256Мб из них до 64Мб можно передать видеоадаптеру
Разъёмы:
* 3 x USB 2.0
* 1 x DVI-I
* 1 x VGA
* 1 x LAN
* 1 x LPT
* 1 x COM1
* 1 x Line-Out
* 1 x Mic-In
Звук: AC97
Сеть: Fast Ethernet 10/100
Разрешение видео: 1920 x 1440
Имеется разъём для карт Compact Flash и в оригинальном устройстве стоит карта в 128 Мегабайт с установленным дистрибутивом Igel Linux. Сам дистрибутив "заточен" быть клиентом для технологий: Citrix, Linux RDP-клиент для Windows. Есть поддержка Kerberos.

Загрузка по сети

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

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

Шаг 1. Скачиваем исходники для сборки загрузочного диска

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

Итак, на свободной Linux-машине, устанавливаем систему работы с исходными кодами git и ещё несколько пакетов:

 # apt-get install git gcc perl syslinux mtools binutils

Далее переходим\создаём какой-нибудь каталог и перекачиваем исходные коды с репозитория проекта:

 $ mkdir etherboot
 $ cd etherboot
 $ git clone git://git.etherboot.org/scm/gpxe.git

Шаг 2. Сборка образа и запись на usb-накопитель

В каталоге etherboot будет создан подкаталог gpxe . Нужно перейти в каталог gpxe/src и выполнить команду make:

 $ cd gpxe/src
 $ make

Если компиляция прошла успешно, в каталоге bin будут версии файлов для того или иного накопителя:

  • gpxe.dsk - для флоппи-диска 3.5 дюймов
  • gpxe.usb - для usb-накопителя
  • gpxe.iso - для cd-rom

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

 $ cd ..
 # dd if=bin/gpxe.usb of=/dev/sdd

Будьте внимательны с выбором устройства!

Теперь осталось только вставить накопитель в сободный порт и в настройках BIOS выставить загрузку с USB.

Настройки видеосистемы

В модели Igel 3210 LX применён видеоадаптер VIA. В Linux не работает аппаратное ускорение, но базовые функции доступны и работают без проблем. Автору так и не удалось нормально запустить вывод изображения нужного разрешения и частоты кадров на порт DVI, зато выход VGA работает исправно.

По умолчанию, при первом запуске всей системы, менеджер графических окружений (ldm) выбрал разрешение 800×600. При регистрации в системе, выбрать разрешение выше - нельзя. Это связано с тем, что X-сервер сам выбирает драйвер и его параметры в зависимости от результата опроса аппаратуры. Поэтому, необходима ручная настройка параметров и менеджера графических окружений и X.org-сервера.

Очень кратко, процесс настройки выглядит так:

  1. Разблокировать пароль пользователя root в chroot-окружении, из которого создаётся полный образ системы.
  2. Пересобрать образ.
  3. Запустить тонкий клиент, перейти на нём в соседнюю консоль. Зарегистрироваться как root и выполнить автоконфигурацию X.org командой: X -configure . В текущем каталоге будет создан новый конфиг. Его нужно будет скопировать на сервер командой scp, отредактировать под режимы монитора.
  4. Новый конфиг xorg.conf поместить в chroot-окружение.
  5. Подправить файл lts.conf и выставить в нём рабочее разрешение для ldm.
  6. Пересобрать образ и опробовать конфигурацию.

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

 # ltsp-chroot
 #/ sudo passwd
   вводим пароль и подтверждаем его. 

Выйти из chroot-окружения можно по комбинации Ctrl + d или по команде exit.

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

 # ltsp-update-image -i

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

 # X -configure

В текущем каталоге появится файл xorg.conf.new . Копируем его на сервер:

 # scp xorg.conf.new 192.168.10.1@root:/root/

Теперь переходим на сервер, редактируем новый конфиг и вписываем рабочие параметры монитора, которые можно подсмотреть в инструкции по монитору. Если этого не сделать, то часть режимов не будет доступна тонкому клиенту. В моём случае, файл получился такой:

xorg.conf.new
Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
 
Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/X11/misc"
	FontPath     "/usr/share/fonts/X11/cyrillic"
	FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
	FontPath     "/usr/share/fonts/X11/Type1"
	FontPath     "/usr/share/fonts/X11/100dpi"
	FontPath     "/usr/share/fonts/X11/75dpi"
	FontPath     "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
	FontPath     "built-ins"
EndSection
 
Section "Module"
	Load  "dbe"
	Load  "dri"
	Load  "dri2"
	Load  "extmod"
	Load  "glx"
	Load  "record"
EndSection
 
Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection
 
Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection
 
  -  Section "Monitor"
  - 	Identifier   "Monitor0"
  - 	VendorName   "Monitor Vendor"
  - 	ModelName    "Monitor Model"
  - EndSection
 
Section "Monitor"
    	Identifier    "Benq_FP91G+"
    	HorizSync     31-81
    	VertRefresh   56-76
EndSection
 
 
Section "Device"
        ### Available Driver options are:-
        ### Values: <i>> integer, <f>> float, <bool>> "True"/"False",
        ### <string>> "String", <freq>> "<f> Hz/kHz/MHz"
        ### [[arg]]: arg optional
        #Option     "PrintVGARegs"       	# [[<bool>]]
        #Option     "PrintTVRegs"        	# [[<bool>]]
        #Option     "I2CScan"            	# [[<bool>]]
        #Option     "VBEModes"           	# [[<bool>]]
        #Option     "NoAccel"            	# [[<bool>]]
        #Option     "AccelMethod"        	# <str>
        #Option     "ExaNoComposite"     	# [[<bool>]]
        #Option     "ExaScratchSize"     	# <i>
        #Option     "SWCursor"           	# [[<bool>]]
        #Option     "ShadowFB"           	# [[<bool>]]
        #Option     "RotationType"       	# [[<str>]]
        #Option     "Rotate"             	# [[<str>]]
        #Option     "VideoRAM"           	# <i>
        #Option     "ActiveDevice"       	# [[<str>]]
        #Option     "BusWidth"           	# [[<str>]]
        #Option     "Center"             	# [[<bool>]]
        #Option     "PanelSize"          	# [[<str>]]
        #Option     "ForcePanel"         	# [[<bool>]]
        #Option     "TVDotCrawl"         	# [[<bool>]]
        #Option     "TVDeflicker"        	# <i>
        #Option     "TVType"             	# [[<str>]]
        #Option     "TVOutput"           	# [[<str>]]
        #Option     "TVPort"             	# [[<str>]]
        #Option     "DisableVQ"          	# [[<bool>]]
        #Option     "DisableIRQ"         	# [[<bool>]]
        #Option     "EnableAGPDMA"       	# [[<bool>]]
        #Option     "NoAGPFor2D"         	# [[<bool>]]
        #Option     "NoXVDMA"            	# [[<bool>]]
        #Option     "VbeSaveRestore"     	# [[<bool>]]
        #Option     "DisableXvBWCheck"   	# [[<bool>]]
        #Option     "ModeSwitchMethod"   	# [[<str>]]
        #Option     "MaxDRIMem"          	# <i>
        #Option     "AGPMem"             	# <i>
	Identifier  "Card0"
	Driver      "openchrome"
	VendorName  "VIA Technologies, Inc."
	BoardName   "CN700/P4M800 Pro/P4M800 CE/VN800 [[S3|UniChrome Pro]]"
	BusID       "PCI:1:0:0"
EndSection
 
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	DefaultDepth      24
	# Monitor    "Monitor0"
        Monitor      "Benq_FP91G+"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     4
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     8
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     15
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     16
		Modes     "800x600" "1024x768" "1280x1024"
	EndSubSection
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes     "800x600" "1024x768" "1280x1024"
	EndSubSection
EndSection

4. Копируем этот файл в chroot-окружение:

 # cp xorg.conf.new /opt/ltsp/i386/etc/X11/

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

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

 # ltsp-update-image -i

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

Настройка аудиоподсистемы

Есть проблема с регулировкой громкости звука на терминале. Когда пользователь работает на терминале, в окружении GNOME, средствами GNOME, производится регулировка на сервере, а нужно производить регулировку на самом терминале локально.

Пока проблема решается регуляторами громкости в самих программах. Можно в соседнем терминале запускать alsamixer, но это не всегда удобно. Автор работает над проблемой.

Настройка "тонкого клиента" на базе бездисковой PC-машины

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

Разрешение проблем

Не работает монтирование накопителей

По умолчанию, все нужные компоненты устанавливаются и работают как надо. В Debian`е нужно поработать руками: сам достаточно долго искал проблему. Для начала, пользователь, который зарегистрирован в системе и работает через терминалы, должен быть в группах: cdrom, floppy, audio, dip, video, plugdev, manager, fuse. Проверьте /etc/group на сервере . Если пользователя не будет в группе fuse, то монтирование работать не будет. Измените /etc/group и сделайте повторный вход в систему. Если не помогло, то проверяем наличие компонентов ltspfs на сервере и образе системы:

 # dpkg -l |grep ltspfs
   ii  ltspfs             0.7-2  Fuse based remote filesystem for LTSP thin clients
**ltspfs** присутствует. Теперь заходим в образ системы и делаем проверку на наличие **ltspfsd**:
 # ltsp-chroot
 #/ dpkg -l |grep ltspfsd
   ii  ltspfsd            0.7-2   Fuse based remote filesystem hooks for LTSP thin clients
   ii  ltspfsd-core       0.7-2   Fuse based remote filesystem daemon for LTSP thin clients

Тоже присутствует.

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

 #/ cat /etc/lts.conf
    ....
    LOCAL_APPS=True
    LOCALDEV_DENY_INTERNAL_DISKS=false
    ....

Опция LOCALDEV_DENY_INTERNAL_DISKS справедлива только для Debian Squeeze. О ней есть упоминание в /usr/share/doc/ltspfd/NEWS.Debian.gz:

ltspfs (0.5.11-3) unstable; urgency=low

    the mechanism for enabling local disks changed in version 0.5.6-1. set
    LOCALDEV_DENY_INTERNAL_DISKS=false in /etc/lts.conf to enable local disks.

 -- Vagrant Cascadian <email>  Wed, 22 Apr 2009 11:37:06 -0700

Если опция не была выставлена - выставляем и пересобираем образ командой ltsp-update-image -i , после чего можно попробовать включить терминал, войти в систему и подключить носитель.

Далее можно посмотреть советы по устранению данной неисправности у сообщества Ubuntu:

Смотрите также

Печать/экспорт