Ubuntu → Установка Ubuntu по сети ( apt-cacher, tftpd-hpa, pxe ). Ubuntu установка по сети


Установка Ubuntu по сети | Русскоязычная документация по Ubuntu

Ubuntu, как и многие другие дистрибутивы Linux, можно легко установить по сети. Для этого вам всего лишь потребуется сетевое соединение с компьютером, который будет служить сервером для установки. BIOS вашего компьютера должен для этого поддерживать загрузку по сети.

Настройка сервера для установки

Прежде всего вам потребуется компьютер с Ubuntu или с другим дистрибутивом Linux (данная инструкция написана для Ubuntu), с которого вы будете устанавливать систему (сервер загрузки по сети), и ISO образ Alternate диска с необходимой версией Ubuntu.

Настройка сервера сетевой загрузки

Для загрузки по сети потребуется установить на сервер TFTP, HTTP и DHCP сервисы, чтобы позволить второму компьютеру подключиться и загрузить все необходимые файлы.

Для установки всего необходимого лучше использовать aptitude, которая не входит в стандартную поставку Ubuntu начиная с версии 10.10. Поэтому сначала ставим aptitude через любую программу установки пакетов или командой

sudo apt-get install aptitude

Далее ставим всё необходимое:

sudo aptitude -R install apache2 atftpd tftpd-hpa dhcp3-server

Ключ -R нужен для того, чтобы atftpd поставился без inetd сервера, который вам совершенно не нужен.

Теперь пора настроить все компоненты.

TFTP сервер

Демон, использующий эти файлы - /etc/hosts.allow и /etc/hosts.deny для ограничения доступа.

Откройте файл /etc/default/atftpd в любом текстовом редакторе с правами суперпользователя, например, так:

sudo nano /etc/default/atftpd

Измените первую строчку с

USE_INETD=true

на

USE_INETD=false

Кроме этого запомните каталог, который находится в конце строчки OPTIONS. Скорее всего это будет /srv/tftp, но в старых Ubuntu может быть и /var/lib/tftpboot. Редактируем файл /etc/default/tftpd-hpa:

sudo nano /etc/default/tftpd-hpa

вписываем, запомненный каталог

TFTP_DIRECTORY="/srv/tftp"

Теперь просто запустите atftpd:

sudo /etc/init.d/atftpd start

Теперь создайте в каталоге из OPTIONS папку ubuntu. Далее везде будем считать, что используется каталог /srv/tftp:

mkdir /srv/tftp/ubuntu

После этого необходимо смонтировать ваш ISO образ во вновь созданный каталог. Сделать это можно примерно такой командой:

sudo mount -o loop /home/tux/ubuntu-11.04-alternate-i386.iso /srv/tftp/ubuntu/ Если у Вас нет ISO образа диска, но есть записанный Alternate диск, то просто вставьте его в CD/DVD привод. Диск автоматически монтируется в /media/cdrom. Дальше просто нужно создать симлинк для TFTP сервера:sudo ln -s /media/cdrom /srv/tftp/ubuntu

На этом настройка TFTP закончена.

Веб-сервер Apache

Что-либо менять в настройках Apache не требуется, достаточно сделать созданный в предыдущем разделе каталог ubuntu доступным через HTTP. Для этого создайте на него симлинк из рабочей папки Apache:

sudo ln -s /srv/tftp/ubuntu /var/www/ubuntu Если вы используете не ISO образ, а записанный диск, то выполнитеsudo ln -s /media/cdrom /var/www/ubuntu

DHCP сервер

Всё, что осталось - это настроить правильным образом DHCP сервер. Откройте в любом текстовом редакторе с правами суперпользователя файл /etc/dhcp3/dhcpd.conf, например, командой

sudo nano /etc/dhcp3/dhcpd.conf

В этом файле необходимо изменить следующие настройки:

# Имя вашего внутреннего домена. Если вам это ни о чём не говорит - просто не меняйте. option domain-name "domain.ru"; # Ваш DNS сервер, который должен использоваться на подключаемом компьютере. Чаще всего тут стоит IP адрес роутера. option domain-name-servers 192.168.0.1; # Просто раскомментируйте эту строчку authoritative;   # Теперь надо определить сеть для DHCP сервера: # Сначала желаемая подсеть и маска подсети. subnet 192.168.0.0 netmask 255.255.255.0 { # Диапазон выдачи сервером адресов range 192.168.0.100 192.168.0.199; # Роутер для доступа к интернету option routers 192.168.0.1; # Какой файл загружать при сетевой загрузке - укажите именно в таком виде. filename = "ubuntu/install/netboot/pxelinux.0"; }

После этого нужно сказать нашему DHCP серверу слушать один из интерфейсов. Для этого откройте файл /etc/default/dhcp3-server и добавьте в параметр INTERFACES имя нужного интерфейса. Например, вот так:

INTERFACES="eth0"

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

Итак, для запуска DHCP сервера достаточно выполнить команду

sudo /etc/init.d/dhcp3-server start

Теперь необходимо перевести второй компьютер в режим загрузки по сети. После этого Вы должны увидеть экран установки Ubuntu.

Установка по при помощи Minimal CD

Если вы по каким-то причинам не можете использовать полноценный диск с Ubuntu, но всё же в вашем компьютере есть CD привод и подключение к интернету, то вы можете поставить систему по сети, загрузившись с маленького диска Minimal CD.

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

Ссылки

help.ubuntu.ru

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

Уже довольно давно, мной была написана статья о сетевой установке 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 sumount 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.isomount 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/amd64umount /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, в результате после загрузки системы по сети, у нас появится меню такого вида:

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

howitmake.ru

Установка Ubuntu по сети ( apt-cacher, tftpd-hpa, pxe ) / Ubuntu / Howitmake.ru

Если в организации есть локальная сеть, то искать болванку, потом на ее записывать образ диска — не выход, со временем установочные диски имеют обыкновение теряться или просто их кладут в такое место, где их потом сложно найти. Но если есть возможность сохранить все на сервере, то это сильно экономит и время и нервы, да и потерять данные можно только вместе с сервером, а это уже намного сложнее, хотя и этот вариант не исключен. Если вы хоть раз пытались устанавливать операционную систему, одновременно более чем на 5-10 ПК и не важно, ставится Linux или Windows-сетевая установка сильно упростит вам жизнь и сэкономит время. Мне не известны примеры больших сетей построенных исключительно на Linux в целом и Ubuntu в частности, возможно для них потребуется несколько иная схема работы – в соответствии более высокими нагрузками.

Статья была обновлена, с обновленным вариантом можно ознакомиться: Установка Ubuntu по сети (DHCP, PXE, boot-menu)

Сама проблема имеет как минимум 2 пути решения:

1-Использование кеширования пакетов ПО и обновлений т.е принцип работы следующий, все запросы от клиентов к репозиториям, проходят через наш сервер, который пересылает их уже официальному репозиторию в интернете, получив оттуда пакет, наш сервер оставляет себе его копию и следующему клиенту который запросил этот пакет, выдает уже из кеша, что намного быстрее и снижает загрузку на канал доступа в интернет. Данный вариант подходит для тех, у кого очень медленный интернет и при этом нет возможности сделать копию официального репозитория.

2-Поднятие собственного репозитория, для этого необходимо сделать локальную копию официального, я его выкачал заранее дома, а потом перенес уже имеющиеся файлы на боевой сервер, после этого с помощью скрипта в добавленного в CRON было создано задание которое запускалось ночью — в то время когда канал интернета не используется. При таком подходе серверу приходится выкачивать примерно 100-200 Мб за ночь что не много, за то мы получаем наиболее полный и свежий набор ПО и обновлений в дальнейшем, для установки программ, интернет нам не нужен вовсе. Система получается самодостаточной. В данной статье, я рассмотрю только первый вариант т.к хранить у себя копию официальных серверов, не вижу особого смысла, там получается примерно 60 Гб, а потребность в них не такая частая, да и интернет довольно шустрый.

Установка ОС Ubuntu по сети, с использованием кешированных пакетов.
Для поднятия сервера сетевой установки нам потребуется скачать установочный диск с пометкой alternate в названии (весия desktop не подходит) + установить необходимые пакеты:sudo apt-get install dhcp3-server openbsd-inetd tftpd-hpa apt-cacher Настраиваем DHCP, на раздачу сетевых адресов:sudo nano /etc/dhcp3/dhcpd.conf находим и снимаем комментарии со следующих строкauthoritative; Теперь создаем пул адресного пространства нашей локальной сети Также добавим туда опцию использования сетевого загрузчика Чтобы выглядело:# A slightly different configuration for an internal subnet. ping-check = 1; filename = "ubuntu/install/netboot/pxelinux.0"; subnet 192.168.0.0 netmask 255.255.255.0 { # подсеть и маска range 192.168.0.5 192.168.0.254; # указываем диапазон IP адресов, которые будут выдаваться клиентам option domain-name-servers 192.168.0.2; # IP DNS-сервера option domain-name "internal.example.org"; # можно задать название своей сети option routers 192.168.0.1; # адрес шлюза или маршрутизатора через который мы выходим в Интернет. option broadcast-address 192.168.0.255; #широковещательный адрес который находится последним в диапазоне IP данной подсети default-lease-time 600; # время аренды IP адреса в сек. max-lease-time 7200; # максимальное время аренды IP адреса

с DHCP все, теперь нам необходимо закачать образ диска на сервер, это можно сделать через FTP например можно установить ftp сервер ProFTPd, он начинает работать сразу после установки и не требует настройки (если вы захотите настроить его более тонко, то естественно, необходимо править его конфиги). Но это уход от основной темы, предположим образ уже лежит на сервере зальем его в директорию /home чтобы путь к нему выглядел /home/ubuntu.iso Нам необходимо смонтировать этот образ для сетевой установки, также нам необходимо создать папку, в которую мы и будем его монтировать:

sudo mkdir /var/lib/tftpboot/ubuntu переходим в папку с нашим образомcd /home Монтируем его в папку, которую мы создали ранее:sudo mount -o loop ubuntu.iso /var/lib/tftpboot/ubuntu Проверяем, что образ примонтировался, идем в папку /var/lib/tftpboot/ubuntu в ней должно находиться содержимое нашего диска. Диск примонтирован –все будет работать, но только до перезагрузки сервера, каждый раз подключать его в ручную -не наш метод. Попробуем этот процесс автоматизировать, чтобы наш ISOшник монтирвлся автоматически при старте системы.sudo nano /etc/rc.local и добавим туда перед строкой exit 0 mount -o loop /home/ubuntu.iso /var/lib/tftpboot/ubuntu

Сохраняем изменения и выходим, теперь наш установочный диск будет монтироваться при старте системы и всегда готов к установке ОС по сети. Но это еще не все, tftp сервер выдает только образ для загрузки, но сами установочные файлы по сети не перекидывает, для этого необходим WEB или FTP сервер. В сети рекомендуется устанавливать WEB сервер Apache на локальном сервере, но мы можем обойтись и без него. Мы будем использовать Официальные сервера обновлений, но «ходить» к ним будем через наш прокси, это немного упростит нашу систему, сэкономит ее ресурсы, а также даст нам возможность пользоваться самыми свежими версиями пакетов доступных на официальных серверах например на ru.mirror.ubuntu.com/ubuntu и самое главное-нам не придется, настраивать клиентские ПК на использование нашего прокси-сервера, его настройки будет автоматически сохранены после установки ОС. А это уже серьезно экономит время! Теперь нам необходимо настроить apt-cacher, сразу после установки он не запускается

sudo nano/etc/default/apt-cacher и в строке AUTOSTART установить 1, чтобы выгляделоAUTOSTART=1

Теперь отредактируем конфигурационный файл этого пакета:

sudo nano /etc/apt-cacher/apt-cacher.conf

cache_dir-указывает на то куда на будут собираться пакатеы которые наши клиенты закачали, я его перенес на тот раздел где больше всего свободного места

cache_dir=/home/apt-cacher настраиваем порт на котором работает сервер, я его перенес на 20000, это исключительно мой выбор, не влияющий на работоспособность.daemon_port=20000 Указываем на каком сетевом интерфейсе будет работать наш сервер, необходимо указать тот который смотрит в локальную сеть, например eth0interface=eth0 остальное можно оставить как есть. С настройкой все Рассмотрим процесс установки ОС Я не буду описывать полностью процесс установки ОС, он не сильно отличается, а покажу, в картинках, моменты которые имеют отличия, от привычной установки.

А вот это самый главный момент, ради которого все и затевалось, указываем наш прокси сервер для кеширования пакетов и порт

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

Нам необходимо закачать из сети около 1000 пакетов, на медленном интернете при установке системы на первый ПК закачка заняла почти 20 мин, а вот загрузка на 2й и последующие рабочие станции – чуть больше минуты, результат очевиден!

Взвесим за и против.

Плюсы данной схемы: 1) Нет необходимости хранить большие объемы данных 2) В случае необходимости установки более нового дистребутива, достаточно закачать на сервер образ новойверсии ОС вместо этого (Имя присвоить тоже самое) и перезагрузить сервер, он смонтируется автоматически. 3)Высокая скорость работы

Недостатки (Они тоже есть) 1) Зависимость от интернета 2) Время хранения пакетов в кеше 24 часа ( Хотя это можно отключить ) 3) Использование канала по с полной загрузкой в рабочее время Статья была обновлена, с обновленным вариантом можно ознакомиться в статье: Установка Ubuntu по сети (DHCP, PXE, boot-menu)на примере

howitmake.ru

Настройка PXE сервера для установки Ubuntu по сети

Имеем несколько компьютеров в локалке. Ни на одном из них нет CD/DVD привода.Хотим проинсталить на них убунту.Для этого нам необходимо настроить PXE (Preboot eXecution Environment – Предзагрузочная исполняемая среда) сервер, который позволит клиентским компьютерам загрузить и запустить инсталлятор чего угодно (в нашем случае это будет дистрибутив ubuntu) через сеть. А уже инсталлятор позволит поставить убунту с удобного для вас репозитория. О создании локального репозитория в следующий раз.Что нам будет нужно?DHCP, который скажет где взять загрузочный образTFTP, который будет этот образ отдавать желающимсам загрузочный образНастройка DHCP сервераустанавливаем:sudo apt-get install dhcp3-serverсоздаём файл конфигурации /etc/dhcp.dhcpd.conf (обратите внимание, что в новых debianbased системах в качестве DHCP сервера решили использовать isc-dhcp-server, а его конфигурационный файл лежит в /etc/dhcp/dhcpd.conf):

ddns-update-style none;default-lease-time 600;max-lease-time 7200;authoritative;log-facility local7;option domain-name-servers 10.1.2.1,10.1.2.200; адреса DNSов (пригодятся)option routers 10.1.25.1; шлюз по умолчаниюserver-name "10.1.25.101";subnet 10.1.25.0 netmask 255.255.255.0 {pool {range 10.1.25.150 10.1.25.170; диапазон выдаваемых по DHCP IPшниковnext-server 10.1.25.101; на этом сервере будут лежать загрузочные образыfilename "pxelinux.0"; какой файл загружать и запускать (а уже он знает, что делать дальше)}}

Рестартуем его:sudo /etc/init.d/isc-dhcp-server restartНастройка TFTP сервераСтавим клиент и сервер:sudo apt-get install tftp tftpd-hpaСоздаём файлик /etc/default/tftpd-hpa :

TFTP_OPTIONS="--secure"TFTP_USERNAME="tftp"TFTP_DIRECTORY="/srv/tftp"TFTP_ADDRESS="0.0.0.0:69"

рестартуем tftpd/etc/init.d/tftpd-hpa restartТеперь качаем загрузочный образ:wget -c http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/netboot.tar.gzЕсли вы хотите устанавливать на машины более старую или более новую версию, чем natty, то подправьте соответствующим образом адрес. На данный момент возможные варианты:

  • dapper
  • hardy
  • karmic
  • lucid
  • maverick
  • natty
  • oneiric

если вы собираетесь ставить 64 битную версию ubunu, то замените в адресе installer-i386 на binary-amd64Распаковываем образ в папку /srv/tftptar -xpvf ./netboot.tar.gzВрубаем на клиентах загрузку по сети в BIOS и начинаем установку.

PS: Кстати, всё это можно сделать на RIS сервере. Проверено. Но это уже извращение.

annenkov.org

Установка Ubuntu по сети | Sidelnikov blog

В данной статье будет рассмотрена установка Ubuntu Linux из репозитория с сетевой загрузкой.

Итак, на клиентские компьютеры будем устанавливать Ubuntu 10.04 с  сервера 192.168.0.3, на котором находится сервер сетевой загрузки и dhcpd. Для установки в репозитории обязательно должен быть каталог dists/lucid/main/debian-installer. Если добавить подобные каталоги для других репозиториев (multiverse, universe, restricted), то на этапе «Выбор и установка программного обеспечения» список ПО будет больше. В данном руководстве рассмотрю именно этот вариант. Если вы делали зеркало debmirror, то у вас его, скорее всего, этих каталогов вообще нет. Скачать их можно, например, с ftp://mirror.yandex.ru. Так же во время установки инсталлятор вне зависимости от выбранного репозитория часто обращается к security.ubuntu.com.

Шаг 1: Установка сервера

Установка необходимых приложений:

apt-get install tftpd-hpa openbsd-inetd

Скачиваем и распаковываем образ для сетевой установки:

wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/netboot.tar.gz

tar -xvzf netboot.tar.gz -C /var/lib/tftpboot/

chown -R nobody:nogroup /var/lib/tftpboot

Для сетевой загрузки необходимо передать клиенту 2 параметра: имя файла загрузки и сервер загрузочного файла (в dhcpd это параметры filename и next-server) :

next-server 192.168.0.3;filename «pxelinux.0»;

Сервер установлен, можно ставить систему.

Шаг 2: Установка системы

Для установки системы с сервера в сети необходимо разрешить в BIOS загрузку по сети (PXE). Если ваш bios поддерживает boot menu, то лучше для выбора загрузочного устройства воспользоваться именно им — чтобы не было проблем, если забудешь изменить порядок загрузки.

Если всё хорошо, то перед вами будет экран приветствия установщика:

sidelnikov.wordpress.com

Yellow Leaf - Статьи - Установка Ubuntu по сети через PXE

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

Некоторое время назад автору этих строк в руки попал старенький IBM ThinkCentre S51 8171 с неисправным CD-приводом. С загрузкой с флэшки, созданной с помощью UNetBootin, так же возникли проблемы и осталась последняя надежда: загрузка инсталлятора по PXE. Далее будет кратко описан полученный опыт.

IBM ThinkCentre S51 8171 имеет очень неплохую начинку для машины 2006-го года выпуска: Pentium 4 540, 2x512MB DDR, 30GB ATA HDD. Но в 2018-м она смотрится блекло, хотя и сейчас ей можно найти множество применений. Основная проблема: процессор не поддерживает EMT64 и потому операционная система должна быть обязательно 32-битной. К счастью Ubuntu 16.04 существует в редакции i386 и было решено ставить её.

В качестве сервера загрузки решено было использовать домашний сервер под управлением Ubuntu 16.04. Для раздачи адресов в локальной сети используется isc-dhcp-server. В остальном конфигурация сервера достаточно типична. Для создания PXE-окружения нам понадобится TFTP-сервер. Мы будем использовать пакет "tftpd-hpa". Установим его, а так же (на всякий случай) tftp-клиент:

apt-get install tftpd-hpa tftp-hpa

По умолчанию tftpd-hpa использует директорию "/var/lib/tftpboot". Если по какой-то причине необходимо это изменить то нужно соответствующим образом отредактировать файл "/etc/default/tftpd-hpa" и перезапустить сервис "tftpd-hpa". Но нас вполне устроит конфигурация по умолчанию.

Список доступным инсталляторов Ubuntu 16.04 для загрузки через PXE и сетевой установки можно найти на этой странице. Нас интересует архив под названием "netboot.tar.gz" для архитектуры i386. Скачиваем и распаковываем его в директорию tftp-сервера:

wget http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-i386/current/images/netboot/netboot.tar.gz mkdir -p /var/lib/tftpboot/ubuntu/ tar zxfv netboot.tar.gz -C /var/lib/tftpboot/ubuntu/

На этом подготовка TFTP-сервера заканчивается и остаётся настроить DHCP-сервер. Вся конфигурация сводится к добавлению строки:

# Путь к файлу "pxelinux.0" относительно директории TFTP-сервера filename "ubuntu/pxelinux.0";

Эту строку можно добавить в описание подсети, группы хостов или даже конкретного хоста. Главное чтобы машина, ради которой это всё делается, получила нужную конфигурацию. После этого можно включить машину и выбрав загрузку по PXE приступить к установке системы. После загрузки инсталлятора установка будет происходить обычным образом, так, будто бы была произведена загрузка с "MinimalCD".

На этом можно было бы закончить, но есть ещё интересный момент: автоматическая установка. Инсталлятор Ubuntu частично поддерживает формат конфигурации kickstart от RedHat Linux. Подробнее можно прочитать тут. Если есть необходимость в использовании сценария автоматической установки то сначала необходимо создать файл сценария и разместить его на веб-сервере в локальной сети, затем надо немного модифицировать файл "/var/lib/tftpboot/ubuntu/ubuntu-installer/i386/boot-screens/txt.cfg":

#append vga=788 initrd=ubuntu-installer/i386/initrd.gz --- quiet append ks=http://192.168.2.1/ks.cfg vga=788 initrd=ubuntu-installer/i386/initrd.gz --- quiet

Здесь параметр "ks=" указывает URL, по которому расположен сценарий настройки kickstart. Более детальное изучение этой темы оставим читателю.

На этом всё. Приятной работы!

www.ylsoftware.com

Инсталляция Linux по сети с Windows-машины. Грабли и сложности

Немножко философских размышлений

Понятие "инсталляционный диск" постепенно уходит в прошлое. Действительно, зачем нужен инсталляционный диск, если есть скоростной безлимитный Интернет, позволяющий, не сходя с места, скачать самую последнюю версию программы и тут же ее установить? А поскольку скоростной Интернет потихоньку становится явлением уже почти повсеместным, то и онлайн-дистрибутивы набирают все бо́льшую и бо́льшую популярность, вытесняя диски в коробочках.

Немножко особняком здесь стоят операционные системы. Действительно, скачать и установить обычную программу несложно: компьютер с работающей операционной системой и сайт покажет, и инсталлятор скачает, и установит. Пользователю нужно только кнопочки Yes да Next нажимать время от времени. А вот как установить саму операционку, да еще и на чистый компьютер? Раньше без специальной загрузочной дискеты было не обойтись. Причем даже когда операционки стали распространяться на компакт-дисках, все равно нужна была работающая операционка, которая могла бы создать загрузочную дискетку с образа, расположенного на компакт-диске. Потом появились загрузочные компакт-диски, и процесс установки стал значительно легче: всунул диск, включил компьютер, инсталлятор сам запустился, нашел все диски, спросил, куда будем ставиться - и понеслась...

Но диски тоже потихоньку сходят с арены, уступая более компактным и надежным (а в последнее время еще и более объемным) USB-флешкам.И хотя сейчас CD/DVD-привод пока еще есть практически в каждом компьютере, многие ноутбуки (а в особенности - нетбуки) уже жертвуют этой громоздкой железякой для экономии места. Действительно, а зачем он нужен, если все необходимое можно скачать через Интернет, в крайнем случае - передать через флешку?

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

На самом деле, технология запуска рабочей станции по программе, загружаемой из локальной сети, не так уж и нова - ей уже лет тридцать, но до сих пор она использовалась преимущественно коммуникационными железками вроде маршрутизаторов или мини-АТС. Видимо, как раз нетбуки и стали тем спусковым крючком, который породил спрос на включение в материнские платы возможность установки операционной системы путем скачивания инсталлятора с сервера. А что - удобно: подключил к специальному загрузочному серверу несколько десятков ноутбуков (на сколько портов хватило), сервер раздал каждому по загрузчику, операционка сама поставилась, ноутбуки готовы к продаже, подключаем следующую партию. Вот оно, массовое производство.

Эволюция материнских плат

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

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

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

От теории к практике

Недавно мне довелось попробовать это все на личном опыте. Я устанавливал Debian Linux на свой домашний сервер. И, поскольку материнка поддерживает старт через сеть, я решил, что этим грех не воспользоваться. В теории все выглядит очень заманчиво: при включении компьютера крохотный инсталлятор скачивается с соседнего компьютера, после чего инсталлятор выходит в Интернет и скачивает последнюю-распоследнюю версию операционки (т.е. не надо никаких сервиспаков, обновлений, драйверов и прочей фигни). Пользователю остается только выбрать режим установки, указать, куда поставить систему, какие компоненты ставить - в общем, стандартный набор простейших действий.

В конечном итоге у меня все получилось, хотя грабли я собрал, кажется, все, какие только возможно - в процессе даже возникала крамольная мысль: "а не проще ли скачать образ DVD и поставить с него?". Но в итоге все трудности были успешно преодолены, а о встреченных граблях мне хотелось бы рассказать - вдруг кому будет полезно.

Итак, топология сети проста и незатейлива, как и в большинстве домов, где больше одного компьютера: роутер, раздающий интернет, к нему подключены два компа (мой и Юлькин), и туда же был воткнут сервер. Теперь задача: один из компов (очевидно, мой) должен стать устройством, с которого сервер получит инсталлятор Линукса.

Почитав мануалы, я узнал, что загрузка осуществляется по протоколу TFTP. TFTP - это упрощенный FTP, там нет авторизации и есть только две команды: get и put. Гугл мне подсказал, что в винде встроенного TFTP-сервера нет, но его можно установить в виде отдельной приблуды под названием Tftpd32. Скачал, установил. Убедился, что команда tftp localhost put aaa.txt действительно заливает файлик aaa.txt из текущего каталога в рабочий каталог Tftp32. "Полдела сделано", - подумал я оптимистично и распаковал в рабочий каталог файлы инсталлятора Debian.

А дальше началось самое веселое - нужно было как-то дать понять стартующему серверу, куда лезть за загрузчиком. Сначала я наивно подумал, что он сам просканирует сеть и найдет там TFTP-сервер. Надо ли говорить, что ничего подобного не случилось. Включившись, сервер некоторое время показывал мне вот такую надпись:

DHCP....(/)

после чего добавил:

PXE-E53: No boot filename received.

На этом загрузка по сети закончилась.

Ну, логично, подумал я. В настройках Tftp32 есть вкладка DHCP, и там есть поле Boot File - куда, очевидно, надо вписать pxelinux.0 (это имя загрузчика, я узнал об этом из мануала по установке Debian). Но вот что меня смущало: то, что это поле находится во вкладке DHCP означает, что Tftpd32 должен выступать еще и в роли DHCP-сервера? Так у меня уже есть один, на роутере, зачем мне еще один?

Но поскольку поле Boot File попросту не прописывалось без прочих настроек, очевидно было, что Tftpd32 все-таки придется сделать DHCP-сервером. Получается, "кто девушку ужинает, тот ее и танцует" - т.е. кто айпишник выдал, тот и инструкции по загрузке выдает, иначе никак.

Мне очень не хотелось отключать DHCP на роутере, поэтому я попробовал прямо так - а вдруг не подерутся? Но они, естественно, подрались. Ладно, выставил на всех компах статические адреса, отключил DHCP на роутере, попробовал заново. Включаю опять сервер - кажется, дело сдвинулось с мертвой точки. Tftp32 даже написал, что у него запросили файлик pxelinux.0, и показал прогресс-бар загрузки... который замер на нуле и больше не двигался.

Еще поползал по Интернету, покурил различные мануалы. Осознал, что старт происходит не просто по протоколу TFTP, а по некоей его модификации под названием PXE. Нашел в настройках Tftpd32 неприметную галочку PXE Compatibility. Поставил. Еще раз стартовал сервер. Опять ничего не грузится: No boot filename received.

Оказывается, Tftpd32 после каждого изменения настроек сбрасывает рабочий каталог на каталог по умолчанию (тот, куда он сам установился). Я выругался, вернул каталог на место и снова стартовал сервер. Помогло. Пискнув, сервер гордо отобразил экран инсталлятора Debian Linux.

Облегченно вздохнув и мысленно возликовав, я начал установку. Все вроде бы шло как по маслу, но когда мне предложили выбрать адрес зеркала, с которого будет вестись установка, я столкнулся с очередной проблемой. Какое бы зеркало я ни выбрал, я получал одну и ту же ошибку:

Mirror does not support the specified release (squeeze)

Squeeze - это кодовое название версии Debian 6.0 - самой актуальной на данный момент. Ну не может такого быть, чтобы она нигде не поддерживалась! Более того, слазив по адресу ftp://ftp.us.debian.org/debian/dists/squeeze, я убедился, что этот каталог вполне себе существует и доступен. Явно это у меня где-то очередной косяк.

Самое странное, что в Интернете я не нашел четкого описания причин этой проблемы, но, чуть-чуть подумав, допер сам. Ошибка возникает при попытке инсталлятора исполнить команду wget -q http://ftp.uk.debian.org/debian//dists/squeeze/Release -O - | grep -E '^(Suite|Codename):'. Причина ошибки не анализируется, поэтому отсутствие конкретного файла и недоступность всего зеркала целиком трактуются одинаково - т.е. даже если зеркало недоступно целиком, пользователь получит вводящее в заблуждение сообщение, мол, "на данном зеркале твоя версия не поддерживается".

А причиной недоступности, очевидно, было то, что я в настройках DHCP в Tftpd32 забыл указать адрес DNS-сервера - поэтому загрузчик не мог разрешить ни одного доменного имени, и, как следствие, не мог достучаться ни до одного зеркала. После того, как я эту проблему исправил, инсталляция прошла успешно.

P.S. Включить обратно DHCP на роутере я, естественно, забыл - поэтому когда я через несколько дней привычно попытался подключиться к Wi-Fi с мобильника, я получил отлуп. Поскольку дело было как раз в ванной, пришлось подключение отложить - в телефоне статический айпишник прописывать некуда :)

myx.ostankin.net