Меню Рубрики

Установка cpw на ubuntu

Пошаговая инструкция настройки LXD на Ubuntu 16.04

Данная инструкция содержит пошаговый алгоритм установки и настройки LXD. Инструкция рассматривает следующие темы:

— Установка и запуск контейнера.
— Настройка сети.
— Настройка статических IP адресов для контейнеров.
— Настройка NAT и Iptables.
— Создание бэкапов и восстановление из них.
— Отличительные особенности от Docker.

Введение

LXD — это гипервизор контейнеров, который базируется на LXС[1]. Основное отличие от LXC состоит в том, что LXD вводит понятия образа контейнера, и строит инфраструктуру вокруг этих двух понятий.

Проще говоря, LXD – это Docker для виртуальных ОС. Принцип такой же: образ ОС можно скачивать из репозиториев и разворачивать экземпляры на хосте как контейнеры. Один образ можно «клонировать» на несколько виртуальных машин.

  1. Docker – виртуализация приложений, а LXD – виртуализация операционных систем.
  2. При старте контейнера запускается полноценное linux окружение: запускаются скрипты в init.d и различные установленные сервисы (mysql, apache, nginx, cron и т.п.).
  3. Есть возможность задать статический ip адрес контейнеру.
  4. После запуска контейнера можно менять конфигурацию контейнера («пробросить» папку и т.п.).
  5. При выходе из контейнера командой exit он продолжает свою работу.
  6. Можно получить напрямую доступ к файловой системе контейнера из машины хоста. Корневая система контейнера находится в папке /var/lib/lxd/containers/ /rootfs .
  7. По умолчанию сервис LXD работает через unix сокет, но его можно открыть во внешнюю сеть и раздавать свои образы. Другими словами можно поднять персональный сервер с образами.

  1. Можно интегрировать с OpenStack через плагин nova-lxd.
  2. Есть возможность спящего режима (гибернация) контейнера.
  3. Есть API управлением контейнерами[4].
  4. Можно запускать Docker внутри LXD[5].

Установка LXD

LXD на текущий момент нормально работает на Ubuntu 16.04 LTS. Можно запустить и на других системах, но могут возникнуть сложности или что-то будет работать не так как надо. К примеру, на Centos 7 контейнеры запускаются только в привилегированном режиме, отсутствуют готовые сборки lxd и нужно их компилировать вручную.

В свежей Ubuntu версии, по умолчанию, уже встроен lxd. Если он не установлен, то поставить можно так:

Настройка LXD

Обновите систему и установите необходимые для работы пакеты:

Инициализация LXD

Инициализацию LXD нужно делать до того как вы начнете пользоваться контейнерами.

Перед тем как делать инициализацию нужно решить, какое backend хранилище будет использоваться. Backend хранилищ – это место, где находятся все контейнеры и образы. Выделяют два основных типов хранилища: ZFS и Dir.

  • ZFS позволяет моментально создавать и восстанавливать снимки контейнеров, создавать контейнеры из образов. Благодаря ZFS, снимки LXD занимают значительно меньше места, чем сам контейнер.
  • Dir хранит образы обычным способом на диске. Каждый снимок будет занимать столько же, как и сам контейнер.

ZFS монтируется в файл как loop device, поэтому нужно следить за размером хранилища и увеличивать место, если его мало осталось. ZFS имеет смысл использовать, если у вас есть приватное удаленное хранилище образов, куда вы отправляете, время от времени, снимки контейнеров в качестве бэкапов, а затем скачиваете их от туда для установки новых версий или для восстановления контейнеров из бэкапов.

Я на продакшн сервер решил поставить Dir. ZFS протестирую у себя на локалке. Бэкапы буду делать обычными скриптами – упаковывать их в tar и отправлять их на Amazon S3.

После того как вы решили какое backend хранилище использовать, начинайте процесс инициализации. Делается это командой:

Утилита будет задавать вопросы, на которые вам нужно будет ответить. Первым вопросом утилита спросит: какой тип хранилища использовать?

Если ваш ответ Dir, то утилита сразу перейдет к настройке сети. Если ваш ответ ZFS, то система будет задавать следующие вопросы:

«Size in GB of the new loop device» — это размер хранилища ZFS. Все образы и контейнеры будут храниться в этом хранилище, поэтому если вы собираетесь хранить много образов или контейнеров, то нужно увеличить это число.

Затем утилита спросит: нужно ли открывать доступ к LXD из вне? Отвечаем «нет». Если вы хотите создать публичный или приватный репозиторий, то нужно ответить «да».

Настройка LXD bridge

После настройки типа хранилища, утилита спросит: «Желаете ли вы сконфигурировать LXD bridge?». Отвечаем «да».

Запуститься интерфейс настройки сети. Отвечайте на вопросы следующим образом:

Для сети будет использоваться мост с интерфейсом lxdbr0.

Маска сети 10.200.0.0/16.
IP адрес хоста 10.200.0.1.
Автоматически DHCP будет раздавать IP для контейнеров с 10.200.100.1 по 10.200.255.254, но вручную можно установить, начиная с 10.200.0.2.
Протокол ip6 для контейнеров можно не включать.

Запустить повторно утилиту настройки LXD bridge можно командой:

Установка статического IP для контейнера

Раскоментируйте строчку LXC_DHCP_CONFILE и пропишите:

Создайте файл настроек статических IP адресов:

Пропишите статический IP адрес для тестового контейнера:

В дальнейшем, в этот файл можно будет добавлять другие статические IP адреса для других контейнеров.

После каждого изменения файла /etc/lxd-dnsmasq.conf нужно будет перезагружать lxd-bridge командой:

Если это не помагает, то нужно остановить контейнеры с неверными IP, удалить файл dnsmasq.lxdbr0.leases, а затем перезагрузить lxd-bridge:

Настройка NAT

Для того, чтобы заработал NAT, выполнив команды:

Настройка Grub

Без этой строки у меня при запуске lxd выходил warning о том что cgroup swap account не будет работать. Я решил включить опцией swapaccount=1. quiet – это тихая загрузка системы (опционально)

Добавление LXD в автозапуск

Перезапуск системы

Установка и запуск образа виртуальной машины

Добавьте репозиторий (опционально, по умолчанию images уже добавлен):

centos-image – синоним образа, чтобы легче было к нему обращаться

test — название будущего контейнера

Можно запускать образы в две команды:

Первая команда создаст контейнер, а вторая его запустит. Первая команда полезна, если вы хотите просто создать контейнер, но не запускать его.

Посмотрите статус запущенных контейнеров

Команда должна показать следующую информацию:

Обратите внимание, что LXD выдал статический IP для контейнера, который вы настроили в /etc/lxc-dnsmasq.conf

Проброс папки

Данная команда монтирует папку /data/test/folder в контейнер test в папку /folder

Монтирование папок не изменяет содержимое папок /var/lib/lxd/containers/test, а монтируется в отдельную папку /var/lib/lxd/devices/test. Поэтому бэкапы и снимки контейнера не будут содержать примонтированные папки и файлы. Обновление контейнера из бэкапа или образа не будет затрагивать содержимое примонтированных папок.

Просмотреть информацию о настройке можно через команду:

источник

Как создать VPS сервер OpenVZ на Ubuntu 12.04

Главное меню » Операционная система Ubuntu » Как создать VPS сервер OpenVZ на Ubuntu 12.04

Этот учебник покажет вам, как вы можете создать виртуальные частные сервера OpenVZ в Ubuntu 12.04. Мы также объясним, как управлять созданными виртуальными частными серверами с помощью OpenVZ Web Panel, чтобы вы могли наилучшим образом воспользоваться силой виртуализации OpenVZ для вашего бизнеса.

Начало работы

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

  • 1 сервер (облачный или выделенный сервер) работающий на Ubuntu 12.

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

Читайте также:  Установка гбо на вилочный погрузчик

Учебник

Первым шагом при внедрении любого нового программного обеспечения или приложений на сервере, всегда убедиться, что ваш сервер должным образом подготовлен. Во-первых, мы будем гарантировать, что сервер находится в актуальном состоянии. С помощью команды обновления apt-get, мы получим доступные обновления, а затем применим их. apt является менеджером пакетов по умолчанию для Ubuntu, и, указывая его с флагом -y, мы можем сэкономить время и пропустить несколько подсказок “Yes” при обновлении.

Убедитесь, что сервер находится в актуальном состоянии

Вы будете нуждаться в веб-утилиту wget в этом учебнике. Эта утилита позволит вам скачивать файлы из Интернета. Если она еще не установлена в вашей системе, вы можете установить его с помощью apt.

Установка OpenVZ

Наш сервер на Ubuntu теперь готов к установке OpenVZ. Во- первых, нам нужно будет создать новый файл для OpenVZ. Используйте текстовый редактор nano , чтобы открыть новый файл openvz-wheezy.list. Этот файл будет содержать информацию о хранилище для OpenVZ так, чтобы ваша система Ubuntu знала, где взять его:

В открытом файле, вставьте следующие строки, содержащие ссылки на хранилище OpenVZ:

deb http://download.openvz.org/debian wheezy main

# deb http://download.openvz.org/debian wheezy-test main

После добавления строк сохраните и закройте файл. Далее, нам нужно будет добавить ключ для репозитория для того, чтобы иметь возможность использовать его. Изменить каталог на домашний корневой с помощью команды cd:

В этом каталоге, извлечь ключ репозитория с сайта OpenVZ с помощью утилиты wget для загрузки файла:

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

Далее, нам придется повторно запустить apt-get update, так что apt извлечет информацию из нового репозитория OpenVZ, который мы только что добавили.

После выполнения указанной выше команды, мы можем, наконец, установить ядро ​​OpenVZ с помощью apt:

Когда установка ядра OpenVZ завершена, мы должны настроить некоторые параметры ядра в файле sysctl.conf. Откройте файл конфигурации с использованием текстового редактора nano:

Убедитесь, что указаны все следующие параметры в файле. Добавьте или измените существующие параметры при необходимости.

net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1

Сохраните и закройте файл sysctl.conf, когда вы закончите. Для, чтобы изменения вступили в силу, вам нужно будет перегрузится с помощью systctl :

Далее, мы установим ядро OpenVZ ​​для загрузки по умолчанию. Этот шаг является более сложным, в зависимости от того, сколько ядер в настоящее время установлены на вашей системе, различные параметры, возможно, придется изменить. Для целей нашего урока, мы будем рассматривать как новую установку вашей системы.

Когда мы установили ядро, ядро ​​grub регенерируют с помощью нового ядра OpenVZ. Однако по умолчанию он не установлен в boot. Нам нужно будет скорректировать некоторые параметры и пересобрать grub в OpenVZ для загрузки автоматически. Используйте команду sed для выполнения изменений параметров:

После того, как grub был перекомпилирован, мы можем установить некоторые утилиты OpenVZ на нашем сервере с помощью менеджера пакетов apt:

После того, как установка пакетов завершена, сервер Ubuntu необходимо будет перезагрузить. Модифицировав процесс загрузки по умолчанию, ядро ​​OpenVZ должно загружаться автоматически. Если это не так, то вам, возможно, придется отредактировать меню grub и закомментируйте другие записи. Перезагрузите узел Ubuntu:

Войдите обратно как корневой пользователь. Для того, чтобы убедиться, что OpenVZ установлен, нам нужно будет проверить ядро, используя команду иuname. Выполните следующую команду:

Вывод команды выше должен показать слово “OpenVZ” внутри имя ядра, как показано в следующем примере:

Linux ub12vz 2.6.32-openvz-042stab117.16-amd64 #1 SMP Fri Sep 9 22:00:20 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux

Подтвердив, что наше ядро ​​OpenVZ является активным, мы можем сделать дополнительный этап включения соседних устройств использовать разные подсети между хозяином OpenVZ и его гостей. Для этого откройте файл vz.conf с помощью nano. Прежде чем продолжить, обратите внимание, что этот шаг не является обязательным, и поэтому полностью зависит от вас? требуете ли вы его для вашего использования. Откройте конфигурационный файл:

В открытом файле найдите следующую запись:

Измените строку следующим образом:

Сохраните и закройте файл. Поздравления! Вы завершили установку OpenVZ. Продолжайте читать, чтобы установить на OpenVZ Web Panel на вашем сервере управления виртуальных частных серверов вашего хоста.

Установка OpenVZ Web Panel

Перед установкой OpenVZ Web Panel, нам нужно будет установить Ruby (язык кодирования) и различные зависимости, используя apt:

После завершения установки зависимостей завершаем, мы загрузим скрипт установки для OpenVZ Web Panel и применим некоторые исправления. Во-первых, изменим каталог в корневом каталоге с помощью cd:

В корневом каталоге, используйте wget для загрузки сценария установки для OpenVZ Web Panel:

Далее, вам нужно будет внести некоторые изменения в сценарии установки, которые мы можем сделать с помощью команды sed, чтобы заменить отдельные строки:

Запустите установочный скрипт для OpenVZ Web Panel:

Перед тем как продолжить, вам нужно будет сделать небольшую корректировку правила брандмауэра для того, чтобы веб-панель была доступна из вне. С помощью команды ufw позволим разрешить соединения TCP, как показано, чтобы завершить установку веб-панели:

Настройка среды

Теперь, когда обе OpenVZ и OpenVZ Web Panel установлены на сервере Ubuntu, мы можем перейти к исходной конфигурации нашей окружающей среды. Начнем с того, приобретем некоторые шаблоны виртуальных машин и настройки веб-панели.

Начните с доступа к интерфейсу OpenVZ Web Panel. В окне браузера, перейдите к следующему URL, заменив ваш_ip_адрес_сервера на IP-адрес вашего сервера:

Войдите в интерфейс OpenVZ Web Panel, используя учетные данные по умолчанию, как показано ниже:

После того, как вы вошли в систему, вы можете изменить пароль администратора. Держаnm его в качестве “admin” по умолчанию настоятельно не рекомендуется, поскольку это значительно ослабbn ваши настройки безопасности. Вместо этого мы изменим его как можно быстрее. Выполните следующие шаги, чтобы изменить свой пароль:

  1. Нажмите на “Мой профиль” на левой приборной панели
  2. Введите новый пароль два раза
  3. (Необязательно) Укажите имя контактного лица и адрес электронной почты для учетной записи
  4. Нажмите кнопку Сохранить, когда вы закончите

После изменения пароля по умолчанию, мы можем настроить некоторые IP-адреса. В меню левосторонней части приборной панели OpenVZ Web Panel, cick по ИС Адреса.

Так как это чистая установка, у нас не будет ни одного IP-адреса, настроенные по-умолчанию. Нажмите на следующее:

Для нашего урока мы будем имеет несколько IP-адресов, назначенных в виде одной подсети с адресами 167.210.1.0/28. Мы выберем 167.210.1.2, для основного адреса сервера, сохраняя от 167.210.1.3 до 167.210.1.14 для наших виртуальных машин. Заполните информацию IP Pool с соответствующими IP-адресами для каждого сервера, нажмите на кнопку Create.

Ваши новые IP-адреса будут добавлены в систему и могут быть использованы для атрибутов любых виртуальных машин, мы создаем в настоящее время используя OpenVZ.

Для предоставления виртуальных машин для сервера Ubuntu, мы должны добавить некоторые шаблоны ОС к нашей системе. Благодаря OpenVZ Web Panel, эти шаблоны могут быть легко загружены непосредственно из веб-интерфейса. Выполните следующие действия:

  1. Нажмите на кнопку “Physical Server” > “localhost” на левой панели приборной панели
  2. Нажмите кнопку “OS Templates” в правом верхнем углу окна физического сервера
  3. На следующей странице будут показаны все установленные шаблоны OS
  4. Для добавления новых шаблонов, нажмите кнопку “Install New OS Template”
  5. Всплывающее окно покажет все доступные шаблоны ОС. Выберите тот, который вы хотите и нажмите кнопку “install”
Читайте также:  Установка источников света в архикаде

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

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

  1. Перейдите в раздел “Physical Server” > “localhost” в левосторонней приборной панели
  2. Выберите “Create virtual server” в меню “Virtual Servers List”
  3. В открывшемся диалоговом окне, вам будет предложено установить имя для виртуальной машины
  4. Далее, вы можете установить шаблон операционной системы и ресурсы, которые вы хотите приписать VM
  5. Наконец, выберите IP – адрес, используемый для VM и укажите его корневой пароль
  6. Нажмите кнопку “Create” , чтобы закончить вызов VM

Вывод

Поздравления! Мало того, что вы установили OpenVZ на вашем узле Ubuntu, у вас также есть OpenVZ Web Panel для управления сервером и вы создали свою первую виртуальную машину. Если это руководство было полезно, почему бы не поделиться?

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

Автоматическая преднастроенная установка Ubuntu: isolinux и preseed

Как известно, Ubuntu Linux уже давным-давно содержит полный набор инструментов, необходимых для работы большинства офисных сотрудников. А то, что не содержит, можно доустановить, либо же запустить с сервера, например, с помощью FreeRDP и Remmina. В результате — экономия средств и сильное упрощение администрирования клиентов. Многие фирмы уже начали потихоньку заменять свой парк машин на тонкие клиенты и полноценные компьютеры с Linux. И если вы тоже хотите пересадить пару отделов на Ubuntu, то возможно я смогу помочь вам сэкономить немного времени.

В этой статье я расскажу, как создать на основе Ubuntu (а так же любых её модификаций, включая Ubuntu Sever) или Debian преднастроенную, автоматически устанавливающуюся систему. Разобравшись в описанном ниже весьма несложном материале вы сможете делать свои собственные сборки Ubuntu с необходимыми вам приложениями и настройками, которые будут способны устанавливаться в полностью автоматическом режиме как с диска, так и по сети. В итоге при желании вы сможете добиться того, что вам будет достаточно просто включить компьютер и пойти пить чай, чтобы вернувшись увидеть установленную и полностью настроенную под ваши запросы систему со всем необходимым вам для работы софтом.

Начнём с того, что данная статья содержит несколько специфичных для Ubuntu вещей, однако общие положения будут верны для любых дистрибутивов, способных использовать для установки Debain Installer. Кроме того, я не буду рассказывать, как настраивать загрузку компьютеров по сети (для этого вам понадобится TFTP сервер, развернуть который — обычно дело 2-х минут) и сосредоточу своё внимание на загрузке с диска. Однако в конце всё же расскажу, как все описанные приёмы применить для сетевого запуска компьютеров.

Итак, для начала необходимо раздобыть исходный образ системы с Debain Installer. Ubuntu Desktop LiveCD использует другой установщик, поэтому нам не подойдёт. Любой же не-LiveCD диск из семейства Ubuntu можно совершенно спокойно использовать. Вся дальнейшая инструкция написана для Ubuntu Alternate, хотя вряд ли она будет хоть чем-то отличаться для других вариантов системы.

Работа с iso

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

После его выполнения всё содержимое образа окажется в директории iso. Дальше можно будет внести необходимые изменения и запаковать образ обратно. Сразу приведу скрипт запаковки:

Пересчитывать MD5 суммы всех файлов необходимо, чтобы работала встроенная проверка целостности диска.

Автоматизация процесса установки

Теперь необходимо автоматизировать процесс установки. Для запуска установщика с диска используется загрузчик isolinux, и именно его настройке посвящён данный раздел. Про особенности загрузки по сети я расскажу в самом конце статьи.

А пока пойдём по порядку. Первым делом при запуске компьютера с CD диска Ubuntu вам предложит выбрать язык. Чтобы этот запрос не появлялся необходимо создать в папке isolinux/ файл с именем lang, всё содержимое которого будет представлять буквенный код нужного языка. У меня, например, в файле lang выбран русский язык:

Все доступные варианты языка можно посмотреть в файле isolinux/langlist.

Далее необходимо, чтобы загрузчик выбирал автоматически нужный пункт меню после некоторого ожидания. В нашем случае этим пунктом будет автоматическая установка. По умолчанию Ubuntu ждёт выбора пользователя и не выполняет никаких действий. Чтобы поменять такое поведение необходимо изменить значение параметра timeout в файле isolinux/isolinux.cfg на ненулевое значение. Время измеряется в десятых долях секунды, соответственно для выставления таймаута в две секунды в этом файле должна быть такая запись:

Осталось только выбрать, какой пункт меню будет запускаться по умолчанию. Все пункты меню задаются в файле isolinux/text.cfg, его и будем сейчас менять. Для нашей автоматической установки мы создадим свой собственный пункт меню с названием «OEM Install» для того, чтобы остались доступны обычные опции установки. Сразу надо сказать, что самим процессом установки управляют так называемые preseed файлы, которые лежат в соответствующей директории на диске. О них чуть позже, пока же можно скопировать описание любого стандартного пункта меню, поменять его имя и имя preseed файла для него, а так же сделать его запускаемым по умолчанию. Вот что в итоге получилось у меня:

На этом подготовительный этап заканчивается, теперь необходимо разбираться непосредственно с технологией preseed.

Preseed

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

Если копнуть чуть глубже, то можно выяснить, что Debian Installer использует систему debconf для управления процессом установки, а технология preseed просто заранее добавляет нужные ответы в базу данных debconf. Таким образом с помощью preseed можно настроить не только установщик, но и другие приложения, использующие debconf, хотя эта особенность вам вряд ли пригодится.

Каждая инструкция preseed состоит обычно из четырёх частей: владельца, названия параметра, типа параметра и значения. Между частями обязательно должен быть ровно один пробел. Установщик носит имя d-i, и именно это значение будет стоять в первом поле в большинстве инструкций. Существует три способа задания инструкций preseed:

  1. Через параметры запуска ядра.
  2. Через указание загружаемого по сети файла с инструкциями.
  3. Через локальный файл с инструкциями.

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

Читайте также:  Установка деталей в четырехкулачковом патроне

Есть и ещё одно существенное различие: инструкции, передаваемые через параметры ядра добавляются в базу до запуска установщика, инструкции из локального файла — после настройки языковых и региональных опций, а инструкции из сетевого файла — после настройки сети. Поэтому чтобы сделать полностью автоматический установщик в любом случае потребуется указывать параметры для ядра. С них и начнём.

Необходимо немного поменять файл isolinux/text.cfg, добавив несколько опций загрузки к нашему OEM Install пункту. В итоге должно получиться примерно следующее:

Я думаю в целом понятно, что это за параметры, и что здесь можно поменять. Теперь всего лишь осталось создать основной файл с инструкциями для preseed, который, как вы уже наверно догадались, в моём случае называется preseed/oem.seed. Сразу хочу обратить внимание, что для передачи имени файла установщику служит параметр file. Этот параметр будет работать только при загрузке с диска с помощью isolinux, и в нём для ссылки на содержимое диска можно использовать путь /cdrom.

Вот комментированное содержимое моего preseed файла:

В целом по именам опций можно понять, за что они отвечают, однако несколько интересных моментов я всё же прокомментирую.

Во-первых имейте ввиду, что для того, чтобы писать сценарии автоматической установки, надо чётко себе представлять установку в ручном режиме, в частности, на какие вопросы, когда и в каких случаях приходится отвечать. С помощью preseed можно поставить систему ровно также, как и в ручном режиме. Единственное ограничение — в автоматическом режиме нельзя произвести установку на уже имеющиеся на компьютере разделы. В моём сценарии я использую самый простой подход к выделению места: очистку и автоматическую разметку под систему всего первого жёсткого диска.

Кроме того, при автоматической установке можно использовать многие возможности, недоступные в ручном режиме. Например, вы можете задать пароль для root и создать непривилегированного пользователя системы, как и сделано у меня, а можете использовать поведение по умолчанию и сделать первого пользователя администратором, предоставив ему доступ к настройкам системы через sudo. В первом случае необходимо присвоить параметру passwd/root-login значение true и указать пароль для root, во втором — просто не добавлять этот параметр в preseed файл. Кстати, пароль можно указывать как в явном виде (крайне не рекомендуется), так и в виде хеша, аналогичного хешу в файле /etc/shadow. Во втором случае можно задать нужный пароль какому-нибудь пользователю на работающей системе, а затем скопировать значение хеша пароля для него из файла /etc/shadow в свой preseed файл. Хеши, используемые в моём файле, соответствуют паролю Passw0rd.

Большинство полезных опций preseed можно найти в официальной документации Ubuntu. Кстати, обратите внимание: для того, чтобы указывать в сценариях preseed ответы на вопросы, в которых надо выбрать один из нескольких пунктов, достаточно всего лишь написать текст нужного пункта на английском языке (на самом деле можно только начало и можно даже не на английском, а на любом). Поэтому если вы знаете название нужной опции, то вы можете поставить систему в ручном режиме и записать текст нужного вам значения для этой опции, а потом добавить её автоматическую настройку в свой preseed файл. В моём сценарии подобным образом задано, например, значение для параметра netcfg/dhcp_options, отвечающего за действия в случае невозможности сконфигурировать сеть автоматически.

Если вы не нашли нужных вам опций в документации, то можете поставить систему вручную, а затем сразу после установки выполнить в новой системе две нижеприведённых команды:

В результате вы получите в файле seedlog.txt все значения из базы debconf, которые были использованы в процессе установки. Среди них вполне можно найти нужные вам параметры.

Как автоматизировать процесс установки вроде разобрались, теперь немного про то, как можно настроить саму устанавливаемую систему.

Настройка системы

Во-первых, обратите внимание, для указания инсталлятору набора пакетов для установки поверх базовой системы, используются задания tasksel. В приведённом выше сценарии я устанавливаю задание ubuntu-desktop, т.е. базовую систему Ubuntu для настольных компьютеров. Тому, как изменять списки устанавливаемых пакетов и управлять заданиями tasksel, будет посвящена следующая статья. Пока же будем считать, что нас вполне устраивает базовая Ubuntu и всё, что нам нужно — это настроить её для своих нужд. Кстати, Alternate диски различных вариаций Ubuntu содержат набор пакетов только под одно какое-то конкретное задание tasksel. То есть, например, на диске Xubuntu Alternate будут пакеты только для установки задания xubuntu-desktop, поэтому лучше скопировать название задания для своего preseed сценария из стандартного файла, находящегося в директории preseed/ вашего компакт-диска, и не пытаться его менять.

Но как же настроить устанавливаемую систему? Для этих целей в preseed предусмотрена возможность выполнения произвольной команды после завершения установки системы. Команда эта указывается в параметре preseed/late_command и может содержать вызов всех базовых утилит. При этом доступны две особенные директории — /cdrom, которая, как можно догадаться, ссылается на содержимое установочного диска, и /target, которая ссылается на корень уже установленной на жёсткий диск системы.

Для того, чтобы что-то поменять в установленной системе, можно использовать простой трюк — войти в эту систему с помощью chroot и выполнить заранее приготовленный скрипт. При этом надо учитывать, что никакие службы при входе через chroot запущены не будут. Поэтому, например, не стоит инсталлировать таким способом пакеты, требующие доступа к MySQL серверу в процессе установки.

Мой сценарий содержит такую вот команду:

Как видно, я создаю в корне установленной системы директорию install/ и копирую в неё всё содержимое папки extra/ с моего диска, затем запускаю на выполнение скрипт postinstall.sh, предварительно войдя в новую систему с помощью chroot.

Скрипт postinstall.sh может содержать всё, что угодно, с ограничениями, описанными выше. Например:

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

Установка по сети с использованием pxelinux

Все вышеприведённые инструкции можно использовать и для организации установки по сети с помощью загрузчика pxelinux. Однако при этом будет несколько важных отличий:

  1. В дополнение к параметрам языка и клавиатуры preseed опции настройки сети также придётся передавать как явные параметры ядра.
  2. Нельзя использовать параметр file в опциях ядра для загрузки preseed файла, вместо него нужно использовать параметр url. Кроме того можно получать имя файла по DHCP, подробней об этом в официальной документации.
  3. Нельзя использовать директорию /cdrom ни в каких preseed параметрах, в частности, в preseed/late_command. Соответственно загружать скрипт настройки и все необходимые данные для него придётся также по сети.

В остальном всё будет ровно так же, как описано выше. Благо pxelinux является братом isolinux, предназначенным для загрузки по сети, а не с диска.

источник