Я работаю над программным обеспечением, которое я хотел бы протестировать в различных дистрибутивах Linux, чтобы иметь возможность сказать, что я знаю, что оно работает на них. Программное обеспечение взаимодействует с аппаратным устройством через USB и Bluetooth, поэтому я бы предпочел использовать его на реальном оборудовании, а не на виртуальной машине.
Один из подходов - это, конечно, загрузить интересующие меня дистрибутивы и записать их на CD / DVD или скопировать файлы на USB-накопитель, и в прошлом я использовал оба подхода с хорошими результатами. Имеющиеся у меня USB-накопители имеют размер всего 512 МБ, и, хотя я мог перетасовать на них установщики ОС по запросу, я беспокоюсь, что начну копировать файлы, отвлекаться и вернусь позже, чтобы немного продвинуться в установке ОС. Я бы очень хотел начать и забыть об этом. (По общему признанию, я ожидаю, что мне придется ввести учетную запись пользователя, имя хоста, часовой пояс и т. Д.).
Для меня загрузка PXE по локальной сети имеет смысл.
В большинстве инструкций, которые я видел по этому поводу, вы настраиваете свой собственный DHCP-сервер и используете его либо вместо любого устройства, которое выдает адреса DHCP, либо помещаете его в свою собственную миниатюрную локальную сеть. Я хотел бы оставить свой существующий DHCP-сервер работающим *, а также хотел бы, чтобы на устанавливаемом компьютере можно было получать обновления из Интернета **. Я выполнил некоторые инструкции по использованию dnsmasq для этого и столкнулся с трудностями. (Прямо сейчас у меня нет точных шагов, и, возможно, это вообще неправильный путь. Если это хороший способ, я буду рад предоставить более подробную информацию.) , Я вижу, есть много возможностей, от кикстарта Red Hat до gPXE.
Я должен отметить, что я на самом деле не создаю образы машин - я просто хочу размещать на них разные дистрибутивы по мере их выхода с диска, так сказать, а не в манере, настроенной, скажем, для рабочего стола предприятия. (Как администратор Mac я часто настраивал золотые мастера и делал образ жесткого диска, а затем копировал его по сети или использовал базовые образы ОС и добавлял к нему пакеты. Что я ищу здесь больше похоже на доступ к установщику по локальной сети, чем на полный образ диска).
Я также хотел бы добавить, что я не против наличия загрузочного носителя (USB, DVD), который сообщает компьютеру: «Вот сервер. Спросите, для каких ОС у него есть установщики». Точно так же, это плюс - иметь возможность запускать два или три компьютера одновременно (да, небольшие, но n> 1), и это еще одна причина, по которой я думаю, что делать это по сети - большой плюс.
Есть ли у кого-нибудь рекомендации о том, как я могу быстро и легко развернуть различные дистрибутивы Linux на тестовых машинах, чтобы после настройки я мог начать установку машин и вернуться к ним позже, чтобы протестировать на них программное обеспечение? (Это не обязательно должно происходить по сети, но после того, как разовая настройка определена, мне кажется, что это самый простой способ).
* Я фактически тестирую свою домашнюю сеть, и моя базовая станция кабельного модема / Wi-Fi выдает адреса DHCP. Я понимаю, что могу выключить это и сделать это на каком-нибудь другом компьютере, но я не запускал компьютер дома 24 часа в сутки, 7 дней в неделю, и кажется глупым делать это только для DHCP.
** Это делает использование отдельной сети меньшего размера более сложной задачей, если я не соединю две сети, и, не имея двух сетевых адаптеров для одного блока, это звучит как больше усилий, чем я надеюсь потратить. Действительно, я мог бы установить ОС в отдельной сети, а затем переместить ее в сеть с прямым доступом к Интернету, но это противоречит запуску и забыванию.
Как предполагают другие, использование PXE + DHCP дает огромные преимущества.
Но есть много ручных шагов, чтобы полностью "отказаться" от развертывания PXE + DHCP. Вам нужно сделать несколько сценариев, заклеить воздуховод, чтобы добраться туда, куда вы хотите.
Вместо того, чтобы пытаться собрать собственное решение, вы можете использовать существующий инструмент автоматизации PXE / DHCP. Потому что, если вы развернете собственное решение, вы не сможете воспользоваться новыми функциями, которые предлагают инструменты с открытым исходным кодом.
подобно Сапожник который отвечает за управление несколькими ручными задачами, такими как добавление записей DHCP, конфигурация TFTP, шаблоны кикстарта и т. д.
Еще один отличный инструмент для той же цели - мастер. Он имеет другой подход к тем же проблемам, а также имеет глубокую интеграцию с Puppet (использование Puppet с Foreman не обязательно, но помогает). Вам нужен Бригадир-Прокси компонент, который позаботится о DHCP / TFTP за вас. Вот - это скринкаст, на котором Foreman инициализирует виртуальную машину, но то же самое относится и к физическому хосту. Еще одно руководство по установке.
Когда все готово, установка серверов становится действительно простой задачей с Cobbler или Foreman. У них есть API, так что вы можете написать сценарии для оставшихся небольших ручных задач.
Настройка может занять время, но как только вы это сделаете, вы сможете сосредоточиться на своих основных задачах.
Как вы упомянули, PXE - это то, с чем мне очень повезло делать то, о чем вы говорите. Ключ, который вы бросаете в работу, заключается в том, что вы не хотите менять свой DHCP-сервер ... Это означает, что стандартный PXE в системах не будет работать, потому что он будет ожидать, что DHCP-сервер даст ему Атрибуты «следующий сервер» и «имя файла» (которые использует клиент PXE для начальной загрузки).
Итак, что вам нужно сделать, это взять gPXE или iPXE (замена gPXE) и настроить его, включив атрибуты «следующий сервер» и «имя файла», затем записать его на USB или компакт-диск и загрузиться с него. Это позволит вам назначать эти атрибуты без необходимости их передачи DHCP-сервером. Это задокументировано на веб-страница iPXE на встроенных скриптах.
Затем вам нужно настроить сервер TFTP или HTTP (gPXE / iPXE будет поддерживать HTTP, стандартный PXE обычно поддерживает только TFTP). Этот сервер раздает файлы, необходимые для загрузки и установки. Мне нравится собирать все навороты и цеплять "pxelinux.o" с файлом меню. В Linux Journal есть хорошая статья о PXE-меню, страница 2 говорит о меню. У меня есть меню, настроенные для каждого класса дистрибутива (Fedora, CentOS, Ubuntu), а также некоторые утилиты (memtest), затем в этих меню есть варианты для версий (Hardy, Lucid, 32-разрядная, 64-разрядная), затем в этих меню есть варианты для «установки» и «спасения» или, возможно, «сервер» вместо «рабочего стола».
В введите описание ссылки здесь Boot.FedoraProject.org server может быть полезным, вы можете сначала направить на него свой iPXE или использовать его инструкции, чтобы получить представление о нем, затем вытащите то, что вам нужно, и добавьте другие дистрибутивы.
Если вы действительно хотите автоматизировать установку, чтобы вы могли выбрать пункт меню, а затем просто позволить ему перейти оттуда, вам нужно использовать «предварительную загрузку» (на основе Debian) или кикстарт (на основе Fedora), где вы можете указать установщик, что именно делать, включая форматирование дисков (ОПАСНО :-), пакеты, конфигурации и т. д.
PXE на самом деле не так уж и сложен, и он делает многие из подобных вещей просто так легко. Я использую PXE-сервер почти 10 лет, и я редко записываю носители. Кроме того, подключение к сети с большого сетевого сервера НАМНОГО быстрее, чем установка с CD или DVD. Установка CentOS нередко занимает 3 минуты.
Я слышал хорошее о сапожник.
Его цель - максимально автоматизировать установку с помощью тесной интеграции с pxeboot и выполнения тяжелой работы по настройке TFTP, DHCP и т. Д. Для использования PXE.
После того, как вы настроили его для базового использования, он также получил довольно крутой cobbler import
команда, которая читает дистрибутив прямо с CD / DVD и подготавливает его к использованию.
Почему бы вместо этого не использовать виртуальную машину? Это будет удобнее, чем DHCP-серверы и серверы повторного создания образов. Даже если вы выберете путь pxe, это потребует гораздо больше усилий по сравнению с виртуализацией. Я предлагаю вам оценить свои требования и рассмотреть возможность использования виртуальных машин, если это возможно.
Virtualbox находится в свободном доступе.