wzooff 13.08.2012 16:21
How-to`s — Настройка бездисковых клиентов
Выдалось тут мне настраивать загрузку клиентов через сеть :) дай, думаю, напишу как делал и заодно укреплю в голове процесс. На просторах можно много почитать про реализацию отдельных частей, но статей с описанием от А до Я не очень много находить я. А что находить - копипастил и переделывал под себя.Буду рассматривать конкретную реализацию, может с небольшими отступлениями на лирику. Если думаете, что статья не полная - пишите, будем дополнять вместе. Но всё таки для подробных мануалов есть опеннет и тд, а я хотел бы как можно короче и чтоб работало в результате.
ltsp не подходит, тк не вижу смысла перенос вычислительных мощностей на один сервер, когда клиенты вполне могут справляться с заданными задачами.
Итак, что надо получить на выходе?
- Загрузка по сети ~20 клиентов (eeepc701 в основном и десктопы на атомах с 2Гб рам)
- root ro (+ aufs)
- home rw
- доступ к smb шарам
Поехали!
Установка системы для клиентов
За основу взял вот этот мануал.
Создаем папочки для нашей системы
1 |
|
Скрипт установки:
Редактируем /etc/apt/sources.list и fstab нашей будущей системы. Мои получились такими
Данный fstab будет играть роль только при загрузке с тонкого клиента. Нужные нам фс мы смонтировали скриптом и смонтируем из chroot. Делаем скрипт для установки и конфигурации в chroot
Содержимое скрипта:
Создаем и кладем в корень нашей будущей системы
1 |
|
В дальнейшем содержимое /etc/hostname надо будет удалить, тк у меня тогда не резолвились хостнеймы от dhcp сервера, а наличие разных хостнеймов требуется для доступа к виндовым шарам
Находясь в chroot делаем следующее:
1 |
|
Почему не скриптом? Потому что я не знаю как определить текущие доступные версии ядра :)
aufs
Помните мой хитрый fstab? Так вот... Рут у нас же монтируется в режиме только чтения, но юзер во время сеанса должен же где то хранить конфиги и временные файлы? Вот мы и сделаем такую штуку:
1 |
|
а в скрипт закинем
Теперь делаем его исполняемым
1 |
|
В дальнейшем мы этот скрип укажем в параметрах загрузки PXE
Инфу нашел тут
Настройка PXE загрузчика
Можно почитать тут(wiki) и тут(habr). Делал почти все по последней ссылке. Вот кстати еще пост на welinux по настройке загрузки по сети.
Создаем папочку, в которую положим наш загрузчик
1 |
|
В этой папке будут лежать следующие файлы:
vmlinuz
initrd.img
pxelinux.0
и еще две папки - boot и pxelinux.cfg
В первую мы положим vesamenu.c32 чтобы можно было рисовать няшные меню, а во вторую конфиг нашего загрузчика - текстовый файл default
Вот вам архив с моим конфигом без initrd и vmlinuz.
Содержимое конфига
DHCP + шлюз
Устанавливаем вторую сетевую карту и назначаем ей ip 192.168.0.1
Ставим необходимые пакеты
1 |
|
Правим /etc/default/isc-dhcp-server чтобы dhcp работал именно на нужном нам интерфейсе
1 |
|
Правим /etc/dhcp/dhcpd.conf
Правим /etc/rc.local
Раскомментируем в /etc/sysctl.conf строку
1 |
|
Выполняем для применения изменений без перезагрузки
1 |
|
TFTP
Ставим пакеты
1 |
|
Правим /etc/xinetd.d/tftp на свой вкус.
Правим /etc/default/atftpd, чтобы было так
1 |
|
тк по дефолту atftpd запускается через initd, а нам нужен xinitd
Стартуем наш сервер
1 |
|
Вернее рестартуем xinitd, который заодно и dhcp сервер перезагрузит
Проверяем что порт tftp-сервера прослушивается (tftp работает на порту 69)
1 |
|
Как то так.
Настройка NFS
Правим /etc/exports
1 |
/diskless/root 192.168.0.2/24(ro,sync,no_root_squash,no_subtree_check)
|
root у нас будет в режиме для чтения, ибо нефиг :)
Синхронизируем настройки
1 |
|
перегружаем NFS-сервер
1 |
|
Заключение
Вроде бы должно заработать :) Выставляем на клиенте загрузку по сети и в бой. Кстати да, есть еще недоработки, тут можно еще оптимизировать и оптимизировать. Может кто чего посоветует?
Список использованных ссылок, которые сохранил и вспомнил
http://forum.lafox.net/index.php?showtopic=18927
http://irclog.ru/freenode-debian-russian-2012-01-23/
http://www.rzhevskiy.info/journal/dima/entry/diskless_stateless_linux_mouted_on
http://mozart.informatik.fh-kl.de/download/Software/GentooDiskless/diskless2_en.pdf
http://www.gentoo.ru/node/11838
http://habrahabr.ru/post/147522/
http://www.rzhevskiy.info/journal/dima/entry/diskless_stateless_linux_mouted_on
http://irclog.ru/freenode-debian-russian-2012-01-23/
http://www.rzhevskiy.info/journal/dima/entry/diskless_stateless_linux_mouted_on
http://mozart.informatik.fh-kl.de/download/Software/GentooDiskless/diskless2_en.pdf
http://www.gentoo.ru/node/11838
http://habrahabr.ru/post/147522/
http://www.rzhevskiy.info/journal/dima/entry/diskless_stateless_linux_mouted_on

+ 0 -
Для временных файлов можно использовать tmpfs.
Так у меня и используется, просто клиентам иногда нужно иметь доступ в /etc и /var. Имено aufs и помогает нам слить систему в ro и возможность "записи" в нее. Только после ребута все такое же будет.
Хорошая статья.
Зря так сразу LTSP отбросил, там уже тыщу лет есть Local Apps. Пишешь просто в конфиге Local_Apps = TRUE и вперед. Например, ltsp-localapps firefox запустит Firefox локально, причем вместо со всеми плагинами, включая тяжелый Flash и поддержку локального железа.
Зря так сразу LTSP отбросил, там уже тыщу лет есть Local Apps. Пишешь просто в конфиге Local_Apps = TRUE и вперед. Например, ltsp-localapps firefox запустит Firefox локально, причем вместо со всеми плагинами, включая тяжелый Flash и поддержку локального железа.
У нас не будет выделяться отдельный сервер для этого. У нас просто есть сетевое хранилище и dhcp/tftp сервер. В дальнейшем, если будет время, попробую на стенде поганять LTSP.
А почему вдруг no_root_squash ?
Потому что так было в примере :-D я знаю, что это неправильно - делать с бухты барахты, но надо было быстро сделать, чтобы работало.
Убрал - вылезла ошибка связанная с aufs. Пролетел ворнинг, но я не успел увидеть и стал невозможным логин. Вернул обратно запись - всё стало на свои места :)
Про linux-image & headers:
apt-get install linux-image-generic-pae linux-headers-generic-pae установит поcледнюю версию -pae (тебе нужно pae?)
apt-get install linux-image-generic-pae linux-headers-generic-pae установит поcледнюю версию -pae (тебе нужно pae?)
В том то и дело, что я отказался от скрипта, на основе которого делал, именно изза того, что оно не ставит так у меня. Не находит пакетов. Может изза того, что у меня подключено только одно зеркало? Я делаю так:
и уже из этого списка выбираю нужный мне пакет
и уже из этого списка выбираю нужный мне пакет
а в сторону thinstation(http://thinstation.org/) не смотрели? я его использую
Смотрел. Thinstation больше подходит для запуска рдп сессии, а мне требуется полноценный десктоп, с браузером, либрофисом и гимпом :)
что за десктопы на атомах? где брали? сколько стоят?
В мелкий корпус засунули вот такую мамку и 2 гб рам. Но они дико греются, тк радиатор не справляется летом. На некоторые даже кулера ставили. Это только для экономии места делалось. Там где можно разгуляться ставим самый дешевый по конфигу системник.
Корпуса эти мелкие выходят раза в два дороже обычных, но, повторюсь, у них проблемы с вентиляцией. По крайней мере в наших моделях. Как называются - не знаю, тк покупалось до того как я пришел в организацию. Так что по деньгам и практичности выгоднее брать обычный корпус, если место не критично.
Цена атомных матерей что то в пределах 800~1200 грн, в зависимости от модели атома. В принципе это примерно 4 гб рам + семпрон + не самая дешевая мать
Цена атомных матерей что то в пределах 800~1200 грн, в зависимости от модели атома. В принципе это примерно 4 гб рам + семпрон + не самая дешевая мать