Ubuntu: сетевая установка. Использование бездисковых Linux-станций с загрузкой по сети Установка windows по сети из linux

19.10.2023

0. Вступление
Загрузка по сети - это очень удобная, и зачастую даже просто незаменимая вещь. Не нужно вскрывать корпус компьютера(порой это совсем не так просто, как с обычными PC-блоками), не нужен cdrom, не нужен свободный ide-шлейф, не нужен дисковод, не нужно USB.
Система для загрузки проста для изменения - её не нужно никуда "заливать" и записывать. Это просто каталог.
Почему-то эту тему боятся и избегают многие. Это кажется чем-то сложным, проблематичным и труднореализуемым. На самом деле всё, как и остальное гениальное, просто.

1. Что нужно, чтобы загрузить Linux на машину по сети?

  • В машинке должна быть сетевая карточка с поддержкой Intel"s PXE. Есть ещё несколько реализаций протоколов загрузки по сети, но PXE наиболее распространён и является, практически, де-факто подразумеваемым протоколом загрузки по сети.
  • Настроенная Linux-система(назовем её машина-хост), которая будет выдавать IP-адрес, и содержать загружаемое ядро и сам образ системы. Это, вообще-то, не обязательно может быть Linux-система, но в данном how-to это будет подразумеваться.
  • Сеть Ethernet. Машину-хост и машинкой-жертвой можно соединить простым кросс-кабелем, а можно и обычными методами. :)
  • Знание MAC-адреса машинки-жертвы. Его можно посмотреть либо по логам DHCP-cервера, либо переписать прямо с экрана в момент начала загрузки по PXE, ну а можно и вовсе обойтись, и настроить DHCP-cервер так, чтобы он выдавал нужный IP и образ всем без разбору. Но это совсем другая история(хорошо описанная в гугле) и она выходит за рамки данного how-to.

2. Как происходит процесс загрузки по сети?
Быстрый ответ: автоконфигурируется сеть по dhcp, загружается загрузчик по tftp, который загружает ядро по tftp, которое загружает всю остальную рут-систему по nfs.
Подробный ответ: Первое, что делает при загрузке машинка, в которой установлена загрузка через PXE - посылает широковещательный DHCP-запрос в сеть в поисках сервера. Машина-хост, на которой мирно посапывая дремлет DHCP-демон, выдаёт адрес и путь к файлу для загрузчика. PXE Boot ROM на основе полученной информации, конфигурирует сетевой адаптер. Если всё проходит успешно, загрузчик загружается по TFTP протоколу и берёт на себя дальнейший ход событий. В общей схеме события развиваются дальше так - загружается по тому же TFTP-протоколу специально подготовленное для загрузки по сети Linux-ядро. Ядру при этом загрузчик передаёт нужные параметры для загрузки по NFS-протоколу. Ядро, загрузившись, монтирует nfs-раздел на машине-хосте и загружает систему уже оттуда.

3. Как это всё настроить и поднять с нуля?
Актуальный вопрос:)
Ведь нам нужны:
а) установленные, настроенные и запущенные dhcp-, tftp- и nfs-сервера
б) загрузчик и готовый образ корневой системы, в который можно chroot-иться и настраивать по надобностям, устанавливать/добавлять пакеты и тп.
в) ядро, подготовленное для загрузки по сети.
Итак, по пунктам, подразумевая, что система у нас Debian(и радуясь, что когда-то сделали правильный выбор дистрибутива), и что все относящиеся к делу файлы мы поместим в каталог /tftpboot:

0. Создание каталогов и установка загрузчика pxelinux.
Для начала создадим и определим каталоги.
Нашим "главным" каталогом пусть будет /tftpboot.
В нем будет два подкаталога: boot/ (с корневой системой) и pxelinux.cfg/ (с настройками загрузчика)

# mkdir /tftpboot # mkdir /tftpboot/boot # mkdir /tftpboot/pxelinux.cfg

# apt-get install syslinux # cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ #

Serial 0 prompt 1 timeout 99 default pxeboot label pxeboot kernel bzImage append ip=dhcp nfsroot=192.168.150.126:/tftpboot/boot root=/dev/nfs init=/sbin/init

Его синтаксис похож на синтаксис lilo.conf. Комментарии, вроде бы тоже не нужны.
Если нужно создать различные конфигурации для разных машин, то можно создавать вместо default файлы для каждого MAC-адреса отдельно. Подробнее про это можно прочитать на странице pxelinux.

1. Создание корневой файловой системы
Это самый интересный вопрос. Здесь стоит сформулировать чётко постановку задачи - для чего нужна будет система? Какой софт там должен быть, на каком железе она будет запускаться и тп.
В принципе, для простейшей загрузки достаточно минимальной системы в пару мегабайт. Образов и руководств по созданию оных в гугле море.
Это может быть rescue-система, может быть инсталлятор чего-нибудь, а может быть и полноценная desktop-система.
В моем случае, мне нужно, чтобы система загружалась практически на любом железе и стартовала мой собственный инсталлятор. Поскольку места мне не жалко, то я решил просто поставить дефолтную минимальную debian-cистему. Радуясь тому, что когда-то выбрал правильный дистрибутив, это оказалось очень просто сделать:

# apt-get install debootstrap ... # debootstrap sarge /tftpboot/boot

При завершении, в каталоге /tftpboot/boot будет полностью рабочая, функциональная и загружаемая система, примерно 140Мб весом. В этот каталог можно за-chroot"иться, инсталлировать и удалять пакеты, изменять rc-cкрипты, и вообще творить всё что угодно. Такой себе линукс в линуксе.

2. Создание ядра.
Для того, чтобы ядро можно было загружать по сети нужно несколько условий при его сборке:
а) включить опцию "Network Options -> IP: autoconfiguration -> dhcp" (для универсальности, лучше все варианты тоже включить)
б) включить поддержку NFS Filesystem
в) включить "FS->Network Filesystems->Root Over NFS".
Это обязательная часть специфики. Остальное же - на ваше усмотрение. Что нужно в этом ядре, что не нужно. Лучше не жалеть на размере, и вкомпиливать в него больше драйверов, отключив модули совсем, чтобы избавиться от необходимости двухступенчатой загрузчки и initrd-файла.

3. Настройка DHCP.
Инсталлим сервер:

# apt-get install dhcpd

Редактируем его конфигурационный файл(/etc/dhcpd.conf) под свою сеть и добавляем в него запись для нашей машинки-жертвы:

Host pxeboot { hardware ethernet 08:00:0e:aa:bb:cc; fixed-address 192.168.150.127; filename "/tftpboot/pxelinux.0"; }

В статье подробно рассмотрен процесс развертывания сети "тонких клиентов", работающих под упралвением дистрибутива Thinstation Linux и использующих сервер приложений на базе Windows 2000

Использование бездисковых Linux-станций с загрузкой по сети

Впервые опубликованно в журнале "Системный администратор" N11/2004

Постановка задачи

Работа сотрудника отдела автоматизации – это постоянная борьба с проблемами и решение задач, которые попеременно подкидывают пользователи, разработчики эксплуатируемого программного обеспечения и руководство организации. И если два первых направления работы – это просто «борьба за живучесть корабля», то последнее, как правило, поступательное движение вперед. Как раз в ходе решения одной из таких задач и появилась на свет данная статья.

Итак, перед отделом автоматизации была поставлена задача в короткие сроки ввести в строй два новых удаленных офиса, каждый численностью в пять – десять человек. Оба офиса и «голову» связали посредством технологий VPN в одну сеть. Минимальная ширина канала между тремя точками составила 256 Кбит, что вполне удовлетворило наши потребности. В каждом из офисов был развернут дополнительный контроллер домена Windows 2000, а для минимизации трафика домен разделили на несколько сайтов. Все вышеописанное является стандартным решением, и здесь я не ожидал никаких сюрпризов. Главным вопросом для нас было – как поведет себя основная среда работы сотрудников организации – комплексная система автоматизации, при работе с которой и в пределах одной площадки хватало проблем. Изначально ориентированная на Novell/BTRIVE 6.15 после миграции сети на Windows, она работала под Windows/Pervasive.SQL 7.

После недели тестов этого основного бизнес-приложения организации, оказалось что разработчик и вовсе не оставил нам выбора, так как использование встроенного терминального режима используемой автоматизированной системы по ряду причин нас не устроило. Опять же, из-за особенностей функционирования, в качестве терминального сервера была выбрана платформа Microsoft Windows Server. Тестирование же решений компании Citrix, мы не проводили, так как работа с «родными» терминальными службами Windows нас вполне удовлетворила, а использование надстроек только увеличивает стоимость всей системы.

Когда с серверной частью все определилось, встал вопрос по клиентской составляющей системы. В первую очередь хотелось бы снизить необходимость в администрировании пользовательских машин, так как держать выделенного администратора на удаленных площадках не планировалось. Кроме того, желательным представлялось уменьшить стоимость решения, которая возросла из-за необходимости покупки терминальных лицензий. Также необходимо было учесть намерение разместить в офисах устаревшие компьютеры класса Celeron-400 с ОЗУ от 32 до 64 Мбайт.

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

В роли ОС, которая будет по сети загружаться на рабочие станции, я выбрал Linux – что обеспечивает лицензионную чистоту решения (по крайней мере, на сегодняшний момент). Доступ к рабочему столу Windows 2003 должен был осуществляться при помощи разработки проекта www.rdesktop.org, который стал стандартом для решения данной задачи. В качестве же необходимых для такой загрузки серверов DHCP и TFTP, логично было бы использовать уже имеющиеся в каждом сайте дополнительные контроллеры домена Windows 2000. Благо, существуют как бесплатные реализации DHCP/TFTP под эту операционную систему, как и встроенные сервера. При этом TFTP наличествует в рамках службы Remote Installation Services (RIS).

Сетевые карты клиентских машин, естественно должны поддерживать возможность загрузки по Etherboot/PXE. В отдельных случаях из-за несовместимости оборудования я допускал использование загрузчика, расположенного на дискете.

Выбор реализации Linux

При выборе варианта ОС Linux с возможностью загрузки по сети в первую очередь я обратил внимание на уже готовые дистрибутивы подобной направленности со встроенным пакетом rdesktop. Наиболее известный из них NetStation (netstation.sourceforge.net), который застыл в виде бета версии с конца 2002 года, и его наследники: PXES (pxes.sourceforge.net), Thinstation (thinstation.sourceforge.net), и DIET-PC (diet-pc.sourceforge.net). При этом DIET-PC предназначен в первую очередь, пользователям, хорошо знакомым с ОС Linux, что сразу исключает его из области рассмотрения. Поскольку процедура его настройки достаточно кропотлива, и в DIET-PC присутствует достаточно много настроек которые простому смертному, а не Linux-гуру, никогда не пригодяться. PXES – является наиболее «продвинутым» с большим числом дополнительных возможностей, включая собственную графическую среду, что также лишнее в моем случае. В моей конфигурации клиент, минуя промежуточные меню, должен был сразу загружать удаленный рабочий стол и выходить на окно ввода пароля Windows 2003 Server. Таким образом, я обратил внимание на оставшийся дистрибутив – Thinstation.

Кратко рассмотрим его возможности:

поддержка протоколов X, RDP, VNC, SSH, Telnet, ICA и Tarantella;

возможность использовать браузер Firefox;

работа на ПК класса x86-100МГц c ОЗУ 16Мбайт;

наличие pre-build образа, и возможность самостоятельной сборки через web-интерфейс;

поддержка локальных дисков, USB и LPT принтеров

Из всех вариантов загрузки наиболее простой – это PXE при помощи Etherboot-загрузчика. В рамках этой статьи, мы пойдем по самому простому пути – использовании заранее скомпилированного образа.

Установка и первоначальная настройка

Начнем с того, что скачаем со странички http://struktur.kemi.dtu.dk/thinstation/download/, доступной по ссылке в официального сайта последний из архивов, в моем случае – это был Thinstation-2.0.2-prebuilt-NetBoot.zip. Архив содержит в себе все что необходимо, включая TFTP/DHCP сервер Tftpd32 который удобен при первоначальной настройке и конфигурировании. Кстати, если вы будете его использовать, то я бы порекомендовал сразу же обновить его с домашней странички, где имеется более свежая версия. Кстати, Tftpd32 (http://tftpd32.jounin.net/) – сама по себе отличная программа. Причем настолько, что даже рекомендуется Cisco для некоторых потребностей клиентов компании.

Развернув архив, мы получаем пять директорий:

BootDisk – образ дискеты с Etherboot-загрузчиком, для ПК, с неподдерживаемыми сетевыми картами

BootPXE – загрузчик через PXE для эмуляции Etherboot

BuildFiles – примеры конфигурационных файлов

TFtp – сервер Tftpd32

TftpdRoot – корневая директория TFTP сервера

Итак, первым делом, запускаем самораспаковывающийся архив thinstation.nbi (autoextract).exe, содержащий один единственный файл thinstation.nbi. архив сделан для того чтобы у вас была возможность ознакомиться с «CITRIX(R) LICENSE AGREEMENT».

Теперь копируем TFtp и TftpdRoot на Windows сервер в нашем сегменте сети. В качестве такого сервера при использовании Tftpd32 может выступать любая Windows-машина со статическим IP-адресом. Допустим, мы скопировали обе директории на диск C:\. Запускаем на исполнение C:\TFtp\Tftpd32.exe. Внешний вид окна программы представлен на рисунке.

Необходимо задать параметры сервера. Нажимаем кнопку «Settings», и прописываем в качестве «Base directory» значение «C:\TftpdRoot». Далее идем на вкладку «DHCP server». Там необходимо указать начальный IP-адрес выделяемый DHCP-сервером («IP pool starting address»), размер пула адресов («Size of pool»), маску подсети («Mask»), имя файла с Etherboot-загрузчиком(«Boot file»), в нашем случае это - thinstation.nbi.zpxe. Нажимаем кнопку «Save», для сохранения настроек, и сворачиваем приложение.

Все готово для работы. Вы можете попробовать включить одну из машин с сетевой картой, поддерживающей загрузку по протоколу PXE, не забыв выставить порядок загрузки в BIOS станции. При включении, машина должна получить IP-адрес из выделенного диапазона и загрузить по протоколу TFTP файл thinstation.nbi.zpxe. Он содержит загрузчик, эмулирующий работу сетевой карты с поддержкой Etherboot. Затем, управление передается загрузчику, который в свою очередь еще раз запрашивает по DHCP адрес, и загружает файл с именем, совпадающим с названием файла самого загрузчика минус расширение zpxe, то есть thinstation.nbi. Данный файл и есть образ Thinstation. Когда образ загружен, Thinstation пытается загрузить из корневой директории TFTP сервера конфигурационный файл thinstation.conf- , затем thinstation.conf- . Если такие файлы найдены, то Thinstation объединяет их содержимое с общим конфигурационным файлом thinstation.conf.network, который, в отличие от двух выше перечисленных обязан присутствовать на TFTP-сервере. Постарайтесь избежать конфликтов между главным файлом настроек и специфическим к группе или конкретной станции. Кроме того, можно объединять одним конфигурационным файлом целые группы IP и MAC-адресов. Это делается при помощи файла thinstation.hosts, имеющего следующий формат:

# HOST MAC GROUPS COMMENTS ws-oper1 0002B3655065 hi_res # Оператор №1 ws-oper2 0002B3651075 hi_res # Оператор №2 ws-oper3 0002B365A021 hi_res ssh_en # Оператор №3

В данном примере предполагается, что имеются два файла thinstation.conf.group-hi_res и thinstation.conf.group-ssh_en. Настройки прописанные в первом файле применяются ко всем трем станциям, а настройки из второго – только к компьютеру ws-oper3.

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


Клиенты с именами вида ts_ - это как раз клиентские терминалы, работающие под управлением Thinstation. Клиенты с именами вида P работают под управлением дистрибутива PXES, рассмотрение которого выходит за рамки данной статьи. Далее я приведу простой, но вполне работоспособный вариант конфигурационного файла с комментариями. # Опции сессий # # Первая сессия должна обязательно начинаться с номера 0. # При отсутствии необходимости выбора сессии, например, когда вы используете # только rdesktop, можно снять комментарий со следующего параметра, и # исключить меню выбора сессий. #AUTOSTART=On SESSION_0_TITLE="Windows 2003 terminal server (16 bit color depth)" SESSION_0_TYPE=rdesktop SESSION_0_RDESKTOP_SERVER=192.168.0.1 SESSION_0_RDESKTOP_OPTIONS="-u Administrator -p password -a 16" SESSION_1_TITLE="VNC server" SESSION_1_TYPE=vncviewer SESSION_1_VNCVIEWER_SERVER=192.168.0.2 SESSION_2_TITLE="Telnet server" SESSION_2_TYPE=telnet SESSION_2_TELNET_SERVER=192.168.0.3 SESSION_3_TITLE="SSH server" SESSION_3_TYPE=ssh SESSION_3_SSH_SERVER=192.168.0.4 # Общие опции # # Раскладка клавиатуры. В случае работы с rdesktop она роли не играет KEYBOARD_MAP=en_us # Опции XServer # SCREEN_RESOLUTION="1024x768" SCREEN_COLOR_DEPTH="16" SCREEN_HORIZSYNC="30-64" SCREEN_VERTREFRESH="56-87" MOUSE_RESOLUTION=100 # Опции печати # PRINTER_0_NAME=usb PRINTER_0_DEVICE=/dev/usb/lp0 PRINTER_2_TYPE=U

В заключение статьи, хочу сказать, что после отладки работы с терминальными клиентами, лучше всего передать функции TFTP- и DHCP- серверов программному обеспечению, способному работать в режиме службы на Windows NT/2000/2003/XP, например как я уже говорил, «родным» службам Windows, либо воспользоваться соответствующими сервисами любой другой операционной системы.


Кроме того, на сайте проекта thinstation.sourceforge.net при помощи веб-интерфейса вы можете самостоятельно перекомпилировать образ Thinstation без загрузки исходных кодов, включив какие-либо отсутствующие в prebuild образе функции, например, браузер, или исключив ненужные модули.

Андрей Маркелов. Андрей Маркелов (www.markelov.net) - Использование бездисковых Linux-станций с загрузкой по сети

В серверных всё чаще попадаются сервера без CD/DVD-приводов. Время от времени на них нужно ставить операционную систему, и в этом может сильно помочь установка по сети. Вы просто включаете сервер и начинаете установку. Сетевая карта должна поддерживать технологию PXE. PXE - Pre-Boot Execution Environment - позволяет осуществлять загрузку по сети.

Но PXE недостаточно для полного счастья, технология, которая позволит полностью автоматизировать установку - kickstart (разработчиком которой является компания Red Hat). Суть её проста - мы заранее составляем файл, содержащий значения всех опций, которые могут понадобиться в ходе установки. Более того, мы можем выполнять свои скрипты до установки и после, тем самым задавая настройки будущей ОС.

Установка с помощью kickstart типового комплекта Linux занимает 5-7 минут.

Для Install-сервера нужно 3 службы и 1 пакет.


  • DHCP предоставляет клиентам сетевые реквизиты

  • TFTP - простой способ предоставить доступ к файлам по сети

  • Syslinux содержит загрузчик pxelinux.0 и некоторые другие файлы

  • NFS предоставляет доступ к файловой системе по сети
Процесс установки можно разбить на этапы:

  1. pxe - прошивка pxe начинает свою работу, когда мы в BIOS выставляем установку по сети, или когда на HDD не найдена MBR.

  2. DHCP фаза 1 - клиент получает сетевые реквизиты и адрес tftp-сервера, а также название файла-загрузчика (pxelinux.0). По умолчанию TFTP-сервер - это DHCP-сервер.

  3. TFTP - загрузчик pxelinux.0 обращается к TFTP-серверу и запрашивает у него initrd.img (Initial RAM disk, временная файловая система), ядро Linux.

  4. Kernel - передача управления ядру Linux.

  5. DHCP фаза 2 - ядро Linux делает запрос к DHCP-серверу, чтобы получить сетевые реквизиты и в дальнейшем адрес NFS-сервера.

  6. NFS - этап, когда монтируется NFS-раздел

  7. init - происходит запуск /sbin/init, и управление передаётся ему. Init - это главный процесс в системе, другие процессы являются дочерними процессами init.
В свободном изложении:

DHCP-сервер ожидает bootp-запросы в своей сети; после того, как он получает запрос, он смотрит MAC-адрес источника, и если о таком MAC-адресе у него имеется соответствующая запись, он начинает с ним работать. DHCP-сервер выдаёт клиенту сетевые реквизиты (IP-адрес, gateway, DNS-сервера,...) и по протоколу TFTP, с помощью TFTP-сервера, отправляет загрузочный образ pxelinux.0. Этого образа хватает, чтобы вывести меню выбора ОС.

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

DHCP

Устанавливаем DHCPD и добавляем его в автозагрузку:
# yum -y install dhcp
# chkconfig dhcpd on

Файл /etc/dhcpd.conf делаем такой:

Ddns-update-style interim;
ignore client-updates;
subnet 192.168.146.0 netmask 255.255.255.0 {
option routers 192.168.146.1;
option subnet-mask 255.255.255.0;
option domain-name «domain.local»;
option domain-name-servers 192.168.146.1;
default-lease-time 21600;
max-lease-time 43200;
Allow bootp;
Allow booting;
host unixbox {
hardware ethernet 00:0c:29:77:9c:9c;
fixed-address 192.168.146.128;
filename «pxelinux.0»;
option host-name «unixbox»;
next-server 192.168.146.1;
}
}

Запускаем DHCPD или перезагружаем, если он был запущен:
# service dhcpd restart

Отключаем файрвол, включённый по умолчанию (иначе на целевом компьютере при загрузке будет ошибка "ICMP Destination unreachable (Host administratively prohibited)"):
# service iptables stop
# chkconfig iptables off

TFTP

Устанавливаем пакет tftp-server из репозитория:
# yum -y install tftp-server

Теперь необходимо включить tftp в конфигурацию xinetd, для этого в файле /etc/xinetd.d/tftp меняем “disable = yes” на “disable = no” и включаем xinetd:
# service xinetd start

Проверяем, что порт tftp-сервера прослушивается (tftp работает на порту 69):
# netstat -nlp | grep:69
udp 0 0 0.0.0.0:69 0.0.0.0:* 3105/xinetd

Syslinux

Пакет содержит набор файлов для загрузки по сети. Нам нужны pxelinux.0 , который как загрузочный образ мы будем отдавать через DHCP, и menu.c32 , с помощью которого будет рисоваться более привлекательное меню пользователя. (Для CentOS 4 обновлённый syslinux с зависимостями надо скачать с rpmfind.net .)

# cp $(rpm -ql syslinux | grep menu.c32) /tftpboot/
# cp $(rpm -ql syslinux | grep pxelinux.0) /tftpboot/

NFS

По умолчанию в системе, скорее всего, есть NFS, если нет, то поставьте с помощью yum.
# chkconfig nfs on

В файл /etc/exports добавляем запись:
echo “/var/install-server/ *(ro,no_root_squash)” >> /etc/exports

Запускаем nfs-сервер:
# service nfs start

Проверяем, что каталог экспортирован:
# exportfs
/var/install-server

Создаём структуру tftp-сервера, добавляем контент на сервер:
# mkdir -p /tftpboot/{pxelinux.cfg,centos5_x86}
# mkdir -p /var/install-server/centos5_x86

Монтируем наш DVD с CentOS 5 и закачиваем содержимое в /var/install-server/centos5_x86:
# mount /dev/cdrom /mnt/
# cp -r /mnt/* /var/install-server/centos5_x86/
# cp /var/install-server/centos5_x86/images/p xeboot/* /tftpboot/centos5_x86/

В каталоге /tftpboot/pxelinux.cfg создаём файл default и заполняем его как показано ниже:
default menu.c32

prompt 0
timeout 100

kernel /centos5_x86/vmlinuz
append initrd=/centos52_x86/initrd.img
label Quit
localboot 0

Устанавливаем ОС по сети

После всех манипуляций, описанных выше, можем приступить к установке ОС. Стартуем нашу машину с MAC-адресом 00:0c:29:77:9c:9c, включив в BIOS загрузку по сети. Когда начнётся установка, всё делаем стандартным образом, кроме того, что в списке, откуда ставить ОС, нужно выбрать NFS, и далее, когда попросят, указать:
NFS server name: 192.168.146.1
CentOS directory: /var/install-server/centos5_x86

Автоматизация установки с помощью Kickstart

Для автоматизации нужно создать файл, содержащий всю нужную информацию, которая может потребоваться в процессе установки. Такой файл создаётся программой system-config-kickstart (GUI tool) в любой CentOS с X Window:
# yum -y install system-config-kickstart
# system-config-kickstart

После того, как мы создали файл с помощью system-config-kickstart, его нужно перенести на Install-сервер и сделать доступным по одному из протоколов HTTP, NFS или FTP. Поскольку в работе Install-сервера активно используется NFS, то и будем использовать её.

В моём случае kickstart-файл лежит в /var/install-server/centos5_x86/centos5_ x86_ks.cfg .

В файл /tftpboot/pxelinux.cfg/default нужно всего лишь добавить директиву ks с указанием местоположения kickstart-файла. Пример с kickstart-файлом:
default menu.c32
menu title Linux Install Server. Please choose OS to install.
prompt 0
timeout 100
label CentOS 5 x86 Custom install
kernel /centos5_x86/vmlinuz
append initrd=/centos5_x86/initrd.img
label CentOS 5 x86 Kickstart Install
kernel /centos52_x86/vmlinuz
append initrd=/centos5_x86/initrd.img ks=nfs:192.168.146.1:/var/install-server/c entos5_x86/centos5_x86_ks.cfg
label Quit
localboot 0

Теперь, выбрав «CentOS 5 x86 Kickstart Install» в меню выбора ОС, нам останется только подождать сервера с установленной на нём ОС.

Ниже пример моего Kickstart-файла. Мне захотелось, чтобы в установленной ОС в настройках sshd была опция «PermitRootLogin yes» . Kickstart-файл позволяет не только задавать параметры установки ОС, но и выполнять скрипты, до инсталляции (%pre) и после (%post). Таким образом можно написать массу скриптов по тюнингу и за 5-10 минут инсталляции получить полностью готовую ОС.

#platform =x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use NFS installation media
nfs --server=192.168.146.1 --dir=/var/install-server/centos5_x86
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
#Root password
rootpw --iscrypted $1$Bz09jb2I$hfzh2vApqMjG0sEPsAwNr/
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Europe/Moscow
# Install OS instead of upgrade
install
# Disk partitioning information
part swap --bytes-per-inode=4096 --fstype=”swap” --size=512
part / --bytes-per-inode=4096 --fstype=”ext3” --grow --size=1

%post --interp /bin/bash
PATH=/somework
/bin/mkdir $PATH
/bin/sed -e ‘s/#PermitRootLogin yes/PermitRootLogin yes/g’ /etc/ssh/sshd_config > $PATH/sshd_config_edited
/bin/cp $PATH/sshd_config_edited /etc/ssh/sshd_config
/bin/rm -rf $PATH

AOMEI PXE Boot представляет собой свободное программное обеспечение для загрузки компьютеров с ISO по локальной сети. Будучи очень простой в использовании, эта программа позволяет использовать загрузочный образ диска (ISO) для удаленной загрузки нескольких компьютеров, при условии, что они подключены к одной локальной сети. Это делает AOMEI PXE Boot чрезвычайно полезным инструментом для таких задач, как удаленное развертывание и сопровождение приложений, особенно на предприятиях.

Работать с AOMEI PXE Boot довольно просто: вы устанавливаете программу на систему, которая будет использоваться в качестве сервера, монтируете ISO и ждете загрузки клиентских машин. И лучшая часть заключается в том, что AOMEI PXE Boot поддерживает синхронную загрузку нескольких компьютеров одновременно. Давайте узнаем больше об этой замечательной программе, и выясним, как вы можете использовать ее для загрузки компьютеров с ISO по проводной локальной сети.

AOMEI PXE Boot: основное назначение и несколько слов о Windows PE

Важно отметить, что AOMEI PXE Boot в первую очередь предназначен для устранения проблем с компьютерами в сети. Вы можете использовать программу для загрузки нефункционирующей системы в ограниченной среде. Для этой цели AOMEI PXE Boot лучше всего работает с загрузочными образами дисков Linux, или Windows PE. Последняя является операционной системой с ограниченными службами, которая используется для загрузки компьютера в восстановительных или установочных целях. Основанная на ядре Vista, Windows PE не является полноценной операционной системой. Вместо этого она предоставляет безопасную среду для устранения неполадок с компьютером и восстановления его рабочего состояния.

Нет абсолютно никаких оснований полагать, что AOMEI PXE Boot не будет работать с любым другим образом диска. Во время тестирования я смог удаленно загрузить на клиентской системе Damn Small Linux (DSL), используя загрузочный ISO-образ.

Как загрузить компьютеры с помощью ISO по локальной сети

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

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

Часть 1: Настройка клиентского компьютера(ов) для сетевой загрузки

Как и предполагает название, первое, что необходимо сделать, это настроить клиентский компьютер или компьютеры для загрузки через проводную сеть. Чтобы сделать это, вам нужно получить доступ к меню BIOS компьютера. Ниже говорится о том, как это сделать (процесс более или менее такой же, независимо от производителя компьютера):

1. Включите клиентский компьютер и нажмите клавишу для доступа к меню BIOS (обычно Del, Esc, F8 или F12). В BIOS перейдите в подменю «Boot» и в разделе «Boot Options Priorities» выберите «PXE» (на некоторых компьютерах «Legacy LAN», «Realtek PXE B02 D00», «Network boot from Intel» и т.д.) в качестве первого загрузочного устройства. Вам также может потребоваться включить опцию PXE ROM, если она отключена.

2. AOMEI PXE Boot поддерживает только режим загрузки Legacy, поэтому вам также нужно отключить опцию UEFI Boot, если она поддерживается материнской платой компьютера. Эта опция может быть найдена в подменю Boot.

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

Часть 2: Загрузка ISO и запуск приложения на компьютере-сервере

Эта часть на самом деле еще проще. Для начала, скачайте и установите AOMEI PXE Boot (около 5 МБ) на компьютер, который будет использоваться в качестве сервера. В дополнение к этому вы также должны скачать загрузочный образ диска для загрузки клиентского компьютера или компьютеров. Шаги ниже объясняют, что от вас требуется:

1. Запустите AOMEI PXE Boot. На первом экране программы выберите опцию «Boot from custom image file» и перейдите к вашему ISO-файлу (вы также можете использовать другой вариант для загрузки Windows PE или Linux ISO с сайта компании AOMEI, если вы хотите). Когда образ будет выбран, нажмите на кнопку «Start Service», чтобы запустить службу.

2. Теперь в окне AOMEI PXE Boot будет отображаться информация об активности, происходящей на сервере и клиентских компьютерах. Больше на сервере делать ничего не нужно. Чтобы увидеть реальные действия, давайте переместимся дальше. И, само собой разумеется, приложение и, конечно, сервер, должны быть запущены.

Вам только остается запустить клиентский компьютер и дождаться, пока он загрузится по сети, используя ISO-образ, который был выбран вами через AOMEI PXE Boot на компьютере-сервере. Вот полностью рабочий дистрибутив Damn Small Linux, работающий на клиентском компьютере:

Заключительные слова

Если вы администратор сети, и ищите простой и эффективный способ (и без излишеств) для удаленного развертывания и управления ОС, AOMEI PXE Boot может быть именно тем, что вам нужно. Это качественный инструмент, который до смешного прост в настройке и работает на удивление хорошо.

Отличного Вам дня!

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

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

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

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

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