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

  • Автор:

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

В статье Михаила Пинаева рассказывалось, как создать простой сервер сетевой установки (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.

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

  1. М. Пинаев Установка Ubuntu по сети и настройка кэширующего сервера обновлений.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments