Последнее изменение файла: 2022.02.10
Скопировано с www.bog.pp.ru: 2023.06.06
Bog BOS: anaconda - программа установки дистрибутивов Red Hat
При установке и обновлении дистрибутива семейства Red Hat используется система anaconda.
Оператор может выбрать устройство загрузки, с которого загружается и запускается ядро Linux и программа
установки первой очереди. Задача программы первой очереди загрузить модули ядра, необходимые для
монтирования файловой системы, содержащей программу второй очереди и "нормального" окружения
периода выполнения (может обеспечивать работу клиента X и сервера VNC). Установщик второй очереди (перемещён в initrd?)
позволяет указать местонахождение дистрибутива (используется термин "метод установки"),
интерфейс общения (текстовый, графический, VNC, пакетный) и параметры установщика и ядра.
Форматируются указанные файловые системы (поддерживается программный RAID,
LVM2, iSCSI,
multipath) и устанавливается указанное ПО из дистрибутива.
Протокол установки записывается в файл /root/anaconda-ks.cfg в виде,
готовом для автоматической установки (kickstart),
рекомендуется проверять его перед использованием (в частности вставляет "selinux --enforcing"),
в RHEL7 также записывается original-ks.cfg и initial-setup-ks.cfg.
В ходе установки пишутся многочисленные журналы.
Написана на Python 2 (Python 3?) и GTK+ 3, используется dracut (опции ядра обрабатываются там).
Перед установкой необходимо скачать выбранные ISO-образы CD или DVD,
проверить контрольные суммы (можно использовать checkisomd5
из пакета anaconda-runtime (пакета isomd5sum), который проверяет встроенную в ISO контрольную сумму, или md5sum/sha1sum
и дополнительный файл с сайта производителя) и записать на болванки или USB диск (dd) или развернуть дерево файлов для локального
использования или на сервере FTP, HTTP или NFS (образы установщика, пакеты, .treeinfo и repodata).
Изменения (кастомизация) в программе установки доступны в виде флоппи образов (updates.img, product.img), которые можно указать в момент установки.
Также можно "подсунуть" модули ядра для нестандартного оборудования в виде ISO образа, содержащего rpm.
В основном, это требуется для блочных и сетевых устройств, без которых невозможен доступ к установщику второй очереди или дереву файлов.
При первой загрузке установленной системы может запускаться
процедура начальной установки (ранее firstboot): предъявление EULA, создание учётных записей.
Также возможно изменение многих настроек ("firstboot --reconfig" в kickstart).
Имеются графические и текстовые варианты.
загрузочный CD-ROM (images/boot.iso - небольшой ISO образ, содержащий только загрузчик)
USB Mass Storage (images/diskboot.img - образ файловой системы VFAT, содержащий только загрузчик;
в новых версиях нужно записать .iso образ дистрибутивного DVD или загрузочного CD с помощью dd; прощай разделы!)
В RHEL7 ко всем именам параметров добавлена опциональная приставка "inst.".
Предусмотрены следующие типы интерфеса общения оператора с программой установки
графический интерфейс с использованием мышки и клавиатуры (используется по умолчанию), параметры:
inst.graphical (требуется указать явно при установке по сети, 800x600)
inst.xdriver=имя-драйвера (указать явно имя видеодрайвера (fbdev, vesa, nouveau, intel, modesetting),
будет использоваться как при установке, так и во время работы)
inst.usefbx (синоним: xdriver=fbdev)
{inst.resolution=1280x800 | vga=VESA-режим | vga=ask} (в любом случае, небольшое окно в левом верхнем углу,
но хотя бы шрифт не расплывается)
lowres (режим 640x480)
video=режим
inst.vnc inst.vncport=5901 inst.vncpassword=пароль (запускается vnc-сервер, который позволяет производить
удалённую установку в графическом режиме с помощью vncviewer;
разрешено одновременное подключение нескольких клиентов;
установленная система будет загружаться в текстовом режиме;
предварительно запрашивается язык, раскладка и настройка сети)
inst.vnc inst.vncpassword=пароль inst.vncconnect=адрес-консоли:порт (подсоединиться
к указанной консоли (vncviewer -listen) для удалённой установки;
необходимо открыть порт (по умолчанию 5900) в сетевом экране; пароль передаётся в открытом виде)
display=адрес:номер-экрана (предварительно разрешить допуск командой xhost; удалено в RHEL7)
inst.noninteractive
текстовый интерфейс (типа curses - действуют стрелки, Tab и Shift-TAB, пробел (пометить выбор),
Enter (нажать текущую кнопку), F12 (нажать кнопку OK), "+" и "-" (развернуть список)),
нельзя настроить непростые методы хранения (LVM, RAID, FCoE, iSCSI) и нестандартную таблицу разделов
(но можно выйти в соседнюю консоль - Ctrl-Alt-F2 - и сделать самому),
нельзя настроить расположение загрузчика и список пакетов, при установке действует только английский язык и раскладка клавиатуры US
(настройки языка и клавиатуры действуют на установленную систему), параметры:
inst.text [utf8] (установка в текстовом режиме, в RHEL7 - utf8 всегда)
serial (использовать терминал на последовательном порту вместо монитора; удалён в RHEL7)
console=ttyS0 (использовать терминал на последовательном порту вместо монитора, можно использовать несколько раз,
загрузчик пишет на все, anaconda - на последний)
text telnet (запускается сервер telnet (без пароля!), который позволяет производить
удалённую установку в текстовом режиме; его не удалили?)
автоматическая установка kickstart (inst.ks, inst.ks.sendmac, inst.ks.sendsn, inst.ksstrict)
inst.cmdline (настройки задаются в файле kickstart или в командной строке)
Метод установки по умолчанию определяется загрузочным устройством, может запрашиваться опцией askmethod (удалено в RHEL7).
При использовании kickstart расположение репозитория может задаваться командой url.
Методы установки (repo или inst.repo указывает на репозиторий yum, опция method объявлена устаревшей):
дистрибутивный CD-ROM (DVD-ROM)
linux inst.repo=cdrom[:устройство]
по сети по протоколу FTP (в т.ч. неанонимный доступ, до RHEL 6.5 требуется наличие адекватного .treeinfo)
linux inst.repo=ftp://[имя-пользователя:пароль@]сервер/каталог-развёрнутый/
по сети по протоколу HTTP[S] (опция inst.noverifyssl для самоподписанных сертификатов)
linux inst.repo=http[s]://сервер/каталог-развёрнутый/
по сети по протоколу NFS (можно использовать как дерево файлов, так и неразвёрнутые ISO образы, по умолчанию - NFSv3,
опции: nfsvers=версия)
linux inst.repo=nfs[iso][:опции]:сервер:/каталог/
с локального жёсткого диска (в т.ч. USB); в файловой системе (ext2, ext3, ext4, vfat (FAT-32), xfs)
на разделе жёсткого диска (не LVM) должны располагаться дистрибутивные .iso файлы;
имя устройства можно задавать с помощью LABEL= (пробел записывается как "\x20") и UUID=
linux inst.repo=hd:устройство-и-раздел:/каталог/
?с файловой системы
file:///имя-файла
При использовании сетевых методов установки запрашиваются сетевые параметры, которые можно задать вручную или с помощью DHCP.
Опции при загрузке (предваряются командой linux, разделяются пробелами,
начиная с RHEL 7 имена опций установщика предваряются строкой "inst."):
опции dracut (начиная с RHEL 6 для настройки сети и дисков используется dracut)
опции systemd (см. systemd.1)
expert (дополнительные возможности при установке, удалён в ?)
rescue [nomount] (режим восстановления, а не установки; существующая система монтируется в /mnt/sysimage/)
upgradeany (не проверять содержимое /etc/redhat-release при обновлении; убран в RHEL7)
mediacheck (проверить носитель, рекомендуется в сочетании с ide=nodma; в RHEL7 заменён на rd.live.check)
inst.dd (раньше назывался dd, можно указывать несколько расположений,
имеется ISO образ с дополнительным драйвером в формате rpm, обычно драйвер сетевого или дискового контроллера;
рекомендуется избегать по возможности драйверов не из дистрибутива; невозможно подменить драйвер, встроенный в ядро,
или загруженный до обработки команды dd; anaconda ищет устройство с меткой OEMDRV (в корень надо положить содержимое ISO - rhdd3 и rpms/),
при неудаче предлагает выбрать блочное устройство, сканирует и предлагает выбрать ISO образ, затем предлагает выбрать rpm;
UEFI с Secure Boot требует цифровой подписи драйвера)
inst.dd=расположение, например, /dev/sr0 или /dev/sdb1 (рекомендуется использовать обычный раздел - без RAID и LVM)
inst.dd=http://сервер/каталог/файл.rpm (образ диска или rpm с драйвером качается по сети)
inst.dd=ftp://сервер/каталог/файл.img (образ диска или rpm с драйвером качается по сети)
inst.dd=nfs:сервер:/каталог/файл.img (образ диска или rpm с драйвером качается по сети)
inst.updates (раньше назывался updates; запросить ISO образ с поправками (updates.img) к системе установки)
inst.updates=ftp://сервер/каталог (переименован в inst.updates)
inst.updates=http://сервер/каталог (переименован в inst.updates)
inst.multilib (устанавливать в 64-битной системе и 32-битные версии пакетов, указанных в разделе %packages,
но не тех что тянутся по зависимостям)
inst.noverifyssl позволяет отключить проверку сертификатов для HTTPS
inst.proxy=[протокол://][имя-пользователя-прокси[:пароль]@]сервер-прокси[:порт] позволяет воспользоваться прокси сервером
inst.sshd (запустить SSH сервер, пароль может указываться kickstart командой sshpw; по умолчанию - пустой!)
inst.zram={on|off} (использовать сжимаемое блочное устройство в памяти под swap)
inst.lang=en_US.UTF-8 inst.keymap=us (задать язык и раскладку клавиатуры для установки;
если не задать, то программа установки спросит; а как же
rd.locale.LANG=en_US.UTF-8, rd.vconsole.keymap=us, rd.vconsole.font=latarcyrheb-sun16 и rd.vconsole.unicode?)
inst.geoloc={0|provider_fedora_geoip|provider_hostip} (определять язык и часовой пояс по IP, по умолчанию - provider_fedora_geoip)
inst.geoloc-use-with-ks # иначе только в интерактивном режиме
inst.stage2 (позволяет задать местонахождение установщика второй очереди в формате inst.repo - LiveOS/squashfs.img? требуется .treeinfo,
не используется в RHEL7?)
inst.root (?)
inst.noshell (не давать доступ к виртуальной консоли с bash)
inst.kexec # по завершению установки использовать kexec вместо перезагрузки
ip={адрес | dhcp | dhcp6 | auto6 | ibft} netmask=маска gateway=шлюз hostname=имя (настройки для сетевой установки;
в RHEL7 формат изменился, см. dracut)
ip=интерфейс:{адрес | dhcp | dhcp6 | auto6 | ibft} # настройки конкретного интерфейса;
в RHEL7 формат изменился, см. dracut)
ip=[IP-адрес]::[шлюз]:[сетевая-маска]:[имя-хоста]:интерфейс:[dhcp|dhcp6|auto6|ibft]:значение-MTU;
в RHEL7 формат изменился, см. dracut)
ifname=интерфейс:MAC-адрес # назначить имя интерфейса интерфейсу с указанным MAC-адресом, для описанного в ip устройства только на время установки,
иначе устанавливает HWADDR в ifcfg-файле
dns=IP-адрес (переименован в nameserver, можно указывать несколько раз)
nameserver=IP-адрес
bootdev= (задать интерфейс загрузки; необходим при использовании нескольких параметров ip=; см. dracut)
noipv6 (удалён в RHEL7; используйте ipv6.disable=1 или rd.ipv6.disable; см. dracut;
не работает ни один метод)
ethtool (параметры сетевого интерфейса; удалён в RHEL7)
inst.dhcpclass=идентификатор (DHCP сервер увидит его как vendor-class-identifier; по умолчанию, "anaconda-$(uname -srm)"
inst.syslog=адрес-сервера:порт
(записывать журнал на syslog-сервер; имя сервиса - user;
выводится на сервер почти в самом конце установки, когда это уже и неинтересно
(локальный syslog/rsyslog не сразу замечает наличие сети);
в CentOS7 использует TCP?
inst.virtiolog=символьное-устройство (записывать журнал в окружении virtio, по умолчанию - /dev/virtio-ports/org.fedoraproject.anaconda.log.0)
inst.loglevel={debug|info|warning|error|critical} (управляет уровнем болтливости при выводе сообщений на терминал, в файлы всегда
пишутся все сообщения, по умолчанию - info)
inst.nokill (не перезагружаться при ошибке установки, зато не устанавливается при отсутствии ошибок
anaconda halting due to nokill flag
inst.nosave={all|logs|input_ks|output_ks|all_ks[,...]} (не сохранять журналы в /var/log/anaconda/, в RHEL 7.3)
inst.debug (перед установкой в каталог /tmp/pre-anaconda-log/ записывается информация о системе)
inst.notmux (не использовать tmux)inst.kdump_addon={on|off} (добавить экран настройки kdump (включён по умолчанию?))
nofb (не загружать VGA16 framebuffer, который требуется для установки в текстовом режиме для некоторых языков)
inst.headless (без автораспознавания клавиатуры, мышки и монитора)
nopass (не передавать распознанное на второй этап установки)
all-generic-ide (использовать даже незнакомые контроллеры ATA)
ide=nodma (для старого драйвера ATA)
libata.dma=0 (для нового драйвера ATA)
nodmraid (отключить псевдо-RAID)
inst.nompath (отключить multipath)
mod_scsi.scan=sync (помогает для борьбы с "ускоренной" загрузкой в Fedora 10)
firewire и nofirewire (в RHEL7: rd.driver.blacklist=firewire_ohci или modprobe.blacklist=ahci,firewire_ohci
(после установки останется в /etc/modprobe.d/anaconda-blacklist.conf);
до RHEL72 не работал во время установки)
isa (зпросить у оператора конфигурацию ISA устройств)
mem=640K@0
exec-shield=0 noexec=off noexec32=off
rd.plymouth=0 plymouth.enable=0 (не выводить рекламную графику)
mitigations=off (не бороться со Spectre)
rd.driver.blacklist=nouveau rdblacklist=nouveau nouveau.modeset=0 (не нужен глючный nouveau)
selinux=0 (не использовать SELinux при установке и в установленной системе)
inst.selinux=0 (не использовать SELinux при установке)
single (загрузка в однопользовательском режиме)
emergency (загрузка в однопользовательском режиме без запуска init)
Начиная с Fedora 7 тип интерфейса задаётся выбором из
первоначального текстового (псевдографика) меню: текстовая установка,
графическая, восстановление, загрузка с локального диска, memtest.
Переход к редактору параметров происходит по нажатию кнопки "Tab".
Где-то во времена Fedora 15 (RHEL 7) меню стало вложенным.
Для загрузки используется ISOLINUX (isolinux/isolinux.cfg, см. pxelinux)
Позволяет выбрать из меню
установить
проверить носитель и установить (rd.live.check)
установить в упрощённом графическом режиме (xdriver=vesa nomodeset)
войти в режим восстановления (inst.rescue) - 2 виртуальных консоли с bash (Ctrl+Alt+F1 и Ctrl+Alt+F2);
обнаруженная система монтируется по желанию в /mnt/sysimage/ (в неё можно перейти по "chroot /mnt/sysimage"
и переустановить загрузчик "/sbin/grub2-install диск");
по желанию поднимается сеть
тестирование памяти (kernel memtest), (Memtest86 v1.65 (94600) в CentOS5, Memtest86+ v4.10 в CentOS6.2-6.7,
Memtest86+ 5.01 (183012) в CentOS 6.8-6.9, Memtest86+ v4.20 (176500) в CentOS 7-7.2,
Memtest86+ 5.01 (190896)) в CentOS 7.3-7.4 - только BIOS системы (уже нет?)
загрузить установленную ранее систему с диска (localboot 0xffff)
Управляющие клавиши (isolinux.cfg):
стрелки вверх и вниз - перемещение по меню
Enter - выбор текущей строки или вход в подменю
Tab (BIOS) - отредактировать выбранную опцию
Esc (BIOS) - ввести строку загрузки (начинать с linux)
e (UEFI) - отредактировать выбранную опцию (завершение по ^X или F10)
Старая (до RHEL7) версия anaconda последовательно выводит формы для заполнения параметров настройки,
имеется возможность вернуться к предыдущей форме (пользоваться с осторожностью - падает), например:
Next
язык установки - russian
раскладка - russian (Shift+Shift, индикатором служит Scroll Lock)
установка Fedora Core (не обновление) с удалением разделов Linux (только на /dev/sda!)
разбиение диска автоматически с последующей правкой, физическое разбиение
логическое разбиение группы томов system (тома делаются в режиме linear)
GRUB в MBR /dev/sda без LBA32 (FC6 на /dev/system/root) без пароля, конфигурационный файл /boot/grub/grub.conf
настройка сети - eth0 без DHCP, включать при загрузке, адреса вручную - 192.168.0.1/255.255.255.0, задать имя, без шлюза и DNS
временная зона - Europe/Moscow, UTC
установка пароля для root
установка - офисные приложения, разработка, настроить сейчас
здесь же можно подключить дополнительные репозитарии для yum, например, extras
выбираем пакеты (индивидуальный выбор; система выбора теперь трёхуровневая: категории, группы и пакеты)
согласование зависимостей пакетов
последняя возможность сказать "нет"
форматирование блочных устройств и установка пакетов
После перезагрузки настройка продолжается (firstboot):
Новая (RHEL7) версия anaconda после выбора языка на время установки выводит на экран единую приборную доску установки,
которая позволяет оператору самостоятельно выбирать порядок решения подзадач установки с подсветкой обязательных
и незавершённых частей. При этом система может обрабатывать выбранные настройки параллельно в фоновом режиме.
Имеется кнопка Help.
Shift+PrintScreen сохраняет снимок экрана в /tmp/anaconda-screenshots/.
Подзадачи:
дата и время, часовой пояс, NTP
язык и местность для установленной системы, может быть много
раскладки клавиатуры, комбинации клавиш переключения; действуют и во время установки; не рекомендуется забывать English (US)
источник пакетов (см. inst.repo); можно добавить дополнительные репозитории
настройки сети (VPN, bridge, bonding, team, VLAN), интерфейсы опознаются автоматически, имена интерфейсов,
рекомендуется указывать короткое имя (не FQDN) хоста, чтобы клиент DHCP смог добавить к нему имя домена, или localhost.localdomain,
чтобы клиент DHCP смог установить FQDN имя хоста
выбор ПО; очень упрощённый - выбор одного из Наборов (Environment: минимальный набор, инфраструктурный сервер,
файловый сервер, веб сервер, сервер с графикой, сервер виртуализации) и набор дополнений (Add-on, groups) - универсальных и специфических;
набор пакетов можно подсмотреть в файлах repodata/*comps*.xml; точный подбор пакетов с помощью kickstart установки
или yum после установки
настройка хранилищ и их использование: выбор затрагиваемых дисков (можно настраивать multipath,
добавлять диски iSCSI, FCoE, firmware RAID);
выбор между MBR (устройство меньше 2ТБ)
и GPT (больше 2 ТБ или UEFI (требуется раздел /boot/efi размером 50 MiB, а лучше 200 MiB)
или inst.gpt, требуется раздел biosboot размером 1 MiB при использовании BIOS) при отсутствии таблицы разделов;
разбивать вручную или автоматически, шифрование LUKS,
куда записать загрузчик GRUB2 (BIOS и MBR - между MBR и первым разделом;
BIOS и GPT - в отдельный раздел biosboot размером 1МБ;
UEFI и GPT - в раздел EFI System Partition размером от 50 до 200 МБ,
вносятся изменения в переменные менеджера загрузки UEFI;
biosboot и ESP не могут быть на LVM);
можно удалить или уменьшить (только простые случаи) существующий раздел;
при ручном разбиении точкам монтирования назначаются разделы типа обычный раздел, BTRFS, RAID, LVM, LVM с отложенным выделением (thin)
с файловой системой типа xfs, ext4, ext3, ext2, vfat, swap, biosboot, efi; /boot нельзя размещать на LVM и btrfs;
/usr нельзя размещать на btrfs
Безмышечная работа: Tab, Shift+Tab, стрелки, пробел или Enter (выбор), Alt-буква (выбор).
Порча дисков начинается только после нажатия кнопки "начать установку".
Во время установки нужно задать пароль root и завести пользователей, с указанием uid, а также группы с указанием gid).
Пользователи из группы wheel будут иметь полный контроль над системой с помощью sudo.
После перезагрузки настройка продолжается (Initial Setup):
принять лицензию
заведение себя и установка пароля (перед первым входом надо поменять uid/gid на свои)
Затем запускатеся firstboot, который оформляет подписку на портале Red Hat.
В создаваемое меню загрузки grub2 добавляется строка rescue для загрузки минималистского окружения
В момент установки доступны (только локально)
дополнительные виртуальные консоли (переход по Ctrl-Alt-Fx),
уровень выводимых сюда сообщений (в файлы пишется всё) задаётся ключом loglevel:
1 - диалог установки
2 - командная оболочка bash
3 - сообщения от программы установки (/tmp/anaconda.log и yum.log)
4 - сообщения системы (syslog, /tmp/storage.log)
5 - прочие сообщения (/tmp/program.log)
6 - графический дисплей установки
Для отладки в процессе установки создаются файлы (набор варьируется от версии к версии)
/tmp/anaconda.log (шаги установки)
/tmp/syslog (сообщения ядра и приближённых к нему - NetworkManager и т.п.)
/tmp/X.log (журнал X сервера)
/tmp/program.log (вывод внешних программ - stdout и stderr)
/tmp/storage.log (обнаружение устройств хранения и манипуляции с ними)
/tmp/yum.log
/tmp/ifcfg.log (не переносится в систему)
/tmp/anaconda-screenshots (копии экрана по ключу --autoscreenshot команды autostep)
После установки отладочные файлы записываются в следующие файлы:
в файл /var/log/anaconda.log записываются сообщения, выдаваемые на виртуальную консоль при установке
(ошибки и отладочная печать)
часть журнала syslog записывается в файлы /var/log/anaconda.syslog
и /root/install.log.syslog (можно передать на удалённый сервер syslog с помощью ключа syslog)
- /mnt/sysimage/root/install.log.syslog
в файл /var/log/anaconda.xlog записывается журнал X сервера при установке
/var/log/anaconda.program.log
/var/log/anaconda.storage.log
список установленных пакетов записывается в /root/install.log
(в некоторых версиях сюда же записывается список неустановленных пакетов) - /mnt/sysimage/root/install.log
/root/anaconda-screenshots - копии экрана из /tmp/anaconda-screenshots
В RHEL 7.1 все консоли установщика сведены в одну (tty1, переход - Ctrl+Alt+F1, обратно - Ctrl+Alt+F6) с помощью tmux,
переключение между панелями tty1 производится с помощью Alt+Tab, переход на панель - "Ctrl+b номер"
1 - основной экран
2 - bash с полномочиями root и без пароля
3 - шаги установки (/tmp/anaconda.log), обнаружение устройств хранения и манипуляции с ними, yum
4 - информация об устройствах хранения (/tmp/storage.log)
5 - вывод внешних программ - stdout и stderr (/tmp/program.log)
Для отладки в процессе установки создаются файлы (набор варьируется от версии к версии)
/tmp/anaconda.log (шаги установки)
/tmp/ifcfg.log
/tmp/syslog (сообщения ядра и приближённых к нему - NetworkManager и т.п.)
/tmp/storage.log (обнаружение устройств хранения и манипуляции с ними)
/tmp/storage.state
/tmp/program.log (вывод внешних программ - stdout и stderr)
/tmp/packaging.log
/tmp/yum.log
/tmp/dnf.log (удалён?)
/tmp/dnf.hawkey.log (удалён?)
/tmp/dnf.rpm.log (удалён?)
/tmp/rpm-script.log
/tmp/x.log (удалён? или не создаётся в текстовом режиме)
В CentOS7 (Fedora 15) все отладочные файлы записываются в каталог /var/log/anaconda/ (syslog, anaconda.log,
ifcfg.log, journal.log, ks-post.log (указан в настройках kickstart), ks-script-wNkstV.log, packaging.log, program.log, storage.log). Где anaconda.xlog?
На удалённый сервер syslog передаётся в режиме TCP,
на установленной системе syslog работает как ожидается.
Журнал устанавливаемой гостевой машины может передаваться с помощью virtio.