avatar Ubuntu Установка Ubuntu по сети (DHCP, PXE, boot-menu) / На примере Ubuntu 14.04

Уже довольно давно, мной была написана статья о сетевой установке Ubuntu, по локальной сети, без использования различных носителей, только загрузка по PXE и все. В этот раз я решил обновить статью и сделать ее ближе к современным реалиям, а главное, расширить функционал. Все будет выполняться на примере Ubuntu 14.04!

Под разные требования, должны быть и разные решения, главная загвоздка в том, что зачастую, нам требуется не одна операционная система, а несколько. Вот я и решил написать на эту тему статью. С предыдущей статьей, можно ознакомиться по ссылке, Установка Ubuntu по сети.
Главная идея заключаться в том что у нас появится возможность, выбирать какую операционную систему мы будем устанавливать, а также ее разрядность, фактически, у нас появится меню загрузки, после загрузки системы по локальной сети.
Все это мы реализуем, на примере, только что вышедшей Ubuntu 14.04

Для тех кто не понял, все затевается ради того чтобы появилась возможность выбора, какую операционную систему устанавливать, а также ее разрядность т.е. должно появиться меню где будут представлены все ОС доступные для установи по сети, которое будет иметь следующий вид:

Ubuntu_14.04x86
Ubuntu_14.04amd64

Для работы нам понадобится:
Обязательно!
1) Настроенный шлюз, для примера, воспользуйтесь статьей: Настройка шлюза локальной сети, на базе Ubuntu
2) DHCP сервер, для примера, можно воспользоваться статьёй: Настройка DHCP сервера под управлением Ubuntu
3) Настроенный TFTP сервер, загружающий PXE загрузчик, воспользоваться статьёй: Настройка PXE Boot меню с мемтестом и паролями

Опционально!
3) Дополнительным, но не обязательным моментом, может быть настроенный DNS сервер, пример есть в статье Настройка DNS сервера для локальной сети

Предполагается что у вас настроен шлюз, DHCP, TFTP севрер, а также добавлено меню загрузки PXE т.к. на этом моменте я останавливаться не буду.

Переходим к настройке инсталлируемой системы.
Для начала мы создадим пункт установки для Ubuntu 14.04x86, для чего нам понадобится установочный диск соответствующей разрядности. Нам его необходим скачать и примонтировать, для того чтобы извлечь файлы загрузчика инасталятора системы.
Т.к. файл сетевого загрузчика у нас лежат в директории директории /var/lib/tftpboot/ откуда они и подтягиваются TFTP сервером, то в ней нам нужно создать директорию Ubuntu, чтобы в нее сложить файлы с дисков установки, сделаем это:
mkdir /var/lib/tftpboot/ubuntu

В директории Uubntu мы создаем дополнительные директории для файлов загрузчика инсталлятора ОС для x86 разрядных систем и ADM64-соответсвенно.
mkdir /var/lib/tftpboot/ubuntu/x86
mkdir /var/lib/tftpboot/ubuntu/amd64


Теперь нам требуется скачать установочный диск посмотреть можно тут mirror.yandex.ru/ubuntu-releases/14.04/
Мы качнем версию х86 для сервера т.к. она меньше весит
wget http://mirror.yandex.ru/ubuntu-releases/14.04/ubuntu-14.04-server-i386.iso

После завершения закачки ISO образа, нам нужно его смонтировать, чтобы извлечь нужные нам файлы, а для этого, в директории /media мы создадим директорию iso, давайте сделаем это:

mkdir /media/iso

Монтируем образ диска в эту директорию:
sudo su

mount ubuntu-14.04-server-i386.iso /media/iso/

Система выдаст что диск смонтирован в режиме чтения:
mount: warning: /media/iso/ seems to be mounted read-only.
Идем забирать загрузчик и ядро инсталятора:
cd /media/iso/install/netboot/ubuntu-installer/i386/


Нас интересуют 2 файла linux и initrd.gz, которые нам нужно забрать и перенести в директорию /var/lib/tftpboot/ubuntu/x86
давайте скопируем их:
cp linux /var/lib/tftpboot/ubuntu/x86
cp initrd.gz /var/lib/tftpboot/ubuntu/x86


Все, установочный образ нам больше не нужен, для начала отмонтируем его из директории iso:
umount /media/iso/


После этого ISO-образ можно удалить.
Похожие действия проводим для образа установочного диска с разрядностью x64, я не буду расписывать что и куда, просто приведу листинг команд, действия все те же, только пути немного отличаются, там прописано amd64

wget http://mirror.yandex.ru/ubuntu-releases/14.04/ubuntu-14.04-server-amd64.iso


mount ubuntu-14.04-server-amd64.iso /media/iso/


cd /media/iso/install/netboot/ubuntu-installer/amd64/


cp linux /var/lib/tftpboot/ubuntu/amd64
cp initrd.gz /var/lib/tftpboot/ubuntu/amd64


umount /media/iso/


С файлами установки закончили, теперь настроим PXE меню загрузки.

Настройка меню загрузки PXE

Для начала добавим пункт меню с названием Linux Install, для этого нам нужно отредактировать файл:
nano /var/lib/tftpboot/pxelinux.cfg/default


В конец файла добавим запись:
LABEL Linux Install
      MENU LABEL ^Linux Install
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/linux.menu


Как видно из записи, у нас будет другая страница с выбором дисирибутивов для установки, создадим ее:

nano /var/lib/tftpboot/pxelinux.cfg/linux.menu


Добавим в нее названия пунктов для загрузки с возможностью выбора операционной системы для установки, пока это будет Ubuntu 14.04 x86 и amd64 архитектуры:

    LABEL Install Ubuntu 14.04x86
      MENU label ^Ubuntu 14.04x86
      KERNEL  ubuntu/x86/linux
      APPEND initrd=ubuntu/x86/initrd.gz

    LABEL Install Ubuntu 14.04amd64
      MENU label ^Ubuntu 14.04amd64
      KERNEL  ubuntu/amd64/linux
      APPEND initrd=ubuntu/amd64/initrd.gz


На этом настройка закончена, можно подключать клиентскую машину и пытаться загрузиться по PXE, в результате после загрузки системы по сети, у нас появится меню такого вида:
PXE boot menu

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

21 комментарий

avatar
Спасибо за обновление, как раз доработал сетевую загрузку тестовых программ и включил этот вариант инсталяции Ubuntu.
Плюс в том что в таком варианте можно инсталлировать и Kubuntu, Lubuntu и т д, пакеты догружаются из сети.
Я продвинулся дальше и настроил запуск Live-CD для Ubuntu. Для этого пришлось использовать доступную папку на сервере где установлен антивирус (центр управления, доступ через веб-сервер), что бы не поднимать отдельный.
Этим можно дополнить статью или описать процес в отдельной.
avatar
Здравствуйте.
Лучше сделать в виде отдельной статьи, чтобы было ее проще найти, а я сделаю ссылку из основной статьи.
avatar
Было бы интересно узнать как вам удалась живая загрузка убунты. Пытаюсь сделать, загрузка идет и попадаю в busybox.
avatar
Да. Долго искал и пробывал. Нет доступа уже к тем конфигам, но точно помню что важно верно прописать тип casper и путь nfs в APPEND. Только я просто полностю диск выдавал по nfs. Пришлось таки подымать nfs :)
Кстати, выложить образ через http не удавалось, установщик убунты не имел поддержки такого типа размещения.
Все машины были с 1Гб+ RAM и проблем с запуском не было. Да и не долго на гигабите происходила загрузка.
avatar
Нифига-себе вы там накрутили, только не понятно зачем такие сложности?! Данная схема проверенная и работает как часы, а вот с NFS иногда возникают проблемы, хоть это и промышленный стандарт, но все таки…
Думаю, ваше решение имеет право на жизнь, но оно, реально, сложное.
avatar
Начал установку все вроде ок, но потом выдало проблема с зеркалом архива ubuntu. Инет есть, машину пингую что может быть не так?
avatar
логи помогут решить проблему, инфа 146% ;)
avatar
В логах я не силен но вроде все норм могу скинуть если вы не против помочь
avatar
Имеет значение что написано в зеркале архива? Файлы брал из Lubuntu 14-04
avatar
Используйте стандартные репозитории которые идут с дистрибутивом, не городите велосипед иначе чтение документации похоронит все изучение системы.
avatar
еще есть подозрение что локалка есть, а инета нет, хотя проверял на другой шине с под винды все норм dhcp дает в нет ломится. Имеет ли смысл еще настроить DNS сервер?
avatar
А как система узнает адрес сервера-к которому подключаться?!
ДНС нужен!
avatar
Опционально!
3) Дополнительным, но не обязательным моментом, может быть настроенный DNS сервер, пример есть в статье Настройка DNS сервера для локальной сети

вот это пункт я пропустил, его тоже настраивать?
avatar
для работы PXE dns сервер не нужен, если нужна статья по настройке, используйте поиск по сайту.
avatar
Непосредственно для установки дистрребьютива он нужен или нет?
avatar
чтобы скачать файлы из интернета, естественно нужен.
ставьте dnsmasq, bind слишком большой
avatar
dnsmasq и на тесте с виндой пашет все норм
а при установки ubuntu дохожу до проверки зеркала архива ubntu затем выдает ошибку проблема с зеркалом архива убунту

Apr 23 17:40:59 nirian-HP-655-Notebook-PC avahi-daemon[639]: Registering new address record for fe80::2a0:c6ff:fe00:0 on eth1.*.
Apr 23 17:41:06 nirian-HP-655-Notebook-PC ntpdate[6187]: adjust time server 91.189.94.4 offset 0.044609 sec
Apr 23 18:17:01 nirian-HP-655-Notebook-PC CRON[6379]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Apr 23 18:19:05 nirian-HP-655-Notebook-PC kernel: [10942.562585] r8169 0000:03:00.0 eth0: link down
Apr 23 18:19:07 nirian-HP-655-Notebook-PC kernel: [10945.117404] r8169 0000:03:00.0 eth0: link up
Apr 23 18:19:25 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:25 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:25 nirian-HP-655-Notebook-PC dhcpd: unexpected ICMP Echo Reply from 94.100.180.200
Apr 23 18:19:25 nirian-HP-655-Notebook-PC dhcpd: unexpected ICMP Echo Reply from 94.100.180.200
Apr 23 18:19:26 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:26 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:28 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:28 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:28 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:28 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:32 nirian-HP-655-Notebook-PC dhcpd: Can't create new lease file: Permission denied
Apr 23 18:19:32 nirian-HP-655-Notebook-PC dhcpd: Wrote 3 leases to leases file.
Apr 23 18:19:32 nirian-HP-655-Notebook-PC dhcpd: DHCPREQUEST for 192.168.10.12 (192.168.10.1) from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:32 nirian-HP-655-Notebook-PC dhcpd: DHCPACK on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:32 nirian-HP-655-Notebook-PC in.tftpd[6385]: tftp: client does not accept options
Apr 23 18:19:32 nirian-HP-655-Notebook-PC dhcpd: DHCPREQUEST for 192.168.10.12 (192.168.10.1) from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:32 nirian-HP-655-Notebook-PC dhcpd: DHCPACK on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:19:45 nirian-HP-655-Notebook-PC kernel: [10982.819925] r8169 0000:03:00.0 eth0: link down
Apr 23 18:19:47 nirian-HP-655-Notebook-PC kernel: [10984.406970] r8169 0000:03:00.0 eth0: link up
Apr 23 18:20:42 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:42 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: unexpected ICMP Echo Reply from 94.100.180.200
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: unexpected ICMP Echo Reply from 94.100.180.200
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPDISCOVER from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPOFFER on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPREQUEST for 192.168.10.12 (192.168.10.1) from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPREQUEST for 192.168.10.12 (192.168.10.1) from 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPACK on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
Apr 23 18:20:43 nirian-HP-655-Notebook-PC dhcpd: DHCPACK on 192.168.10.12 to 00:d0:59:9c:a6:09 via eth0
кусок лога
avatar
значит проблема с зеркалами обнволений, они пигруются?
avatar
ru.archive.ubuntu.com с сервака пинг норм
avatar
из под bysbox на машине куда пытаюсь поставить тоже все ок
avatar
потихоньку начинаю допирать, в перед я кидал кусок лога с сервака но явно не причем.
зашел в лог машины на которую ставлю последняя строчка лога
mirror does not support the specified release (trusty) пробовал разные зеркала, проверял через нет доступно все в чем может быть причина? В сети нашел только вот это myx.ostankin.net/linux-net-install
Есть что добавить? Регистрируйся и оставляй комментарии!