Boot from lan linux

Загрузка системы из сети

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

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

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

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

Впрочем, не всё так страшно. Скрипт запуска 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

Пример /etc/bootptab

2. Dhcpd

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

3. Tftp

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

Пример /etc/exports

4. Inetd

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

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

5. Xinetd

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

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

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

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

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

Источник

Что такое сетевая загрузка (PXE) и как ей можно пользоваться

Оригинал: What Is Network Booting (PXE) and How Can You Use It?
Автор: Aviad Raviv
Дата публикации: 14 апреля 2011
Перевод: Н.Ромоданов
Дата перевода: март 2014 г.

Требовалось ли вам когда-либо устранять проблемы или диагностировать проблемный компьютер, а вы при этом забыли, куда положили компакт диск с утилитами? Мы покажем вам, как пользоваться сетевой загрузкой (PXE) и пакетом FOG для того, чтобы эта проблема ушла в прошлое.

Обзор технологии PXE

Технология PXE (Pre Execution Environment — Среда предварительного исполнения), которая произносится как «Пикси» (Pixie — волшебная пыль), является подходом, который позволяет компьютеру (клиентскому компьютеру) загружаться, используя только свою сетевую карту. Этот метод загрузки был создан еще в 1999 году и если компьютер подключен к сети (и поддерживает этот стандарт), то можно обойти обычную процедуру загрузки (т. е. включение питания -> BIOS -> HD / CD) и сделать некоторые изящные вещи, начиная с поиска и устранения неисправностей, для чего обычно используется живая ОС liveOS, и даже снять образ машины …, но мы забегаем вперед — давайте вернемся к началу.

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

Включение питания -> BIOS -> стек PXE сетевой карты -> программа сетевой загрузки Network Boot Program (NBP), загружаемая с помощью TFTP с сервера в память клиентской машины -> ответственность за выполнение следующего шага возлагается на программу NBP (2-й этап загрузки).

Если использовать программу « PXElinux » NBP, то можно настроить сервер больше, чем просто для загрузки одной программы PXE для наших клиентов. В некотором смысле, это секретный ингредиент, который позволит нам выполнить все вышеперечисленное и даже больше. Для более подробного объяснения всего процесса, его истории и некоторые из имеющихся параметров настройки этой программы и программы gPXE (которая является более развитым клоном первой программы) смотрите эту лекцию на YouTube , предложенную разработчиками этих программ. Кроме того, ниже представлено видео, датированное 2008 годом, рассказывающее о настройке, что позволит быстро перейти к некоторым возможностям загрузки.

Читайте также:  Windows run file as user

Примечание: В этом видео в качестве основы для сервера используется устаревший проект UDA, и аннотации были предназначены для того, чтобы объяснить, что в него были внесены самые новые (на тот момент) дополнения.

Это руководство будет первым из серии руководств, посвященных PXE. В настоящем руководстве мы заложим основы, на которые мы будет опираться в последующих статьях.

Рекомендации, допущения и предварительные требования

  • Клиентская машина, на которой вы тестируете, поддерживает загрузку PXE и вы знаете, как ее включить.
  • Это руководство было написано и протестировано с использованием Debian Squeeze, Ubuntu Server 9.10 и Linux Mint10. Поэтому предполагается, что у вас также есть система на основе Debian.
  • У вас есть возможность посмотреть статью «Как настроит программный RAID» для «Простого файл-сервера» и «Как настроить всю сеть (802.3ad)» , поскольку скорость работы диска и пропускная способность для этого варианта сервера должны быть очень высокими. Настоятельно рекомендуется собирать такую сеть с использованием сервера с высокоотказоустойчивыми сетевыми и дисковыми подсистемами.
  • Вы увидите, что в качестве редактора мы используем VIM, это только потому, что я привык к нему . Вы можете пользоваться любым другим редактором, который вам нравится.

Установка — трудное начало с использованием системы FOG

FOG является свободным решением, предназначенным для клонирования компьютеров и имеющая открытый исходный код, которое было создано Чаком Суперски и Цзянь Чжаном ( Chuck Syperski и Jian Zhang ). FOG берет обычно используемое программное обеспечение (например, Apache, MySQL и tftpd-hpa упомянуть некоторые из них) и упаковывает их в виде свободного и самодостаточного решения PCLM (PC Lifecycle management), предназначенного для управления жизненным циклом ПК. Нужно упомянуть, что с помощью такого свободного решения PCLM можно с помощью единого центральный веб-интерфейса выполнять резервное копирование состояния компьютера путем создания его образа, развертывать программы и настройки (например, Firefox, Office, принтеры и т. д.), а также политики конфигурирования (например, настроек автоматического завершения сессии и экранной заставки).

Примечание: интервью с Чаком Суперски и Цзянь Чжаном о FOG доступно на Tightwad Tech .

Использование FOG в качестве основы для вашего сервера PXE является хорошим способом иметь в наличии все необходимые составляющие, например, TFTP и, если требуется, DHCP без необходимости устанавливать и настраивать их вручную, при одновременном предоставлении вам в качестве бонуса всех функций пакета FOG.

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

  • Загрузите последнюю версию пакета FOG из sourceforge в каталог, созданный на предыдущем шаге.
  • Разархивируйте пакет и начните установку.
  • Установщик задаст вам несколько вопросов:
  1. What version of Linux would you like to run the installation for? (Для какой версии вы хотите запустить инсталляцию?) – 2 (опять же, при условии, что используется система, базирующаяся на Debian)
  2. What type of installation would you like to do? (Какой вариант инсталляции вы хотите выполнить?) [N] – Нажмите Enter
  3. What is the IP address to be used by this FOG Server? (Какой адрес IP будет использоваться сервером FOG?) [адрес IP сервера, обнаруженного на eth0] – Нажмите Enter.
  4. Would you like to setup a router address for the DHCP server? (Хотели бы вы настроить адрес маршрутизатора для сервера DHCP) [Y/n] – Нажмите Enter.
  5. Would you like to setup a DNS address for the DHCP server and client boot image? (Хотели бы вы настроить адрес DNS для сервера DHCP и клиента загружаемого образа?) [Y/n] – Нажмите Enter.
  6. Would you like to change the default network interface from eth0? If you are not sure, select No. (Хотели бы вы изменить используемый по умолчанию сетевой интерфейс eth0? Если не уверены, то выберите вариант No) [y/N] – Нажмите Enter.
  7. Would you like to use the FOG server for dhcp service? (Хотели бы вы использовать сервер FOG в качестве сервиса dhcp?) [Y/n] – Нажмите Enter (* — см. примечание ниже).
  8. This version of FOG has internationalization support, would you like to install the additional language packs? (В настоящей версии FOG имеется поддержка интернационализации, хотели бы вы , чтобы установить дополнительные языковые пакеты?) [Y/n] – Нажмите n.
  9. Are you sure you wish to continue? (Вы уверены, что хотите продолжить?) (Y/N) – Нажмите Y.
  10. Acknowledge and follow the on screen instructions for “MySQL“. (Подтвердите и следуйте инструкциям пакета «MySQL»)
  11. Leave the MySQL password blank for the root account. (Для аккаунта root оставьте пароль для MySQL пустым)
  12. Would you like to notify the FOG group about this installation? (Хотели бы вы уведомить группу FOG об этой инсталляции?) – Нажмите Y (рекомендуется)

Изображение взято из FOG wiki.

  • Перейдите в вашем браузере по адресу пакета FOG и следуйте инструкциям, выдаваемым на на экран.
  • Читайте также:  Как переустановить windows 10 с очисткой

    * Примечание: Предполагается, что у вас нет другого DHCP или он не настроен для использования PXE. Если вы хотите сконфигурировать существующий DHCP, то смотрите описание Конфигурирование DHCP для PXE .

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

    Если все пройдет так, как надо, у вас должна быть возможность выполнить загрузку вашей клиентской машине в режиме PXE (обычно с помощью F12) и получить меню-приглашение, используемое в системе FOG по умолчанию.

    Изображение получено с помощью Hotfortech.

    Чтобы сразу почувствовать вкус возможностей, вы можете выбрать вариант «Run Memtest86+» (выполнить тест Memtest86 +) и получить приглашение программы Memtest, которую мы рассматриваем в нашей статье «Диагностика аппаратных проблем ПК с помощью Ubuntu Live CD» .

    Файлы и каталоги

    Как отмечалось ранее, наша цель заключается в расширении возможности системы FOG и с этой целью мы должны добавить некоторые файлы и каталоги.

    Создайте следующие подкаталоги:

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

    Настройте конфигурационный файл default, используемый по умолчанию

    Мы создадим новое главное меню и поместим в свое собственное подменю все функции системы FOG.

    Скопируйте конфигурационный файл /tftpboot/pxelinux.cfg/default в howtogeek/menus/fog.cfg.

    Теперь отредактируйте содержимое исходного файла default, используемого по умолчанию:

    Сделайте так, чтобы его содержимое выглядело следующим образом:

    Когда мы закончим, эта конфигурация позволит вам получить следующие 3 подменю: Utilities (Утилиты), Manual FOGing (Ручное управление системой FOG), Linux stuff (Linux).

    Создайте мастер-файл

    Мастер-файл позволит делать глобальные изменения во внешнем виде меню без повторного ввода их в отдельном порядке снова и снова. Такие особенности, как фоновый рисунок, используемый по умолчанию, стили границ, позиции и т.д., все это будет объединено в этом файле master.cfg.

    Сделайте так, чтобы его содержание было следующим:

    В конфигурации, приведенной выше, будут созданы фиолетовые границы и выделение текста;, если вы хотите, чтобы внешний вид был другой, просто измените значения.

    Чтобы задать фоновый рисунок, поместите картину в каталог /tftproot и укажите для MENU BACKGROUND относительный путь к рисунку (мы рекомендуем использовать изображения с разрешением 640*480). Например полный путь к рисунку, сконфигурированному выше, будет /tftproot/fog/bg.png.

    Подключите подменю FOG к основному меню

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

    Поэтому отредактируйте файл /tftpboot/howtogeek/menus/fog.cfg:

    Добавьте следующую запись после записи «menu color title» и перед функциями FOG:

    Создайте заготовки для подменю

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

    Создайте файл шаблона:

    Его содержимое должно быть следующим:

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

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

    Источник

    Бездисковая загрузка с использованием PXE и iSCSI на примере Ubuntu

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

    Что необходимо?

    Для загрузки системы нужны три компонента: ядро, initramfs и корневая файловая система.
    Ядро и initramfs мы передадим по TFTP, а корневую файловую систему — по iSCSI.

    iSCSI-таргеты

    Для Ubuntu возможно использовать различные iSCSI-таргеты. Вот неполный их список:

    • ISCSI Enterprise Target — одна из самых старых реализаций iSCSI-таргета на Linux. Насколько мне известно, жива и здравствует, однако требует установки (в Ubuntu) через DKMS и совсем лёгкого дребезга бубнов. На opennet.ru есть рабочий HOWTO, применимый и к более поздним версиям ОС (Precise)
    • SCSI Target Framework (STGT/TGT) — реализация iSCSI-таргета, портированная из BSD-систем. В отличии от IET, позволяет использовать не только iSCSI, но и другие родственные технологии (такие, как, например, SRP). К сожалению, код STGT в части iSCSI в линуксе работает в userspace. Как следствие, производительность получается где-то в районе плинтуса.
    • SCST — новая реализация универсального таргета для Linux. По заявлениям разработчиков обладает массой преимуществ и фишек. В ядро не включена, для установки требует патчей исходников ядра и продолжительного зубодробительного секса. По слухам, мила, прекрасна и похожа на сакуру. Когда-то давно ее использовали, например, в Оверсан-Скалакси (их опыт вкратце описан на хабре). Пакеты для Ubuntu перестали поддерживаться около полутора лет назад, в SVN есть некоторая активность, то есть проект жив и здравствует. Кстати, разработчики — русские парни 🙂
    • LIO — Linux Unified Target, универсальная система, реализующая iSCSI, SRP, FCoE и несколько других вариантов экспорта устройств в сеть. Официально включена в ядро и является стандартным таргетом, начиная с версии 2.6.38. К ней есть определенные претензии в плане того, что на официальном сайте активно продвигается проприетарная сборка, обладающая большим функционалом, но оставим вопли RMS.
    Читайте также:  Windows server 2012 r2 last updates

    Я буду пользоваться LIO, но ничто не мешает реализовать аналогичный функционал на другом таргете или на проприетарной промышленной СХД, вроде NetApp или EMC.

    Вариант, предлагаемый ниже, состоит из двух серверов: таргета, который дополнительно к iSCSI-таргету содержит на себе DHCP и tftp-сервер, необходимые для начальной загрузки и инициатора, у которого дисков нет, а есть только сетевая карта.

    На таргете желательно использовать LVM для нарезания томов, но можно использовать и обычные файлы.

    1. Образ целевой системы

    Создадим том размером 16 ГиБ, который будет отдаваться по iSCSI (моя VolumeGroup называется vg00, том будет называться client):

    1.1. Разделы и файловые системы

    Я люблю и уважаю LVM за его гибкость и удобство в работе, поэтому использую сетап, не требующий таблицы разделов на образе client. Вместо этого сразу на client создаётся еще одна VolumeGroup, которая потом режется на lv-тома.

    Создадим файловую систему и разметим раздел под swap:

    1.2 Сам образ системы

    Примонтируем файловую систему и развернем туда с помощью debootstrap минимальный образ:

    Стоит слегка подправить получившуюся систему:

    Обратите внимание, мы заменили initiatorname.iscsi. IQN — это iSCSI Qualified Name, он обязательно должен быть уникальным. IQN нашего инициатора — iqn.2013-02.org.example.client:default.

    Приведем fstab к нужному виду:

    Чтобы не оказаться в глупом положении, нужно изменить пароль в новой системе.

    Отмонтируем rootfs и деактивируем группу томов, чтобы случайно ее не задеть:

    Образ системы готов! Загрузчик ему не нужен, ядро будет запускаться с помощью pxelinux.

    2. iSCSI-таргет

    Установим userspace-утилиты для управления таргетом:

    И запустим утилиту управления таргетом — targetcli:

    2.1. Backstore

    Находясь в консоли targetcli необходимо выполнить следующие команды:

    Таким образом будет создан backstore для нашего тома vg00-client.

    2.2. iSCSI

    Назначим предварительно созданный backstore этому таргету:

    Назначим таргету интерфейс для работы (без указания параметров назначатся все активные интерфейсы):

    Настроим права доступа (документация по правам доступа доступна на официальном сайте:

    2.3. Сохранение настроек

    Несмотря на то, что действия в targetcli выполняются немедленно, они не сохраняются и после перезагрузки все таргеты не вернутся. В этом поведение LIO похоже на поведение любых других ядерных служб (iptables, ebtables, ipvsadm и т. п.). При сохранении настроек targetcli компилирует всю конфигурацию в shell-скрипт, который просто скармливает нужные данные в configFS.

    Сохраним все настройки:

    Таргет готов! Перейдем к настройке DHCP + TFTP.

    3. DHCP-сервер

    Предполагаем следующую конфигурацию:
    Серверы живут в сети 10.0.0.0/24, таргет живет на 10.0.0.2, клиент получает по DHCP адрес 10.0.0.5.

    Мануалов в сети море, поэтому коротко:

    4. TFTP-сервер

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

    5. Syslinux

    Копируем pxelinux.0 в /var/lib/tftpboot:

    Также нам необходим образ ядра (можно взять с хост-системы). Сейчас у меня используется ядро от Ubuntu версии 3.2.0.37:

    Дальше нужно собрать правильный initramfs. Для этого нам нужен модуль iSCSI:

    Pxelinux будет искать файл с конфигурацией в директории pxelinux.cfg относительно корня tftp-сервера. Создадим ему конфигурацию:

    Вместо XX необходимо подставить MAC-адрес сетевой карты client’а, записанный в нижнем регистре через минусы, а не через двоеточия.

    Логин и пароль здесь необходимо использовать те же, что были указаны при настройке прав доступа к таргету.

    Настройка Syslinux закончена. Теперь можно насладиться загрузкой 🙂

    Мой лог загрузки выглядит примерно так:

    Итоги:

    Можно вполне использовать iSCSI для загрузки серверов, не имеющих своих дисков (актуально для виртуализации, самопильных систем хранения данных, серверов, которые не должны долго жить и т.п.).

    Есть другой вариант, использовать инициатор, встроенный в сетевую карту. Такой подход иногда бывает невозможен по различным причинам (самая банальная — отсутствие необходимого функционала в самой карточке), а также обладает несколько меньшей гибкостью.

    Присутствует security-hole, поскольку /proc/cmdline доступен любому желающему в системе и этот любой желающий может получить доступ к экспортированному тому. Поэтому можно на таргете закрыть фаерволом все адреса, кроме необходимого.

    Описанная схема — по большей части драфт и основа для инфраструктуры сетевой загрузки.

    Источник

    Оцените статью