Усовершенствованный сервер сетевой установки для Ubuntu.

| Комментариев: 45
ubuntu-pxe-server-000.jpgТема сетевой установки Ubuntu уже поднималась на наших страницах. Сегодня мы поговорим о том, как создать универсальный сервер сетевой установки, позволяющий устанавливать различные варианты ОС и, при необходимости, быстро изменять набор доступных систем.

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

Для реализации данного решения мы использовали Ubuntu Server 10.04.3 LTS 64-бита, на котором установлен mc и ssh, а также настроена сеть и доступ в интернет через наш роутер. Также подразумевается, что читатель умеет создавать папки, файлы, редактировать и сохранять их, а также владеет навыком монтирования CD дисков в среде командной строки Ubuntu.

Прежде всего установим необходимые пакеты, это tftpd-hpa для создания TFTP сервера и apt-cacher-ng для организации локального кэша пакетов, чтобы их не приходилось каждый раз скачивать из сети.

sudo apt-get install tftpd-hpa apt-cacher-ng
Оба пакета не требуют настройки и начинают работать сразу, тонкая настройка apt-cacher-ng рассматривалась в статье М. Пинаева.

Теперь настроим DHCP сервер, чтобы он сообщал клиентам параметры сетевой загрузки, для этого на роутере в /etc/dnsmasq.conf добавим строку:

dhcp-boot=pxelinux.0,ubuntu-tftp,10.0.0.124
где ubuntu-tftp сетевое имя PXE сервера, а 10.0.0.124 его IP-адрес. Перезапустим DHCP сервер:

sudo service dnsmasq restart
Вернемся к нашему PXE серверу. Допустим, мы хотим иметь возможность сетевой установки любой версии Ubuntu 11.10 как 32-х так и 64-х битной архитектуры. Что нам для этого понадобится? Специальные образы для сетевой установки, их можно взять с alternate дисков (в каталоге install/netboot) или скачать отдельно (i386 и amd64).

ubuntu-pxe-server-001.jpg
Перейдем в каталог /var/lib/tftpboot в котором будут размещаться наши файлы для сетевой загрузки. В его корне разместим файл pxelinux.0, его можно взять из любого дистрибутива, он везде одинаков. Будьте внимательны, не перепутайте файл с одноименной символической ссылкой, имеющей нулевой размер. Затем создайте две папки, скажем i386 и amd64, где будут размещаться загрузочные образы для разных архитектур. В каждый из них скопируйте файлы linux и initrd.gz с дисков соответствующих архитектур.

Следующим шагом будет создание загрузочного меню, создайте в /var/lib/tftpboot каталог pxelinux.cfg а в нем файл default, в котором поместите следующее содержимое:

DEFAULT 1
TIMEOUT 30
PROMPT 1
DISPLAY boot.menu

LABEL 1
KERNEL i386/linux
append vga=788 initrd=i386/initrd.gz --quiet

LABEL 2
KERNEL amd64/linux
append vga=788 initrd=amd64/initrd.gz --quiet
Все пути в данном файле указываются от корня TFTP сервера, т.е. от /var/lib/tftpboot. Файл содержит две основные секции LABEL, в которых указываются пути к загрузочным образам разных архитектур. Названия секций лучше выбирать цифровыми, так как их придется вводить вручную при загрузке. Коротко рассмотрим основные параметры:

  • DEFAULT - секция выбираемая по умолчанию, если пользователь не выбрал никакого варианта или просто нажал Enter.
  • TIMEOUT - время в секундах, в течении которого показывается загрузочное меню.
  • PROMPT - отображает строку для ввода варианта загрузки (1 - отображать, 0 - скрыть)
  • DISPLAY - содержимое файла для вывода на экран.
Выйдем на уровень выше (в корень TFTP) и создадим там файл boot.menu следующего содержания:

------BOOT MENU------

1. Install Ubuntu 11.10 32-bit (default)
2. Install Ubuntu 11.10 64-bit

---------------------
В принципе здесь можно написать все, что вы хотите, главное дать пользователю понять, что для выбора нужного варианта он должен ввести номер нужного пункта и нажать Enter.

Если все сделано правильно, то вы должны получить следующую структуру каталогов:

ubuntu-pxe-server-002.jpg
Теперь попробуем загрузиться с нашего сервера, для этого сетевая карта вашего компьютера должна поддерживать загрузку по сети и эта опция должна быть активирована в BIOS. Вначале компьютер получает с DHCP сервера необходимые параметры загрузки, скачивает и запускает загрузчик pxelinux, который выводит на экран наше меню и ждет дальнейших действий.

ubuntu-pxe-server-003.jpg
В зависимости от нашего выбора будет загружен образ для соответствующей архитектуры и начнется процесс установки, который ничем не отличается от установки с alternate диска. Но на некоторых моментах мы остановимся.

После того как вы выберете зеркало для загрузки файлов, система предложит вам указать прокси. Здесь мы вводим http://10.0.0.124:3142 - адрес и порт на которых работает apt-cacher-ng, это позволит не скачивать второй раз одни и те же пакеты и избавит от необходимости прописывать службу кэширования пакетов в /etc/apt/apt.conf на рабочих станциях.

ubuntu-pxe-server-004.jpg
Следующий раз наше внимание понадобится при выборе устанавливаемого ПО. Здесь, кроме Ubuntu Desktop, рабочего стола по умолчанию (Unity), можно выбрать Kubuntu, Xubuntu, LXDE и т.п., получив на выходе установку соответствующей версии Ubuntu, или выбрать сразу несколько рабочих столов и выбирать их перед входом в систему. Также сразу можете выбрать иное необходимое ПО, хотя никто не мешает установить его позже.

ubuntu-pxe-server-005.jpg
Далее следует запастись терпением, если это первая ваша установка, так как время загрузки пакетов из сети зависит от скорости вашего канала и может занять длительное время.

В дальнейшем вы можете легко добавлять или изменять варианты предлагаемые вашим сервером, для этого нужно создать папку с файлами linux и initrd.gz для сетевой загрузки нужной системы и добавить новую секцию в pxelinux.cfg/default, также не забудьте отредактировать загрузочное меню в boot.menu.

Дополнительные материалы:

 

Комментариев: 45

Во! то что нужно спасибо. сейчас сяду попробую

при рестарте dnsmasq вылетает failed to create listening socket: Адрес уже используется

пробывад и по его статье и по вашей. При настройке по его статье выдается ошибка в строчке tftp-boot=pxelinux.0
при замене на dhcp-boot (или на ваши параметры) вылетает ailed to create listening socket: Адрес уже используется

Спасибо разобрался, лишнюю строчку раскоментил.
Настроил по вашей статье с маленькой поправкой - адрес записал сервера. (т.е у меня один сервер он же DNS)

Еще можно вопрос? При попытке установится с сети пишет "Обнаружена ошибка при попытке использовать указанное зеркало Ubuntu"...Что это?

на всех зеркалах такая песня интернет работает, версия серверной ОС с версией устанавливаемой должна совпадать или не обязательно?

сервером с apt-cacher-ng это та же машина настроенная по статье Настройка роутера (NAT + DHCP + Squid) (инет на нем есть так как он инет и раздает) папка repository/apt-cacher-ng создана в папке var как прописано по умолчанию дальше загрузочное меню сделано по образцу Меню вываливается без проблем, этапы проходят до выбора зеркала - а далше пишет ошибку использования зеркала (еще интересный момент - при попытке записи Ubuntu 10.04 после выбора строчки меню пропадает изображение (монитор рисует нет сигнала как при неправильной настройке частоты в винде или просто висит цветовая полоса) при 11.04, 11.10 таких проблем нет)

на сервере стоит 10.04 Sever

он при установке к зеркалу через какой порт обращается 8080 (если мимо apt-cacher-ng)?

сейчас у меня NAT выглядит так:

#!/bin/sh

# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE

# Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT

# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 -d ! 10.0.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 10.0.0.1:8081

я так понимаю надо добавить правило для порта 3142

#Разрешаем входящие подключения на 3142
iptables -A FORWARD -i eth0 -p tcp --dport 3142 -j ACCEPT

# Форвардинг 3142
iptables -t nat -A PREROUTING -i eth1 -d ! 10.0.0.0/24 tcp -m--dport 3142 -j DNAT --to-destination 10.0.0.1:3142
iptables -t nat -A POSTROUTING -p tcp --dst 10.0.0.1 --dport 3142

Как-то так (поправьте если ни так)

Он самый, куда без него на школьном роутере

Да, он....

у меня еще маленькая просьба, если будет время, опишите установку на ваш сервер еще и LTSP,

закоментил строчку - все так же, с 10.04 с видео проблема решилась при замене vga=788 на vga=normal но к нету все равно не цепляется

на клиентских машинах нет работает - более того - гружу свою тестовую машину с LiveCD инет есть

на тех машинах где стоит бунта обновление проходит нормально - но из сети (не через apt-cacher-ng) как еще можно проверить?

Эт называется тормоз - написанно же вводить в стандартном виде (http не написал перед адресом прокси)

Извините за чайниковоть, но еще один вопрос, что делать, если текстовый установщик загрузился но при определении оборудования не находит сетевую плату, как следствие установка прерывается

У меня 15 типовых машин - 15 сетевых карт на новые машины - мне на это денег никто не даст :(

JMicron PCI express adapter - сейчас еверест скачаю - точную модель посмотрю

материнка ECS G41T-R3 на 775 сокете
сетевая интегрированная

то есть если даже я установлю систему с диска сетевуха у меня все равно не запустится?

жалко, с моей квалификацией это скорее всего выполнить не удастся, а машины на линух переводить надо - придется им пока без интернета и локальной сети обходится

Самое интересное - после установки системы - воткнул свою PCI карточку, встроенная сетевуха преспокойно заработала

Извиняюсь за флуд, но не могу просмотреть ответ Уварова к моему предыдущему комментарию. Можно написать ответ сюда.

Не работает сеть :( иными словами, меня не видят по сети. В чем может быть проблема? Что смотреть?

Комментировать

Подписка на блог

Подпишись  на обновление блога по RSS Мы в Твиттере

 

Архивы по месяцам

Реклама

Статистика

Работает на  Movable Type 5.12

 

Яндекс.Метрика

География

free counters

Об этой записи

Сообщение опубликовано 25.12.2011 21:29. Автор — Уваров А.С..

Предыдущая запись — Настраиваем простой веб-сервер на базе lighttpd.

Следующая запись — Сервер 1С Предприятия. Часть 1 - Общие вопросы.

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.