Компьютерология - Информационный ресурс

Установка убунту из по сети. Эннера - компьютерная энциклопедия. Выбор реализации Linux

Для меня долгое время оставалось загадкой, почему в Ubuntu только два варианта установочного диска – Desktop и Alternate. В Debian кроме обычных полных установочных дисков, устанавливающих сразу полный GNOME или KDE, существует также NetInstall диск, предназначенный для установки системы по сети.

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

Оказалось, что в Ubuntu тоже есть вариант установочного диска, предназначенный для установки по сети. Просто ссылка для его закачки не расположена на главной странице сайта. А спрятана по следующему адресу .

Меня интересовал вопрос, какого минимального размера можно получить установленную Ubuntu без совершения специальных трюков. Для теста было решено установить Ubuntu c минимального диска в VirtualBox.

Размер имиджа минимального диска составляет 11Mб. Это немного, и позволяет выкачать его на любой, даже самой маленькой скорости.

А вот при установке желательно иметь канал в интернет побыстрее. Потому что минимальный диск, кроме собственно инсталлятора, не содержит ничего. Поэтому в процессе установки будет качаться все. Действительно всё!

Первую попытку выполнить установку Ubuntu с минимального диска я предпринял, подключившись к интернету по ADSL на скорости 128 кбит/с. Установка (в основном закачка пакетов) растянулась на несколько часов.

Для повторного эксперимента удалось найти подключение на существенно большей скорости.

При загрузке с минимального диска нас встречает cначала текстовое приглашение:

а затем стандартное загрузочное графическое(!) меню Ubuntu:

Имеющийся пункт "Command-line install" не означает, что установка будет производиться из командной стоки. В любом случае запускается инсталятор в текстовом режиме.

Пункт «Advanced options» содержит дополнительное меню:

позволяющее выполнить Expert install. При его выборе появляется меню с действиями по установке, позволяющее выполнить их в почти произвольном порядке:

Я же выбираю пункт – «Install».

Текстовый инсталятор обычный. Такой же, как и в Alternate диске. С тем лишь отличием, что пакеты берутся не с диска, а закачиваются по сети.

Инсталятор традиционно спрашивает язык:

настраивает раскладку клавиатуры:

потом предлагает выбрать репозиторий:

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

( 2018-04-10 )

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-окружения нам понадобится -сервер. Мы будем использовать пакет "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. Более детальное изучение этой темы оставим читателю.

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

Прежде всего вам потребуется компьютер с 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 .

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

Предисловие.

Это придумано давным давно. Во всяком случае в статье , написанной в конце прошлого века (1998 год), идею сетевой загрузки автор называет старой. И это не удивительно, загрузка операционной системы по сети - мечта любого администратора. Ведь операционная система загруженная с сервера всегда будет «белой и пушистой», а изменения и обновления достаточно будет внести в загрузочный образ на сервере, вместо того, чтобы бегать с флешкой по всему парку компьютеров.

Почему же такая хорошая идея не получила широкого распространения? Из-за сложности? Нет! Серверы для сетевой загрузки настраиваются довольно просто, как правило одним конфигурационным текстовым файлом, и, забегая вперёд, скажу, что в lanboot_server создание файлов конфигурации производится автоматически. На практике это сводится к «включил, и готово».

Что потребуется?.

    Если локальная сеть не настроена - настройте её. После этого смело командуйте lanboot start и клиенты могут загружаться.

    Для остановки соответственно lanboot stop. В ALTLinux и Ubuntu придётся поработать руками, доустановить необходимое и настроить.

Впрочем, не всё так страшно. Скрипт запуска lanboot (/usr/sbin/lanboot) должен работать и в других линуксах, например в Simply Linux (ALT) скрипт создал правильные файлы конфигурации и сервер запустился, только загружаемых файлов в «TFTP directory» (/var/lib/tftpboot) не оказалось, и это не удивительно, ведь откуда взяться файлам PuppyRus в ALTLinux.

Продолжим.

Из чего собрано.

Для загрузки Linux по сети нам потребуется tftp-сервер (используется tftp-hpa-5.0), bootp или dhcp (я выбрал dhcp-4.1.1, хотя сначала использовал bootp) и inetd или xinetd (я выбрал inetd, он проще).

Как настраивается.

1. Bootp

    Самый простой.

    Выдаёт IP привязанный к MAC-адресу клиента.

    Поэтому может применяться только в сетях с постоянным парком машин.

Пример /etc/bootptab

Используемые параметры:

Td -- TFTP directory (отсюда будут загружаться файлы) - rp -- root path (путь к корню сервера) - bf -- bootfile (загружаемый файл) - sa -- boot server address (IP TFTP-сервера) - sm -- subnet mask (маска подсети) - gw -- gateways (шлюз) - to -- time offset (seconds) - ha -- hardware address (аппаратный, он же MAC адрес) # Можно писать либо в столбик, либо в одну строку. # Настройки, общие для всех клиентов: .default:td=/var/lib/tftpboot:rp=/var/lib/tftpboot:bf=pxelinux.0:sa=192.168.1.2:sm=255.255.255.0:gw=192.168.1.1:to=auto: #или так.default:\ td=/var/lib/tftpboot:\ rp=/var/lib/tftpboot:\ bf=pxelinux.0:\ sa=192.168.1.2:\ sm=255.255.255.0:\ gw=192.168.1.1:\ to=auto: # Настройки для клиентов в других подсетях: #.subnet1:sm=255.255.255.0:gw=192.168.0.1:tc=.default: # Индивидуальные настройкм каждого клиента (примеры): #notick:tc=.default:ha=00140B016592:ip=192.168.1.4: #sharick:tc=.default:ha=0123456789ab:ip=192.168.1.2 #bobick:tc=.default:ha=ba9876543210:ip=192.168.1.5 # и т.д.

2. Dhcpd

Полноценный dhcp-сервер.

Пример /etc/dhcpd.conf

# dhcpd.conf # # Use this to enble / disable dynamic dns updates globally. ddns-update-style none; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; range dynamic-bootp 192.168.1.10 192.168.1.200; default-lease-time 21600; max-lease-time 43200; filename "pxelinux.0"; }

3. Tftp

Файловый сервер с упрощённым протоколом.

Пример /etc/exports

#Каталоги, разрешённые для tftp-загрузки и nfs-монтирования (no_root_squash - разрешён пользователь root) /var/lib/tftpboot 192.168.1.0/255.255.255.0(ro,no_root_squash,sync)

4. Inetd

У нас служит для запуска tftp-сервера и bootp-сервера. Но может запускать и другие службы. Файл конфигурации /etc/inetd.conf. Файл длинный, «на все случаи жизни». Поэтому привожк только нужные строки.

Пример /etc/inetd.conf.

# Эта строка запускает tftp-сервер tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /var/tftpboot # Эта строка запускает bootp-сервер bootps dgram udp wait root /usr/sbin/bootpd bootpd -i

5. Xinetd

Функции те же, что и у inetd, но настройки сложнее. Установлен в Альтлинуксе.

Пример /etc/xinetd.conf

# # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { log_type = SYSLOG authpriv info; log_on_success = PID HOST DURATION; log_on_failure = HOST; instances = 100; per_source = 5; only_from = 127.0.0.1; } includedir /etc/xinetd.d Для каждой запускаемой программы отдельный файл конфигурации кладётся в /etc/xinetd.d Пример /etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { disable = no; socket_type = dgram; protocol = udp; wait = yes; user = root; server = /usr/sbin/in.tftpd; server_args = -u tftp -s /var/lib/tftpboot; per_source = 11 cps = 100 2 flags = IPv4 only_from = 192.168.1.0; }

Автоматическая настройка.

Для автоматической настройки переменные берутся из вывода стандартных linux-команд ifconfig и route. Поэтому их можно получить в любом Linux.

Serv=$(ifconfig | grep inet | grep -v 127.0.0.1 | cut -f 2 -d ":" | cut -f 1 -d " ") mask=$(ifconfig | grep inet | grep -v 127.0.0.1 | cut -f 4 -d ":") gate=$(route | grep UG | cut -f 10 -d " ") subnet=$(route | grep " U " | cut -f1 -d " ")

Эти переменные вписаны в соответствующие места шаблонов конфигурационных файлов содержащихся в скрипте lanboot. При выполнении скрипта значения переменных подставляются в шаблон и сгенерированный таким образом файл конфигурации отправляется «по месту назначения». Это избавляет вас от рутинной работы и человеческих ошибок тоже. Единственное непременное условие: сеть должна быть настроена, иначе откуда брать значения переменных.

Скрипт lanboot так же копирует в TFTP directory файлы PuppyRus: vmlinuz, initrd.gz и pup*-200.sfs, необходимые для запуска. Файлы берутся из операционной системы, на которой запущен сервер, и, если эта система не PuppyRus, то их взять неоткуда. Поэтому на других Linux вышеперечисленные файлы необходимо поместить в /var/lib/tftpboot вручную (копированием).

В данной статье будет рассмотрена установка 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

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

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, то лучше для выбора загрузочного устройства воспользоваться именно им — чтобы не было проблем, если забудешь изменить порядок загрузки.

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

  • Basic Ubuntu Server
  • Сервер имён (DNS)
  • Edubuntu server
  • LAMP server
  • Почтовый сервер
  • OpenSSH server
  • PostgreSQL database
  • Сервер печати
  • Samba file server
  • Ubuntu Enterprise Cloud
  • Virtual Machine host
  • 2D/3D creation and editing suite
  • Audio creation and editing suite
  • Edubuntu KDE desktop
  • Edubuntu desktop
  • Kubuntu desktop
  • Kubuntu netbook
  • LADSPA and DSSI audio plugins
  • Large selection of font packages
  • Mythbuntu additional roles
  • Mythbuntu frontend
  • Mythbuntu master backend
  • Mythbuntu slave backend
  • Ubuntu Netbook
  • Ubuntu Desktop
  • Video creation and editing suite
  • Xubuntu desktop
  • Manual package selection