Другие типы установки
Установка на виртуальную машину
Образ ОС подготовлен для установки и работы на виртуальных машинах (далее – ВМ) в системах виртуализации ROSA Virtualization, VirtualBox, QEMU/KVM и ESXi VMWARE. В ОС предустановлены пакеты для поддержки совместимости (virtualbox-guest-addidtions, spice-vdagent и open-vm-tools), лишние из которых удаляются при установке в несовместимой среде.
Установка под управлением гипервизора должна осуществляться согласно документации к этому гипервизору с учетом минимальных требований ОС к аппаратному обеспечению (п. Требования к техническим средствам).
Автоматизированное развертывание
Введение в kickstart-сценарии
Автоматизированная установка позволяет выполнить полностью автоматическую установку в соответствии с преднастройками, может применяться для автоматического развертывания множества компьютеров одинаковой конфигурации.
Для автоматизированной установки создается файл с настройками – kickstart-сценарий – сценарий быстрого развертывания. Затем в параметры cmdline ядра записывается путь к этому файлу, по DHCP автоматически настраивается сеть, а модуль anaconda-dracut в initramfs (образ файловой системы, загружаемый в оперативную память вместе с ядром) загружает этот kickstart-сценарий и сохраняет в файле /run/install/ks.cfg.
При установке в любом из режимов, в том числе в интерактивном графическом, в установленной Системе по адресу /root/anaconda-ks.cfg сохраняется kickstart-сценарий, описывающий произведенную установку, который можно взять за основу для пользовательского сценария в дальнейшем.
Типовой сценарий автоматизированной установки
Для реализации типового сценария автоматизированной установки нужно создать файл, например, с именем a.ks, со следующим содержимым:
cmdline
# https://bugzilla.redhat.com/show_bug.cgi?id=1874434
liveimg --url=file:///dev/mapper/live-base
# Автоматически принять лицензионное соглашение
eula --agreed
# System language
lang ru_RU.UTF-8
# Keyboard layouts
keyboard --xlayouts=us,ru --switch=grp:alt_shift_toggle
# Network information
network --hostname=localhost.localdomain
# SELinux configuration
#selinux --disabled
# System services
services --enabled="chronyd"
autopart
# Partition clearing information
clearpart --all --initlabel
# System timezone
timezone Europe/Moscow --utc
# Passwords
rootpw 123456
user --groups=wheel,users --name=rosa --password=123456
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
reboot --eject
Примечание – С документацией по kickstart-сценариям можно ознакомиться по адресу
https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html.
Код приведенного выше сценария состоит из следующих командных строк:
- Выполняется полностью автоматизированная установка: запускается X-сервер, автоматически запускается установка, не требующая настройки (возможны варианты без X-сервера и установка по VNC):
cmdline
- Копируется на накопитель Система из LiveCD (также возможна установка из сетевого репозитория):
liveimg --url=file:///dev/mapper/live-base
- Устанавливается язык ОС
ru_RU.UTF-8(в файле/etc/locale.conf):
lang ru_RU.UTF-8
- Добавляются в ОС две раскладки клавиатуры:
usиru, а переключение раскладок настраивается на комбинацию клавишAlt+Shift:
keyboard --xlayouts=us,ru --switch=grp:alt_shift_toggle
- Включается службa systemd
chronyd(можно перечислить несколько служб через запятые без пробелов):
services --enabled="chronyd"
Пример отключения sshd:
services --disabled="sshd"
- Выполняется полностью автоматизированная разметка диска с удалением всех данных (возможно прописать детализированные инструкции по разметке диска):
clearpart --all --initlabel
- Устанавливается часовой пояс
Европа/Москва, а аппаратные часы (BIOS) будут выставлены по Гринвичу (рекомендуется):
timezone Europe/Moscow --utc
- Станавливается последовательность символов, например
"123456", в качестве root-пароля:
rootpw 123456
- Создается пользователь с именем, например
"rosa", добавляется в группыwheelиusers; устанавливается пароль пользователя, например"123456":
user --groups=wheel,users --name=rosa --password=123456
Примечание – Группа wheel – специальная группа пользователей, используемая в некоторых системах UNIX для контроля доступа к команде
su, которая позволяет пользователю маскироваться под другого пользователя (обычно суперпользователя).
Пароли можно записать в зашифрованном виде, например, установить пароль пользователю root:
rootpw --iscrypted $6$BHWkSXIw6TgPrdvJ$V1ARg/yAP.kRe5mo5FawOOvf7SRm/GDM.Ly6RGGmSBR3Zc81/XzYlpoDnYKFMMPZodKBIVyBvjJ9evM1sey0E/
- Хеш, приведенный выше, является результатом выполнения команды:
python3 -c "import crypt; print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"
Данная команда позволяет получить хеш введенного с клавиатуры пароля. Таким образом, можно избежать хранения пароля в открытом виде. Например, хеш пароля "123456" выглядит следующим образом:
user --groups=wheel,users --name=rosa --password=$6$BHWkSXIw6TgPrdvJ$V1ARg/yAP.kRe5mo5FawOOvf7SRm/GDM.Ly6RGGmSBR3Zc81/XzYlpoDnYKFMMPZodKBIVyBvjJ9evM1sey0E/ --iscrypted
- По завершении установки необходимо перезагрузить ПК (в процессе перезагрузки необходим установочный носитель):
reboot --eject
Примечание – При установке на ВМ рекомендуется использовать установку с ISO-образа, подключенного как DVD, т.к. гипервизор умеет отключать виртуальный привод по команде извлечения диска из гостевой Системы. В таком случае после перезагрузки Система загрузится не с образа, а с диска с установленной ОС.
Параметры в cmline ядра и в kickstart-сценарии дополняют друг друга и могут использоваться в различных комбинациях.
Дополнительные действия в kickstart-сценариях
В kickstart-сценарий могут быть добавлены произвольные действия, выполняемые в интерпретаторе shell после завершения основной установки. Это позволяет настраивать Систему сразу после инсталляции.
Для выполнения действий в установленной Системе (в chroot) используется секция %post:
%post
<команды>
%end
Пример: запись даты и времени установки в файл /var/log/installtime.
%post
LC_ALL=C date > /var/log/installtime
%end
Если необходимо выполнить действия вне установленной Системы (в окружении LiveCD), в секцию %post добавляется параметр --nochroot:
%post –nochroot
LC_ALL=C date > "${INSTALL_ROOT}/var/log/installtime"
%end
Примечание – Дополнительно возможно загрузить внешние файлы с помощью утилит curl, wget и других средств сетевого доступа, при наличии доступа к локальному или внешнему веб-серверу.
Удаление и установка пакетов могут быть выполнены также внутри секции %post:
- Удаление ненужных пакетов:
%post
sudo dnf -q -y remove firefox-esr52
%end
- Установка дополнительных пакетов:
%post
dnf -q -y install sconfigs-detailed-audit
%end
Прямая установка пакетов через секцию %packages в данной конфигурации не поддерживается. Рекомендуется использовать утилиту dnf с ключом "-q" для подавления лишнего вывода, что повышает стабильность автоматизированной установки.
Для тестирования сценария автоматизированной установки можно воспользоваться встроенным HTTP-сервером на машине оператора:
- Определить IP-адрес оператора:
ip a
- Перейти в директорию с файлом сценария (например, a.ks) и запустить сервер:
python3 -m http.server
Примечание – В качестве альтернативы возможно использование других веб-серверов, например, nginx или Apache httpd.
- На целевой машине при загрузке LiveCD в командную строку ядра необходимо добавить:
systemd.unit=anaconda.target inst.ks=http://192.168.1.173:8000/a.ks
где:
192.168.1.173— IP-адрес машины оператора,8000— порт запущенного HTTP-сервера.
Также рекомендуется добавить параметр inst.text.
Данный параметр позволит запустить консольный режим установщика вместо графического. Установка будет произведена автоматически без участия оператора.
Сетевая загрузка с возможностью установки
Технология Intel PXE
Возможность загрузки ОС по сети реализована с помощью стандартной технологии PXE, которая состоит из следующих этапов:
- Встроенный в BIOS компьютера загрузчик PXE:
- получает IP-адрес по протоколу BOOTP (протокол, родственный DHCP);
- скачивает по протоколу TFTP с сервера TFTP файлы загрузчика, в т. ч. сам загрузчик и конфигурационный файл с описанием меню загрузки, а также элементы vmlinuz и initrd в качестве минимальной версии ОС;
- запускает минимальную версию ОС с указанными в конфигурационном файле параметрами.
- Минимальная версия ОС, запущенная на клиентском компьютере:
- скачивает указанные в параметрах запуска initrd установочный образ и дополнительные компоненты полной версии ОС по протоколу HTTP с установленного на сервере PXE веб-сервера, сохраняя их в оперативной памяти;
- запускает скачанную полную версию ОС на клиенте.
Таким образом, на клиентском компьютере запускается тот же установочный образ LiveCD, что и при загрузке с USB-накопителя или DVD.
Следует учесть, что для сетевой загрузки ОС на клиентской системе требуется на 2 Гб оперативной памяти больше, чем для обычной установки.
Начальная настройка сервера для работы PXE
Для сетевой загрузки и установки на рабочих станциях необходим сервер, с которого будут загружаться образы ОС, и локальная сеть, по которой будет происходить загрузка. В качестве сервера можно использовать как установленную локально или в виртуальной машине версию ОС для рабочей станции, так и серверную версию ОС.
Для того чтобы ОС могла работать в качестве сервера PXE, необходимо установить и настроить серверные пакеты. Для настройки понадобятся сервера DHCP и TFTP (простейший веб-сервер для загрузки по HTTP уже предустановлен), а также загрузчик syslinux:
dnf install dhcp-server tftp-server syslinux
Настройка сервера DHCP (BOOTP)
Конкретная настройка DHCP-сервера специфична для каждой локальной сети. В качестве примера можно рассмотреть по шагам простейший случай:
- установить на сервере PXE для текущего сетевого соединения статический IP-адрес
192.168.1.1и маску подсети255.255.255.0; - заменить содержимое файла настройки
/etc/dhcpd.confна следующее:
option domain-name "rosa.lan";
option domain-name-servers ns1.rosa.lan, ns2.rosa.lan;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
allow booting;
allow bootp;
filename "pxelinux.0";
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-search "rosa.lan";
option domain-name-servers 192.168.1.1;
range 192.168.1.10 192.168.1.100;
}
- включить сервис DHCP командой:
sudo systemctl enable --now dhcpd
- статус запущенного сервера (должен быть
active) можно проверить командой:
systemctl status dhcpd
Правильность подключения можно проверить, войдя в сеть с клиентского компьютера: он должен получить от сервера DHCP IP-адрес 192.168.1.10.
Настройка веб-сервера
В предустановленном на образах ОС языке Python есть простой веб-сервер, который можно использовать для тестовой PXE-установки (потребуется ISO-образ ОС), последовательно выполнив следующие команды:
- создать папку для веб-сервера:
mkdir -p "$HOME/webserver"
- перейти в папку
$HOME/webserver:
cd "$HOME/webserver"
- создать папку для ISO-образа:
mkdir -p ISO
- монтировать папку для ISO-образа:
sudo mount -o loop "<путь к ISO-образу>" "$HOME/webserver/ISO"
- запустить HTTP-сервер из папки:
python3 -m http.server
Далее необходимо скопировать в папку $HOME/webserver файл kickstart-сценария a.ks, создание которого описано в п. Типовой сценарий автоматизированной установки.
Консоль, в которой будет работать веб-сервер, следует оставить открытой. Проверить правильность его настройки можно, открыв на компьютере браузер по адресу http://192.168.1.1:8000.
В браузере должны быть выведены файлы из директории веб-сервера, в том числе должны быть доступны папка ISO, ее содержимое и файл kickstart-сценария a.ks, а в консоли веб-сервера должен быть выведен лог запросов к нему.
Настройка сервера TFTP
Для настройки сервера TFTP нужно выполнить следующие действия:
- скопировать в папку сервера TFTP компоненты первоначального загрузчика:
( cd /usr/share/syslinux && cp -v menu.c32 pxelinux.0 ldlinux.c32 libutil.c32 /var/lib/tftpboot/ )
- скопировать минимальную версию ОС из ISO-образа в папку TFTP-сервера (от имени пользователя, но не root):
( cd "$HOME/webserver/ISO/isolinux" ; sudo cp -v initrd0.img vmlinuz0 /var/lib/tftpboot/ )
- создать папку для дополнительных конфигурационных файлов TFTP-сервера:
mkdir -p /var/lib/tftpboot/pxelinux.cfg
- открыть на редактирование файл
/var/lib/tftpboot/pxelinux.cfg/default(будет создан, если не существует):
nano /var/lib/tftpboot/pxelinux.cfg/default
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default:
default menu.c32
prompt 0
timeout 300
ONTIME local
menu title #================ PXE BOOT ===============#
label 1
menu label ^1) Automatically install ROSA
kernel /vmlinuz0
append initrd=/initrd0.img systemd.unit=anaconda.target enforcing=0 root=live:http://192.168.1.1:8000/ISO/LiveOS/squashfs.img inst.text inst.ks=http://192.168.1.1:8000/a.ks
label 2
menu label ^2) Install ROSA
kernel /vmlinuz0
append initrd=/initrd0.img enforcing=0 root=live:http://192.168.1.1:8000/ISO/LiveOS/squashfs.img
Для сохранения данных и выхода из редактора nano нажимают клавиши Ctrl+O и Ctrl+X соответственно.
В строках, начинающихся с append, определены параметры cmdline ядра для вариантов загрузки в меню. В первом случае запускается автоматизированная консольная установка по kickstart-сценарию, а во втором случае запускается LiveCD. При отсутствии выбора со стороны пользователя какого-либо пункта меню в течение 300 секунд будет произведена загрузка первого пункта.
Следует обратить внимание, что приведенный выше kickstart-сценарий автоматически стирает весь диск, т. е. в приведенной конфигурации, если не выбрать второй пункт меню, будет произведена автоматическая установка с форматированием диска. При запуске ОС по PXE можно выбрать нужный пункт меню. При необходимости можно адаптировать меню под свои потребности (дополнительная информация доступна по ссылке).
- запустить и добавить в автозагрузку TFTP-сервер:
sudo systemctl enable --now tftp
- выполнить настройки BIOS клиентской машины на загрузку по сети (PXE) и произвести загрузку.
Настройка сети в LiveCD
По умолчанию при запуске LiveCD, включая режим работы исключительно установщика ОС, настройка сети осуществляется автоматически по протоколу DHCP.
В случае необходимости задания статических сетевых параметров соответствующая конфигурация может быть передана в ядро через параметр cmdline, используя синтаксис, поддерживаемый модулем dracut network-legacy.
Пример задания параметров сети вручную:
ip=192.168.122.50::192.168.122.1:255.255.255.0:::off
где:
192.168.122.50— IP-адрес сетевого интерфейса;192.168.122.1— шлюз по умолчанию;255.255.255.0— маска подсети;off— отключение автоматической настройки через DHCP.
Примечание – Дополнительные сведения о параметрах и форматах можно найти на справочной странице dracut.cmdline(7).