Мне нравится сетевая установка (PXE) своей доступностью, когда CD/DVD/Blue-Ray дисководы становятся экзотикой, а флешку или внешний диск портить не хочется…
Я обычно ставлю что-то из-под Windows, но отличия только в настройке TFTP-сервера, если сравнивать с GNU/Linux. Так же мало отличий в дистрибутивах GNU/Linux.
Сервер — комп/ноут, на котором TFTP-сервер и с него будут передавать установочные файлы.
Клиент — комп/ноут, на который устанавливается Ubuntu.
Понадобится:
- Соединить клиента с сервером по LAN.
- На сервере нужной сетевой карте выдать статический IP (я выдал 192.168.8.1).
- В BIOS на клиенте выставить загрузку по сети (PXE) или узнать из документации. Возможно F12 при включении активирует этот режим.
- Скачать и распаковать Tftpd32 standard edition (zip) на сервер.
Скрины настроек Tftpd32:
7-zip 9.20 умеет распаковывать tar с ссылками, но не все.
Взял netboot.tar.gz на archive.ubuntu.com
Тут есть актуальная ссылка на netboot.tar.gz
Распаковать и заменить ссылки файлами, если 7-zip не справился.
Запустить Tftpd32 и выбрать папку с распакованным netboot.tar.gz и нужную сетевую карту.
Перезагрузить клиент и активировать загрузку по сети.
Немножко философских размышлений
Понятие «инсталляционный диск» постепенно уходит в прошлое. Действительно, зачем нужен инсталляционный диск, если есть скоростной безлимитный Интернет, позволяющий, не сходя с места, скачать самую последнюю версию программы и тут же ее установить? А поскольку скоростной Интернет потихоньку становится явлением уже почти повсеместным, то и онлайн-дистрибутивы набирают все бо́льшую и бо́льшую популярность, вытесняя диски в коробочках.
Немножко особняком здесь стоят операционные системы. Действительно, скачать и установить обычную программу несложно: компьютер с работающей операционной системой и сайт покажет, и инсталлятор скачает, и установит. Пользователю нужно только кнопочки 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 с мобильника, я получил отлуп. Поскольку дело было как раз в ванной, пришлось подключение отложить — в телефоне статический айпишник прописывать некуда
Мы все привыкли к онлайн-установщикам, действительно, зачем занимать место инсталляционными пакетами и образами, когда всегда можно получить все это из сети, причем самую последнюю версию. Практически все популярные Linux-дистрибутивы также предлагают образы для сетевой установки, но дистрибутивов может быть много, а еще нужно учитывать разрядности, архитектуры, версии релизов и как-то поддерживать это в актуальном состоянии. Но что, если всё заменить единственным образом размером менее 1 МБ?
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Что представляет из себя netboot.xyz? Это открытый проект, который позволяет выполнить сетевую загрузку практически любого дистрибутива с использованием iPXE — открытой реализации ПО для загрузки по сети. Все что вам нужно для начала работы проектом — это загрузить с официального сайта загрузочный образ размером около 1МБ.
Доступны два варианта загрузчика: Legacy (BIOS) и UEFI, что позволяет работать как с современными, так и устаревшими системами. Сам образ также доступен в нескольких вариантах: ISO, образ для флешки или флоппи-диска, либо для PXE-сервера.
При загрузке с него нас встречает следующее меню:
Уже на этом этапе можно оценить все богатство возможностей. Утилита автоматически определяет оптимальную архитектуру, но в случае необходимости ее можно переключить на любую доступную используя одноименный пункт:
Основная задача проекта — сетевая установка Linux и Unix-like систем, перейдем в пункт Linux Network Installs, где нас встретит обширный список поддерживаемых дистрибутивов:
Но это лишь та часть из них, которые имеют официальные образы для сетевой установки. Они же наиболее удобны в работе, позволяя максимально быстро установить систему с минимально возможным объемом скачиваемых данных.
Другая часть дистрибутивов доступна в пункте Live CDs, но в этом случае по сети будет скачан практически полный образ системы и на вашем ПК должно быть достаточное количество оперативной памяти для размещения образа и его запуска.
Вернемся к сетевой установке, по умолчанию нам предлагаются актуальные релизы, особых сложностей тут нет, выбираем что нам нужно и переходим к установке:
Что важно — дистрибутивы скачиваются из официальных источников, и вы можете быть спокойны, это не чья-то самодеятельность, а полностью оригинальный дистрибутив.
Ну а далее все просто и стандартно, как будто мы загрузились с обычного установочного образа:
Но это еще не все, как быть, если нам требуется что-то нестандартное, допустим достаточно старый дистрибутив. Не вопрос, переходим в пункт Older Releases — Set release codename…
И просто вписываем имя необходимого нам дистрибутива, допустим это будет Debian 5 — Lenny:
Немного подождем, пока будут скачаны необходимые компоненты и действительно перед нами Lenny:
Налицо значительная экономия сил и средств, вам не нужно искать, качать, размещать, записывать и т.д. и т.п. Можно просто выбрать нужный дистрибутив и сразу приступить к установке.
При этом поддерживается не только Linux и Unix-like системы, можно также выполнить сетевую установку Windows, но для этого вам потребуется собственная Служба развертывания Windows, адрес сервера которой вы должны явно указать.
Также рекомендуем заглянуть в раздел Utilites, там собраны различные образы служебных и восстановительных дисков практически на все случаи жизни. А ситуации бывают разные, иногда возможность таким образом загрузить нужный образ может дорогого стоить.
Скажем можно спокойно проверить ОС на вирусы, особенно если в самой ОС явные признаки заражения и нет возможности даже запустить портативную антивирусную утилиту:
Кому может быть интересен данный проект? Да практически любому IT-специалисту. В качестве применения мы видим несколько основных направлений. Одно из них — универсальная загрузочная флешка, причем можно использовать даже старую модель малой емкости. Второе — использование в системах виртуализации. В этом случае вы можете заменить коллекцию образов, занимающую место и требующую поддержания в актуальном состоянии на один единственный образ. Но возможные применения этим не исчерпываются, и вы без труда найдете собственные варианты для использования netboot.xyz.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
В данной статье будет рассмотрена установка 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
Не так давно я столкнулся с ситуацией, когда потребовалось поставить windows на ноутбук по сети, т.к. других вариантов не было. Т.к. подобный опыт у меня уже был, но давно, то возникла необходимость освежить знания, хотя в итоге оказалось, что необходимо было разбираться заново =).
Вступление
Во время описания, я буду предполагать, что у нас уже есть сервер на Linux и реализована загрузка с него по pxe.
Для работы нам понадобится следующий софт:
- hpa-tftpd
- samba
- pxelinux
- dhcpd
Настройку dhcpd, pxelinux, samba мы опустим. Будут описаны только изменения, которые необходимо внести в конфигурацию этих служб.
Подготовка необходимых файлов
Для начала создадим структуру директорий в рабочей директории tftp-сервера.
mkdir /tftpboot/install
mkdir /tftpboot/install/win
cd /tftpboot
ln -s install/win win
Далее скопируем все установочные файлы и папки с диска винды в папку /tftpboot/install/win
. Как вы заметите названия файлов все в верхнем регистре. Дабы исправить эту оплошность следует сделать следующее в папке /tftpboot/install/win/i386:
ls -1 |awk ‘{system(«mv «$0″ «tolower($0))}’
После этого следует скопировать из этой папки в корень tftp-сервера следующие файлы: startrom.n12, SETUPLDR.BIN
(нужно его переименовать в ntldr), BOOTFONT.BIN, ntdetect.com
. Они могут быть запакованы и тогда последняя буква расширения будет заменена на символ подчеркивания. Распаковать их можно будет с помощью утилиты cabextract
.
floppyless = «1»
msdosinitiated = «1»
; Needed for second stage
OriSrc = «\\10.0.0.254\WINXP\win\i386″
OriTyp = «4»
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1
OsLoadOptions = «/noguiboot /fastdetect»
; Needed for first stage
SetupSourceDevice = «\Device\LanmanRedirector\10.0.0.254\WINXP\win»
; Avoid automatic format/repartition
Repartition = No
UseWholeDisk = No
ComputerName = *
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Естественно указываем свои данные (путь и сервер и серийник).
После этого заходим в папку i386 и распаковываем архив drivers.cab
cabextract drivers.cab
Настройка службы BINL
Надеюсь, вы уже скачали архив ris-linux
по ссылке выше. Если нет, то качайте, после чего можно продолжать настройку.
Служба BINL
создана для того, чтобы установщику Windows передавать драйверы сетевой карты. Да. Вот такая парадоксальная ситуация — загрузчик по сети загрузился, но в с сетью сам общаться не может, без этой службы и загруженного впоследствии драйвера.
Распаковываем архив в папку /opt
(всякое лишнее ПО рекомендуется именно туда ставить). Заходим в папку. Там довольно много файлов, но не все они нам понадобятся. Итак, нам нужно отдавать драйверы сетевых карт. Для этого сначала нужно создать их список. Делается это так:
infparser.py /tftpboot/install/win/i386
Теперь можно запускать службу:
./binlsrv.py &
Кстати. Если загрузчик не будет грузиться, то для приведения его в рабочее время тут есть файл fixloader.py
.
fixloader.py /tftpboot/ntldr
Настройка hpa-tftpd
Т.к. при записи пути к файлу у windows и linux используются разные слеши, то нужно сделать так, чтобы tftp
-сервер понимал, что от него хотят. Для этого создаим файл /etc/tftpd.rules
следующего содержания:
После этого данный файл, нужно указать серверу. Для этого редактируем его конфигурационный файл и через флаг -m указываем путь к файлу. В Gentoo этот файл зовется /etc/conf.d/in.tftpd. Находим и приводим к следующему виду строку опций запуска:
INTFTPD_OPTS=»-c -R 4096:32767 -s ${INTFTPD_PATH} -v -m /etc/conf.d/tftpd.rules»
Тут также указан еще флаг -v. Он нужен для отладки. Чтобы когда что-то пойдет не так, можно было посмотреть какие файлы были запрошены и были ли они отданы.
Настройка Samba
Первая стадия установки тянет файлы по tftp, а вторая же (которая после перезагрузки) может забирать файлы через шару, с жесткого диска или с компакт-диска. Естественно в нашем случае требуется создать шару с установочными файлами.
Добавляем в smb.conf
примерно следующие строки:
comment = install files
path = /tftpboot/install
public = yes
writable = yes
guest only = yes
Важный момент. Должна быть выставлена глобальная опция: null passwords = true
И еще один важный момент — обратите внимание, что внутри шары должна быть хотя бы одна директория, в которой уже находятся установочные файлы. Если расшарить сразу папку с установочными файлами, то получим ошибку в самом начале установки.
Настройка pxelinux
Эта операция самая простая. Необходимо добавить в ваш pxelinux.cfg/default следующие строки:
label WinXP Home Install from Network
kernel install/win/startrom.0
Все. Уже можно загружаться и устанавливать.
Прежде всего вам потребуется компьютер с 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 .
В этом случае система поставится целиком из интернет-репозитория, а диск нужен будет только для запуска процесса установки.
В Ubuntu подключение к сети настраивается с помощью сервиса Network Manager. Чтобы подключиться к сети, достаточно пару раз кликнуть мышкой, выбрать соединение — и готово. То же самое, и даже ещё проще, при использовании проводного соединения — тут интернет подключается автоматически, как только загрузился апплет.
Но не всегда доступен графический интерфейс: после неудачной установки драйвера или очередного обновления не запускается графическая оболочка, а на серверах она и вовсе не используется. В этой небольшой инструкции будет разобрана настройка сети Ubuntu из консоли. Мы поговорим о том, как настроить получение IP-адреса по DHCP, а также настроить работу DNS. Рассмотрим ручную и автоматическую настройку,
также попробуем сделать это через системные конфигурационные файлы.
Перед тем, как перейти к самим командам, давайте немного разберёмся в теории работы сети. Это нужно, чтобы вы не просто выполнили какие-то непонятные команды, а поняли всю суть того, что мы будем делать и как выполняется настройка локальной сети Ubuntu.
Компьютеры обмениваются между собой информацией с помощью пакетов. Все данные в сети интернет передаются с помощью пакетов небольшого размера. Если не углубляться в подробности, то каждый пакет содержит адрес отправителя, адрес получателя и сами данные. Эти адреса есть не что иное, как привычные нам IP-адреса. Кроме IP, у компьютера есть физический адрес, который используется для общения между компьютерами в локальной сети. Это MAC-адрес? и задается он производителем сетевой карты.
Как только компьютер подключился к сети, независимо от того проводное это соединение или беспроводное, он может общаться только с компьютерами в локальной сети и только по физическим адресам. Для того, чтобы получить доступ в Глобальную сеть, машине в ней нужно получить IP-адрес. Для этого используется протокол DHCP. Если кратко: наш компьютер спрашивает все компьютеры в локальной сети, кто здесь DHCP-сервер, DHCP ему отвечает и выдаёт IP-адрес. Таким же образом компьютер узнаёт IP маршрутизатора, через который он может получить доступ к Сети, а затем пытается найти DNS-серверы или узнать стандартные у маршрутизатора. С теорией разобрались, перейдем к практике.
Настройка сети через терминал в Ubuntu
Тут мы рассмотрим автоматическую настройку сети для Ubuntu 16.04 без Network Manager с помощью стандартных скриптов системы, которые остались от Upstart и пока всё ещё используются. Давайте сначала определим, какие шаги нам нужно предпринять, чтобы всё заработало:
- Включаем сетевой интерфейс и подключаемся к сети;
- Устанавливаем IP-адрес;
- Получаем адреса DNS-серверов.
Собственно, готово. Эти шаги очень символичны, потом что система всё сделает за нас сама. Нам нужно только выполнить нужные настройки. Но сначала давайте посмотрим, какие сетевые интерфейсы подключены к системе. Мне нравится команда:
Но если хотите, можете использовать ifconfig
:
В нашей системе только один интерфейс — это enp0s3, есть еще lo, но он виртуальный и указывает на эту машину.
Настройки сети находятся в файле /etc/network/interfaces.
Нас будут интересовать в этом файле строчки auto и iface. Первая указывает, что нужно активировать интерфейс при загрузке, вторая же определяет настройки самого интерфейса.
Настройка динамического получения IP-адреса
Добавьте в этот файл такие строки, чтобы запускать интерфейс при загрузке и получать IP-адрес автоматически по DHCP:
auto enp0s3
iface enp0s3 inet dhcp
Синтаксис строки auto прост. Он состоит из самой команды и имени сетевого интерфейса. Рассмотрим подробнее:
$ iface
интерфейс
inet
тип
Тип получения IP-адреса может иметь несколько значений, но нас в этой статье будут интересовать только два: dhcp и static.
После завершения настройки сохраните файл и перезапустите сетевой сервис:
Всё, если сетевой кабель подключён, и вы всё сделали правильно, Сеть будет работать.
Настройка статического адреса Ubuntu
При настройке статического IP-адреса компьютер не будет связываться с DHCP-сервером, поэтому здесь придётся указать намного больше параметров.
Содержимое нашего конфигурационного файла будет выглядеть вот так:
auto eth0
iface eth0 inet static
address 192.168.1.7
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
С первыми двумя строчками все понятно, а следующие задают параметры настройки интерфейса:
- address
— наш IP-адрес; - gateway
— шлюз, через который будем получать доступ в интернет; - netmask
— маска сети; - network
— адрес сети, имеет тот же адрес, что и шлюз, только с нулем вместо единицы; - broadcast
— широковещательный адрес сети, отправленный на него пакет придет всем компьютерам локальной сети.
Как видите, network и broadcast — это первый и последний IP-адреса сети. Теперь сохраните файл и перезапустите сеть:
sudo service networking restart
Если все параметры были указаны правильно, всё будет работать. Но если допущена хоть одна ошибка, доступ к сети вы не получите.
Это была автоматическая настройка локальной сети Гbuntu, но я ещё расскажу, как всё сделать вручную, без конфигурационных файлов.
Ручная настройка сети в Ubuntu
Предыдущий вариант хорош, если вы собираетесь его использовать постоянно, но если нужно только один раз настроить сеть через терминал, то редактировать конфигурационные файлы необязательно. Мы можем всё сделать с помощью команды ip
. Дальше будет рассмотрена настройка сети вручную Ubuntu.
Эта команда используется для управления сетью и входит во все дистрибутивы по умолчанию.
Как и в предыдущем примере, смотрим сетевые интерфейсы:
После того, как мы узнали интерфейс, можно переходить к настройке.
Получение IP-адреса по DHCP
Сначала включаем интерфейс:
sudo ip link set enp0s3 up
Затем с помощью команды dhclient
запрашиваем ip:
sudo dhclient enp0s3
Всё, настройка сети Ubuntu 16.04 завершена, у нас есть IP-адрес, и осталось только настроить DNS, но это мы рассмотрим ниже.
Настройка статического IP
Включаем интерфейс:
sudo ip link set enp0s3 up
Устанавливаем IP-адрес, маску сети и broadcast-адрес для нашего интерфейса:
sudo ip addr add 192.168.1.7/255.255.255.0 broadcast 192.168.1.255 dev enp0s3
Указываем IP-адрес шлюза:
sudo ip route add default via 192.168.1.1
Здесь 192.168.1.7 — наш IP-адрес, 255.255.255.0 — маска сети, 192.168.1.255 — широковещательный адрес. Замените эти значения на свои.
Как видите, сеть работает. Если хотите поэкспериментировать на машине с рабочей сетью, её можно сбросить командой:
sudo ip -4 addr flush dev enp0s3
Настройка DNS
Служба DNS используется для преобразования доменных имен сайтов в IP-адреса. При получении IP-адреса автоматически через DHCP мы используем правильные DNS-серверы, но если мы выбрали статический IP, то DNS можно и не получить, поэтому придётся сделать всё вручную.
Если вам нужно настроить DNS так, чтобы он не сбивался после перезагрузки, необходимо использовать систему настройки сети Ubuntu. Для этого откройте файл /etc/network/interfaces и добавьте в него строчку после директив для нужного интерфейса:
dns-nameservers 8.8.8.8 4.4.4.4
Здесь 8.8.8.8 и 4.4.4.4 это IP-адреса DNS серверов, можете заменить их на свои. И можно использовать один, а не два. Дальше сохраните файл и перезапустите сеть:
sudo service networking restart
Если же вам нужно настроить DNS только для этого сеанса, то добавьте строчку в /etc/resolv.conf
sudo vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 4.4.4.4
После сохранения файла сеть будет работать полностью так, как нужно. Но последний способ пригоден только до перезагрузки, поскольку файл /etc/resolv.conf генерируется автоматически.
Для меня долгое время оставалось загадкой, почему в 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 диске. С тем лишь отличием, что пакеты берутся не с диска, а закачиваются по сети.
Инсталятор традиционно спрашивает язык:
настраивает раскладку клавиатуры:
потом предлагает выбрать репозиторий:
который по умолчанию предлагается локальный для выбраной страны:
Содержание
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.
В этом случае система поставится целиком из интернет-репозитория, а диск нужен будет только для запуска процесса установки.